COVIDSafe code from version 1.8 (#15)

This commit is contained in:
COVIDSafe Support 2020-07-21 15:42:48 +10:00 committed by covidsafe-support
parent 6f92ff8fb8
commit 2257c542ed
45 changed files with 3547 additions and 839 deletions

View file

@ -96,8 +96,14 @@
59F25D69245B917A002A7ED8 /* Spinner_home.json in Resources */ = {isa = PBXBuildFile; fileRef = 59F25D68245B917A002A7ED8 /* Spinner_home.json */; }; 59F25D69245B917A002A7ED8 /* Spinner_home.json in Resources */ = {isa = PBXBuildFile; fileRef = 59F25D68245B917A002A7ED8 /* Spinner_home.json */; };
59F25D6A245B917A002A7ED8 /* Spinner_home.json in Resources */ = {isa = PBXBuildFile; fileRef = 59F25D68245B917A002A7ED8 /* Spinner_home.json */; }; 59F25D6A245B917A002A7ED8 /* Spinner_home.json in Resources */ = {isa = PBXBuildFile; fileRef = 59F25D68245B917A002A7ED8 /* Spinner_home.json */; };
59F25D6F245BED80002A7ED8 /* Debug.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 59F25D6E245BED80002A7ED8 /* Debug.storyboard */; }; 59F25D6F245BED80002A7ED8 /* Debug.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 59F25D6E245BED80002A7ED8 /* Debug.storyboard */; };
5B04074124BC0CEA00FAAFD0 /* MessageAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B04074024BC0CEA00FAAFD0 /* MessageAPI.swift */; };
5B04074224BC0CEA00FAAFD0 /* MessageAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B04074024BC0CEA00FAAFD0 /* MessageAPI.swift */; };
5B110C10248F275B00B68291 /* SelectCountryViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B110C0F248F275A00B68291 /* SelectCountryViewController.swift */; }; 5B110C10248F275B00B68291 /* SelectCountryViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B110C0F248F275A00B68291 /* SelectCountryViewController.swift */; };
5B110C11248F275B00B68291 /* SelectCountryViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B110C0F248F275A00B68291 /* SelectCountryViewController.swift */; }; 5B110C11248F275B00B68291 /* SelectCountryViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B110C0F248F275A00B68291 /* SelectCountryViewController.swift */; };
5B30F78924B8179600CDED63 /* LaunchScreen_it.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5B30F78824B8179600CDED63 /* LaunchScreen_it.storyboard */; };
5B30F78A24B8179600CDED63 /* LaunchScreen_it.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5B30F78824B8179600CDED63 /* LaunchScreen_it.storyboard */; };
5B30F78C24B817A100CDED63 /* LaunchScreen_el.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5B30F78B24B817A100CDED63 /* LaunchScreen_el.storyboard */; };
5B30F78D24B817A100CDED63 /* LaunchScreen_el.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5B30F78B24B817A100CDED63 /* LaunchScreen_el.storyboard */; };
5B337AAB245A9BBC00537620 /* UploadDataErrorViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B337AAA245A9BBC00537620 /* UploadDataErrorViewController.swift */; }; 5B337AAB245A9BBC00537620 /* UploadDataErrorViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B337AAA245A9BBC00537620 /* UploadDataErrorViewController.swift */; };
5B337AAC245A9EEC00537620 /* UploadDataPrefaceViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B577814245A584C0088F111 /* UploadDataPrefaceViewController.swift */; }; 5B337AAC245A9EEC00537620 /* UploadDataPrefaceViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B577814245A584C0088F111 /* UploadDataPrefaceViewController.swift */; };
5B337AAD245A9EF800537620 /* UploadDataErrorViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B337AAA245A9BBC00537620 /* UploadDataErrorViewController.swift */; }; 5B337AAD245A9EF800537620 /* UploadDataErrorViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B337AAA245A9BBC00537620 /* UploadDataErrorViewController.swift */; };
@ -110,6 +116,10 @@
5B51ED61248715DE008CE722 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 5B51ED64248715DE008CE722 /* InfoPlist.strings */; }; 5B51ED61248715DE008CE722 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 5B51ED64248715DE008CE722 /* InfoPlist.strings */; };
5B51ED62248715DE008CE722 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 5B51ED64248715DE008CE722 /* InfoPlist.strings */; }; 5B51ED62248715DE008CE722 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 5B51ED64248715DE008CE722 /* InfoPlist.strings */; };
5B577815245A584C0088F111 /* UploadDataPrefaceViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B577814245A584C0088F111 /* UploadDataPrefaceViewController.swift */; }; 5B577815245A584C0088F111 /* UploadDataPrefaceViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B577814245A584C0088F111 /* UploadDataPrefaceViewController.swift */; };
5B728B4724B5667000654ABC /* BLELogViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B728B4624B5667000654ABC /* BLELogViewController.swift */; };
5B728B4924B5816C00654ABC /* BLELog+CoreDataClass.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B728B4824B5816C00654ABC /* BLELog+CoreDataClass.swift */; };
5B728B4B24B581C100654ABC /* BLELog+CoreDataProperties.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B728B4A24B581C100654ABC /* BLELog+CoreDataProperties.swift */; };
5B728B4E24B5A26D00654ABC /* debug.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 5B728B4C24B5A26D00654ABC /* debug.xcdatamodeld */; };
5B7ABF25244D3BC600BB249B /* IsolationSuccessViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B7ABF24244D3BC600BB249B /* IsolationSuccessViewController.swift */; }; 5B7ABF25244D3BC600BB249B /* IsolationSuccessViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B7ABF24244D3BC600BB249B /* IsolationSuccessViewController.swift */; };
5B7ABF26244D3BC600BB249B /* IsolationSuccessViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B7ABF24244D3BC600BB249B /* IsolationSuccessViewController.swift */; }; 5B7ABF26244D3BC600BB249B /* IsolationSuccessViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B7ABF24244D3BC600BB249B /* IsolationSuccessViewController.swift */; };
5B7ABF28244D6BE100BB249B /* UnderSixteenViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B7ABF27244D6BE100BB249B /* UnderSixteenViewController.swift */; }; 5B7ABF28244D6BE100BB249B /* UnderSixteenViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B7ABF27244D6BE100BB249B /* UnderSixteenViewController.swift */; };
@ -195,6 +205,11 @@
5B92D6CF243018040049877B /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5DD41D4023DCB03B00FD4AB0 /* Main.storyboard */; }; 5B92D6CF243018040049877B /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5DD41D4023DCB03B00FD4AB0 /* Main.storyboard */; };
5B92D74F243022EF0049877B /* DataUploadS3.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59ACB575242F404500E63E3C /* DataUploadS3.swift */; }; 5B92D74F243022EF0049877B /* DataUploadS3.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59ACB575242F404500E63E3C /* DataUploadS3.swift */; };
5B92D750243022F20049877B /* InitiateUploadAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59ACB573242F195A00E63E3C /* InitiateUploadAPI.swift */; }; 5B92D750243022F20049877B /* InitiateUploadAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59ACB573242F195A00E63E3C /* InitiateUploadAPI.swift */; };
5BA33A7B24B3FE2700D12515 /* UIFont + Traits.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BA33A7A24B3FE2700D12515 /* UIFont + Traits.swift */; };
5BA33A7C24B41ECA00D12515 /* UIFont + Traits.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BA33A7A24B3FE2700D12515 /* UIFont + Traits.swift */; };
5BA33A7E24B55E7D00D12515 /* BLELogRecord.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BA33A7D24B55E7D00D12515 /* BLELogRecord.swift */; };
5BA33A8024B55EF200D12515 /* BLELogDB.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BA33A7F24B55EF200D12515 /* BLELogDB.swift */; };
5BA33A8224B5602500D12515 /* BLELogRecord+BLELogSave.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BA33A8124B5602500D12515 /* BLELogRecord+BLELogSave.swift */; };
5BD3EE8324330E1A0004A007 /* UploadDataStep2VC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BD3EE8224330E1A0004A007 /* UploadDataStep2VC.swift */; }; 5BD3EE8324330E1A0004A007 /* UploadDataStep2VC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BD3EE8224330E1A0004A007 /* UploadDataStep2VC.swift */; };
5BD3EE84243313450004A007 /* UploadDataStep2VC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BD3EE8224330E1A0004A007 /* UploadDataStep2VC.swift */; }; 5BD3EE84243313450004A007 /* UploadDataStep2VC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BD3EE8224330E1A0004A007 /* UploadDataStep2VC.swift */; };
5BED1E3A24A96D1C0066C4D2 /* LaunchScreen_ar.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5BED1E3924A96D1C0066C4D2 /* LaunchScreen_ar.storyboard */; }; 5BED1E3A24A96D1C0066C4D2 /* LaunchScreen_ar.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5BED1E3924A96D1C0066C4D2 /* LaunchScreen_ar.storyboard */; };
@ -338,7 +353,14 @@
59B7416F24514126006E1EEA /* RegistrationConsentViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RegistrationConsentViewController.swift; sourceTree = "<group>"; }; 59B7416F24514126006E1EEA /* RegistrationConsentViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RegistrationConsentViewController.swift; sourceTree = "<group>"; };
59F25D68245B917A002A7ED8 /* Spinner_home.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = Spinner_home.json; sourceTree = "<group>"; }; 59F25D68245B917A002A7ED8 /* Spinner_home.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = Spinner_home.json; sourceTree = "<group>"; };
59F25D6E245BED80002A7ED8 /* Debug.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = Debug.storyboard; sourceTree = "<group>"; }; 59F25D6E245BED80002A7ED8 /* Debug.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = Debug.storyboard; sourceTree = "<group>"; };
5B04074024BC0CEA00FAAFD0 /* MessageAPI.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MessageAPI.swift; sourceTree = "<group>"; };
5B110C0F248F275A00B68291 /* SelectCountryViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SelectCountryViewController.swift; sourceTree = "<group>"; }; 5B110C0F248F275A00B68291 /* SelectCountryViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SelectCountryViewController.swift; sourceTree = "<group>"; };
5B30F78424B8171E00CDED63 /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/Localizable.strings; sourceTree = "<group>"; };
5B30F78524B8171E00CDED63 /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/InfoPlist.strings; sourceTree = "<group>"; };
5B30F78624B8172D00CDED63 /* el */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = el; path = el.lproj/Localizable.strings; sourceTree = "<group>"; };
5B30F78724B8172E00CDED63 /* el */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = el; path = el.lproj/InfoPlist.strings; sourceTree = "<group>"; };
5B30F78824B8179600CDED63 /* LaunchScreen_it.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen_it.storyboard; path = CovidSafe/Resources/LaunchScreen/LaunchScreen_it.storyboard; sourceTree = SOURCE_ROOT; };
5B30F78B24B817A100CDED63 /* LaunchScreen_el.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen_el.storyboard; path = CovidSafe/Resources/LaunchScreen/LaunchScreen_el.storyboard; sourceTree = SOURCE_ROOT; };
5B337AAA245A9BBC00537620 /* UploadDataErrorViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UploadDataErrorViewController.swift; sourceTree = "<group>"; }; 5B337AAA245A9BBC00537620 /* UploadDataErrorViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UploadDataErrorViewController.swift; sourceTree = "<group>"; };
5B337AAE245AA26300537620 /* Spinner_upload.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = Spinner_upload.json; sourceTree = "<group>"; }; 5B337AAE245AA26300537620 /* Spinner_upload.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = Spinner_upload.json; sourceTree = "<group>"; };
5B51ED4F2485D658008CE722 /* UILocalization.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UILocalization.swift; sourceTree = "<group>"; }; 5B51ED4F2485D658008CE722 /* UILocalization.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UILocalization.swift; sourceTree = "<group>"; };
@ -347,6 +369,10 @@
5B51ED6E248776CA008CE722 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/UploadData.storyboard; sourceTree = "<group>"; }; 5B51ED6E248776CA008CE722 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/UploadData.storyboard; sourceTree = "<group>"; };
5B51ED6F248776CB008CE722 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; }; 5B51ED6F248776CB008CE722 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
5B577814245A584C0088F111 /* UploadDataPrefaceViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UploadDataPrefaceViewController.swift; sourceTree = "<group>"; }; 5B577814245A584C0088F111 /* UploadDataPrefaceViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UploadDataPrefaceViewController.swift; sourceTree = "<group>"; };
5B728B4624B5667000654ABC /* BLELogViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BLELogViewController.swift; sourceTree = "<group>"; };
5B728B4824B5816C00654ABC /* BLELog+CoreDataClass.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "BLELog+CoreDataClass.swift"; sourceTree = "<group>"; };
5B728B4A24B581C100654ABC /* BLELog+CoreDataProperties.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "BLELog+CoreDataProperties.swift"; sourceTree = "<group>"; };
5B728B4D24B5A26D00654ABC /* debug.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = debug.xcdatamodel; sourceTree = "<group>"; };
5B7ABF24244D3BC600BB249B /* IsolationSuccessViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IsolationSuccessViewController.swift; sourceTree = "<group>"; }; 5B7ABF24244D3BC600BB249B /* IsolationSuccessViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IsolationSuccessViewController.swift; sourceTree = "<group>"; };
5B7ABF27244D6BE100BB249B /* UnderSixteenViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UnderSixteenViewController.swift; sourceTree = "<group>"; }; 5B7ABF27244D6BE100BB249B /* UnderSixteenViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UnderSixteenViewController.swift; sourceTree = "<group>"; };
5B7B031D2490703500296DE0 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; }; 5B7B031D2490703500296DE0 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
@ -355,6 +381,10 @@
5B92D662243011B30049877B /* CovidSafe-config.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "CovidSafe-config.plist"; path = "Resources/PROD/CovidSafe-config.plist"; sourceTree = "<group>"; }; 5B92D662243011B30049877B /* CovidSafe-config.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "CovidSafe-config.plist"; path = "Resources/PROD/CovidSafe-config.plist"; sourceTree = "<group>"; };
5B92D666243012330049877B /* CovidSafe-config.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = "CovidSafe-config.plist"; path = "Resources/STG/CovidSafe-config.plist"; sourceTree = "<group>"; }; 5B92D666243012330049877B /* CovidSafe-config.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = "CovidSafe-config.plist"; path = "Resources/STG/CovidSafe-config.plist"; sourceTree = "<group>"; };
5B92D6D9243018040049877B /* COVIDSafe-staging.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "COVIDSafe-staging.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 5B92D6D9243018040049877B /* COVIDSafe-staging.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "COVIDSafe-staging.app"; sourceTree = BUILT_PRODUCTS_DIR; };
5BA33A7A24B3FE2700D12515 /* UIFont + Traits.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIFont + Traits.swift"; sourceTree = "<group>"; };
5BA33A7D24B55E7D00D12515 /* BLELogRecord.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BLELogRecord.swift; sourceTree = "<group>"; };
5BA33A7F24B55EF200D12515 /* BLELogDB.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BLELogDB.swift; sourceTree = "<group>"; };
5BA33A8124B5602500D12515 /* BLELogRecord+BLELogSave.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "BLELogRecord+BLELogSave.swift"; sourceTree = "<group>"; };
5BD3EE8224330E1A0004A007 /* UploadDataStep2VC.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UploadDataStep2VC.swift; sourceTree = "<group>"; }; 5BD3EE8224330E1A0004A007 /* UploadDataStep2VC.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UploadDataStep2VC.swift; sourceTree = "<group>"; };
5BED1E2F24A95ECB0066C4D2 /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/Localizable.strings; sourceTree = "<group>"; }; 5BED1E2F24A95ECB0066C4D2 /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/Localizable.strings; sourceTree = "<group>"; };
5BED1E3024A95ECB0066C4D2 /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/InfoPlist.strings; sourceTree = "<group>"; }; 5BED1E3024A95ECB0066C4D2 /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/InfoPlist.strings; sourceTree = "<group>"; };
@ -488,7 +518,9 @@
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
30BE1CAE23F1349F005DCE4F /* EncounterRecord.swift */, 30BE1CAE23F1349F005DCE4F /* EncounterRecord.swift */,
5BA33A7D24B55E7D00D12515 /* BLELogRecord.swift */,
30BE1CB023F134D0005DCE4F /* Encounter+EncounterRecord.swift */, 30BE1CB023F134D0005DCE4F /* Encounter+EncounterRecord.swift */,
5BA33A8124B5602500D12515 /* BLELogRecord+BLELogSave.swift */,
30BE1CA923F108BA005DCE4F /* UploadFileData.swift */, 30BE1CA923F108BA005DCE4F /* UploadFileData.swift */,
); );
name = Structures; name = Structures;
@ -499,7 +531,9 @@
children = ( children = (
59490B62245FE3BD00C9802B /* V2 */, 59490B62245FE3BD00C9802B /* V2 */,
5D8DD05F23E319B300E097EF /* Encounter+CoreDataClass.swift */, 5D8DD05F23E319B300E097EF /* Encounter+CoreDataClass.swift */,
5B728B4824B5816C00654ABC /* BLELog+CoreDataClass.swift */,
5D8DD06023E319B300E097EF /* Encounter+CoreDataProperties.swift */, 5D8DD06023E319B300E097EF /* Encounter+CoreDataProperties.swift */,
5B728B4A24B581C100654ABC /* BLELog+CoreDataProperties.swift */,
596B189824496D32003E190F /* Encounter+Util.swift */, 596B189824496D32003E190F /* Encounter+Util.swift */,
); );
name = Models; name = Models;
@ -518,6 +552,7 @@
5B110C0F248F275A00B68291 /* SelectCountryViewController.swift */, 5B110C0F248F275A00B68291 /* SelectCountryViewController.swift */,
5D8DD05923E2F08400E097EF /* ContactViewController.swift */, 5D8DD05923E2F08400E097EF /* ContactViewController.swift */,
5D8DD05B23E2F0A700E097EF /* LogViewController.swift */, 5D8DD05B23E2F0A700E097EF /* LogViewController.swift */,
5B728B4624B5667000654ABC /* BLELogViewController.swift */,
5D8DD05D23E2F0BA00E097EF /* InfoViewController.swift */, 5D8DD05D23E2F0BA00E097EF /* InfoViewController.swift */,
30BE1CB423F15D47005DCE4F /* OTPViewController.swift */, 30BE1CB423F15D47005DCE4F /* OTPViewController.swift */,
5D5F83AF23F045A800770DEF /* HomeViewController.swift */, 5D5F83AF23F045A800770DEF /* HomeViewController.swift */,
@ -570,6 +605,7 @@
59898602245173C200966E61 /* URLHelper.swift */, 59898602245173C200966E61 /* URLHelper.swift */,
59F25D6E245BED80002A7ED8 /* Debug.storyboard */, 59F25D6E245BED80002A7ED8 /* Debug.storyboard */,
5B51ED4F2485D658008CE722 /* UILocalization.swift */, 5B51ED4F2485D658008CE722 /* UILocalization.swift */,
5BA33A7A24B3FE2700D12515 /* UIFont + Traits.swift */,
); );
name = Utils; name = Utils;
sourceTree = "<group>"; sourceTree = "<group>";
@ -579,6 +615,7 @@
children = ( children = (
5909E4AA245043C400D41C26 /* CovidPersistentContainer.swift */, 5909E4AA245043C400D41C26 /* CovidPersistentContainer.swift */,
594E77BE24736B77009B8B34 /* EncounterDB.swift */, 594E77BE24736B77009B8B34 /* EncounterDB.swift */,
5BA33A7F24B55EF200D12515 /* BLELogDB.swift */,
594E77C1247387B1009B8B34 /* EncounterDB+migration.swift */, 594E77C1247387B1009B8B34 /* EncounterDB+migration.swift */,
); );
name = CoreData; name = CoreData;
@ -677,6 +714,8 @@
5BED1E3F24A98EAF0066C4D2 /* LaunchScreen_zh-Hant.storyboard */, 5BED1E3F24A98EAF0066C4D2 /* LaunchScreen_zh-Hant.storyboard */,
5BED1E4224A98EB60066C4D2 /* LaunchScreen_vi.storyboard */, 5BED1E4224A98EB60066C4D2 /* LaunchScreen_vi.storyboard */,
5BED1E4524A98EC20066C4D2 /* LaunchScreen_ko.storyboard */, 5BED1E4524A98EC20066C4D2 /* LaunchScreen_ko.storyboard */,
5B30F78824B8179600CDED63 /* LaunchScreen_it.storyboard */,
5B30F78B24B817A100CDED63 /* LaunchScreen_el.storyboard */,
); );
path = LaunchScreen; path = LaunchScreen;
sourceTree = "<group>"; sourceTree = "<group>";
@ -687,6 +726,7 @@
59AF2E97243552FB00ACCAF2 /* Certificates */, 59AF2E97243552FB00ACCAF2 /* Certificates */,
FB12C4C0242F047F007E893B /* RespondToAuthChallengeAPI.swift */, FB12C4C0242F047F007E893B /* RespondToAuthChallengeAPI.swift */,
5BFFD94A242EC120003AEF4F /* PhoneValidationAPI.swift */, 5BFFD94A242EC120003AEF4F /* PhoneValidationAPI.swift */,
5B04074024BC0CEA00FAAFD0 /* MessageAPI.swift */,
59ACB573242F195A00E63E3C /* InitiateUploadAPI.swift */, 59ACB573242F195A00E63E3C /* InitiateUploadAPI.swift */,
59ACB575242F404500E63E3C /* DataUploadS3.swift */, 59ACB575242F404500E63E3C /* DataUploadS3.swift */,
FB12C4C2242F0FE9007E893B /* GetTempIdAPI.swift */, FB12C4C2242F0FE9007E893B /* GetTempIdAPI.swift */,
@ -737,6 +777,7 @@
30BE1CAB23F10921005DCE4F /* Structures */, 30BE1CAB23F10921005DCE4F /* Structures */,
30FADD6C23F520F5006C125F /* Utils */, 30FADD6C23F520F5006C125F /* Utils */,
5DD41D7723DE141700FD4AB0 /* tracer.xcdatamodeld */, 5DD41D7723DE141700FD4AB0 /* tracer.xcdatamodeld */,
5B728B4C24B5A26D00654ABC /* debug.xcdatamodeld */,
5DD41D4023DCB03B00FD4AB0 /* Main.storyboard */, 5DD41D4023DCB03B00FD4AB0 /* Main.storyboard */,
D8EB201C23FBE216001C60EC /* help_center_article_style.css */, D8EB201C23FBE216001C60EC /* help_center_article_style.css */,
5DD41D4323DCB03D00FD4AB0 /* Assets.xcassets */, 5DD41D4323DCB03D00FD4AB0 /* Assets.xcassets */,
@ -944,6 +985,8 @@
"zh-Hant", "zh-Hant",
vi, vi,
ko, ko,
it,
el,
); );
mainGroup = 5DD41D2E23DCB03B00FD4AB0; mainGroup = 5DD41D2E23DCB03B00FD4AB0;
productRefGroup = 5DD41D3823DCB03B00FD4AB0 /* Products */; productRefGroup = 5DD41D3823DCB03B00FD4AB0 /* Products */;
@ -977,10 +1020,12 @@
59F25D6F245BED80002A7ED8 /* Debug.storyboard in Resources */, 59F25D6F245BED80002A7ED8 /* Debug.storyboard in Resources */,
5BED1E3B24A96D1C0066C4D2 /* LaunchScreen_ar.storyboard in Resources */, 5BED1E3B24A96D1C0066C4D2 /* LaunchScreen_ar.storyboard in Resources */,
5BED1E4424A98EB60066C4D2 /* LaunchScreen_vi.storyboard in Resources */, 5BED1E4424A98EB60066C4D2 /* LaunchScreen_vi.storyboard in Resources */,
5B30F78D24B817A100CDED63 /* LaunchScreen_el.storyboard in Resources */,
5B92D6C9243018040049877B /* LaunchScreen.storyboard in Resources */, 5B92D6C9243018040049877B /* LaunchScreen.storyboard in Resources */,
59AF2EAF2435801400ACCAF2 /* AmazonRootCA2.cer in Resources */, 59AF2EAF2435801400ACCAF2 /* AmazonRootCA2.cer in Resources */,
5B92D6CB243018040049877B /* Assets.xcassets in Resources */, 5B92D6CB243018040049877B /* Assets.xcassets in Resources */,
5BED1E4124A98EAF0066C4D2 /* LaunchScreen_zh-Hant.storyboard in Resources */, 5BED1E4124A98EAF0066C4D2 /* LaunchScreen_zh-Hant.storyboard in Resources */,
5B30F78A24B8179600CDED63 /* LaunchScreen_it.storyboard in Resources */,
5B337AB0245AA26300537620 /* Spinner_upload.json in Resources */, 5B337AB0245AA26300537620 /* Spinner_upload.json in Resources */,
5BED1E4724A98EC20066C4D2 /* LaunchScreen_ko.storyboard in Resources */, 5BED1E4724A98EC20066C4D2 /* LaunchScreen_ko.storyboard in Resources */,
59AF2EAB2435801400ACCAF2 /* AmazonRootCA3.cer in Resources */, 59AF2EAB2435801400ACCAF2 /* AmazonRootCA3.cer in Resources */,
@ -992,6 +1037,7 @@
isa = PBXResourcesBuildPhase; isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
5B30F78924B8179600CDED63 /* LaunchScreen_it.storyboard in Resources */,
D8EB201D23FBE216001C60EC /* help_center_article_style.css in Resources */, D8EB201D23FBE216001C60EC /* help_center_article_style.css in Resources */,
5B51ED55248627A8008CE722 /* UploadData.storyboard in Resources */, 5B51ED55248627A8008CE722 /* UploadData.storyboard in Resources */,
A767D313242DF1B000DC9E2A /* JMCTarget.json in Resources */, A767D313242DF1B000DC9E2A /* JMCTarget.json in Resources */,
@ -1001,6 +1047,7 @@
59F25D69245B917A002A7ED8 /* Spinner_home.json in Resources */, 59F25D69245B917A002A7ED8 /* Spinner_home.json in Resources */,
5BED1E4624A98EC20066C4D2 /* LaunchScreen_ko.storyboard in Resources */, 5BED1E4624A98EC20066C4D2 /* LaunchScreen_ko.storyboard in Resources */,
5BED1E3A24A96D1C0066C4D2 /* LaunchScreen_ar.storyboard in Resources */, 5BED1E3A24A96D1C0066C4D2 /* LaunchScreen_ar.storyboard in Resources */,
5B30F78C24B817A100CDED63 /* LaunchScreen_el.storyboard in Resources */,
5B82435E2480DC2100705CB1 /* Localizable.strings in Resources */, 5B82435E2480DC2100705CB1 /* Localizable.strings in Resources */,
5B92D663243011B40049877B /* CovidSafe-config.plist in Resources */, 5B92D663243011B40049877B /* CovidSafe-config.plist in Resources */,
5BED1E4324A98EB60066C4D2 /* LaunchScreen_vi.storyboard in Resources */, 5BED1E4324A98EB60066C4D2 /* LaunchScreen_vi.storyboard in Resources */,
@ -1126,19 +1173,24 @@
5B92D67F243018040049877B /* PogoInstructionsViewController.swift in Sources */, 5B92D67F243018040049877B /* PogoInstructionsViewController.swift in Sources */,
FBBBFCE82430A933002B174D /* OnboardingStep1aViewController.swift in Sources */, FBBBFCE82430A933002B174D /* OnboardingStep1aViewController.swift in Sources */,
5B51ED512485DF9C008CE722 /* UILocalization.swift in Sources */, 5B51ED512485DF9C008CE722 /* UILocalization.swift in Sources */,
5BA33A8024B55EF200D12515 /* BLELogDB.swift in Sources */,
594E77C3247387B1009B8B34 /* EncounterDB+migration.swift in Sources */, 594E77C3247387B1009B8B34 /* EncounterDB+migration.swift in Sources */,
590C99332432C1C400A5EC71 /* UploadDataHomeViewController.swift in Sources */, 590C99332432C1C400A5EC71 /* UploadDataHomeViewController.swift in Sources */,
59B7417124514126006E1EEA /* RegistrationConsentViewController.swift in Sources */, 59B7417124514126006E1EEA /* RegistrationConsentViewController.swift in Sources */,
5B92D680243018040049877B /* CodeInputView.swift in Sources */, 5B92D680243018040049877B /* CodeInputView.swift in Sources */,
5B92D681243018040049877B /* EncounterRecord.swift in Sources */, 5B92D681243018040049877B /* EncounterRecord.swift in Sources */,
5B728B4B24B581C100654ABC /* BLELog+CoreDataProperties.swift in Sources */,
5B337AAD245A9EF800537620 /* UploadDataErrorViewController.swift in Sources */, 5B337AAD245A9EF800537620 /* UploadDataErrorViewController.swift in Sources */,
590888B02431B9E7008C9B9F /* UIColor + Extensions.swift in Sources */, 590888B02431B9E7008C9B9F /* UIColor + Extensions.swift in Sources */,
5B728B4E24B5A26D00654ABC /* debug.xcdatamodeld in Sources */,
5B92D74F243022EF0049877B /* DataUploadS3.swift in Sources */, 5B92D74F243022EF0049877B /* DataUploadS3.swift in Sources */,
5B92D683243018040049877B /* OnboardingStep2bViewController.swift in Sources */, 5B92D683243018040049877B /* OnboardingStep2bViewController.swift in Sources */,
5BA33A8224B5602500D12515 /* BLELogRecord+BLELogSave.swift in Sources */,
5B92D684243018040049877B /* AsyncAction.swift in Sources */, 5B92D684243018040049877B /* AsyncAction.swift in Sources */,
5B92D685243018040049877B /* UILabelExtension.swift in Sources */, 5B92D685243018040049877B /* UILabelExtension.swift in Sources */,
5B92D686243018040049877B /* AppDelegate.swift in Sources */, 5B92D686243018040049877B /* AppDelegate.swift in Sources */,
5B92D687243018040049877B /* PhoneNumberViewController.swift in Sources */, 5B92D687243018040049877B /* PhoneNumberViewController.swift in Sources */,
5BA33A7C24B41ECA00D12515 /* UIFont + Traits.swift in Sources */,
5961ABEB2474E358004040DF /* MigrationViewController.swift in Sources */, 5961ABEB2474E358004040DF /* MigrationViewController.swift in Sources */,
5B110C11248F275B00B68291 /* SelectCountryViewController.swift in Sources */, 5B110C11248F275B00B68291 /* SelectCountryViewController.swift in Sources */,
5B92D688243018040049877B /* BluetraceUtils.swift in Sources */, 5B92D688243018040049877B /* BluetraceUtils.swift in Sources */,
@ -1147,6 +1199,7 @@
5B92D68B243018040049877B /* Encounter+EncounterRecord.swift in Sources */, 5B92D68B243018040049877B /* Encounter+EncounterRecord.swift in Sources */,
0B42D0DE2432B39E00E4F44C /* Question2ErrorViewController.swift in Sources */, 0B42D0DE2432B39E00E4F44C /* Question2ErrorViewController.swift in Sources */,
594E77C024736B77009B8B34 /* EncounterDB.swift in Sources */, 594E77C024736B77009B8B34 /* EncounterDB.swift in Sources */,
5B728B4724B5667000654ABC /* BLELogViewController.swift in Sources */,
590888B42431B9F5008C9B9F /* UploadDataNavigationController.swift in Sources */, 590888B42431B9F5008C9B9F /* UploadDataNavigationController.swift in Sources */,
5B92D68C243018040049877B /* GetJMCTargetAction.swift in Sources */, 5B92D68C243018040049877B /* GetJMCTargetAction.swift in Sources */,
5B92D68D243018040049877B /* Logging.swift in Sources */, 5B92D68D243018040049877B /* Logging.swift in Sources */,
@ -1167,11 +1220,13 @@
5B92D697243018040049877B /* PeripheralController.swift in Sources */, 5B92D697243018040049877B /* PeripheralController.swift in Sources */,
5B92D698243018040049877B /* SendFeedbackAction.swift in Sources */, 5B92D698243018040049877B /* SendFeedbackAction.swift in Sources */,
5B92D699243018040049877B /* UITextViewFixed.swift in Sources */, 5B92D699243018040049877B /* UITextViewFixed.swift in Sources */,
5BA33A7E24B55E7D00D12515 /* BLELogRecord.swift in Sources */,
590888B12431B9EB008C9B9F /* Question3ViewController.swift in Sources */, 590888B12431B9EB008C9B9F /* Question3ViewController.swift in Sources */,
5957EB67244E936E002F5388 /* UnderSixteenViewController.swift in Sources */, 5957EB67244E936E002F5388 /* UnderSixteenViewController.swift in Sources */,
0B1810132431FC430005D11F /* PhoneNumberParser.swift in Sources */, 0B1810132431FC430005D11F /* PhoneNumberParser.swift in Sources */,
5B92D69A243018040049877B /* GradientButton.swift in Sources */, 5B92D69A243018040049877B /* GradientButton.swift in Sources */,
5B92D69B243018040049877B /* ViewControllerFactory.swift in Sources */, 5B92D69B243018040049877B /* ViewControllerFactory.swift in Sources */,
5B04074224BC0CEA00FAAFD0 /* MessageAPI.swift in Sources */,
5B7ABF26244D3BC600BB249B /* IsolationSuccessViewController.swift in Sources */, 5B7ABF26244D3BC600BB249B /* IsolationSuccessViewController.swift in Sources */,
5B92D69C243018040049877B /* FeedbackViewController.swift in Sources */, 5B92D69C243018040049877B /* FeedbackViewController.swift in Sources */,
5B92D69E243018040049877B /* JMCTarget.swift in Sources */, 5B92D69E243018040049877B /* JMCTarget.swift in Sources */,
@ -1184,6 +1239,7 @@
5B92D750243022F20049877B /* InitiateUploadAPI.swift in Sources */, 5B92D750243022F20049877B /* InitiateUploadAPI.swift in Sources */,
5B92D69F243018040049877B /* EncounterMessageManager.swift in Sources */, 5B92D69F243018040049877B /* EncounterMessageManager.swift in Sources */,
590888B82431BD9C008C9B9F /* UploadDataThankYouHomeViewController.swift in Sources */, 590888B82431BD9C008C9B9F /* UploadDataThankYouHomeViewController.swift in Sources */,
5B728B4924B5816C00654ABC /* BLELog+CoreDataClass.swift in Sources */,
5B92D6A2243018040049877B /* GetTempIdAPI.swift in Sources */, 5B92D6A2243018040049877B /* GetTempIdAPI.swift in Sources */,
5B92D6A3243018040049877B /* PhoneValidationAPI.swift in Sources */, 5B92D6A3243018040049877B /* PhoneValidationAPI.swift in Sources */,
59AF2EB32435A38100ACCAF2 /* CovidRequestRetrier.swift in Sources */, 59AF2EB32435A38100ACCAF2 /* CovidRequestRetrier.swift in Sources */,
@ -1265,6 +1321,7 @@
D8EB201B23FA722D001C60EC /* HelpNavController.swift in Sources */, D8EB201B23FA722D001C60EC /* HelpNavController.swift in Sources */,
596B189924496D32003E190F /* Encounter+Util.swift in Sources */, 596B189924496D32003E190F /* Encounter+Util.swift in Sources */,
5961ABEA2474E358004040DF /* MigrationViewController.swift in Sources */, 5961ABEA2474E358004040DF /* MigrationViewController.swift in Sources */,
5B04074124BC0CEA00FAAFD0 /* MessageAPI.swift in Sources */,
30BE1CB523F15D47005DCE4F /* OTPViewController.swift in Sources */, 30BE1CB523F15D47005DCE4F /* OTPViewController.swift in Sources */,
5B900FC12485C4EE00CAA419 /* String+Localization.swift in Sources */, 5B900FC12485C4EE00CAA419 /* String+Localization.swift in Sources */,
5D8DD06123E319B300E097EF /* Encounter+CoreDataClass.swift in Sources */, 5D8DD06123E319B300E097EF /* Encounter+CoreDataClass.swift in Sources */,
@ -1274,6 +1331,7 @@
1B86119124303EF200EA4B6B /* Question1ViewController.swift in Sources */, 1B86119124303EF200EA4B6B /* Question1ViewController.swift in Sources */,
5BD3EE8324330E1A0004A007 /* UploadDataStep2VC.swift in Sources */, 5BD3EE8324330E1A0004A007 /* UploadDataStep2VC.swift in Sources */,
A767D31B242DF1B000DC9E2A /* UIColor+Hex.swift in Sources */, A767D31B242DF1B000DC9E2A /* UIColor+Hex.swift in Sources */,
5BA33A7B24B3FE2700D12515 /* UIFont + Traits.swift in Sources */,
C5046D5C23EF18600046E96D /* OnboardingStep1ViewController.swift in Sources */, C5046D5C23EF18600046E96D /* OnboardingStep1ViewController.swift in Sources */,
0B69E7ED2430D72900561DD9 /* UploadDataNavigationController.swift in Sources */, 0B69E7ED2430D72900561DD9 /* UploadDataNavigationController.swift in Sources */,
A767D320242DF1B100DC9E2A /* DeviceInfoExtension.swift in Sources */, A767D320242DF1B100DC9E2A /* DeviceInfoExtension.swift in Sources */,
@ -1353,6 +1411,8 @@
5BED1E4E24A98F530066C4D2 /* vi */, 5BED1E4E24A98F530066C4D2 /* vi */,
5BED1E5024A98FCE0066C4D2 /* zh-Hans */, 5BED1E5024A98FCE0066C4D2 /* zh-Hans */,
5BED1E5324A9900B0066C4D2 /* ko */, 5BED1E5324A9900B0066C4D2 /* ko */,
5B30F78524B8171E00CDED63 /* it */,
5B30F78724B8172E00CDED63 /* el */,
); );
name = InfoPlist.strings; name = InfoPlist.strings;
sourceTree = "<group>"; sourceTree = "<group>";
@ -1366,6 +1426,8 @@
5BED1E4D24A98F530066C4D2 /* vi */, 5BED1E4D24A98F530066C4D2 /* vi */,
5BED1E5124A98FD50066C4D2 /* zh-Hans */, 5BED1E5124A98FD50066C4D2 /* zh-Hans */,
5BED1E5224A9900B0066C4D2 /* ko */, 5BED1E5224A9900B0066C4D2 /* ko */,
5B30F78424B8171E00CDED63 /* it */,
5B30F78624B8172D00CDED63 /* el */,
); );
name = Localizable.strings; name = Localizable.strings;
sourceTree = "<group>"; sourceTree = "<group>";
@ -1467,7 +1529,7 @@
CODE_SIGN_ENTITLEMENTS = "CovidSafe/Project Bluetrace.entitlements"; CODE_SIGN_ENTITLEMENTS = "CovidSafe/Project Bluetrace.entitlements";
CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 46; CURRENT_PROJECT_VERSION = 56;
DEVELOPMENT_TEAM = 45792XH5L8; DEVELOPMENT_TEAM = 45792XH5L8;
INFOPLIST_FILE = "$(SRCROOT)/CovidSafe/Info.plist"; INFOPLIST_FILE = "$(SRCROOT)/CovidSafe/Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 10.0; IPHONEOS_DEPLOYMENT_TARGET = 10.0;
@ -1475,7 +1537,7 @@
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
MARKETING_VERSION = 1.7; MARKETING_VERSION = 1.8;
ONLY_ACTIVE_ARCH = YES; ONLY_ACTIVE_ARCH = YES;
PRODUCT_BUNDLE_IDENTIFIER = au.gov.health.covidsafe; PRODUCT_BUNDLE_IDENTIFIER = au.gov.health.covidsafe;
PRODUCT_NAME = COVIDSafe; PRODUCT_NAME = COVIDSafe;
@ -1551,7 +1613,7 @@
CODE_SIGN_ENTITLEMENTS = "CovidSafe/Project Bluetrace.entitlements"; CODE_SIGN_ENTITLEMENTS = "CovidSafe/Project Bluetrace.entitlements";
CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 46; CURRENT_PROJECT_VERSION = 56;
DEVELOPMENT_TEAM = 45792XH5L8; DEVELOPMENT_TEAM = 45792XH5L8;
INFOPLIST_FILE = "$(SRCROOT)/CovidSafe/Info.plist"; INFOPLIST_FILE = "$(SRCROOT)/CovidSafe/Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 10.0; IPHONEOS_DEPLOYMENT_TARGET = 10.0;
@ -1559,7 +1621,7 @@
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
MARKETING_VERSION = 1.7; MARKETING_VERSION = 1.8;
PRODUCT_BUNDLE_IDENTIFIER = au.gov.health.covidsafe; PRODUCT_BUNDLE_IDENTIFIER = au.gov.health.covidsafe;
PRODUCT_NAME = COVIDSafe; PRODUCT_NAME = COVIDSafe;
PROVISIONING_PROFILE_SPECIFIER = ""; PROVISIONING_PROFILE_SPECIFIER = "";
@ -1579,7 +1641,7 @@
CODE_SIGN_ENTITLEMENTS = "CovidSafe/Project Bluetrace.entitlements"; CODE_SIGN_ENTITLEMENTS = "CovidSafe/Project Bluetrace.entitlements";
CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 46; CURRENT_PROJECT_VERSION = 56;
DEVELOPMENT_TEAM = 45792XH5L8; DEVELOPMENT_TEAM = 45792XH5L8;
INFOPLIST_FILE = "$(SRCROOT)/CovidSafe/Info.plist"; INFOPLIST_FILE = "$(SRCROOT)/CovidSafe/Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 10.0; IPHONEOS_DEPLOYMENT_TARGET = 10.0;
@ -1587,7 +1649,7 @@
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
MARKETING_VERSION = 1.7; MARKETING_VERSION = 1.8;
ONLY_ACTIVE_ARCH = YES; ONLY_ACTIVE_ARCH = YES;
OTHER_SWIFT_FLAGS = "$(inherited) -D COCOAPODS -D DEBUG"; OTHER_SWIFT_FLAGS = "$(inherited) -D COCOAPODS -D DEBUG";
PRODUCT_BUNDLE_IDENTIFIER = au.gov.health.covidsafe; PRODUCT_BUNDLE_IDENTIFIER = au.gov.health.covidsafe;
@ -1609,7 +1671,7 @@
CODE_SIGN_ENTITLEMENTS = "CovidSafe/Project Bluetrace.entitlements"; CODE_SIGN_ENTITLEMENTS = "CovidSafe/Project Bluetrace.entitlements";
CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 46; CURRENT_PROJECT_VERSION = 56;
DEVELOPMENT_TEAM = 45792XH5L8; DEVELOPMENT_TEAM = 45792XH5L8;
INFOPLIST_FILE = "$(SRCROOT)/CovidSafe/Info.plist"; INFOPLIST_FILE = "$(SRCROOT)/CovidSafe/Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 10.0; IPHONEOS_DEPLOYMENT_TARGET = 10.0;
@ -1617,7 +1679,7 @@
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
MARKETING_VERSION = 1.7; MARKETING_VERSION = 1.8;
ONLY_ACTIVE_ARCH = YES; ONLY_ACTIVE_ARCH = YES;
OTHER_SWIFT_FLAGS = "$(inherited) -D COCOAPODS -D DEBUG"; OTHER_SWIFT_FLAGS = "$(inherited) -D COCOAPODS -D DEBUG";
PRODUCT_BUNDLE_IDENTIFIER = au.gov.health.covidsafe; PRODUCT_BUNDLE_IDENTIFIER = au.gov.health.covidsafe;
@ -1639,7 +1701,7 @@
CODE_SIGN_ENTITLEMENTS = "CovidSafe/Project Bluetrace.entitlements"; CODE_SIGN_ENTITLEMENTS = "CovidSafe/Project Bluetrace.entitlements";
CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 46; CURRENT_PROJECT_VERSION = 56;
DEVELOPMENT_TEAM = 45792XH5L8; DEVELOPMENT_TEAM = 45792XH5L8;
INFOPLIST_FILE = "$(SRCROOT)/CovidSafe/Info.plist"; INFOPLIST_FILE = "$(SRCROOT)/CovidSafe/Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 10.0; IPHONEOS_DEPLOYMENT_TARGET = 10.0;
@ -1647,7 +1709,7 @@
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
MARKETING_VERSION = 1.7; MARKETING_VERSION = 1.8;
OTHER_SWIFT_FLAGS = "$(inherited) -D COCOAPODS -D DEBUG"; OTHER_SWIFT_FLAGS = "$(inherited) -D COCOAPODS -D DEBUG";
PRODUCT_BUNDLE_IDENTIFIER = au.gov.health.covidsafe; PRODUCT_BUNDLE_IDENTIFIER = au.gov.health.covidsafe;
PRODUCT_MODULE_NAME = COVIDSafe; PRODUCT_MODULE_NAME = COVIDSafe;
@ -1669,7 +1731,7 @@
CODE_SIGN_ENTITLEMENTS = "CovidSafe/Project Bluetrace.entitlements"; CODE_SIGN_ENTITLEMENTS = "CovidSafe/Project Bluetrace.entitlements";
CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 46; CURRENT_PROJECT_VERSION = 56;
DEVELOPMENT_TEAM = 45792XH5L8; DEVELOPMENT_TEAM = 45792XH5L8;
INFOPLIST_FILE = "$(SRCROOT)/CovidSafe/Info.plist"; INFOPLIST_FILE = "$(SRCROOT)/CovidSafe/Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 10.0; IPHONEOS_DEPLOYMENT_TARGET = 10.0;
@ -1677,7 +1739,7 @@
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
MARKETING_VERSION = 1.7; MARKETING_VERSION = 1.8;
OTHER_SWIFT_FLAGS = "$(inherited) -D COCOAPODS -D DEBUG"; OTHER_SWIFT_FLAGS = "$(inherited) -D COCOAPODS -D DEBUG";
PRODUCT_BUNDLE_IDENTIFIER = au.gov.health.covidsafe; PRODUCT_BUNDLE_IDENTIFIER = au.gov.health.covidsafe;
PRODUCT_MODULE_NAME = COVIDSafe; PRODUCT_MODULE_NAME = COVIDSafe;
@ -1817,7 +1879,7 @@
CODE_SIGN_ENTITLEMENTS = "CovidSafe/Project Bluetrace.entitlements"; CODE_SIGN_ENTITLEMENTS = "CovidSafe/Project Bluetrace.entitlements";
CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 46; CURRENT_PROJECT_VERSION = 56;
DEVELOPMENT_TEAM = 45792XH5L8; DEVELOPMENT_TEAM = 45792XH5L8;
INFOPLIST_FILE = "$(SRCROOT)/CovidSafe/Info.plist"; INFOPLIST_FILE = "$(SRCROOT)/CovidSafe/Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 10.0; IPHONEOS_DEPLOYMENT_TARGET = 10.0;
@ -1825,7 +1887,7 @@
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
MARKETING_VERSION = 1.7; MARKETING_VERSION = 1.8;
ONLY_ACTIVE_ARCH = YES; ONLY_ACTIVE_ARCH = YES;
PRODUCT_BUNDLE_IDENTIFIER = au.gov.health.covidsafe; PRODUCT_BUNDLE_IDENTIFIER = au.gov.health.covidsafe;
PRODUCT_NAME = COVIDSafe; PRODUCT_NAME = COVIDSafe;
@ -1845,7 +1907,7 @@
CODE_SIGN_ENTITLEMENTS = "CovidSafe/Project Bluetrace.entitlements"; CODE_SIGN_ENTITLEMENTS = "CovidSafe/Project Bluetrace.entitlements";
CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 46; CURRENT_PROJECT_VERSION = 56;
DEVELOPMENT_TEAM = 45792XH5L8; DEVELOPMENT_TEAM = 45792XH5L8;
INFOPLIST_FILE = "$(SRCROOT)/CovidSafe/Info.plist"; INFOPLIST_FILE = "$(SRCROOT)/CovidSafe/Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 10.0; IPHONEOS_DEPLOYMENT_TARGET = 10.0;
@ -1853,7 +1915,7 @@
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
MARKETING_VERSION = 1.7; MARKETING_VERSION = 1.8;
PRODUCT_BUNDLE_IDENTIFIER = au.gov.health.covidsafe; PRODUCT_BUNDLE_IDENTIFIER = au.gov.health.covidsafe;
PRODUCT_NAME = COVIDSafe; PRODUCT_NAME = COVIDSafe;
PROVISIONING_PROFILE_SPECIFIER = ""; PROVISIONING_PROFILE_SPECIFIER = "";
@ -1904,6 +1966,16 @@
/* End XCConfigurationList section */ /* End XCConfigurationList section */
/* Begin XCVersionGroup section */ /* Begin XCVersionGroup section */
5B728B4C24B5A26D00654ABC /* debug.xcdatamodeld */ = {
isa = XCVersionGroup;
children = (
5B728B4D24B5A26D00654ABC /* debug.xcdatamodel */,
);
currentVersion = 5B728B4D24B5A26D00654ABC /* debug.xcdatamodel */;
path = debug.xcdatamodeld;
sourceTree = "<group>";
versionGroupType = wrapper.xcdatamodel;
};
5DD41D7723DE141700FD4AB0 /* tracer.xcdatamodeld */ = { 5DD41D7723DE141700FD4AB0 /* tracer.xcdatamodeld */ = {
isa = XCVersionGroup; isa = XCVersionGroup;
children = ( children = (

View file

@ -0,0 +1,102 @@
//
// MessageAPI.swift
// CovidSafe
//
// Copyright © 2020 Australian Government. All rights reserved.
//
import Foundation
import Alamofire
import KeychainSwift
class MessageAPI {
static let keyLastApiUpdate = "keyLastApiUpdate"
static func getMessagesIfNeeded(completion: @escaping (MessageResponse?, Swift.Error?) -> Void) {
if shouldGetMessages() {
guard let token = UserDefaults.standard.string(forKey: "deviceTokenForAPN") else {
return
}
// Make API call to get messages
let messageRequest = MessageRequest(remotePushToken: token)
getMessages(msgRequest: messageRequest, completion: completion)
}
}
private static func shouldGetMessages() -> Bool {
let lastChecked = UserDefaults.standard.double(forKey: keyLastApiUpdate)
var shouldGetMessages = true
let calendar = NSCalendar.current
let currentDate = calendar.startOfDay(for: Date())
if lastChecked > 0 {
let lastCheckedDate = Date(timeIntervalSince1970: lastChecked)
let components = calendar.dateComponents([.day], from: lastCheckedDate, to: currentDate)
if let numDays = components.day {
shouldGetMessages = numDays > 0
}
}
return shouldGetMessages
}
static func getMessages(msgRequest: MessageRequest,
completion: @escaping (MessageResponse?, Swift.Error?) -> Void) {
let keychain = KeychainSwift()
guard let apiHost = PlistHelper.getvalueFromInfoPlist(withKey: "API_Host", plistName: "CovidCare-config") else {
return
}
guard let token = keychain.get("JWT_TOKEN") else {
completion(nil, nil)
return
}
let headers: HTTPHeaders = [
"Authorization": "Bearer \(token)"
]
var params = [
"os" : "ios-\(UIDevice.current.systemVersion)"
]
if let buildString = Bundle.main.version {
params["appversion"] = "\(buildString)"
}
if let remoteToken = msgRequest.remotePushToken {
params["token"] = remoteToken
}
CovidNetworking.shared.session.request("\(apiHost)/messages",
method: .get,
parameters: params,
headers: headers
).validate().responseDecodable(of: MessageResponse.self) { (response) in
switch response.result {
case .success:
guard let messageResponse = response.value else { return }
// save successful timestamp
let calendar = NSCalendar.current
let currentDate = calendar.startOfDay(for: Date())
UserDefaults.standard.set(currentDate.timeIntervalSince1970, forKey: keyLastApiUpdate)
completion(messageResponse, nil)
case let .failure(error):
completion(nil, error)
}
}
}
}
struct MessageRequest {
var remotePushToken: String?
}
struct MessageResponse: Decodable {
let message: String
let forceappupgrade: Bool
}

View file

@ -52,6 +52,8 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
// Remote config setup // Remote config setup
let _ = TracerRemoteConfig() let _ = TracerRemoteConfig()
registerForPushNotifications()
return true return true
} }
@ -88,6 +90,8 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
} }
} }
// - Local Notifications
fileprivate func setupBluetoothPNStatusCallback() { fileprivate func setupBluetoothPNStatusCallback() {
let btStatusMagicNumber = Int.random(in: 0 ... PushNotificationConstants.btStatusPushNotifContents.count - 1) let btStatusMagicNumber = Int.random(in: 0 ... PushNotificationConstants.btStatusPushNotifContents.count - 1)
@ -208,6 +212,8 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
scheduleReminderNotifications() scheduleReminderNotifications()
} }
// - Application lifecycle
func applicationDidBecomeActive(_ application: UIApplication) { func applicationDidBecomeActive(_ application: UIApplication) {
DLog("applicationDidBecomeActive") DLog("applicationDidBecomeActive")
@ -287,6 +293,9 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
} }
} }
// - Wallpaper with watermark
let blackScreenTag = 123 let blackScreenTag = 123
private func showBlackscreen() { private func showBlackscreen() {
@ -378,6 +387,8 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
motionManager?.stopAccelerometerUpdates() motionManager?.stopAccelerometerUpdates()
} }
// - Background tasking
func registerBackgroundTask() { func registerBackgroundTask() {
backgroundTask = UIApplication.shared.beginBackgroundTask { [weak self] in backgroundTask = UIApplication.shared.beginBackgroundTask { [weak self] in
self?.endBackgroundTask() self?.endBackgroundTask()
@ -391,6 +402,74 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
backgroundTask = .invalid backgroundTask = .invalid
} }
} }
// - Remote Push Notifications
func registerForPushNotifications() {
// check if permission have been requested, if so, is an existing user and we should register
// otherwise the permission will be set in the apprpiate permissions screen
guard UserDefaults.standard.bool(forKey: "allowedPermissions") == true else {
return
}
// existing user registering for RPN
DispatchQueue.main.async {
UIApplication.shared.registerForRemoteNotifications()
}
}
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
// Attach the device token to the user defaults
let tokenParts = deviceToken.map { data in String(format: "%02.2hhx", data) }
let token = tokenParts.joined()
DLog("The APN token received is: \(token)")
UserDefaults.standard.set(token, forKey: "deviceTokenForAPN")
let messageRequest = MessageRequest(remotePushToken: token)
MessageAPI.getMessages(msgRequest: messageRequest) { (response, error) in
if let error = error {
DLog("Get messages error: \(error.localizedDescription)")
return
}
DLog("Get messages success, device token saved")
}
}
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
DLog("Remote notification received")
guard let payload = userInfo["aps"] as? [String: AnyObject] else {
completionHandler(.failed)
return
}
#if DEBUG
// for debug build only, log all silent notifications regardless of the category
if payload["content-available"] as? Int == 1 {
var numNotifications = UserDefaults.standard.integer(forKey: "debugSilentNotificationCount")
numNotifications += 1
UserDefaults.standard.set(numNotifications, forKey: "debugSilentNotificationCount")
}
#endif
if payload["content-available"] as? Int == 1 && payload["category"] as? String == "UPDATE_STATS" {
DLog("Notification is category: UPDATE_STATS")
MessageAPI.getMessagesIfNeeded() { (messageResponse, error) in
if let error = error {
DLog("Get messages error: \(error.localizedDescription)")
completionHandler(.failed)
return
}
DLog("Messages API success")
completionHandler(.newData)
}
return
}
completionHandler(.noData)
}
} }
extension Notification.Name { extension Notification.Name {
@ -402,7 +481,6 @@ extension Notification.Name {
static let encounterRecorded = Notification.Name("encounterRecorded") static let encounterRecorded = Notification.Name("encounterRecorded")
} }
@available(iOS 10, *)
extension AppDelegate : UNUserNotificationCenterDelegate { extension AppDelegate : UNUserNotificationCenterDelegate {
// when user receives the notification when app is in foreground // when user receives the notification when app is in foreground
@ -415,6 +493,21 @@ extension AppDelegate : UNUserNotificationCenterDelegate {
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) { func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
if response.notification.request.identifier == "bluetoothStatusNotifId" && !BluetraceManager.shared.isBluetoothAuthorized() { if response.notification.request.identifier == "bluetoothStatusNotifId" && !BluetraceManager.shared.isBluetoothAuthorized() {
UIApplication.shared.open(URL(string: UIApplication.openSettingsURLString)!) UIApplication.shared.open(URL(string: UIApplication.openSettingsURLString)!)
completionHandler()
return
}
DLog("Remote notification received")
let userInfo = response.notification.request.content.userInfo
// check payload and notification type
if let payload = userInfo["aps"] as? [String: AnyObject],
let notificationType = payload["category"] as? String {
if notificationType == "UPDATE_APP",
let url = URL(string: "itms-apps://itunes.apple.com/app/id1509242894"),
UIApplication.shared.canOpenURL(url) {
UIApplication.shared.open(url, options: [:], completionHandler: nil)
}
} }
completionHandler() completionHandler()
} }

View file

@ -0,0 +1,12 @@
{
"images" : [
{
"filename" : "x.pdf",
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View file

@ -0,0 +1,103 @@
%PDF-1.7
1 0 obj
<< >>
endobj
2 0 obj
<< /Length 3 0 R >>
stream
/DeviceRGB CS
/DeviceRGB cs
q
1.000000 0.000000 -0.000000 1.000000 20.000000 11.218994 cm
0.639216 0.098039 0.098039 scn
42.828426 45.952579 m
44.390522 47.514675 44.390522 50.047337 42.828426 51.609432 c
41.266331 53.171532 38.733669 53.171532 37.171574 51.609432 c
42.828426 45.952579 l
h
-2.828427 11.609432 m
-4.390524 10.047337 -4.390524 7.514675 -2.828427 5.952579 c
-1.266330 4.390484 1.266330 4.390484 2.828427 5.952579 c
-2.828427 11.609432 l
h
37.171574 51.609432 m
-2.828427 11.609432 l
2.828427 5.952579 l
42.828426 45.952579 l
37.171574 51.609432 l
h
f
n
Q
q
1.000000 0.000000 -0.000000 1.000000 20.000000 11.218994 cm
0.639216 0.098039 0.098039 scn
2.828427 51.609432 m
1.266330 53.171532 -1.266330 53.171532 -2.828427 51.609432 c
-4.390524 50.047337 -4.390524 47.514675 -2.828427 45.952579 c
2.828427 51.609432 l
h
37.171574 5.952579 m
38.733669 4.390484 41.266331 4.390484 42.828426 5.952579 c
44.390522 7.514675 44.390522 10.047337 42.828426 11.609432 c
37.171574 5.952579 l
h
-2.828427 45.952579 m
37.171574 5.952579 l
42.828426 11.609432 l
2.828427 51.609432 l
-2.828427 45.952579 l
h
f
n
Q
endstream
endobj
3 0 obj
1110
endobj
4 0 obj
<< /Annots []
/Type /Page
/MediaBox [ 0.000000 0.000000 80.000000 80.000000 ]
/Resources 1 0 R
/Contents 2 0 R
/Parent 5 0 R
>>
endobj
5 0 obj
<< /Kids [ 4 0 R ]
/Count 1
/Type /Pages
>>
endobj
6 0 obj
<< /Type /Catalog
/Pages 5 0 R
>>
endobj
xref
0 7
0000000000 65535 f
0000000010 00000 n
0000000034 00000 n
0000001200 00000 n
0000001223 00000 n
0000001396 00000 n
0000001470 00000 n
trailer
<< /ID [ (some) (id) ]
/Root 6 0 R
/Size 7
>>
startxref
1529
%%EOF

View file

@ -0,0 +1,15 @@
//
// BLELog+CoreDataClass.swift
// CovidSafe
//
// Copyright © 2020 Australian Government. All rights reserved.
//
//
import Foundation
import CoreData
@objc(BLELog)
public class BLELog: NSManagedObject, Encodable {
}

View file

@ -0,0 +1,42 @@
//
// BLELog+CoreDataProperties.swift
// CovidSafe
//
// Copyright © 2020 Australian Government. All rights reserved.
//
//
import Foundation
import CoreData
import UIKit
import CoreBluetooth
extension BLELog {
enum CodingKeys: String, CodingKey {
case timestamp
case message
}
@nonobjc public class func fetchRequest() -> NSFetchRequest<Encounter> {
return NSFetchRequest<Encounter>(entityName: "BLELog")
}
@nonobjc public class func fetchRequestForRecords() -> NSFetchRequest<Encounter> {
let fetchRequest = NSFetchRequest<Encounter>(entityName: "BLELog")
fetchRequest.sortDescriptors = [NSSortDescriptor(key: "timestamp", ascending: true)]
return fetchRequest
}
@NSManaged public var timestamp: Date?
@NSManaged public var message: String?
// MARK: - Encodable
public func encode(to encoder: Encoder) throws {
var container = encoder.container(keyedBy: CodingKeys.self)
try container.encode(Int(timestamp!.timeIntervalSince1970), forKey: .timestamp)
try container.encode(message, forKey: .message)
}
}

63
CovidSafe/BLELogDB.swift Normal file
View file

@ -0,0 +1,63 @@
//
// BLELogDB.swift
// CovidSafe
//
// Copyright © 2020 Australian Government. All rights reserved.
//
import UIKit
import CoreData
class BLELogDB {
static let shared = BLELogDB()
private let modelName = "debug"
private var localStoreUrl: URL?
private var _persistentContainer: CovidPersistentContainer?
var migrationDelegate: EncounterDBMigrationProgress?
var backgroundTask: UIBackgroundTaskIdentifier = .invalid
private lazy var managedObjectModel: NSManagedObjectModel = {
guard let modelURL = Bundle.main.url(forResource: self.modelName, withExtension: "momd") else {
fatalError("Unable to Find Data Model")
}
guard let managedObjectModel = NSManagedObjectModel(contentsOf: modelURL) else {
fatalError("Unable to Load Data Model")
}
return managedObjectModel
}()
public var persistentContainer: CovidPersistentContainer? {
get {
if let container = _persistentContainer {
return container
}
let container = CovidPersistentContainer(name: self.modelName)
container.loadPersistentStores(completionHandler: { (storeDescription, error) in
if let error = error as NSError? {
fatalError("Unresolved error \(error), \(error.userInfo)")
}
})
_persistentContainer = container
return _persistentContainer
}
}
func registerBackgroundTask() {
backgroundTask = UIApplication.shared.beginBackgroundTask { [weak self] in
self?.endBackgroundTask()
}
assert(backgroundTask != .invalid)
}
func endBackgroundTask() {
if(backgroundTask != .invalid){
UIApplication.shared.endBackgroundTask(backgroundTask)
backgroundTask = .invalid
}
}
}

View file

@ -0,0 +1,31 @@
//
// BLELogRecord+BLELogSave.swift
// CovidSafe
//
// Copyright © 2020 Australian Government. All rights reserved.
//
import UIKit
import CoreData
extension BLELogRecord {
func saveToCoreData() {
DispatchQueue.main.async {
guard let persistentContainer = BLELogDB.shared.persistentContainer else {
return
}
let managedContext = persistentContainer.viewContext
let entity = NSEntityDescription.entity(forEntityName: "BLELog", in: managedContext)!
let bleLog = NSManagedObject(entity: entity, insertInto: managedContext)
bleLog.setValue(self.timestamp, forKeyPath: "timestamp")
bleLog.setValue(self.msg, forKeyPath: "message")
do {
try managedContext.save()
} catch {
print("Could not save. \(error)")
}
}
}
}

View file

@ -0,0 +1,23 @@
//
// BLELogRecord.swift
// CovidSafe
//
// Copyright © 2020 Australian Government. All rights reserved.
//
import Foundation
struct BLELogRecord: Encodable {
var timestamp: Date?
var msg: String?
mutating func update(msg: String) {
self.msg = msg
}
init(message: String) {
self.timestamp = Date()
self.msg = message
}
}

View file

@ -0,0 +1,118 @@
import UIKit
import CoreData
final class BLELogViewController: UIViewController {
@IBOutlet var logTableView: UITableView!;
var fetchedResultsController: NSFetchedResultsController<BLELog>?;
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
fetchLogs()
}
@IBAction func dismiss() {
dismiss(animated: true, completion: nil)
}
override func viewDidLoad() {
super.viewDidLoad()
logTableView.dataSource = self
logTableView.register(UITableViewCell.self,
forCellReuseIdentifier: "LogCell")
}
func fetchLogs() {
guard let persistentContainer =
BLELogDB.shared.persistentContainer else {
return
}
let managedContext = persistentContainer.viewContext
let fetchRequest = NSFetchRequest<BLELog>(entityName: "BLELog")
let sortByDate = NSSortDescriptor(key: "timestamp", ascending: false)
fetchRequest.sortDescriptors = [sortByDate]
fetchedResultsController = NSFetchedResultsController<BLELog>(fetchRequest: fetchRequest, managedObjectContext: managedContext, sectionNameKeyPath: nil, cacheName: nil)
fetchedResultsController?.delegate = self
do {
try fetchedResultsController?.performFetch()
} catch let error as NSError {
print("Could not perform fetch. \(error), \(error.userInfo)")
}
}
}
extension BLELogViewController: UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
guard let sections = fetchedResultsController?.sections else {
return 0
}
let sectionInfo = sections[section]
return sectionInfo.numberOfObjects
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "LogCell", for: indexPath)
configureCell(cell, at: indexPath)
return cell
}
func configureCell(_ cell: UITableViewCell, at indexPath: IndexPath) {
guard let log = fetchedResultsController?.object(at: indexPath) else {
return
}
let datetime = log.timestamp
let dateFormatter = DateFormatter()
dateFormatter.timeStyle = .medium
let timeString = "\(datetime == nil ? "<NONE>" : dateFormatter.string(from: datetime!))"
cell.textLabel?.text = """
\(timeString)
: \(log.message != nil ? "\(log.message!)" : "nil")
"""
cell.textLabel?.numberOfLines = 0
}
}
extension BLELogViewController : NSFetchedResultsControllerDelegate{
func controllerWillChangeContent(_ controller: NSFetchedResultsController<NSFetchRequestResult>) {
logTableView.beginUpdates()
}
func controller(_ controller: NSFetchedResultsController<NSFetchRequestResult>, didChange anObject: Any, at indexPath: IndexPath?, for type: NSFetchedResultsChangeType, newIndexPath: IndexPath?) {
switch (type) {
case .insert:
if let indexPath = newIndexPath {
logTableView.insertRows(at: [indexPath], with: .fade)
}
break;
case .delete:
if let indexPath = indexPath {
logTableView.deleteRows(at: [indexPath], with: .fade)
}
break;
case .update:
if let indexPath = indexPath, let cell = logTableView.cellForRow(at: indexPath) {
configureCell(cell, at: indexPath)
}
break;
case .move:
if let indexPath = indexPath {
logTableView.deleteRows(at: [indexPath], with: .fade)
}
if let newIndexPath = newIndexPath {
logTableView.insertRows(at: [newIndexPath], with: .fade)
}
break;
default:
break;
}
}
func controllerDidChangeContent(_ controller: NSFetchedResultsController<NSFetchRequestResult>) {
logTableView.endUpdates()
}
}

View file

@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="16096" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="ndM-0H-HLb"> <document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="16097" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="ndM-0H-HLb">
<device id="retina4_7" orientation="portrait" appearance="light"/> <device id="retina5_5" orientation="portrait" appearance="light"/>
<dependencies> <dependencies>
<deployment identifier="iOS"/> <deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="16086"/> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="16087"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/> <capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies> </dependencies>
@ -13,29 +13,29 @@
<objects> <objects>
<viewController id="ndM-0H-HLb" userLabel="Initial Screen View Controller" sceneMemberID="viewController"> <viewController id="ndM-0H-HLb" userLabel="Initial Screen View Controller" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="ccJ-n5-IxS"> <view key="view" contentMode="scaleToFill" id="ccJ-n5-IxS">
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/> <rect key="frame" x="0.0" y="0.0" width="414" height="736"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews> <subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="govLogoWhite" translatesAutoresizingMaskIntoConstraints="NO" id="21S-jo-kCt"> <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="govLogoWhite" translatesAutoresizingMaskIntoConstraints="NO" id="21S-jo-kCt">
<rect key="frame" x="113.5" y="32" width="148" height="77"/> <rect key="frame" x="133" y="32" width="148" height="77"/>
<constraints> <constraints>
<constraint firstAttribute="width" secondItem="21S-jo-kCt" secondAttribute="height" multiplier="148:77" id="a08-bz-dFI"/> <constraint firstAttribute="width" secondItem="21S-jo-kCt" secondAttribute="height" multiplier="148:77" id="a08-bz-dFI"/>
</constraints> </constraints>
</imageView> </imageView>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="byk-eZ-Cpa" userLabel="GREEN background view"> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="byk-eZ-Cpa" userLabel="GREEN background view">
<rect key="frame" x="0.0" y="155" width="375" height="512"/> <rect key="frame" x="0.0" y="155" width="414" height="581"/>
<subviews> <subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ffR-XF-3zY"> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ffR-XF-3zY">
<rect key="frame" x="67.5" y="95" width="240" height="322.5"/> <rect key="frame" x="67" y="109.33333333333334" width="280" height="362.33333333333326"/>
<subviews> <subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Splash_logo" translatesAutoresizingMaskIntoConstraints="NO" id="Lns-hM-mdb"> <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Splash_logo" translatesAutoresizingMaskIntoConstraints="NO" id="Lns-hM-mdb">
<rect key="frame" x="0.0" y="0.0" width="240" height="240"/> <rect key="frame" x="0.0" y="0.0" width="280" height="280"/>
<constraints> <constraints>
<constraint firstAttribute="width" secondItem="Lns-hM-mdb" secondAttribute="height" multiplier="1:1" id="v9k-g8-SR7"/> <constraint firstAttribute="width" secondItem="Lns-hM-mdb" secondAttribute="height" multiplier="1:1" id="v9k-g8-SR7"/>
</constraints> </constraints>
</imageView> </imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" verticalCompressionResistancePriority="751" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontForContentSizeCategory="YES" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="eZS-BI-D7Z"> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" verticalCompressionResistancePriority="751" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontForContentSizeCategory="YES" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="eZS-BI-D7Z">
<rect key="frame" x="37" y="280" width="166.5" height="42.5"/> <rect key="frame" x="56.666666666666671" y="320.00000000000006" width="166.66666666666663" height="42.333333333333314"/>
<string key="text">Help stop the spread <string key="text">Help stop the spread
and save lives.</string> and save lives.</string>
<fontDescription key="fontDescription" style="UICTFontTextStyleHeadline"/> <fontDescription key="fontDescription" style="UICTFontTextStyleHeadline"/>
@ -56,7 +56,9 @@ and save lives.</string>
<color key="backgroundColor" red="0.78431372549019607" green="1" blue="0.72549019607843135" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> <color key="backgroundColor" red="0.78431372549019607" green="1" blue="0.72549019607843135" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints> <constraints>
<constraint firstItem="ffR-XF-3zY" firstAttribute="top" relation="greaterThanOrEqual" secondItem="byk-eZ-Cpa" secondAttribute="top" constant="10" id="42X-bp-isz"/> <constraint firstItem="ffR-XF-3zY" firstAttribute="top" relation="greaterThanOrEqual" secondItem="byk-eZ-Cpa" secondAttribute="top" constant="10" id="42X-bp-isz"/>
<constraint firstItem="ffR-XF-3zY" firstAttribute="leading" secondItem="byk-eZ-Cpa" secondAttribute="leading" constant="67" id="9cU-H9-1d1"/>
<constraint firstItem="ffR-XF-3zY" firstAttribute="centerX" secondItem="byk-eZ-Cpa" secondAttribute="centerX" id="Csu-ZS-HCo"/> <constraint firstItem="ffR-XF-3zY" firstAttribute="centerX" secondItem="byk-eZ-Cpa" secondAttribute="centerX" id="Csu-ZS-HCo"/>
<constraint firstAttribute="trailing" secondItem="ffR-XF-3zY" secondAttribute="trailing" constant="67" id="Lzo-Cb-JFp"/>
<constraint firstAttribute="bottom" relation="greaterThanOrEqual" secondItem="ffR-XF-3zY" secondAttribute="bottom" constant="10" id="k6e-ma-vPy"/> <constraint firstAttribute="bottom" relation="greaterThanOrEqual" secondItem="ffR-XF-3zY" secondAttribute="bottom" constant="10" id="k6e-ma-vPy"/>
<constraint firstItem="ffR-XF-3zY" firstAttribute="centerY" secondItem="byk-eZ-Cpa" secondAttribute="centerY" id="zXR-uc-tzt"/> <constraint firstItem="ffR-XF-3zY" firstAttribute="centerY" secondItem="byk-eZ-Cpa" secondAttribute="centerY" id="zXR-uc-tzt"/>
</constraints> </constraints>

File diff suppressed because it is too large Load diff

View file

@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="16096" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="HPs-l8-CC5"> <document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="16097" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="HPs-l8-CC5">
<device id="retina4_7" orientation="portrait" appearance="light"/> <device id="retina4_7" orientation="portrait" appearance="light"/>
<dependencies> <dependencies>
<deployment identifier="iOS"/> <deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="16086"/> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="16087"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/> <capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies> </dependencies>
@ -534,10 +534,10 @@ Once you press Yes youll need to provide consent to upload your informa
<rect key="frame" x="0.0" y="0.0" width="375" height="587"/> <rect key="frame" x="0.0" y="0.0" width="375" height="587"/>
<subviews> <subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="qdE-ta-9is" userLabel="ContentView"> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="qdE-ta-9is" userLabel="ContentView">
<rect key="frame" x="0.0" y="0.0" width="375" height="485.5"/> <rect key="frame" x="0.0" y="0.0" width="375" height="445.5"/>
<subviews> <subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Upload Consent" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontForContentSizeCategory="YES" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ecY-RE-ssa"> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Upload Consent" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontForContentSizeCategory="YES" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ecY-RE-ssa">
<rect key="frame" x="32" y="56" width="311" height="33.5"/> <rect key="frame" x="32" y="60" width="311" height="33.5"/>
<accessibility key="accessibilityConfiguration"> <accessibility key="accessibilityConfiguration">
<accessibilityTraits key="traits" staticText="YES" header="YES"/> <accessibilityTraits key="traits" staticText="YES" header="YES"/>
</accessibility> </accessibility>
@ -549,15 +549,13 @@ Once you press Yes youll need to provide consent to upload your informa
</userDefinedRuntimeAttributes> </userDefinedRuntimeAttributes>
</label> </label>
<textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" scrollEnabled="NO" delaysContentTouches="NO" editable="NO" textAlignment="natural" adjustsFontForContentSizeCategory="YES" translatesAutoresizingMaskIntoConstraints="NO" id="ryL-BN-XeS"> <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" scrollEnabled="NO" delaysContentTouches="NO" editable="NO" textAlignment="natural" adjustsFontForContentSizeCategory="YES" translatesAutoresizingMaskIntoConstraints="NO" id="ryL-BN-XeS">
<rect key="frame" x="32" y="105.5" width="311" height="280"/> <rect key="frame" x="32" y="109.5" width="311" height="236"/>
<color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/> <color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
<string key="text">Unless you consent, your close contact information will not be uploaded. <string key="text">Unless you consent, your close contact information will not be uploaded.
If you consent, your close contact information will be uploaded and shared with state or territory health officials for contact tracing purposes. If you consent, your close contact information will be uploaded and shared with state or territory health officials for contact tracing purposes.
Read the COVIDSafe *privacy policy* for further details. Read the COVIDSafe *privacy policy* for further details.</string>
Select 'I agree' to confirm consent.</string>
<color key="textColor" systemColor="labelColor" cocoaTouchSystemColor="darkTextColor"/> <color key="textColor" systemColor="labelColor" cocoaTouchSystemColor="darkTextColor"/>
<fontDescription key="fontDescription" style="UICTFontTextStyleBody"/> <fontDescription key="fontDescription" style="UICTFontTextStyleBody"/>
<textInputTraits key="textInputTraits" autocapitalizationType="sentences"/> <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
@ -579,19 +577,31 @@ Select 'I agree' to confirm consent.</string>
<action selector="onBackTapped:" destination="GKP-u6-wgj" eventType="touchUpInside" id="9we-7d-25R"/> <action selector="onBackTapped:" destination="GKP-u6-wgj" eventType="touchUpInside" id="9we-7d-25R"/>
</connections> </connections>
</button> </button>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Select 'I agree' to confirm consent." textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontForContentSizeCategory="YES" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="4j6-cA-E6O">
<rect key="frame" x="32" y="361.5" width="311" height="20.5"/>
<fontDescription key="fontDescription" style="UICTFontTextStyleBody"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="localizationKey" value="consent_call_for_action"/>
</userDefinedRuntimeAttributes>
</label>
</subviews> </subviews>
<color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/> <color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
<accessibility key="accessibilityConfiguration" label="ContentView"/> <accessibility key="accessibilityConfiguration" label="ContentView"/>
<constraints> <constraints>
<constraint firstAttribute="bottom" secondItem="ryL-BN-XeS" secondAttribute="bottom" constant="100" id="4JN-hN-SHZ"/> <constraint firstItem="ryL-BN-XeS" firstAttribute="leading" secondItem="qdE-ta-9is" secondAttribute="leading" constant="32" id="41x-sg-kSw"/>
<constraint firstItem="ecY-RE-ssa" firstAttribute="top" secondItem="qdE-ta-9is" secondAttribute="top" constant="56" id="9pa-0O-gf7"/> <constraint firstItem="ecY-RE-ssa" firstAttribute="top" secondItem="c1v-Px-kY5" secondAttribute="bottom" id="9pa-0O-gf7"/>
<constraint firstItem="4j6-cA-E6O" firstAttribute="top" secondItem="ryL-BN-XeS" secondAttribute="bottom" constant="16" id="DhI-Nt-oat"/>
<constraint firstItem="4j6-cA-E6O" firstAttribute="leading" secondItem="qdE-ta-9is" secondAttribute="leading" constant="32" id="HrP-xU-QAM"/>
<constraint firstAttribute="bottom" secondItem="4j6-cA-E6O" secondAttribute="bottom" constant="63.5" id="L8G-TC-oPH"/>
<constraint firstAttribute="trailing" secondItem="ecY-RE-ssa" secondAttribute="trailing" constant="32" id="O5O-Q5-L92"/> <constraint firstAttribute="trailing" secondItem="ecY-RE-ssa" secondAttribute="trailing" constant="32" id="O5O-Q5-L92"/>
<constraint firstItem="ecY-RE-ssa" firstAttribute="leading" secondItem="qdE-ta-9is" secondAttribute="leading" constant="32" id="RA6-hI-Six"/> <constraint firstItem="ecY-RE-ssa" firstAttribute="leading" secondItem="qdE-ta-9is" secondAttribute="leading" constant="32" id="RA6-hI-Six"/>
<constraint firstItem="c1v-Px-kY5" firstAttribute="leading" secondItem="qdE-ta-9is" secondAttribute="leading" constant="16" id="Utd-IG-kxz"/> <constraint firstItem="c1v-Px-kY5" firstAttribute="leading" secondItem="qdE-ta-9is" secondAttribute="leading" constant="16" id="Utd-IG-kxz"/>
<constraint firstAttribute="trailing" secondItem="4j6-cA-E6O" secondAttribute="trailing" constant="32" id="YXD-rn-poZ"/>
<constraint firstItem="ryL-BN-XeS" firstAttribute="top" secondItem="ecY-RE-ssa" secondAttribute="bottom" constant="16" id="am7-Xb-QHu"/> <constraint firstItem="ryL-BN-XeS" firstAttribute="top" secondItem="ecY-RE-ssa" secondAttribute="bottom" constant="16" id="am7-Xb-QHu"/>
<constraint firstItem="ecY-RE-ssa" firstAttribute="trailing" secondItem="ryL-BN-XeS" secondAttribute="trailing" id="mnw-ZK-UUm"/> <constraint firstAttribute="trailing" secondItem="ryL-BN-XeS" secondAttribute="trailing" constant="32" id="dVd-Nl-Niq"/>
<constraint firstItem="c1v-Px-kY5" firstAttribute="top" secondItem="qdE-ta-9is" secondAttribute="top" constant="16" id="x19-vw-sBZ"/> <constraint firstItem="c1v-Px-kY5" firstAttribute="top" secondItem="qdE-ta-9is" secondAttribute="top" constant="16" id="x19-vw-sBZ"/>
<constraint firstItem="ryL-BN-XeS" firstAttribute="leading" secondItem="ecY-RE-ssa" secondAttribute="leading" id="xD8-sP-05a"/>
</constraints> </constraints>
</view> </view>
</subviews> </subviews>

View file

@ -28,6 +28,7 @@ class CentralController: NSObject {
private let restoreIdentifierKey = "com.joelkek.tracer.central" private let restoreIdentifierKey = "com.joelkek.tracer.central"
private var central: CBCentralManager? private var central: CBCentralManager?
private var recoveredPeripherals: [CBPeripheral] = [] private var recoveredPeripherals: [CBPeripheral] = []
private var cleanupPeripherals: [CBPeripheral] = []
private var queue: DispatchQueue private var queue: DispatchQueue
// This dict is to keep track of discovered android devices, so that i do not connect to the same android device multiple times within the same BluetraceConfig.CentralScanInterval // This dict is to keep track of discovered android devices, so that i do not connect to the same android device multiple times within the same BluetraceConfig.CentralScanInterval
@ -97,19 +98,60 @@ class CentralController: NSObject {
public func getState() -> CBManagerState? { public func getState() -> CBManagerState? {
return central?.state return central?.state
} }
public func logPeripheralsCount(description: String) {
#if DEBUG
guard let peripherals = central?.retrieveConnectedPeripherals(withServices: [BluetraceConfig.BluetoothServiceID]) else {
return
}
var connected = 0
var connecting = 0
var disconnected = 0
var disconnecting = 0
var unknown = 0
for peripheral in peripherals {
switch peripheral.state {
case .connecting:
connecting+=1
case .connected:
connected+=1
case .disconnected:
disconnected+=1
case .disconnecting:
disconnecting+=1
default:
unknown+=1
}
}
let bleLogStr = "CC \(description) Current peripherals \nconnected: \(connected), \nconnecting: \(connecting), \ndisconnected: \(disconnected), \ndisconnecting: \(disconnecting), \nunknown: \(unknown), \nscannedPeripherals: \(scannedPeripherals.count)"
let logRecord = BLELogRecord(message: bleLogStr)
logRecord.saveToCoreData()
#endif
}
} }
extension CentralController: CBCentralManagerDelegate { extension CentralController: CBCentralManagerDelegate {
func centralManager(_ central: CBCentralManager, willRestoreState dict: [String : Any]) { func centralManager(_ central: CBCentralManager, willRestoreState dict: [String : Any]) {
DLog("CC willRestoreState. Central state: \(BluetraceUtils.centralStateToString(central.state))") DLog("CC willRestoreState. Central state: \(BluetraceUtils.centralStateToString(central.state))")
recoveredPeripherals = []
if let peripheralsObject = dict[CBCentralManagerRestoredStatePeripheralsKey] { if let peripheralsObject = dict[CBCentralManagerRestoredStatePeripheralsKey] {
let peripherals = peripheralsObject as! Array<CBPeripheral> let peripherals = peripheralsObject as! Array<CBPeripheral>
DLog("CC restoring \(peripherals.count) peripherals from system.") DLog("CC restoring \(peripherals.count) peripherals from system.")
logPeripheralsCount(description: "Restoring peripherals")
for peripheral in peripherals { for peripheral in peripherals {
recoveredPeripherals.append(peripheral) if peripheral.state == .connected {
peripheral.delegate = self // only recover connected peripherals, dispose/disconnect otherwise.
recoveredPeripherals.append(peripheral)
peripheral.delegate = self
} else {
cleanupPeripherals.append(peripheral)
}
} }
logPeripheralsCount(description: "Done Restoring peripherals")
} }
} }
@ -135,7 +177,14 @@ extension CentralController: CBCentralManagerDelegate {
central.connect(recoveredPeripheral) central.connect(recoveredPeripheral)
} }
// cant cancel peripheral when BL OFF
for cleanupPeripheral in cleanupPeripherals {
central.cancelPeripheralConnection(cleanupPeripheral)
}
cleanupPeripherals = []
central.scanForPeripherals(withServices: [BluetraceConfig.BluetoothServiceID], options:nil) central.scanForPeripherals(withServices: [BluetraceConfig.BluetoothServiceID], options:nil)
logPeripheralsCount(description: "Update state powerOn")
default: default:
DLog("State chnged to \(central.state)") DLog("State chnged to \(central.state)")
} }
@ -180,6 +229,16 @@ extension CentralController: CBCentralManagerDelegate {
"peripheral": peripheral, "peripheral": peripheral,
"advertisments": advertisementData as AnyObject] as AnyObject "advertisments": advertisementData as AnyObject] as AnyObject
// dispatch in bluetrace queue
queue.async {
MessageAPI.getMessagesIfNeeded() { (messageResponse, error) in
if let error = error {
DLog("Get messages error: \(error.localizedDescription)")
}
// We currently dont do anything with the response. Messages are delivered via APN
}
}
DLog("\(debugLogs)") DLog("\(debugLogs)")
var initialEncounter = EncounterRecord(rssi: RSSI.doubleValue, txPower: advertisementData[CBAdvertisementDataTxPowerLevelKey] as? Double) var initialEncounter = EncounterRecord(rssi: RSSI.doubleValue, txPower: advertisementData[CBAdvertisementDataTxPowerLevelKey] as? Double)
initialEncounter.timestamp = nil initialEncounter.timestamp = nil
@ -200,6 +259,7 @@ extension CentralController: CBCentralManagerDelegate {
} else { } else {
// Means not android device, i will check if the peripheral.identifier exist in the scannedPeripherals // Means not android device, i will check if the peripheral.identifier exist in the scannedPeripherals
DLog("CBAdvertisementDataManufacturerDataKey Data not found. Peripheral is likely not android") DLog("CBAdvertisementDataManufacturerDataKey Data not found. Peripheral is likely not android")
logPeripheralsCount(description: "begin didDiscover iOS device")
if let encounteredPeripheral = scannedPeripherals[peripheral.identifier] { if let encounteredPeripheral = scannedPeripherals[peripheral.identifier] {
if shouldReconnectToPeripheral(peripheral: encounteredPeripheral.peripheral) { if shouldReconnectToPeripheral(peripheral: encounteredPeripheral.peripheral) {
peripheral.delegate = self peripheral.delegate = self
@ -216,6 +276,7 @@ extension CentralController: CBCentralManagerDelegate {
scannedPeripherals.updateValue((peripheral, initialEncounter), forKey: peripheral.identifier) scannedPeripherals.updateValue((peripheral, initialEncounter), forKey: peripheral.identifier)
central.connect(peripheral) central.connect(peripheral)
} }
logPeripheralsCount(description: "finish didDiscover iOS device")
} }
} }
@ -230,18 +291,38 @@ extension CentralController: CBCentralManagerDelegate {
peripheral.delegate = self peripheral.delegate = self
peripheral.readRSSI() peripheral.readRSSI()
peripheral.discoverServices([BluetraceConfig.BluetoothServiceID]) peripheral.discoverServices([BluetraceConfig.BluetoothServiceID])
logPeripheralsCount(description: "didConnect peripheral")
} }
func centralManager(_ central: CBCentralManager, didDisconnectPeripheral peripheral: CBPeripheral, error: Error?) { func centralManager(_ central: CBCentralManager, didDisconnectPeripheral peripheral: CBPeripheral, error: Error?) {
DLog("CC didDisconnectPeripheral \(peripheral) , \(error != nil ? "error: \(error.debugDescription)" : "" )") DLog("CC didDisconnectPeripheral \(peripheral) , \(error != nil ? "error: \(error.debugDescription)" : "" )")
// We check that the periferal has been scanned and that there is no error.
// No error indicates that cancelPeripheralConnection was called.
// An error may represent that the peripheral is out of range, BL is OFF etc. In that case we don't want to retry.
guard scannedPeripherals[peripheral.identifier] != nil && error == nil else {
// Remove from scanned peripherals as got diconnected due to error. Also look after memory.
scannedPeripherals.removeValue(forKey: peripheral.identifier)
return
}
// only attempt to reconnect if the peripheral is in the scanned dictionary and there was no error.
if #available(iOS 12, *) { if #available(iOS 12, *) {
let options = [CBConnectPeripheralOptionStartDelayKey: NSNumber(15)] let options = [CBConnectPeripheralOptionStartDelayKey: NSNumber(15)]
central.connect(peripheral, options: options) central.connect(peripheral, options: options)
} }
logPeripheralsCount(description: "didDisconnect peripheral")
} }
func centralManager(_ central: CBCentralManager, didFailToConnect peripheral: CBPeripheral, error: Error?) { func centralManager(_ central: CBCentralManager, didFailToConnect peripheral: CBPeripheral, error: Error?) {
DLog("CC didFailToConnect peripheral \(error != nil ? "error: \(error.debugDescription)" : "" )") DLog("CC didFailToConnect peripheral \(error != nil ? "error: \(error.debugDescription)" : "" )")
// Remove from scanned peripherals as connection failed. Also look after memory.
scannedPeripherals.removeValue(forKey: peripheral.identifier)
// by cancelling the connection we are being extra sure the peripheral is fully
// disconnected and not left in a pending state
central.cancelPeripheralConnection(peripheral)
logPeripheralsCount(description: "didFailToConnect peripheral")
} }
} }
@ -293,7 +374,8 @@ extension CentralController: CBPeripheralDelegate {
rssi: rssi, rssi: rssi,
txPower: currEncounter.encounter.txPower, txPower: currEncounter.encounter.txPower,
modelP: nil, modelP: nil,
msg: tempId) msg: tempId,
timestamp: Date().timeIntervalSince1970)
do { do {

View file

@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="16096" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="UCh-Op-nym"> <document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="16097" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="UCh-Op-nym">
<device id="retina6_1" orientation="portrait" appearance="light"/> <device id="retina6_1" orientation="portrait" appearance="light"/>
<dependencies> <dependencies>
<deployment identifier="iOS"/> <deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="16086"/> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="16087"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/> <capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies> </dependencies>
@ -16,96 +16,6 @@
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/> <rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews> <subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Your unique ID:" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="x5g-CO-y2v">
<rect key="frame" x="16" y="127.5" width="382" height="19.5"/>
<fontDescription key="fontDescription" type="system" pointSize="16"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Number of devices encountered:" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Kot-qu-BYK">
<rect key="frame" x="16" y="201" width="382" height="19.5"/>
<fontDescription key="fontDescription" type="system" pointSize="16"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="..." lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="fqh-QW-KCP">
<rect key="frame" x="16" y="152" width="382" height="29"/>
<fontDescription key="fontDescription" type="system" weight="semibold" pointSize="24"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Settings" lineBreakMode="characterWrap" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Apr-IN-mch">
<rect key="frame" x="16" y="54" width="133" height="41"/>
<fontDescription key="fontDescription" type="boldSystem" pointSize="34"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="..." lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="r8F-jH-7Fs">
<rect key="frame" x="16" y="225.5" width="382" height="29"/>
<fontDescription key="fontDescription" type="system" weight="semibold" pointSize="24"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="yeE-eu-dNb">
<rect key="frame" x="16" y="274.5" width="69" height="30"/>
<state key="normal" title="Clear logs"/>
</button>
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="gZQ-CY-N0t">
<rect key="frame" x="126" y="261" width="30" height="30"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
</button>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Toggle advertisement" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="omg-67-iV0">
<rect key="frame" x="16" y="324.5" width="166" height="21"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" on="YES" translatesAutoresizingMaskIntoConstraints="NO" id="i01-q8-Sxa">
<rect key="frame" x="202" y="319.5" width="51" height="31"/>
</switch>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Central state:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="98r-Qb-WQe">
<rect key="frame" x="16" y="446.5" width="103" height="21"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Peripheral state:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="msZ-UI-ziw">
<rect key="frame" x="16" y="477.5" width="125" height="21"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Discovered peripheral count:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Fye-BS-LR4">
<rect key="frame" x="16" y="508.5" width="220" height="21"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Toggle scanning" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="6hb-oo-EFZ">
<rect key="frame" x="16" y="365.5" width="125" height="21"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" on="YES" translatesAutoresizingMaskIntoConstraints="NO" id="pSh-gt-Z0V">
<rect key="frame" x="161" y="360.5" width="51" height="31"/>
</switch>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="MRj-sM-i0b">
<rect key="frame" x="16" y="406.5" width="155" height="30"/>
<state key="normal" title="Obtain Bluetooth state"/>
</button>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="252" verticalHuggingPriority="251" text="Version Number:" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="7ks-G7-72D">
<rect key="frame" x="16" y="100" width="121" height="19.5"/>
<fontDescription key="fontDescription" type="system" pointSize="16"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="..." lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="yHq-NW-S3P">
<rect key="frame" x="146" y="102.5" width="268" height="14.5"/>
<fontDescription key="fontDescription" type="system" weight="semibold" pointSize="12"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="gua-x7-jJP"> <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="gua-x7-jJP">
<rect key="frame" x="243" y="59.5" width="60" height="30"/> <rect key="frame" x="243" y="59.5" width="60" height="30"/>
<constraints> <constraints>
@ -125,47 +35,388 @@
<action selector="dumpDBpressed:" destination="dhe-6o-fvJ" eventType="touchUpInside" id="4VP-XF-A4v"/> <action selector="dumpDBpressed:" destination="dhe-6o-fvJ" eventType="touchUpInside" id="4VP-XF-A4v"/>
</connections> </connections>
</button> </button>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Settings" lineBreakMode="characterWrap" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Apr-IN-mch">
<rect key="frame" x="16" y="54" width="133" height="41"/>
<fontDescription key="fontDescription" type="boldSystem" pointSize="34"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" showsHorizontalScrollIndicator="NO" translatesAutoresizingMaskIntoConstraints="NO" id="QEz-Pd-P6j">
<rect key="frame" x="0.0" y="111" width="414" height="702"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="eTh-XD-RKI" userLabel="ContentView">
<rect key="frame" x="0.0" y="0.0" width="414" height="557.5"/>
<subviews>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="8" translatesAutoresizingMaskIntoConstraints="NO" id="vW3-bA-wgt">
<rect key="frame" x="0.0" y="0.0" width="414" height="557.5"/>
<subviews>
<view contentMode="scaleToFill" verticalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="T1Q-yS-0Qz">
<rect key="frame" x="0.0" y="0.0" width="414" height="14.5"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="252" verticalHuggingPriority="252" verticalCompressionResistancePriority="250" text="Version Number:" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="7ks-G7-72D">
<rect key="frame" x="16" y="0.0" width="121" height="14.5"/>
<fontDescription key="fontDescription" type="system" pointSize="16"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" verticalCompressionResistancePriority="250" text="..." lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="yHq-NW-S3P">
<rect key="frame" x="153" y="0.0" width="245" height="14.5"/>
<fontDescription key="fontDescription" type="system" weight="semibold" pointSize="12"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
<constraints>
<constraint firstItem="yHq-NW-S3P" firstAttribute="top" secondItem="T1Q-yS-0Qz" secondAttribute="top" id="8aC-xz-Dcj"/>
<constraint firstItem="7ks-G7-72D" firstAttribute="leading" secondItem="T1Q-yS-0Qz" secondAttribute="leading" constant="16" id="9wm-j2-KWW"/>
<constraint firstAttribute="bottom" secondItem="yHq-NW-S3P" secondAttribute="bottom" id="YVt-h0-uLa"/>
<constraint firstItem="yHq-NW-S3P" firstAttribute="leading" secondItem="7ks-G7-72D" secondAttribute="trailing" constant="16" id="Z7H-CW-jb4"/>
<constraint firstItem="7ks-G7-72D" firstAttribute="top" secondItem="T1Q-yS-0Qz" secondAttribute="top" id="eOL-g0-ZNr"/>
<constraint firstAttribute="trailing" secondItem="yHq-NW-S3P" secondAttribute="trailing" constant="16" id="l7O-eC-xfk"/>
<constraint firstAttribute="bottom" secondItem="7ks-G7-72D" secondAttribute="bottom" id="siv-c0-zg5"/>
</constraints>
</view>
<view contentMode="scaleToFill" verticalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="KAo-T6-Bcm">
<rect key="frame" x="0.0" y="22.5" width="414" height="19.5"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Your unique ID:" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="x5g-CO-y2v">
<rect key="frame" x="16" y="0.0" width="382" height="19.5"/>
<fontDescription key="fontDescription" type="system" pointSize="16"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
<constraints>
<constraint firstAttribute="trailing" secondItem="x5g-CO-y2v" secondAttribute="trailing" constant="16" id="Wb5-5n-U59"/>
<constraint firstItem="x5g-CO-y2v" firstAttribute="top" secondItem="KAo-T6-Bcm" secondAttribute="top" id="bqu-OK-Q0a"/>
<constraint firstAttribute="bottom" secondItem="x5g-CO-y2v" secondAttribute="bottom" id="iZa-YH-rR3"/>
<constraint firstItem="x5g-CO-y2v" firstAttribute="leading" secondItem="KAo-T6-Bcm" secondAttribute="leading" constant="16" id="j9h-M2-UEe"/>
</constraints>
</view>
<view contentMode="scaleToFill" verticalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="Ed3-Lt-5xT">
<rect key="frame" x="0.0" y="50" width="414" height="29"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="..." lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="fqh-QW-KCP">
<rect key="frame" x="16" y="0.0" width="382" height="29"/>
<fontDescription key="fontDescription" type="system" weight="semibold" pointSize="24"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
<constraints>
<constraint firstItem="fqh-QW-KCP" firstAttribute="leading" secondItem="Ed3-Lt-5xT" secondAttribute="leading" constant="16" id="0Tw-16-gaN"/>
<constraint firstItem="fqh-QW-KCP" firstAttribute="top" secondItem="Ed3-Lt-5xT" secondAttribute="top" id="4AF-5b-aE7"/>
<constraint firstAttribute="trailing" secondItem="fqh-QW-KCP" secondAttribute="trailing" constant="16" id="EFw-1P-oIz"/>
<constraint firstAttribute="bottom" secondItem="fqh-QW-KCP" secondAttribute="bottom" id="On3-HE-HqT"/>
</constraints>
</view>
<view contentMode="scaleToFill" verticalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="d70-mL-W6J">
<rect key="frame" x="0.0" y="87" width="414" height="19.5"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Number of devices encountered:" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Kot-qu-BYK">
<rect key="frame" x="16" y="0.0" width="382" height="19.5"/>
<fontDescription key="fontDescription" type="system" pointSize="16"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
<constraints>
<constraint firstItem="Kot-qu-BYK" firstAttribute="leading" secondItem="d70-mL-W6J" secondAttribute="leading" constant="16" id="5xe-xz-1xE"/>
<constraint firstItem="Kot-qu-BYK" firstAttribute="top" secondItem="d70-mL-W6J" secondAttribute="top" id="KFF-cw-olC"/>
<constraint firstAttribute="bottom" secondItem="Kot-qu-BYK" secondAttribute="bottom" id="kDb-ny-YqA"/>
<constraint firstAttribute="trailing" secondItem="Kot-qu-BYK" secondAttribute="trailing" constant="16" id="v72-9Y-FKP"/>
</constraints>
</view>
<view contentMode="scaleToFill" verticalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="mnl-nT-3ew">
<rect key="frame" x="0.0" y="114.5" width="414" height="29"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="..." lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="r8F-jH-7Fs">
<rect key="frame" x="16" y="0.0" width="382" height="29"/>
<fontDescription key="fontDescription" type="system" weight="semibold" pointSize="24"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
<constraints>
<constraint firstItem="r8F-jH-7Fs" firstAttribute="top" secondItem="mnl-nT-3ew" secondAttribute="top" id="Xev-jc-Gke"/>
<constraint firstAttribute="bottom" secondItem="r8F-jH-7Fs" secondAttribute="bottom" id="cXZ-dP-d0O"/>
<constraint firstAttribute="trailing" secondItem="r8F-jH-7Fs" secondAttribute="trailing" constant="16" id="fDT-ry-SV5"/>
<constraint firstItem="r8F-jH-7Fs" firstAttribute="leading" secondItem="mnl-nT-3ew" secondAttribute="leading" constant="16" id="nqD-Ju-CCj"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="vBO-kL-9pk">
<rect key="frame" x="0.0" y="151.5" width="414" height="44"/>
<subviews>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="yeE-eu-dNb">
<rect key="frame" x="16" y="0.0" width="69" height="44"/>
<constraints>
<constraint firstAttribute="height" constant="44" id="mjW-Mz-ezJ"/>
</constraints>
<state key="normal" title="Clear logs"/>
</button>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="gZQ-CY-N0t">
<rect key="frame" x="117" y="0.0" width="44" height="44"/>
<constraints>
<constraint firstAttribute="height" constant="44" id="282-d1-E10"/>
<constraint firstAttribute="width" constant="44" id="jDg-yw-RQY"/>
</constraints>
</button>
</subviews>
<color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
<constraints>
<constraint firstItem="yeE-eu-dNb" firstAttribute="top" secondItem="vBO-kL-9pk" secondAttribute="top" id="71y-5M-1wM"/>
<constraint firstItem="gZQ-CY-N0t" firstAttribute="leading" secondItem="yeE-eu-dNb" secondAttribute="trailing" constant="32" id="9ki-YW-f0B"/>
<constraint firstItem="gZQ-CY-N0t" firstAttribute="top" secondItem="vBO-kL-9pk" secondAttribute="top" id="Gd7-Qx-Rv5"/>
<constraint firstAttribute="bottom" secondItem="gZQ-CY-N0t" secondAttribute="bottom" id="NeB-qd-nBP"/>
<constraint firstItem="yeE-eu-dNb" firstAttribute="leading" secondItem="vBO-kL-9pk" secondAttribute="leading" constant="16" id="cLZ-ye-5yh"/>
<constraint firstAttribute="bottom" secondItem="yeE-eu-dNb" secondAttribute="bottom" id="qb0-Nn-Aib"/>
</constraints>
</view>
<view contentMode="scaleToFill" verticalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="eaG-yH-68T">
<rect key="frame" x="0.0" y="203.5" width="414" height="31"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Toggle advertisement" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="omg-67-iV0">
<rect key="frame" x="16" y="0.0" width="166" height="31"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" on="YES" translatesAutoresizingMaskIntoConstraints="NO" id="i01-q8-Sxa">
<rect key="frame" x="202" y="0.0" width="51" height="31"/>
</switch>
</subviews>
<color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
<constraints>
<constraint firstAttribute="bottom" secondItem="i01-q8-Sxa" secondAttribute="bottom" id="C3U-tV-N3x"/>
<constraint firstItem="i01-q8-Sxa" firstAttribute="centerY" secondItem="omg-67-iV0" secondAttribute="centerY" id="EHp-1s-ism"/>
<constraint firstItem="omg-67-iV0" firstAttribute="leading" secondItem="eaG-yH-68T" secondAttribute="leading" constant="16" id="bKu-3p-g2J"/>
<constraint firstItem="omg-67-iV0" firstAttribute="top" secondItem="eaG-yH-68T" secondAttribute="top" id="mmw-yD-K0m"/>
<constraint firstItem="i01-q8-Sxa" firstAttribute="leading" secondItem="omg-67-iV0" secondAttribute="trailing" constant="20" id="nuE-kv-MlO"/>
<constraint firstItem="i01-q8-Sxa" firstAttribute="top" secondItem="eaG-yH-68T" secondAttribute="top" id="wxq-FJ-Aiv"/>
<constraint firstAttribute="bottom" secondItem="omg-67-iV0" secondAttribute="bottom" id="xxV-FX-iCP"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="UsF-LF-5uJ">
<rect key="frame" x="0.0" y="242.5" width="414" height="31"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Toggle scanning" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="6hb-oo-EFZ">
<rect key="frame" x="16" y="0.0" width="125" height="31"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" on="YES" translatesAutoresizingMaskIntoConstraints="NO" id="pSh-gt-Z0V">
<rect key="frame" x="161" y="0.0" width="51" height="31"/>
</switch>
</subviews>
<color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
<constraints>
<constraint firstItem="pSh-gt-Z0V" firstAttribute="centerY" secondItem="6hb-oo-EFZ" secondAttribute="centerY" id="But-UP-nnD"/>
<constraint firstItem="pSh-gt-Z0V" firstAttribute="top" secondItem="UsF-LF-5uJ" secondAttribute="top" id="ImI-bk-A7x"/>
<constraint firstAttribute="bottom" secondItem="pSh-gt-Z0V" secondAttribute="bottom" id="mH7-xd-4EB"/>
<constraint firstItem="6hb-oo-EFZ" firstAttribute="top" secondItem="UsF-LF-5uJ" secondAttribute="top" id="oub-xe-aaJ"/>
<constraint firstItem="6hb-oo-EFZ" firstAttribute="leading" secondItem="UsF-LF-5uJ" secondAttribute="leading" constant="16" id="pOK-RP-znG"/>
<constraint firstItem="pSh-gt-Z0V" firstAttribute="leading" secondItem="6hb-oo-EFZ" secondAttribute="trailing" constant="20" id="vcg-6Q-S85"/>
<constraint firstAttribute="bottom" secondItem="6hb-oo-EFZ" secondAttribute="bottom" id="yo7-j1-qnj"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="cmJ-Am-HxG">
<rect key="frame" x="0.0" y="281.5" width="414" height="44"/>
<subviews>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="MRj-sM-i0b">
<rect key="frame" x="16" y="0.0" width="155" height="44"/>
<constraints>
<constraint firstAttribute="height" constant="44" id="ya8-0C-zRi"/>
</constraints>
<state key="normal" title="Obtain Bluetooth state"/>
</button>
</subviews>
<color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
<constraints>
<constraint firstItem="MRj-sM-i0b" firstAttribute="leading" secondItem="cmJ-Am-HxG" secondAttribute="leading" constant="16" id="74Z-2Q-p7W"/>
<constraint firstItem="MRj-sM-i0b" firstAttribute="top" secondItem="cmJ-Am-HxG" secondAttribute="top" id="scC-oS-5U5"/>
<constraint firstAttribute="bottom" secondItem="MRj-sM-i0b" secondAttribute="bottom" id="xwK-bG-4RJ"/>
</constraints>
</view>
<view contentMode="scaleToFill" verticalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="70A-Ef-2Sn">
<rect key="frame" x="0.0" y="333.5" width="414" height="20.5"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Central state:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="98r-Qb-WQe">
<rect key="frame" x="16" y="0.0" width="382" height="20.5"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
<constraints>
<constraint firstItem="98r-Qb-WQe" firstAttribute="top" secondItem="70A-Ef-2Sn" secondAttribute="top" id="MfK-kK-YWF"/>
<constraint firstAttribute="bottom" secondItem="98r-Qb-WQe" secondAttribute="bottom" id="Xrv-MF-oGF"/>
<constraint firstAttribute="trailing" secondItem="98r-Qb-WQe" secondAttribute="trailing" constant="16" id="fmT-KU-kCR"/>
<constraint firstItem="98r-Qb-WQe" firstAttribute="leading" secondItem="70A-Ef-2Sn" secondAttribute="leading" constant="16" id="tpT-W4-NM7"/>
</constraints>
</view>
<view contentMode="scaleToFill" verticalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="p0G-Gz-NI9">
<rect key="frame" x="0.0" y="362" width="414" height="20.5"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Peripheral state:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="msZ-UI-ziw">
<rect key="frame" x="16" y="0.0" width="382" height="20.5"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
<constraints>
<constraint firstAttribute="trailing" secondItem="msZ-UI-ziw" secondAttribute="trailing" constant="16" id="PTu-g7-dqM"/>
<constraint firstItem="msZ-UI-ziw" firstAttribute="top" secondItem="p0G-Gz-NI9" secondAttribute="top" id="oaP-n7-nEL"/>
<constraint firstAttribute="bottom" secondItem="msZ-UI-ziw" secondAttribute="bottom" id="vW6-7z-6yN"/>
<constraint firstItem="msZ-UI-ziw" firstAttribute="leading" secondItem="p0G-Gz-NI9" secondAttribute="leading" constant="16" id="xoC-9F-mFi"/>
</constraints>
</view>
<view contentMode="scaleToFill" verticalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="ebG-DA-X7b">
<rect key="frame" x="0.0" y="390.5" width="414" height="20.5"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Discovered peripheral count:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Fye-BS-LR4">
<rect key="frame" x="16" y="0.0" width="382" height="20.5"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
<constraints>
<constraint firstAttribute="bottom" secondItem="Fye-BS-LR4" secondAttribute="bottom" id="Bvf-ZA-VaC"/>
<constraint firstAttribute="trailing" secondItem="Fye-BS-LR4" secondAttribute="trailing" constant="16" id="PHg-ZB-XE4"/>
<constraint firstItem="Fye-BS-LR4" firstAttribute="top" secondItem="ebG-DA-X7b" secondAttribute="top" id="U8N-el-zL0"/>
<constraint firstItem="Fye-BS-LR4" firstAttribute="leading" secondItem="ebG-DA-X7b" secondAttribute="leading" constant="16" id="eG7-CY-ARa"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="hvd-6X-q8R">
<rect key="frame" x="0.0" y="419" width="414" height="1"/>
<color key="backgroundColor" white="0.33333333333333331" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="height" constant="1" id="ZyS-Vp-UdQ"/>
</constraints>
</view>
<view contentMode="scaleToFill" verticalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="E7q-a0-4AJ">
<rect key="frame" x="0.0" y="428" width="414" height="20.5"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Silent notifications received:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="aQD-YK-YEa">
<rect key="frame" x="16" y="0.0" width="215.5" height="20.5"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="0" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="dU2-1t-euQ">
<rect key="frame" x="247.5" y="0.0" width="10.5" height="20.5"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
<constraints>
<constraint firstAttribute="bottom" secondItem="aQD-YK-YEa" secondAttribute="bottom" id="BcZ-Kp-d02"/>
<constraint firstAttribute="bottom" secondItem="dU2-1t-euQ" secondAttribute="bottom" id="DUe-sJ-pG0"/>
<constraint firstItem="dU2-1t-euQ" firstAttribute="top" secondItem="E7q-a0-4AJ" secondAttribute="top" id="Ky6-zY-xjI"/>
<constraint firstItem="aQD-YK-YEa" firstAttribute="leading" secondItem="E7q-a0-4AJ" secondAttribute="leading" constant="16" id="cgm-Rs-4Bc"/>
<constraint firstItem="dU2-1t-euQ" firstAttribute="leading" secondItem="aQD-YK-YEa" secondAttribute="trailing" constant="16" id="jXd-Ep-J40"/>
<constraint firstItem="aQD-YK-YEa" firstAttribute="top" secondItem="E7q-a0-4AJ" secondAttribute="top" id="lYb-UZ-4Ct"/>
</constraints>
</view>
<view contentMode="scaleToFill" verticalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="gho-qz-b8q">
<rect key="frame" x="0.0" y="456.5" width="414" height="20.5"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="APN Token" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="wqp-Fe-L0f">
<rect key="frame" x="16" y="0.0" width="382" height="20.5"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
<constraints>
<constraint firstItem="wqp-Fe-L0f" firstAttribute="leading" secondItem="gho-qz-b8q" secondAttribute="leading" constant="16" id="6tx-aL-Q4z"/>
<constraint firstItem="wqp-Fe-L0f" firstAttribute="top" secondItem="gho-qz-b8q" secondAttribute="top" id="8yq-ly-IL4"/>
<constraint firstAttribute="bottom" secondItem="wqp-Fe-L0f" secondAttribute="bottom" id="o8h-AF-7gr"/>
<constraint firstAttribute="trailing" secondItem="wqp-Fe-L0f" secondAttribute="trailing" constant="16" id="qDd-VL-nX8"/>
</constraints>
</view>
<view contentMode="scaleToFill" verticalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="Yxk-Fi-rb7">
<rect key="frame" x="0.0" y="485" width="414" height="20.5"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="bcP-lC-FpW">
<rect key="frame" x="16" y="0.0" width="382" height="20.5"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
<constraints>
<constraint firstAttribute="trailing" secondItem="bcP-lC-FpW" secondAttribute="trailing" constant="16" id="3Ox-TK-tEA"/>
<constraint firstAttribute="bottom" secondItem="bcP-lC-FpW" secondAttribute="bottom" id="KbX-BQ-dwQ"/>
<constraint firstItem="bcP-lC-FpW" firstAttribute="top" secondItem="Yxk-Fi-rb7" secondAttribute="top" id="Zgj-Hg-YcC"/>
<constraint firstItem="bcP-lC-FpW" firstAttribute="leading" secondItem="Yxk-Fi-rb7" secondAttribute="leading" constant="16" id="nmJ-cr-bwL"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="J6X-oB-ElI">
<rect key="frame" x="0.0" y="513.5" width="414" height="44"/>
<subviews>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="vDB-4P-xpd">
<rect key="frame" x="16" y="0.0" width="184" height="44"/>
<constraints>
<constraint firstAttribute="height" constant="44" id="SVe-Hf-15e"/>
</constraints>
<state key="normal" title="Reset notifications counter"/>
<connections>
<action selector="resetSilentNotificationsCounter:" destination="dhe-6o-fvJ" eventType="touchUpInside" id="LMB-cR-qpk"/>
</connections>
</button>
</subviews>
<color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
<constraints>
<constraint firstAttribute="bottom" secondItem="vDB-4P-xpd" secondAttribute="bottom" id="B7Q-bm-K8n"/>
<constraint firstItem="vDB-4P-xpd" firstAttribute="top" secondItem="J6X-oB-ElI" secondAttribute="top" id="haX-kJ-gTM"/>
<constraint firstItem="vDB-4P-xpd" firstAttribute="leading" secondItem="J6X-oB-ElI" secondAttribute="leading" constant="16" id="kyY-hJ-elT"/>
</constraints>
</view>
</subviews>
</stackView>
</subviews>
<color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
<constraints>
<constraint firstItem="vW3-bA-wgt" firstAttribute="leading" secondItem="eTh-XD-RKI" secondAttribute="leading" id="6D6-5w-ZNO"/>
<constraint firstAttribute="trailing" secondItem="vW3-bA-wgt" secondAttribute="trailing" id="Kyz-LI-AK4"/>
<constraint firstAttribute="bottom" secondItem="vW3-bA-wgt" secondAttribute="bottom" id="NU7-vg-xQu"/>
<constraint firstItem="vW3-bA-wgt" firstAttribute="top" secondItem="eTh-XD-RKI" secondAttribute="top" id="SeI-Sv-BB9"/>
</constraints>
</view>
</subviews>
<constraints>
<constraint firstAttribute="trailing" secondItem="eTh-XD-RKI" secondAttribute="trailing" id="2FC-Hm-xII"/>
<constraint firstItem="eTh-XD-RKI" firstAttribute="width" secondItem="QEz-Pd-P6j" secondAttribute="width" id="Lee-3c-CdR"/>
<constraint firstItem="eTh-XD-RKI" firstAttribute="leading" secondItem="QEz-Pd-P6j" secondAttribute="leading" id="Wja-1h-clg"/>
<constraint firstItem="eTh-XD-RKI" firstAttribute="top" secondItem="QEz-Pd-P6j" secondAttribute="top" id="YXc-h2-WUF"/>
<constraint firstAttribute="bottom" secondItem="eTh-XD-RKI" secondAttribute="bottom" id="iw2-61-shV"/>
</constraints>
</scrollView>
</subviews> </subviews>
<color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/> <color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
<constraints> <constraints>
<constraint firstItem="i01-q8-Sxa" firstAttribute="centerY" secondItem="omg-67-iV0" secondAttribute="centerY" id="3li-A1-syH"/>
<constraint firstItem="i01-q8-Sxa" firstAttribute="leading" secondItem="omg-67-iV0" secondAttribute="trailing" constant="20" id="4Ay-v2-wha"/>
<constraint firstItem="98r-Qb-WQe" firstAttribute="leading" secondItem="dAZ-zL-v9t" secondAttribute="leading" constant="16" id="4D6-9o-8nD"/>
<constraint firstItem="6hb-oo-EFZ" firstAttribute="leading" secondItem="dAZ-zL-v9t" secondAttribute="leading" constant="16" id="4aO-AH-I2a"/>
<constraint firstItem="7ks-G7-72D" firstAttribute="top" secondItem="Apr-IN-mch" secondAttribute="bottom" constant="5" id="5nI-uF-NsS"/>
<constraint firstItem="pSh-gt-Z0V" firstAttribute="leading" secondItem="6hb-oo-EFZ" secondAttribute="trailing" constant="20" id="5pm-eY-jW7"/>
<constraint firstItem="pSh-gt-Z0V" firstAttribute="centerY" secondItem="6hb-oo-EFZ" secondAttribute="centerY" id="66R-c3-nys"/>
<constraint firstItem="Apr-IN-mch" firstAttribute="leading" secondItem="dAZ-zL-v9t" secondAttribute="leading" constant="16" id="9xN-7N-yYi"/> <constraint firstItem="Apr-IN-mch" firstAttribute="leading" secondItem="dAZ-zL-v9t" secondAttribute="leading" constant="16" id="9xN-7N-yYi"/>
<constraint firstItem="dAZ-zL-v9t" firstAttribute="trailing" secondItem="fqh-QW-KCP" secondAttribute="trailing" constant="16" id="AJD-6K-2rR"/> <constraint firstItem="QEz-Pd-P6j" firstAttribute="trailing" secondItem="dAZ-zL-v9t" secondAttribute="trailing" id="DWc-ix-IbL"/>
<constraint firstItem="dAZ-zL-v9t" firstAttribute="trailing" secondItem="x5g-CO-y2v" secondAttribute="trailing" constant="16" id="BOP-Vp-f7B"/>
<constraint firstItem="Fye-BS-LR4" firstAttribute="top" secondItem="msZ-UI-ziw" secondAttribute="bottom" constant="10" id="Beh-HG-UN8"/>
<constraint firstItem="6hb-oo-EFZ" firstAttribute="top" secondItem="omg-67-iV0" secondAttribute="bottom" constant="20" id="DmJ-xl-TYw"/>
<constraint firstItem="MRj-sM-i0b" firstAttribute="leading" secondItem="dAZ-zL-v9t" secondAttribute="leading" constant="16" id="JsN-d1-hzH"/>
<constraint firstItem="Fye-BS-LR4" firstAttribute="leading" secondItem="dAZ-zL-v9t" secondAttribute="leading" constant="16" id="K26-cB-ApC"/>
<constraint firstItem="msZ-UI-ziw" firstAttribute="leading" secondItem="dAZ-zL-v9t" secondAttribute="leading" constant="16" id="Kzk-Fc-Afk"/>
<constraint firstItem="dAZ-zL-v9t" firstAttribute="trailing" secondItem="Kot-qu-BYK" secondAttribute="trailing" constant="16" id="L4D-Bg-eKz"/>
<constraint firstItem="gua-x7-jJP" firstAttribute="centerY" secondItem="Apr-IN-mch" secondAttribute="centerY" id="Ncz-49-ocb"/> <constraint firstItem="gua-x7-jJP" firstAttribute="centerY" secondItem="Apr-IN-mch" secondAttribute="centerY" id="Ncz-49-ocb"/>
<constraint firstItem="Kot-qu-BYK" firstAttribute="leading" secondItem="dAZ-zL-v9t" secondAttribute="leading" constant="16" id="P11-1e-pqw"/> <constraint firstItem="dAZ-zL-v9t" firstAttribute="bottom" secondItem="QEz-Pd-P6j" secondAttribute="bottom" id="c0C-2e-2je"/>
<constraint firstItem="yHq-NW-S3P" firstAttribute="centerY" secondItem="7ks-G7-72D" secondAttribute="centerY" id="Ujd-cR-DPE"/>
<constraint firstItem="r8F-jH-7Fs" firstAttribute="leading" secondItem="dAZ-zL-v9t" secondAttribute="leading" constant="16" id="VId-ZN-7pJ"/>
<constraint firstItem="dAZ-zL-v9t" firstAttribute="trailing" secondItem="yHq-NW-S3P" secondAttribute="trailing" id="Wa6-o1-idB"/>
<constraint firstItem="omg-67-iV0" firstAttribute="leading" secondItem="dAZ-zL-v9t" secondAttribute="leading" constant="16" id="YGZ-a5-8be"/>
<constraint firstItem="fqh-QW-KCP" firstAttribute="leading" secondItem="dAZ-zL-v9t" secondAttribute="leading" constant="16" id="bpv-Aq-K1U"/>
<constraint firstItem="7ks-G7-72D" firstAttribute="leading" secondItem="dAZ-zL-v9t" secondAttribute="leading" constant="16" id="cbF-3m-ilp"/>
<constraint firstItem="gua-x7-jJP" firstAttribute="leading" secondItem="Apr-IN-mch" secondAttribute="trailing" constant="94" id="chY-SK-f3X"/> <constraint firstItem="gua-x7-jJP" firstAttribute="leading" secondItem="Apr-IN-mch" secondAttribute="trailing" constant="94" id="chY-SK-f3X"/>
<constraint firstItem="omg-67-iV0" firstAttribute="top" secondItem="yeE-eu-dNb" secondAttribute="bottom" constant="20" id="dbI-lb-keT"/> <constraint firstItem="QEz-Pd-P6j" firstAttribute="top" secondItem="Apr-IN-mch" secondAttribute="bottom" constant="16" id="if5-8z-jPw"/>
<constraint firstItem="MRj-sM-i0b" firstAttribute="top" secondItem="6hb-oo-EFZ" secondAttribute="bottom" constant="20" id="fLe-Hy-DzB"/> <constraint firstItem="QEz-Pd-P6j" firstAttribute="leading" secondItem="dAZ-zL-v9t" secondAttribute="leading" id="lvH-Ei-G5i"/>
<constraint firstItem="98r-Qb-WQe" firstAttribute="top" secondItem="MRj-sM-i0b" secondAttribute="bottom" constant="10" id="ftW-8J-pgO"/>
<constraint firstItem="yeE-eu-dNb" firstAttribute="leading" secondItem="dAZ-zL-v9t" secondAttribute="leading" constant="16" id="gAk-PM-puy"/>
<constraint firstItem="yHq-NW-S3P" firstAttribute="leading" secondItem="7ks-G7-72D" secondAttribute="trailing" constant="9" id="ghU-jx-k06"/>
<constraint firstItem="Kot-qu-BYK" firstAttribute="top" secondItem="fqh-QW-KCP" secondAttribute="bottom" constant="20" id="ghg-Da-idO"/>
<constraint firstItem="msZ-UI-ziw" firstAttribute="top" secondItem="98r-Qb-WQe" secondAttribute="bottom" constant="10" id="iPc-vh-DLv"/>
<constraint firstItem="x5g-CO-y2v" firstAttribute="top" secondItem="7ks-G7-72D" secondAttribute="bottom" constant="8" id="jgc-4t-yhJ"/>
<constraint firstItem="yeE-eu-dNb" firstAttribute="top" secondItem="r8F-jH-7Fs" secondAttribute="bottom" constant="20" id="lKH-P8-xY2"/>
<constraint firstItem="fqh-QW-KCP" firstAttribute="top" secondItem="x5g-CO-y2v" secondAttribute="bottom" constant="5" id="mpJ-6E-HgE"/>
<constraint firstItem="x5g-CO-y2v" firstAttribute="leading" secondItem="dAZ-zL-v9t" secondAttribute="leading" constant="16" id="neN-6v-BFf"/>
<constraint firstItem="r8F-jH-7Fs" firstAttribute="top" secondItem="Kot-qu-BYK" secondAttribute="bottom" constant="5" id="qv3-ad-KoH"/>
<constraint firstItem="dAZ-zL-v9t" firstAttribute="trailing" secondItem="r8F-jH-7Fs" secondAttribute="trailing" constant="16" id="tN9-hW-R7G"/>
<constraint firstItem="Apr-IN-mch" firstAttribute="top" secondItem="dAZ-zL-v9t" secondAttribute="top" constant="10" id="xof-zA-Zxs"/> <constraint firstItem="Apr-IN-mch" firstAttribute="top" secondItem="dAZ-zL-v9t" secondAttribute="top" constant="10" id="xof-zA-Zxs"/>
</constraints> </constraints>
<viewLayoutGuide key="safeArea" id="dAZ-zL-v9t"/> <viewLayoutGuide key="safeArea" id="dAZ-zL-v9t"/>
@ -174,6 +425,7 @@
<simulatedTabBarMetrics key="simulatedBottomBarMetrics"/> <simulatedTabBarMetrics key="simulatedBottomBarMetrics"/>
<connections> <connections>
<outlet property="advertisementSwitch" destination="i01-q8-Sxa" id="g0h-uq-1WE"/> <outlet property="advertisementSwitch" destination="i01-q8-Sxa" id="g0h-uq-1WE"/>
<outlet property="apnTokenLabel" destination="bcP-lC-FpW" id="rtf-Gz-e8Y"/>
<outlet property="centralStateLabel" destination="98r-Qb-WQe" id="RO4-gy-1gd"/> <outlet property="centralStateLabel" destination="98r-Qb-WQe" id="RO4-gy-1gd"/>
<outlet property="clearLogsButton" destination="yeE-eu-dNb" id="tbR-j3-DTa"/> <outlet property="clearLogsButton" destination="yeE-eu-dNb" id="tbR-j3-DTa"/>
<outlet property="devicesEncounteredLabel" destination="r8F-jH-7Fs" id="K1w-Zq-Sqj"/> <outlet property="devicesEncounteredLabel" destination="r8F-jH-7Fs" id="K1w-Zq-Sqj"/>
@ -182,12 +434,13 @@
<outlet property="obtainBluetoothStateButton" destination="MRj-sM-i0b" id="FNn-nz-g8L"/> <outlet property="obtainBluetoothStateButton" destination="MRj-sM-i0b" id="FNn-nz-g8L"/>
<outlet property="peripheralStateLabel" destination="msZ-UI-ziw" id="dvD-e9-qWU"/> <outlet property="peripheralStateLabel" destination="msZ-UI-ziw" id="dvD-e9-qWU"/>
<outlet property="scanningSwitch" destination="pSh-gt-Z0V" id="MWJ-71-nL3"/> <outlet property="scanningSwitch" destination="pSh-gt-Z0V" id="MWJ-71-nL3"/>
<outlet property="silentNotificationsCountLabel" destination="dU2-1t-euQ" id="AgF-H7-sQr"/>
<outlet property="versionNumLabel" destination="yHq-NW-S3P" id="vrk-v3-gux"/> <outlet property="versionNumLabel" destination="yHq-NW-S3P" id="vrk-v3-gux"/>
</connections> </connections>
</viewController> </viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="QyF-8Y-Ct4" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/> <placeholder placeholderIdentifier="IBFirstResponder" id="QyF-8Y-Ct4" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
</objects> </objects>
<point key="canvasLocation" x="3008.8000000000002" y="1229.2353823088456"/> <point key="canvasLocation" x="3008.6956521739135" y="1228.7946428571429"/>
</scene> </scene>
<!--Log--> <!--Log-->
<scene sceneID="mlq-47-O8I"> <scene sceneID="mlq-47-O8I">
@ -246,7 +499,7 @@
</viewController> </viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="Sjl-5z-NoS" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/> <placeholder placeholderIdentifier="IBFirstResponder" id="Sjl-5z-NoS" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
</objects> </objects>
<point key="canvasLocation" x="1363" y="1230"/> <point key="canvasLocation" x="378" y="1200"/>
</scene> </scene>
<!--Contact--> <!--Contact-->
<scene sceneID="5W3-a7-po8"> <scene sceneID="5W3-a7-po8">
@ -304,7 +557,7 @@
</viewController> </viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="iyc-MS-e48" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/> <placeholder placeholderIdentifier="IBFirstResponder" id="iyc-MS-e48" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
</objects> </objects>
<point key="canvasLocation" x="2192" y="1230"/> <point key="canvasLocation" x="1091" y="1200"/>
</scene> </scene>
<!--Debug--> <!--Debug-->
<scene sceneID="4z4-Vk-0ST"> <scene sceneID="4z4-Vk-0ST">
@ -319,13 +572,63 @@
<connections> <connections>
<segue destination="eWp-iL-Pvm" kind="relationship" relationship="viewControllers" id="uVI-cT-4pS"/> <segue destination="eWp-iL-Pvm" kind="relationship" relationship="viewControllers" id="uVI-cT-4pS"/>
<segue destination="8uJ-OV-qJY" kind="relationship" relationship="viewControllers" id="y09-9s-lbv"/> <segue destination="8uJ-OV-qJY" kind="relationship" relationship="viewControllers" id="y09-9s-lbv"/>
<segue destination="dhe-6o-fvJ" kind="relationship" relationship="viewControllers" id="OIR-Qr-AGh"/> <segue destination="Wp8-XU-ZVU" kind="relationship" relationship="viewControllers" id="Aid-wy-Dec"/>
<segue destination="dhe-6o-fvJ" kind="relationship" relationship="viewControllers" id="1bc-af-wVV"/>
</connections> </connections>
</tabBarController> </tabBarController>
<placeholder placeholderIdentifier="IBFirstResponder" id="Bzv-qa-RlG" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/> <placeholder placeholderIdentifier="IBFirstResponder" id="Bzv-qa-RlG" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
</objects> </objects>
<point key="canvasLocation" x="1014" y="254"/> <point key="canvasLocation" x="1014" y="254"/>
</scene> </scene>
<!--BLELog-->
<scene sceneID="wsH-Jc-1fq">
<objects>
<viewController modalTransitionStyle="crossDissolve" modalPresentationStyle="fullScreen" id="Wp8-XU-ZVU" userLabel="BLELog" customClass="BLELogViewController" customModule="COVIDSafe" customModuleProvider="target" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="cA8-XT-BBV">
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="59u-O7-gii">
<rect key="frame" x="0.0" y="105" width="414" height="708"/>
<color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
<prototypes>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" reuseIdentifier="LogCell" id="VLC-oG-EM6">
<rect key="frame" x="0.0" y="28" width="414" height="43.5"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="VLC-oG-EM6" id="iZ6-Sk-1eZ">
<rect key="frame" x="0.0" y="0.0" width="414" height="43.5"/>
<autoresizingMask key="autoresizingMask"/>
</tableViewCellContentView>
</tableViewCell>
</prototypes>
</tableView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="BLE logs" lineBreakMode="characterWrap" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Ijv-ar-Hcw">
<rect key="frame" x="16" y="54" width="135" height="41"/>
<fontDescription key="fontDescription" type="boldSystem" pointSize="34"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
<constraints>
<constraint firstItem="Ijv-ar-Hcw" firstAttribute="leading" secondItem="SB6-tg-Q7b" secondAttribute="leading" constant="16" id="0C6-pu-glJ"/>
<constraint firstItem="SB6-tg-Q7b" firstAttribute="trailing" secondItem="59u-O7-gii" secondAttribute="trailing" id="3Ph-Wp-dip"/>
<constraint firstItem="59u-O7-gii" firstAttribute="leading" secondItem="SB6-tg-Q7b" secondAttribute="leading" id="Cqr-MQ-Jd0"/>
<constraint firstItem="Ijv-ar-Hcw" firstAttribute="top" secondItem="SB6-tg-Q7b" secondAttribute="top" constant="10" id="DSl-LU-mmn"/>
<constraint firstItem="SB6-tg-Q7b" firstAttribute="bottom" secondItem="59u-O7-gii" secondAttribute="bottom" id="ZCs-Gt-tbN"/>
<constraint firstItem="59u-O7-gii" firstAttribute="top" secondItem="Ijv-ar-Hcw" secondAttribute="bottom" constant="10" id="dFx-rX-1Nz"/>
</constraints>
<viewLayoutGuide key="safeArea" id="SB6-tg-Q7b"/>
</view>
<tabBarItem key="tabBarItem" title="BLE" image="list.dash" catalog="system" id="6vn-4L-c4A"/>
<connections>
<outlet property="logTableView" destination="59u-O7-gii" id="w4c-Du-RXK"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="4OF-cR-KRu" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="2016" y="1200"/>
</scene>
</scenes> </scenes>
<resources> <resources>
<image name="gear" catalog="system" width="128" height="119"/> <image name="gear" catalog="system" width="128" height="119"/>

View file

@ -17,7 +17,8 @@ class EncounterMessageManager {
rssi: nil, rssi: nil,
txPower: nil, txPower: nil,
modelP: DeviceIdentifier.getModel(), modelP: DeviceIdentifier.getModel(),
msg: tempId) msg: tempId,
timestamp: Date().timeIntervalSince1970)
let jsonMsg = try JSONEncoder().encode(broadcastPayload) let jsonMsg = try JSONEncoder().encode(broadcastPayload)
let encryptedJsonMsg = try Crypto.encrypt(dataToEncrypt: jsonMsg) let encryptedJsonMsg = try Crypto.encrypt(dataToEncrypt: jsonMsg)
let peripheralCharStruct = PeripheralCharacteristicsData(modelP: BluetraceConfig.DummyModel, msg: encryptedJsonMsg, org: BluetraceConfig.OrgID, v: BluetraceConfig.ProtocolVersion) let peripheralCharStruct = PeripheralCharacteristicsData(modelP: BluetraceConfig.DummyModel, msg: encryptedJsonMsg, org: BluetraceConfig.OrgID, v: BluetraceConfig.ProtocolVersion)
@ -61,6 +62,7 @@ class EncounterMessageManager {
onComplete(response.tempId) onComplete(response.tempId)
return return
} }
return
} }
// we know that tempId has not expired // we know that tempId has not expired
@ -92,6 +94,7 @@ class EncounterMessageManager {
} }
onComplete(nil) onComplete(nil)
} }
return
} }
// we know that payload has not expired // we know that payload has not expired

View file

@ -13,6 +13,7 @@ struct EncounterBlob: Encodable {
var txPower: Double? var txPower: Double?
var modelP: String? var modelP: String?
var msg: String? var msg: String?
var timestamp: Double?
} }
struct EncounterRecord: Encodable { struct EncounterRecord: Encodable {

View file

@ -6,6 +6,11 @@ import SafariServices
class HomeViewController: UIViewController { class HomeViewController: UIViewController {
private var observer: NSObjectProtocol? private var observer: NSObjectProtocol?
let animatedHeaderActiveHeightConstant: CGFloat = 160
let animatedHeaderInactiveHeightConstant: CGFloat = 80
let animatedHeaderActiveVerticalMarginConstant: CGFloat = 60
let animatedHeaderInactiveVerticalMarginConstant: CGFloat = 24
@IBOutlet weak var screenStack: UIStackView! @IBOutlet weak var screenStack: UIStackView!
@IBOutlet weak var bluetoothStatusOffView: UIView! @IBOutlet weak var bluetoothStatusOffView: UIView!
@IBOutlet weak var bluetoothStatusOnView: UIView! @IBOutlet weak var bluetoothStatusOnView: UIView!
@ -28,6 +33,10 @@ class HomeViewController: UIViewController {
@IBOutlet weak var pushNotificationContainerView: UIView! @IBOutlet weak var pushNotificationContainerView: UIView!
@IBOutlet weak var uploadDateLabel: UILabel! @IBOutlet weak var uploadDateLabel: UILabel!
@IBOutlet weak var pairingRequestsLabel: UILabel! @IBOutlet weak var pairingRequestsLabel: UILabel!
@IBOutlet weak var topLeftIcon: UIImageView!
@IBOutlet weak var animatedBluetoothHeaderHeightConstraint: NSLayoutConstraint!
@IBOutlet weak var animatedBluetoothHeaderTopMarginConstraint: NSLayoutConstraint!
@IBOutlet weak var animatedBluetoothHeaderBottomMarginConstraint: NSLayoutConstraint!
var lottieBluetoothView: AnimationView! var lottieBluetoothView: AnimationView!
@ -135,6 +144,7 @@ class HomeViewController: UIViewController {
self.lottieBluetoothView?.play() self.lottieBluetoothView?.play()
self.becomeFirstResponder() self.becomeFirstResponder()
self.updateJWTKeychainAccess() self.updateJWTKeychainAccess()
getMessagesFromServer()
} }
override func viewWillDisappear(_ animated: Bool) { override func viewWillDisappear(_ animated: Bool) {
@ -175,6 +185,15 @@ class HomeViewController: UIViewController {
} }
} }
func getMessagesFromServer() {
MessageAPI.getMessagesIfNeeded() { (messageResponse, error) in
if let error = error {
DLog("Get messages error: \(error.localizedDescription)")
}
// We currently dont do anything with the response. Messages are delivered via APN
}
}
fileprivate func toggleViews() { fileprivate func toggleViews() {
DispatchQueue.main.async { DispatchQueue.main.async {
UNUserNotificationCenter.current().getNotificationSettings(completionHandler: { [weak self] settings in UNUserNotificationCenter.current().getNotificationSettings(completionHandler: { [weak self] settings in
@ -235,14 +254,28 @@ class HomeViewController: UIViewController {
toggleViewVisibility(view: homeHeaderPermissionsOffImage, isVisible: !self.allPermissionOn) toggleViewVisibility(view: homeHeaderPermissionsOffImage, isVisible: !self.allPermissionOn)
toggleViewVisibility(view: lottieBluetoothView, isVisible: self.allPermissionOn) toggleViewVisibility(view: lottieBluetoothView, isVisible: self.allPermissionOn)
self.homeHeaderInfoText.text = "home_header_active_title".localizedString(comment: "Header with no action req") + "\n" + "home_header_active_no_action_required".localizedString() var newAttributedLabel = NSMutableAttributedString(string: "home_header_active_title".localizedString(comment: "Header with no action req"), attributes: [.font: UIFont.preferredFont(forTextStyle: .title1).bold()])
newAttributedLabel.append(NSAttributedString(string: "\n" + "home_header_active_no_action_required".localizedString(), attributes: [.font: UIFont.preferredFont(forTextStyle: .body)]))
self.homeHeaderInfoText.attributedText = newAttributedLabel
if (!self.allPermissionOn) { if (!self.allPermissionOn) {
self.homeHeaderInfoText.text = "home_header_inactive_title".localizedString(comment: "Header with check permisisons text") + "\n" + "home_header_inactive_check_your_permissions".localizedString() newAttributedLabel = NSMutableAttributedString(string: "home_header_inactive_title".localizedString(comment: "Header with no action req"), attributes: [.font: UIFont.preferredFont(forTextStyle: .title1).bold()])
newAttributedLabel.append(NSAttributedString(string: "\n" + "home_header_inactive_check_your_permissions".localizedString(), attributes: [.font: UIFont.preferredFont(forTextStyle: .body)]))
animatedBluetoothHeaderHeightConstraint.constant = animatedHeaderInactiveHeightConstant
animatedBluetoothHeaderTopMarginConstraint.constant = animatedHeaderInactiveVerticalMarginConstant
animatedBluetoothHeaderBottomMarginConstraint.constant = animatedHeaderInactiveVerticalMarginConstant
self.homeHeaderInfoText.attributedText = newAttributedLabel
self.homeHeaderView.backgroundColor = UIColor.covidHomePermissionErrorColor self.homeHeaderView.backgroundColor = UIColor.covidHomePermissionErrorColor
topLeftIcon.isHidden = false
} else { } else {
animatedBluetoothHeaderHeightConstraint.constant = animatedHeaderActiveHeightConstant
animatedBluetoothHeaderTopMarginConstraint.constant = animatedHeaderActiveVerticalMarginConstant
animatedBluetoothHeaderBottomMarginConstraint.constant = animatedHeaderActiveVerticalMarginConstant
self.homeHeaderView.backgroundColor = UIColor.covidHomeActiveColor self.homeHeaderView.backgroundColor = UIColor.covidHomeActiveColor
updateAnimationViewWithAnimationName(name: "Spinner_home") updateAnimationViewWithAnimationName(name: "Spinner_home")
topLeftIcon.isHidden = true
} }
} }

View file

@ -12,6 +12,8 @@ final class InfoViewController: UIViewController {
@IBOutlet weak var obtainBluetoothStateButton: UIButton! @IBOutlet weak var obtainBluetoothStateButton: UIButton!
@IBOutlet weak var peripheralStateLabel: UILabel! @IBOutlet weak var peripheralStateLabel: UILabel!
@IBOutlet weak var discoveredPeripheralsCountLabel: UILabel! @IBOutlet weak var discoveredPeripheralsCountLabel: UILabel!
@IBOutlet weak var silentNotificationsCountLabel: UILabel!
@IBOutlet weak var apnTokenLabel: UILabel!
private var devicesEncounteredCount: Int? private var devicesEncounteredCount: Int?
@IBOutlet weak var versionNumLabel: UILabel! @IBOutlet weak var versionNumLabel: UILabel!
@ -29,6 +31,8 @@ final class InfoViewController: UIViewController {
advertisementSwitch.addTarget(self, action: #selector(self.advertisementSwitchChanged), for: UIControl.Event.valueChanged) advertisementSwitch.addTarget(self, action: #selector(self.advertisementSwitchChanged), for: UIControl.Event.valueChanged)
scanningSwitch.addTarget(self, action: #selector(self.scanningSwitchChanged), for: UIControl.Event.valueChanged) scanningSwitch.addTarget(self, action: #selector(self.scanningSwitchChanged), for: UIControl.Event.valueChanged)
clearLogsButton.addTarget(self, action:#selector(self.clearLogsButtonClicked), for: .touchUpInside) clearLogsButton.addTarget(self, action:#selector(self.clearLogsButtonClicked), for: .touchUpInside)
silentNotificationsCountLabel.text = "\(UserDefaults.standard.integer(forKey: "debugSilentNotificationCount"))"
apnTokenLabel.text = UserDefaults.standard.string(forKey: "deviceTokenForAPN")
} }
@ -114,5 +118,22 @@ final class InfoViewController: UIViewController {
} catch { } catch {
print("Could not perform delete. \(error)") print("Could not perform delete. \(error)")
} }
let logFetchRequest = NSFetchRequest<BLELog>(entityName: "BLELog")
logFetchRequest.includesPropertyValues = false
do {
let logs = try managedContext.fetch(logFetchRequest)
for bleLog in logs {
managedContext.delete(bleLog)
}
try managedContext.save()
} catch {
print("Could not perform delete. \(error)")
}
}
@IBAction func resetSilentNotificationsCounter(_ sender: Any) {
UserDefaults.standard.set(0, forKey: "debugSilentNotificationCount")
silentNotificationsCountLabel.text = "0"
} }
} }

View file

@ -3,6 +3,60 @@
import UIKit import UIKit
public extension NSMutableAttributedString { public extension NSMutableAttributedString {
func parseHTMLLinks() {
while canParseHtmlOccurenceLink() {
parseHtmlOccurenceLink()
}
}
fileprivate func canParseHtmlOccurenceLink() -> Bool {
let regexLinkStartElementString = #"\<a(.*?)\>"#
let regexLinkEndElementTextString = #"\<\/a\>"#
guard string.range(of: regexLinkStartElementString, options: .regularExpression) != nil else {
return false
}
guard string.range(of: regexLinkEndElementTextString, options: .regularExpression) != nil else {
return false
}
return true
}
fileprivate func parseHtmlOccurenceLink() {
let regexLinkStartElementString = #"\<a(.*?)\>"#
let regexLinkEndElementTextString = #"\<\/a\>"#
guard let strStartElementRange = string.range(of: regexLinkStartElementString, options: .regularExpression) else {
return
}
guard let strEndElementRange = string.range(of: regexLinkEndElementTextString, options: .regularExpression) else {
return
}
var urlString = ""
let startElementStr = String(string[strStartElementRange])
if let urlRange = startElementStr.range(of: #"\"(.*?)\""#, options: .regularExpression) {
let urlMatch = startElementStr[urlRange]
urlString = String(urlMatch)
let start = urlString.index(after: urlString.startIndex)
//ofset by 2 to as the quotes are escaped with \
let end = urlString.index(urlString.endIndex, offsetBy: -2)
urlString = String(urlString[start...end])
}
let convertedStartRange = NSRange(strStartElementRange, in: string)
let convertedEndRange = NSRange(strEndElementRange, in: string)
let nsStartElementRange = NSRange(location: convertedStartRange.location, length: convertedStartRange.upperBound - convertedStartRange.lowerBound)
let nsEndElementRange = NSRange(location: convertedEndRange.location, length: convertedEndRange.upperBound - convertedEndRange.lowerBound)
//remove html marking from text
replaceCharacters(in: nsEndElementRange, with: "*")
replaceCharacters(in: nsStartElementRange, with: "*")
addLink(enclosedIn: "*", urlString: urlString)
}
@discardableResult @discardableResult
func addLink(enclosedIn marker: String, urlString: String) -> Bool { func addLink(enclosedIn marker: String, urlString: String) -> Bool {
guard !marker.isEmpty else { return false } guard !marker.isEmpty else { return false }

View file

@ -33,10 +33,12 @@ class OnboardingStep2ViewController: UIViewController {
UNUserNotificationCenter.current() UNUserNotificationCenter.current()
.requestAuthorization(options: [.alert, .sound, .badge]) { .requestAuthorization(options: [.alert, .sound, .badge]) {
granted, error in granted, error in
UserDefaults.standard.set(true, forKey: "allowedPermissions") UserDefaults.standard.set(true, forKey: "allowedPermissions")
print("Permissions granted: \(granted)") print("Permissions granted: \(granted)")
DispatchQueue.main.async { DispatchQueue.main.async {
UIApplication.shared.registerForRemoteNotifications()
self.performSegue(withIdentifier: "showSuccessSegue", sender: self) self.performSegue(withIdentifier: "showSuccessSegue", sender: self)
} }
} }

View file

@ -19,12 +19,18 @@ public class PeripheralController: NSObject {
case peripheralAlreadyOff case peripheralAlreadyOff
} }
struct CachedPayload {
var payload: Data,
expiry: TimeInterval
}
var didUpdateState: ((String) -> Void)? var didUpdateState: ((String) -> Void)?
private let encounteredCentralExpiryTime:TimeInterval = 1800.0 // 30 minutes private let encounteredCentralExpiryTime:TimeInterval = 1800.0 // 30 minutes
private let restoreIdentifierKey = "com.joelkek.tracer.peripheral" private let restoreIdentifierKey = "com.joelkek.tracer.peripheral"
private let peripheralName: String private let peripheralName: String
private var encounteredCentrals = [UUID: (EncounterRecord)]() private var encounteredCentrals = [UUID: (EncounterRecord)]()
private var payloadLookaside = [UUID: CachedPayload]()
private let FREQUENCY_OF_CONNECTION_IN_S = 20.0
private var characteristicData: PeripheralCharacteristicsData private var characteristicData: PeripheralCharacteristicsData
private var peripheral: CBPeripheralManager! private var peripheral: CBPeripheralManager!
@ -81,20 +87,60 @@ extension PeripheralController: CBPeripheralManagerDelegate {
public func peripheralManager(_ peripheral: CBPeripheralManager, didReceiveRead request: CBATTRequest) { public func peripheralManager(_ peripheral: CBPeripheralManager, didReceiveRead request: CBATTRequest) {
DLog("\(["request": request] as AnyObject)") DLog("\(["request": request] as AnyObject)")
EncounterMessageManager.shared.getAdvertisementPayload { (payloadToAdvertise) in let remoteCentral = request.central.identifier;
if let payload = payloadToAdvertise {
// check offset
if request.offset > payload.count {
peripheral.respond(to: request, withResult: .invalidOffset)
return;
}
request.value = payload.advanced(by: request.offset) // clean up expired payloads
peripheral.respond(to: request, withResult: .success) cleanUpExpiredCachedPayloads()
} else {
DLog("Error getting payload to advertise") if request.offset == 0 {
peripheral.respond(to: request, withResult: .unlikelyError) // new request, create new payload
EncounterMessageManager.shared.getAdvertisementPayload { (payloadToAdvertise) in
self.queue.async {
if let payload = payloadToAdvertise {
// cache payload for remote
self.payloadLookaside[remoteCentral] = CachedPayload(payload: payload, expiry: Date().timeIntervalSince1970 + self.FREQUENCY_OF_CONNECTION_IN_S);
request.value = payload.advanced(by: request.offset)
peripheral.respond(to: request, withResult: .success)
} else {
DLog("Error getting payload to advertise")
peripheral.respond(to: request, withResult: .unlikelyError)
}
}
} }
} else {
// get cached payload, check offset valid
guard let cachedPayload = self.payloadLookaside[remoteCentral] else {
peripheral.respond(to: request, withResult: .unlikelyError)
return
}
if request.offset > cachedPayload.payload.count {
peripheral.respond(to: request, withResult: .invalidOffset)
return
}
if request.offset == cachedPayload.payload.count {
// the central already read all the data in its last read request
peripheral.respond(to: request, withResult: .success)
return
}
// return payload as normal
request.value = cachedPayload.payload.advanced(by: request.offset)
peripheral.respond(to: request, withResult: .success)
}
}
fileprivate func cleanUpExpiredCachedPayloads() {
for payloadKey in payloadLookaside.keys {
let currentTime = Date().timeIntervalSince1970
guard let payload = payloadLookaside[payloadKey], payload.expiry < currentTime else {
continue
}
// if payload exists and expiry time is less than current time, remove.
payloadLookaside.removeValue(forKey: payloadKey)
} }
} }

View file

@ -268,7 +268,7 @@ class PersonalDetailsViewController: UIViewController, UITextFieldDelegate, UIPi
hasError = true hasError = true
fullNameErrorLabel.text = "personal_details_name_error_prompt".localizedString() fullNameErrorLabel.text = "personal_details_name_error_prompt".localizedString()
} }
else if textField.text?.range(of: #"^[A-Za-z0-9][A-Za-z'0-9\\-\\u00C0-\\u017F ]{0,80}$"#, options: .regularExpression) == nil { else if textField.text?.range(of: #"^[A-Za-z0-9][A-Za-z'0-9\-\x{00C0}-\x{017F} ]{0,80}$"#, options: .regularExpression) == nil {
hasError = true hasError = true
fullNameErrorLabel.text = "personal_details_name_characters_prompt".localizedString() fullNameErrorLabel.text = "personal_details_name_characters_prompt".localizedString()
} }
@ -303,7 +303,7 @@ class PersonalDetailsViewController: UIViewController, UITextFieldDelegate, UIPi
func updateContinueButton() { func updateContinueButton() {
firstnameTextField.text = firstnameTextField.text?.trimmingCharacters(in: .whitespacesAndNewlines) firstnameTextField.text = firstnameTextField.text?.trimmingCharacters(in: .whitespacesAndNewlines)
if (self.ageTextField.text != "" && self.postcodeTextField.text?.count == 4 && self.firstnameTextField.text != "") { if (self.ageTextField.text != "" && self.postcodeErrorLabel.isHidden && self.fullNameErrorLabel.isHidden) {
self.continueButton.isEnabled = true self.continueButton.isEnabled = true
self.continueButton.backgroundColor = UIColor.covidSafeButtonDarkerColor self.continueButton.backgroundColor = UIColor.covidSafeButtonDarkerColor
} else { } else {

View file

@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="16096" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="ndM-0H-HLb"> <document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="16097" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="ndM-0H-HLb">
<device id="retina4_7" orientation="portrait" appearance="light"/> <device id="retina4_7" orientation="portrait" appearance="light"/>
<dependencies> <dependencies>
<deployment identifier="iOS"/> <deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="16086"/> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="16087"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/> <capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies> </dependencies>
@ -26,16 +26,16 @@
<rect key="frame" x="0.0" y="155" width="375" height="512"/> <rect key="frame" x="0.0" y="155" width="375" height="512"/>
<subviews> <subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ffR-XF-3zY"> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ffR-XF-3zY">
<rect key="frame" x="67.5" y="95" width="240" height="322.5"/> <rect key="frame" x="67" y="94.5" width="241" height="323.5"/>
<subviews> <subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Splash_logo" translatesAutoresizingMaskIntoConstraints="NO" id="Lns-hM-mdb"> <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Splash_logo" translatesAutoresizingMaskIntoConstraints="NO" id="Lns-hM-mdb">
<rect key="frame" x="0.0" y="0.0" width="240" height="240"/> <rect key="frame" x="0.0" y="0.0" width="241" height="241"/>
<constraints> <constraints>
<constraint firstAttribute="width" secondItem="Lns-hM-mdb" secondAttribute="height" multiplier="1:1" id="v9k-g8-SR7"/> <constraint firstAttribute="width" secondItem="Lns-hM-mdb" secondAttribute="height" multiplier="1:1" id="v9k-g8-SR7"/>
</constraints> </constraints>
</imageView> </imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" verticalCompressionResistancePriority="751" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontForContentSizeCategory="YES" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="eZS-BI-D7Z"> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" verticalCompressionResistancePriority="751" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontForContentSizeCategory="YES" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="eZS-BI-D7Z">
<rect key="frame" x="43" y="280" width="154" height="42.5"/> <rect key="frame" x="0.0" y="281" width="241" height="42.5"/>
<string key="text">ساعد في وقف الانتشار <string key="text">ساعد في وقف الانتشار
وإنقاذ الأرواح.</string> وإنقاذ الأرواح.</string>
<fontDescription key="fontDescription" style="UICTFontTextStyleHeadline"/> <fontDescription key="fontDescription" style="UICTFontTextStyleHeadline"/>
@ -44,20 +44,24 @@
</label> </label>
</subviews> </subviews>
<constraints> <constraints>
<constraint firstAttribute="trailing" secondItem="eZS-BI-D7Z" secondAttribute="trailing" id="1Ih-ng-Fhy"/>
<constraint firstAttribute="trailing" secondItem="Lns-hM-mdb" secondAttribute="trailing" id="3O3-PD-3fy"/> <constraint firstAttribute="trailing" secondItem="Lns-hM-mdb" secondAttribute="trailing" id="3O3-PD-3fy"/>
<constraint firstItem="Lns-hM-mdb" firstAttribute="top" secondItem="ffR-XF-3zY" secondAttribute="top" id="9I9-JR-v99"/> <constraint firstItem="Lns-hM-mdb" firstAttribute="top" secondItem="ffR-XF-3zY" secondAttribute="top" id="9I9-JR-v99"/>
<constraint firstItem="Lns-hM-mdb" firstAttribute="leading" secondItem="ffR-XF-3zY" secondAttribute="leading" id="9lM-TA-Uhg"/> <constraint firstItem="Lns-hM-mdb" firstAttribute="leading" secondItem="ffR-XF-3zY" secondAttribute="leading" id="9lM-TA-Uhg"/>
<constraint firstAttribute="bottom" secondItem="eZS-BI-D7Z" secondAttribute="bottom" id="FaE-b8-5YY"/> <constraint firstAttribute="bottom" secondItem="eZS-BI-D7Z" secondAttribute="bottom" id="FaE-b8-5YY"/>
<constraint firstItem="eZS-BI-D7Z" firstAttribute="centerX" secondItem="ffR-XF-3zY" secondAttribute="centerX" id="nRo-Vh-rBQ"/> <constraint firstItem="eZS-BI-D7Z" firstAttribute="centerX" secondItem="ffR-XF-3zY" secondAttribute="centerX" id="nRo-Vh-rBQ"/>
<constraint firstItem="eZS-BI-D7Z" firstAttribute="top" secondItem="Lns-hM-mdb" secondAttribute="bottom" constant="40" id="oNj-AQ-Ies"/> <constraint firstItem="eZS-BI-D7Z" firstAttribute="top" secondItem="Lns-hM-mdb" secondAttribute="bottom" constant="40" id="oNj-AQ-Ies"/>
<constraint firstItem="eZS-BI-D7Z" firstAttribute="leading" secondItem="ffR-XF-3zY" secondAttribute="leading" id="pa3-Qd-1YM"/>
</constraints> </constraints>
</view> </view>
</subviews> </subviews>
<color key="backgroundColor" red="0.78431372549019607" green="1" blue="0.72549019607843135" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> <color key="backgroundColor" red="0.78431372549019607" green="1" blue="0.72549019607843135" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints> <constraints>
<constraint firstItem="ffR-XF-3zY" firstAttribute="top" relation="greaterThanOrEqual" secondItem="byk-eZ-Cpa" secondAttribute="top" constant="10" id="42X-bp-isz"/> <constraint firstItem="ffR-XF-3zY" firstAttribute="top" relation="greaterThanOrEqual" secondItem="byk-eZ-Cpa" secondAttribute="top" constant="10" id="42X-bp-isz"/>
<constraint firstItem="ffR-XF-3zY" firstAttribute="leading" secondItem="byk-eZ-Cpa" secondAttribute="leading" constant="67" id="ATj-zq-C51"/>
<constraint firstItem="ffR-XF-3zY" firstAttribute="centerX" secondItem="byk-eZ-Cpa" secondAttribute="centerX" id="Csu-ZS-HCo"/> <constraint firstItem="ffR-XF-3zY" firstAttribute="centerX" secondItem="byk-eZ-Cpa" secondAttribute="centerX" id="Csu-ZS-HCo"/>
<constraint firstAttribute="bottom" relation="greaterThanOrEqual" secondItem="ffR-XF-3zY" secondAttribute="bottom" constant="10" id="k6e-ma-vPy"/> <constraint firstAttribute="bottom" relation="greaterThanOrEqual" secondItem="ffR-XF-3zY" secondAttribute="bottom" constant="10" id="k6e-ma-vPy"/>
<constraint firstAttribute="trailing" secondItem="ffR-XF-3zY" secondAttribute="trailing" constant="67" id="qao-8J-ICb"/>
<constraint firstItem="ffR-XF-3zY" firstAttribute="centerY" secondItem="byk-eZ-Cpa" secondAttribute="centerY" id="zXR-uc-tzt"/> <constraint firstItem="ffR-XF-3zY" firstAttribute="centerY" secondItem="byk-eZ-Cpa" secondAttribute="centerY" id="zXR-uc-tzt"/>
</constraints> </constraints>
</view> </view>

View file

@ -0,0 +1,91 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="16097" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="ndM-0H-HLb">
<device id="retina5_5" orientation="portrait" appearance="light"/>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="16087"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<scenes>
<!--Initial Screen View Controller-->
<scene sceneID="3KM-vg-9Ea">
<objects>
<viewController id="ndM-0H-HLb" userLabel="Initial Screen View Controller" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="ccJ-n5-IxS">
<rect key="frame" x="0.0" y="0.0" width="414" height="736"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="govLogoWhite" translatesAutoresizingMaskIntoConstraints="NO" id="21S-jo-kCt">
<rect key="frame" x="133" y="32" width="148" height="77"/>
<constraints>
<constraint firstAttribute="width" secondItem="21S-jo-kCt" secondAttribute="height" multiplier="148:77" id="a08-bz-dFI"/>
</constraints>
</imageView>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="byk-eZ-Cpa" userLabel="GREEN background view">
<rect key="frame" x="0.0" y="155" width="414" height="581"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ffR-XF-3zY">
<rect key="frame" x="67" y="98.333333333333343" width="280" height="384.33333333333326"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Splash_logo" translatesAutoresizingMaskIntoConstraints="NO" id="Lns-hM-mdb">
<rect key="frame" x="0.0" y="0.0" width="280" height="280"/>
<constraints>
<constraint firstAttribute="width" secondItem="Lns-hM-mdb" secondAttribute="height" multiplier="1:1" id="v9k-g8-SR7"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" verticalCompressionResistancePriority="751" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontForContentSizeCategory="YES" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="eZS-BI-D7Z">
<rect key="frame" x="0.0" y="320" width="280" height="64.333333333333314"/>
<string key="text">Βοηθήστε να σταματήσουμε την εξάπλωση
και σώστε ζωές.</string>
<fontDescription key="fontDescription" style="UICTFontTextStyleHeadline"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<constraints>
<constraint firstAttribute="trailing" secondItem="Lns-hM-mdb" secondAttribute="trailing" id="3O3-PD-3fy"/>
<constraint firstItem="Lns-hM-mdb" firstAttribute="top" secondItem="ffR-XF-3zY" secondAttribute="top" id="9I9-JR-v99"/>
<constraint firstItem="Lns-hM-mdb" firstAttribute="leading" secondItem="ffR-XF-3zY" secondAttribute="leading" id="9lM-TA-Uhg"/>
<constraint firstAttribute="bottom" secondItem="eZS-BI-D7Z" secondAttribute="bottom" id="FaE-b8-5YY"/>
<constraint firstAttribute="trailing" secondItem="eZS-BI-D7Z" secondAttribute="trailing" id="ZeH-mN-NMD"/>
<constraint firstItem="eZS-BI-D7Z" firstAttribute="leading" secondItem="ffR-XF-3zY" secondAttribute="leading" id="g4k-9R-LIx"/>
<constraint firstItem="eZS-BI-D7Z" firstAttribute="centerX" secondItem="ffR-XF-3zY" secondAttribute="centerX" id="nRo-Vh-rBQ"/>
<constraint firstItem="eZS-BI-D7Z" firstAttribute="top" secondItem="Lns-hM-mdb" secondAttribute="bottom" constant="40" id="oNj-AQ-Ies"/>
</constraints>
</view>
</subviews>
<color key="backgroundColor" red="0.78431372549019607" green="1" blue="0.72549019607843135" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstItem="ffR-XF-3zY" firstAttribute="top" relation="greaterThanOrEqual" secondItem="byk-eZ-Cpa" secondAttribute="top" constant="10" id="42X-bp-isz"/>
<constraint firstItem="ffR-XF-3zY" firstAttribute="centerX" secondItem="byk-eZ-Cpa" secondAttribute="centerX" id="Csu-ZS-HCo"/>
<constraint firstAttribute="bottom" relation="greaterThanOrEqual" secondItem="ffR-XF-3zY" secondAttribute="bottom" constant="10" id="k6e-ma-vPy"/>
<constraint firstAttribute="trailing" secondItem="ffR-XF-3zY" secondAttribute="trailing" constant="67" id="q1o-6R-0vG"/>
<constraint firstItem="ffR-XF-3zY" firstAttribute="leading" secondItem="byk-eZ-Cpa" secondAttribute="leading" constant="67" id="qvW-nR-Vxf"/>
<constraint firstItem="ffR-XF-3zY" firstAttribute="centerY" secondItem="byk-eZ-Cpa" secondAttribute="centerY" id="zXR-uc-tzt"/>
</constraints>
</view>
</subviews>
<color key="backgroundColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstItem="byk-eZ-Cpa" firstAttribute="top" secondItem="21S-jo-kCt" secondAttribute="bottom" constant="46" id="QDG-ti-md6"/>
<constraint firstItem="21S-jo-kCt" firstAttribute="top" secondItem="dqz-nd-ma4" secondAttribute="top" constant="32" id="dkQ-8V-GvR"/>
<constraint firstItem="21S-jo-kCt" firstAttribute="centerX" secondItem="ccJ-n5-IxS" secondAttribute="centerX" id="hyp-Iu-rfr"/>
<constraint firstItem="byk-eZ-Cpa" firstAttribute="bottom" secondItem="dqz-nd-ma4" secondAttribute="bottom" id="j5B-ny-qsO"/>
<constraint firstItem="21S-jo-kCt" firstAttribute="centerX" secondItem="byk-eZ-Cpa" secondAttribute="centerX" id="oOH-3M-97h"/>
<constraint firstItem="byk-eZ-Cpa" firstAttribute="leading" secondItem="dqz-nd-ma4" secondAttribute="leading" id="sAQ-Vm-eEu"/>
</constraints>
<viewLayoutGuide key="safeArea" id="dqz-nd-ma4"/>
</view>
<navigationItem key="navigationItem" id="1sA-Bl-Xp3"/>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="Pkq-4F-YCB" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="-1267.5" y="335.91549295774649"/>
</scene>
</scenes>
<resources>
<image name="Splash_logo" width="240" height="240"/>
<image name="govLogoWhite" width="148" height="77"/>
</resources>
</document>

View file

@ -0,0 +1,91 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="16097" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="ndM-0H-HLb">
<device id="retina4_7" orientation="portrait" appearance="light"/>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="16087"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<scenes>
<!--Initial Screen View Controller-->
<scene sceneID="3KM-vg-9Ea">
<objects>
<viewController id="ndM-0H-HLb" userLabel="Initial Screen View Controller" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="ccJ-n5-IxS">
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="govLogoWhite" translatesAutoresizingMaskIntoConstraints="NO" id="21S-jo-kCt">
<rect key="frame" x="113.5" y="32" width="148" height="77"/>
<constraints>
<constraint firstAttribute="width" secondItem="21S-jo-kCt" secondAttribute="height" multiplier="148:77" id="a08-bz-dFI"/>
</constraints>
</imageView>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="byk-eZ-Cpa" userLabel="GREEN background view">
<rect key="frame" x="0.0" y="155" width="375" height="512"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ffR-XF-3zY">
<rect key="frame" x="67" y="94.5" width="241" height="323.5"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Splash_logo" translatesAutoresizingMaskIntoConstraints="NO" id="Lns-hM-mdb">
<rect key="frame" x="0.0" y="0.0" width="241" height="241"/>
<constraints>
<constraint firstAttribute="width" secondItem="Lns-hM-mdb" secondAttribute="height" multiplier="1:1" id="v9k-g8-SR7"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" verticalCompressionResistancePriority="751" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontForContentSizeCategory="YES" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="eZS-BI-D7Z">
<rect key="frame" x="0.0" y="281" width="241" height="42.5"/>
<string key="text">Aiuta a fermare la diffusione
e salvare vite umane.</string>
<fontDescription key="fontDescription" style="UICTFontTextStyleHeadline"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<constraints>
<constraint firstAttribute="trailing" secondItem="Lns-hM-mdb" secondAttribute="trailing" id="3O3-PD-3fy"/>
<constraint firstItem="Lns-hM-mdb" firstAttribute="top" secondItem="ffR-XF-3zY" secondAttribute="top" id="9I9-JR-v99"/>
<constraint firstItem="Lns-hM-mdb" firstAttribute="leading" secondItem="ffR-XF-3zY" secondAttribute="leading" id="9lM-TA-Uhg"/>
<constraint firstAttribute="trailing" secondItem="eZS-BI-D7Z" secondAttribute="trailing" id="DVM-3Z-QPr"/>
<constraint firstAttribute="bottom" secondItem="eZS-BI-D7Z" secondAttribute="bottom" id="FaE-b8-5YY"/>
<constraint firstItem="eZS-BI-D7Z" firstAttribute="leading" secondItem="ffR-XF-3zY" secondAttribute="leading" id="Qt3-ED-c3v"/>
<constraint firstItem="eZS-BI-D7Z" firstAttribute="centerX" secondItem="ffR-XF-3zY" secondAttribute="centerX" id="nRo-Vh-rBQ"/>
<constraint firstItem="eZS-BI-D7Z" firstAttribute="top" secondItem="Lns-hM-mdb" secondAttribute="bottom" constant="40" id="oNj-AQ-Ies"/>
</constraints>
</view>
</subviews>
<color key="backgroundColor" red="0.78431372549019607" green="1" blue="0.72549019607843135" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstItem="ffR-XF-3zY" firstAttribute="top" relation="greaterThanOrEqual" secondItem="byk-eZ-Cpa" secondAttribute="top" constant="10" id="42X-bp-isz"/>
<constraint firstAttribute="trailing" secondItem="ffR-XF-3zY" secondAttribute="trailing" constant="67" id="9Kd-Lg-8xZ"/>
<constraint firstItem="ffR-XF-3zY" firstAttribute="centerX" secondItem="byk-eZ-Cpa" secondAttribute="centerX" id="Csu-ZS-HCo"/>
<constraint firstAttribute="bottom" relation="greaterThanOrEqual" secondItem="ffR-XF-3zY" secondAttribute="bottom" constant="10" id="k6e-ma-vPy"/>
<constraint firstItem="ffR-XF-3zY" firstAttribute="leading" secondItem="byk-eZ-Cpa" secondAttribute="leading" constant="67" id="tL3-vJ-yfs"/>
<constraint firstItem="ffR-XF-3zY" firstAttribute="centerY" secondItem="byk-eZ-Cpa" secondAttribute="centerY" id="zXR-uc-tzt"/>
</constraints>
</view>
</subviews>
<color key="backgroundColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstItem="byk-eZ-Cpa" firstAttribute="top" secondItem="21S-jo-kCt" secondAttribute="bottom" constant="46" id="QDG-ti-md6"/>
<constraint firstItem="21S-jo-kCt" firstAttribute="top" secondItem="dqz-nd-ma4" secondAttribute="top" constant="32" id="dkQ-8V-GvR"/>
<constraint firstItem="21S-jo-kCt" firstAttribute="centerX" secondItem="ccJ-n5-IxS" secondAttribute="centerX" id="hyp-Iu-rfr"/>
<constraint firstItem="byk-eZ-Cpa" firstAttribute="bottom" secondItem="dqz-nd-ma4" secondAttribute="bottom" id="j5B-ny-qsO"/>
<constraint firstItem="21S-jo-kCt" firstAttribute="centerX" secondItem="byk-eZ-Cpa" secondAttribute="centerX" id="oOH-3M-97h"/>
<constraint firstItem="byk-eZ-Cpa" firstAttribute="leading" secondItem="dqz-nd-ma4" secondAttribute="leading" id="sAQ-Vm-eEu"/>
</constraints>
<viewLayoutGuide key="safeArea" id="dqz-nd-ma4"/>
</view>
<navigationItem key="navigationItem" id="1sA-Bl-Xp3"/>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="Pkq-4F-YCB" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="-1267.5" y="335.91549295774649"/>
</scene>
</scenes>
<resources>
<image name="Splash_logo" width="240" height="240"/>
<image name="govLogoWhite" width="148" height="77"/>
</resources>
</document>

View file

@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="16096" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="ndM-0H-HLb"> <document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="16097" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="ndM-0H-HLb">
<device id="retina4_7" orientation="portrait" appearance="light"/> <device id="retina4_7" orientation="portrait" appearance="light"/>
<dependencies> <dependencies>
<deployment identifier="iOS"/> <deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="16086"/> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="16087"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/> <capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies> </dependencies>
@ -26,16 +26,16 @@
<rect key="frame" x="0.0" y="155" width="375" height="512"/> <rect key="frame" x="0.0" y="155" width="375" height="512"/>
<subviews> <subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ffR-XF-3zY"> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ffR-XF-3zY">
<rect key="frame" x="67.5" y="95" width="240" height="322.5"/> <rect key="frame" x="67" y="94.5" width="241" height="323.5"/>
<subviews> <subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Splash_logo" translatesAutoresizingMaskIntoConstraints="NO" id="Lns-hM-mdb"> <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Splash_logo" translatesAutoresizingMaskIntoConstraints="NO" id="Lns-hM-mdb">
<rect key="frame" x="0.0" y="0.0" width="240" height="240"/> <rect key="frame" x="0.0" y="0.0" width="241" height="241"/>
<constraints> <constraints>
<constraint firstAttribute="width" secondItem="Lns-hM-mdb" secondAttribute="height" multiplier="1:1" id="v9k-g8-SR7"/> <constraint firstAttribute="width" secondItem="Lns-hM-mdb" secondAttribute="height" multiplier="1:1" id="v9k-g8-SR7"/>
</constraints> </constraints>
</imageView> </imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" verticalCompressionResistancePriority="751" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontForContentSizeCategory="YES" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="eZS-BI-D7Z"> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" verticalCompressionResistancePriority="751" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontForContentSizeCategory="YES" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="eZS-BI-D7Z">
<rect key="frame" x="33" y="280" width="174.5" height="42.5"/> <rect key="frame" x="0.0" y="281" width="241" height="42.5"/>
<string key="text">바이러스 확산을 방지해서 <string key="text">바이러스 확산을 방지해서
생명을 구합시다.</string> 생명을 구합시다.</string>
<fontDescription key="fontDescription" style="UICTFontTextStyleHeadline"/> <fontDescription key="fontDescription" style="UICTFontTextStyleHeadline"/>
@ -48,6 +48,8 @@
<constraint firstItem="Lns-hM-mdb" firstAttribute="top" secondItem="ffR-XF-3zY" secondAttribute="top" id="9I9-JR-v99"/> <constraint firstItem="Lns-hM-mdb" firstAttribute="top" secondItem="ffR-XF-3zY" secondAttribute="top" id="9I9-JR-v99"/>
<constraint firstItem="Lns-hM-mdb" firstAttribute="leading" secondItem="ffR-XF-3zY" secondAttribute="leading" id="9lM-TA-Uhg"/> <constraint firstItem="Lns-hM-mdb" firstAttribute="leading" secondItem="ffR-XF-3zY" secondAttribute="leading" id="9lM-TA-Uhg"/>
<constraint firstAttribute="bottom" secondItem="eZS-BI-D7Z" secondAttribute="bottom" id="FaE-b8-5YY"/> <constraint firstAttribute="bottom" secondItem="eZS-BI-D7Z" secondAttribute="bottom" id="FaE-b8-5YY"/>
<constraint firstItem="eZS-BI-D7Z" firstAttribute="leading" secondItem="ffR-XF-3zY" secondAttribute="leading" id="dhm-94-Zxk"/>
<constraint firstAttribute="trailing" secondItem="eZS-BI-D7Z" secondAttribute="trailing" id="fyJ-zM-t9c"/>
<constraint firstItem="eZS-BI-D7Z" firstAttribute="centerX" secondItem="ffR-XF-3zY" secondAttribute="centerX" id="nRo-Vh-rBQ"/> <constraint firstItem="eZS-BI-D7Z" firstAttribute="centerX" secondItem="ffR-XF-3zY" secondAttribute="centerX" id="nRo-Vh-rBQ"/>
<constraint firstItem="eZS-BI-D7Z" firstAttribute="top" secondItem="Lns-hM-mdb" secondAttribute="bottom" constant="40" id="oNj-AQ-Ies"/> <constraint firstItem="eZS-BI-D7Z" firstAttribute="top" secondItem="Lns-hM-mdb" secondAttribute="bottom" constant="40" id="oNj-AQ-Ies"/>
</constraints> </constraints>
@ -56,6 +58,8 @@
<color key="backgroundColor" red="0.78431372549019607" green="1" blue="0.72549019607843135" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> <color key="backgroundColor" red="0.78431372549019607" green="1" blue="0.72549019607843135" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints> <constraints>
<constraint firstItem="ffR-XF-3zY" firstAttribute="top" relation="greaterThanOrEqual" secondItem="byk-eZ-Cpa" secondAttribute="top" constant="10" id="42X-bp-isz"/> <constraint firstItem="ffR-XF-3zY" firstAttribute="top" relation="greaterThanOrEqual" secondItem="byk-eZ-Cpa" secondAttribute="top" constant="10" id="42X-bp-isz"/>
<constraint firstAttribute="trailing" secondItem="ffR-XF-3zY" secondAttribute="trailing" constant="67" id="4CV-i0-2ce"/>
<constraint firstItem="ffR-XF-3zY" firstAttribute="leading" secondItem="byk-eZ-Cpa" secondAttribute="leading" constant="67" id="Bw9-Tp-sPt"/>
<constraint firstItem="ffR-XF-3zY" firstAttribute="centerX" secondItem="byk-eZ-Cpa" secondAttribute="centerX" id="Csu-ZS-HCo"/> <constraint firstItem="ffR-XF-3zY" firstAttribute="centerX" secondItem="byk-eZ-Cpa" secondAttribute="centerX" id="Csu-ZS-HCo"/>
<constraint firstAttribute="bottom" relation="greaterThanOrEqual" secondItem="ffR-XF-3zY" secondAttribute="bottom" constant="10" id="k6e-ma-vPy"/> <constraint firstAttribute="bottom" relation="greaterThanOrEqual" secondItem="ffR-XF-3zY" secondAttribute="bottom" constant="10" id="k6e-ma-vPy"/>
<constraint firstItem="ffR-XF-3zY" firstAttribute="centerY" secondItem="byk-eZ-Cpa" secondAttribute="centerY" id="zXR-uc-tzt"/> <constraint firstItem="ffR-XF-3zY" firstAttribute="centerY" secondItem="byk-eZ-Cpa" secondAttribute="centerY" id="zXR-uc-tzt"/>

View file

@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="16096" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="ndM-0H-HLb"> <document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="16097" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="ndM-0H-HLb">
<device id="retina4_7" orientation="portrait" appearance="light"/> <device id="retina4_7" orientation="portrait" appearance="light"/>
<dependencies> <dependencies>
<deployment identifier="iOS"/> <deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="16086"/> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="16087"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/> <capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies> </dependencies>
@ -26,16 +26,16 @@
<rect key="frame" x="0.0" y="155" width="375" height="512"/> <rect key="frame" x="0.0" y="155" width="375" height="512"/>
<subviews> <subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ffR-XF-3zY"> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ffR-XF-3zY">
<rect key="frame" x="67.5" y="95" width="240" height="322.5"/> <rect key="frame" x="67" y="94.5" width="241" height="323.5"/>
<subviews> <subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Splash_logo" translatesAutoresizingMaskIntoConstraints="NO" id="Lns-hM-mdb"> <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Splash_logo" translatesAutoresizingMaskIntoConstraints="NO" id="Lns-hM-mdb">
<rect key="frame" x="0.0" y="0.0" width="240" height="240"/> <rect key="frame" x="0.0" y="0.0" width="241" height="241"/>
<constraints> <constraints>
<constraint firstAttribute="width" secondItem="Lns-hM-mdb" secondAttribute="height" multiplier="1:1" id="v9k-g8-SR7"/> <constraint firstAttribute="width" secondItem="Lns-hM-mdb" secondAttribute="height" multiplier="1:1" id="v9k-g8-SR7"/>
</constraints> </constraints>
</imageView> </imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" verticalCompressionResistancePriority="751" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontForContentSizeCategory="YES" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="eZS-BI-D7Z"> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" verticalCompressionResistancePriority="751" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontForContentSizeCategory="YES" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="eZS-BI-D7Z">
<rect key="frame" x="18" y="280" width="204" height="42.5"/> <rect key="frame" x="0.0" y="281" width="241" height="42.5"/>
<string key="text">Giúp ngăn chặn sự lây lan <string key="text">Giúp ngăn chặn sự lây lan
và cứu mạng sống.</string> và cứu mạng sống.</string>
<fontDescription key="fontDescription" style="UICTFontTextStyleHeadline"/> <fontDescription key="fontDescription" style="UICTFontTextStyleHeadline"/>
@ -45,9 +45,11 @@ và cứu mạng sống.</string>
</subviews> </subviews>
<constraints> <constraints>
<constraint firstAttribute="trailing" secondItem="Lns-hM-mdb" secondAttribute="trailing" id="3O3-PD-3fy"/> <constraint firstAttribute="trailing" secondItem="Lns-hM-mdb" secondAttribute="trailing" id="3O3-PD-3fy"/>
<constraint firstItem="eZS-BI-D7Z" firstAttribute="leading" secondItem="ffR-XF-3zY" secondAttribute="leading" id="8Zb-Dm-pWz"/>
<constraint firstItem="Lns-hM-mdb" firstAttribute="top" secondItem="ffR-XF-3zY" secondAttribute="top" id="9I9-JR-v99"/> <constraint firstItem="Lns-hM-mdb" firstAttribute="top" secondItem="ffR-XF-3zY" secondAttribute="top" id="9I9-JR-v99"/>
<constraint firstItem="Lns-hM-mdb" firstAttribute="leading" secondItem="ffR-XF-3zY" secondAttribute="leading" id="9lM-TA-Uhg"/> <constraint firstItem="Lns-hM-mdb" firstAttribute="leading" secondItem="ffR-XF-3zY" secondAttribute="leading" id="9lM-TA-Uhg"/>
<constraint firstAttribute="bottom" secondItem="eZS-BI-D7Z" secondAttribute="bottom" id="FaE-b8-5YY"/> <constraint firstAttribute="bottom" secondItem="eZS-BI-D7Z" secondAttribute="bottom" id="FaE-b8-5YY"/>
<constraint firstAttribute="trailing" secondItem="eZS-BI-D7Z" secondAttribute="trailing" id="bAb-XU-xxr"/>
<constraint firstItem="eZS-BI-D7Z" firstAttribute="centerX" secondItem="ffR-XF-3zY" secondAttribute="centerX" id="nRo-Vh-rBQ"/> <constraint firstItem="eZS-BI-D7Z" firstAttribute="centerX" secondItem="ffR-XF-3zY" secondAttribute="centerX" id="nRo-Vh-rBQ"/>
<constraint firstItem="eZS-BI-D7Z" firstAttribute="top" secondItem="Lns-hM-mdb" secondAttribute="bottom" constant="40" id="oNj-AQ-Ies"/> <constraint firstItem="eZS-BI-D7Z" firstAttribute="top" secondItem="Lns-hM-mdb" secondAttribute="bottom" constant="40" id="oNj-AQ-Ies"/>
</constraints> </constraints>
@ -56,8 +58,10 @@ và cứu mạng sống.</string>
<color key="backgroundColor" red="0.78431372549019607" green="1" blue="0.72549019607843135" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> <color key="backgroundColor" red="0.78431372549019607" green="1" blue="0.72549019607843135" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints> <constraints>
<constraint firstItem="ffR-XF-3zY" firstAttribute="top" relation="greaterThanOrEqual" secondItem="byk-eZ-Cpa" secondAttribute="top" constant="10" id="42X-bp-isz"/> <constraint firstItem="ffR-XF-3zY" firstAttribute="top" relation="greaterThanOrEqual" secondItem="byk-eZ-Cpa" secondAttribute="top" constant="10" id="42X-bp-isz"/>
<constraint firstAttribute="trailing" secondItem="ffR-XF-3zY" secondAttribute="trailing" constant="67" id="BV9-qP-1tC"/>
<constraint firstItem="ffR-XF-3zY" firstAttribute="centerX" secondItem="byk-eZ-Cpa" secondAttribute="centerX" id="Csu-ZS-HCo"/> <constraint firstItem="ffR-XF-3zY" firstAttribute="centerX" secondItem="byk-eZ-Cpa" secondAttribute="centerX" id="Csu-ZS-HCo"/>
<constraint firstAttribute="bottom" relation="greaterThanOrEqual" secondItem="ffR-XF-3zY" secondAttribute="bottom" constant="10" id="k6e-ma-vPy"/> <constraint firstAttribute="bottom" relation="greaterThanOrEqual" secondItem="ffR-XF-3zY" secondAttribute="bottom" constant="10" id="k6e-ma-vPy"/>
<constraint firstItem="ffR-XF-3zY" firstAttribute="leading" secondItem="byk-eZ-Cpa" secondAttribute="leading" constant="67" id="mjt-h7-Hj9"/>
<constraint firstItem="ffR-XF-3zY" firstAttribute="centerY" secondItem="byk-eZ-Cpa" secondAttribute="centerY" id="zXR-uc-tzt"/> <constraint firstItem="ffR-XF-3zY" firstAttribute="centerY" secondItem="byk-eZ-Cpa" secondAttribute="centerY" id="zXR-uc-tzt"/>
</constraints> </constraints>
</view> </view>

View file

@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="16096" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="ndM-0H-HLb"> <document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="16097" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="ndM-0H-HLb">
<device id="retina4_7" orientation="portrait" appearance="light"/> <device id="retina4_7" orientation="portrait" appearance="light"/>
<dependencies> <dependencies>
<deployment identifier="iOS"/> <deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="16086"/> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="16087"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/> <capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies> </dependencies>
@ -26,16 +26,16 @@
<rect key="frame" x="0.0" y="155" width="375" height="512"/> <rect key="frame" x="0.0" y="155" width="375" height="512"/>
<subviews> <subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ffR-XF-3zY"> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ffR-XF-3zY">
<rect key="frame" x="67.5" y="95" width="240" height="322.5"/> <rect key="frame" x="67" y="94.5" width="241" height="323.5"/>
<subviews> <subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Splash_logo" translatesAutoresizingMaskIntoConstraints="NO" id="Lns-hM-mdb"> <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Splash_logo" translatesAutoresizingMaskIntoConstraints="NO" id="Lns-hM-mdb">
<rect key="frame" x="0.0" y="0.0" width="240" height="240"/> <rect key="frame" x="0.0" y="0.0" width="241" height="241"/>
<constraints> <constraints>
<constraint firstAttribute="width" secondItem="Lns-hM-mdb" secondAttribute="height" multiplier="1:1" id="v9k-g8-SR7"/> <constraint firstAttribute="width" secondItem="Lns-hM-mdb" secondAttribute="height" multiplier="1:1" id="v9k-g8-SR7"/>
</constraints> </constraints>
</imageView> </imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" verticalCompressionResistancePriority="751" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontForContentSizeCategory="YES" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="eZS-BI-D7Z"> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" verticalCompressionResistancePriority="751" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontForContentSizeCategory="YES" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="eZS-BI-D7Z">
<rect key="frame" x="85.5" y="280" width="69.5" height="42.5"/> <rect key="frame" x="0.0" y="281" width="241" height="42.5"/>
<string key="text">阻止传播 <string key="text">阻止传播
拯救生命</string> 拯救生命</string>
<fontDescription key="fontDescription" style="UICTFontTextStyleHeadline"/> <fontDescription key="fontDescription" style="UICTFontTextStyleHeadline"/>
@ -47,7 +47,9 @@
<constraint firstAttribute="trailing" secondItem="Lns-hM-mdb" secondAttribute="trailing" id="3O3-PD-3fy"/> <constraint firstAttribute="trailing" secondItem="Lns-hM-mdb" secondAttribute="trailing" id="3O3-PD-3fy"/>
<constraint firstItem="Lns-hM-mdb" firstAttribute="top" secondItem="ffR-XF-3zY" secondAttribute="top" id="9I9-JR-v99"/> <constraint firstItem="Lns-hM-mdb" firstAttribute="top" secondItem="ffR-XF-3zY" secondAttribute="top" id="9I9-JR-v99"/>
<constraint firstItem="Lns-hM-mdb" firstAttribute="leading" secondItem="ffR-XF-3zY" secondAttribute="leading" id="9lM-TA-Uhg"/> <constraint firstItem="Lns-hM-mdb" firstAttribute="leading" secondItem="ffR-XF-3zY" secondAttribute="leading" id="9lM-TA-Uhg"/>
<constraint firstItem="eZS-BI-D7Z" firstAttribute="leading" secondItem="ffR-XF-3zY" secondAttribute="leading" id="Bqu-kE-yny"/>
<constraint firstAttribute="bottom" secondItem="eZS-BI-D7Z" secondAttribute="bottom" id="FaE-b8-5YY"/> <constraint firstAttribute="bottom" secondItem="eZS-BI-D7Z" secondAttribute="bottom" id="FaE-b8-5YY"/>
<constraint firstAttribute="trailing" secondItem="eZS-BI-D7Z" secondAttribute="trailing" id="ibl-kK-KRP"/>
<constraint firstItem="eZS-BI-D7Z" firstAttribute="centerX" secondItem="ffR-XF-3zY" secondAttribute="centerX" id="nRo-Vh-rBQ"/> <constraint firstItem="eZS-BI-D7Z" firstAttribute="centerX" secondItem="ffR-XF-3zY" secondAttribute="centerX" id="nRo-Vh-rBQ"/>
<constraint firstItem="eZS-BI-D7Z" firstAttribute="top" secondItem="Lns-hM-mdb" secondAttribute="bottom" constant="40" id="oNj-AQ-Ies"/> <constraint firstItem="eZS-BI-D7Z" firstAttribute="top" secondItem="Lns-hM-mdb" secondAttribute="bottom" constant="40" id="oNj-AQ-Ies"/>
</constraints> </constraints>
@ -57,7 +59,9 @@
<constraints> <constraints>
<constraint firstItem="ffR-XF-3zY" firstAttribute="top" relation="greaterThanOrEqual" secondItem="byk-eZ-Cpa" secondAttribute="top" constant="10" id="42X-bp-isz"/> <constraint firstItem="ffR-XF-3zY" firstAttribute="top" relation="greaterThanOrEqual" secondItem="byk-eZ-Cpa" secondAttribute="top" constant="10" id="42X-bp-isz"/>
<constraint firstItem="ffR-XF-3zY" firstAttribute="centerX" secondItem="byk-eZ-Cpa" secondAttribute="centerX" id="Csu-ZS-HCo"/> <constraint firstItem="ffR-XF-3zY" firstAttribute="centerX" secondItem="byk-eZ-Cpa" secondAttribute="centerX" id="Csu-ZS-HCo"/>
<constraint firstAttribute="trailing" secondItem="ffR-XF-3zY" secondAttribute="trailing" constant="67" id="KZW-CG-Osh"/>
<constraint firstAttribute="bottom" relation="greaterThanOrEqual" secondItem="ffR-XF-3zY" secondAttribute="bottom" constant="10" id="k6e-ma-vPy"/> <constraint firstAttribute="bottom" relation="greaterThanOrEqual" secondItem="ffR-XF-3zY" secondAttribute="bottom" constant="10" id="k6e-ma-vPy"/>
<constraint firstItem="ffR-XF-3zY" firstAttribute="leading" secondItem="byk-eZ-Cpa" secondAttribute="leading" constant="67" id="tEh-FI-f1M"/>
<constraint firstItem="ffR-XF-3zY" firstAttribute="centerY" secondItem="byk-eZ-Cpa" secondAttribute="centerY" id="zXR-uc-tzt"/> <constraint firstItem="ffR-XF-3zY" firstAttribute="centerY" secondItem="byk-eZ-Cpa" secondAttribute="centerY" id="zXR-uc-tzt"/>
</constraints> </constraints>
</view> </view>

View file

@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="16096" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="ndM-0H-HLb"> <document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="16097" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="ndM-0H-HLb">
<device id="retina4_7" orientation="portrait" appearance="light"/> <device id="retina4_7" orientation="portrait" appearance="light"/>
<dependencies> <dependencies>
<deployment identifier="iOS"/> <deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="16086"/> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="16087"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/> <capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies> </dependencies>
@ -26,16 +26,16 @@
<rect key="frame" x="0.0" y="155" width="375" height="512"/> <rect key="frame" x="0.0" y="155" width="375" height="512"/>
<subviews> <subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ffR-XF-3zY"> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ffR-XF-3zY">
<rect key="frame" x="67.5" y="95" width="240" height="322.5"/> <rect key="frame" x="67" y="94.5" width="241" height="323.5"/>
<subviews> <subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Splash_logo" translatesAutoresizingMaskIntoConstraints="NO" id="Lns-hM-mdb"> <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Splash_logo" translatesAutoresizingMaskIntoConstraints="NO" id="Lns-hM-mdb">
<rect key="frame" x="0.0" y="0.0" width="240" height="240"/> <rect key="frame" x="0.0" y="0.0" width="241" height="241"/>
<constraints> <constraints>
<constraint firstAttribute="width" secondItem="Lns-hM-mdb" secondAttribute="height" multiplier="1:1" id="v9k-g8-SR7"/> <constraint firstAttribute="width" secondItem="Lns-hM-mdb" secondAttribute="height" multiplier="1:1" id="v9k-g8-SR7"/>
</constraints> </constraints>
</imageView> </imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" verticalCompressionResistancePriority="751" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontForContentSizeCategory="YES" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="eZS-BI-D7Z"> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" verticalCompressionResistancePriority="751" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontForContentSizeCategory="YES" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="eZS-BI-D7Z">
<rect key="frame" x="42" y="280" width="156" height="42.5"/> <rect key="frame" x="0.0" y="281" width="241" height="42.5"/>
<string key="text">請協助阻止病毒傳播 <string key="text">請協助阻止病毒傳播
拯救生命</string> 拯救生命</string>
<fontDescription key="fontDescription" style="UICTFontTextStyleHeadline"/> <fontDescription key="fontDescription" style="UICTFontTextStyleHeadline"/>
@ -50,13 +50,17 @@
<constraint firstAttribute="bottom" secondItem="eZS-BI-D7Z" secondAttribute="bottom" id="FaE-b8-5YY"/> <constraint firstAttribute="bottom" secondItem="eZS-BI-D7Z" secondAttribute="bottom" id="FaE-b8-5YY"/>
<constraint firstItem="eZS-BI-D7Z" firstAttribute="centerX" secondItem="ffR-XF-3zY" secondAttribute="centerX" id="nRo-Vh-rBQ"/> <constraint firstItem="eZS-BI-D7Z" firstAttribute="centerX" secondItem="ffR-XF-3zY" secondAttribute="centerX" id="nRo-Vh-rBQ"/>
<constraint firstItem="eZS-BI-D7Z" firstAttribute="top" secondItem="Lns-hM-mdb" secondAttribute="bottom" constant="40" id="oNj-AQ-Ies"/> <constraint firstItem="eZS-BI-D7Z" firstAttribute="top" secondItem="Lns-hM-mdb" secondAttribute="bottom" constant="40" id="oNj-AQ-Ies"/>
<constraint firstItem="eZS-BI-D7Z" firstAttribute="leading" secondItem="ffR-XF-3zY" secondAttribute="leading" id="qEJ-Wb-MIE"/>
<constraint firstAttribute="trailing" secondItem="eZS-BI-D7Z" secondAttribute="trailing" id="x1X-EU-oex"/>
</constraints> </constraints>
</view> </view>
</subviews> </subviews>
<color key="backgroundColor" red="0.78431372549019607" green="1" blue="0.72549019607843135" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> <color key="backgroundColor" red="0.78431372549019607" green="1" blue="0.72549019607843135" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints> <constraints>
<constraint firstItem="ffR-XF-3zY" firstAttribute="top" relation="greaterThanOrEqual" secondItem="byk-eZ-Cpa" secondAttribute="top" constant="10" id="42X-bp-isz"/> <constraint firstItem="ffR-XF-3zY" firstAttribute="top" relation="greaterThanOrEqual" secondItem="byk-eZ-Cpa" secondAttribute="top" constant="10" id="42X-bp-isz"/>
<constraint firstItem="ffR-XF-3zY" firstAttribute="leading" secondItem="byk-eZ-Cpa" secondAttribute="leading" constant="67" id="6Y6-dO-J6i"/>
<constraint firstItem="ffR-XF-3zY" firstAttribute="centerX" secondItem="byk-eZ-Cpa" secondAttribute="centerX" id="Csu-ZS-HCo"/> <constraint firstItem="ffR-XF-3zY" firstAttribute="centerX" secondItem="byk-eZ-Cpa" secondAttribute="centerX" id="Csu-ZS-HCo"/>
<constraint firstAttribute="trailing" secondItem="ffR-XF-3zY" secondAttribute="trailing" constant="67" id="Jqu-Uw-oxU"/>
<constraint firstAttribute="bottom" relation="greaterThanOrEqual" secondItem="ffR-XF-3zY" secondAttribute="bottom" constant="10" id="k6e-ma-vPy"/> <constraint firstAttribute="bottom" relation="greaterThanOrEqual" secondItem="ffR-XF-3zY" secondAttribute="bottom" constant="10" id="k6e-ma-vPy"/>
<constraint firstItem="ffR-XF-3zY" firstAttribute="centerY" secondItem="byk-eZ-Cpa" secondAttribute="centerY" id="zXR-uc-tzt"/> <constraint firstItem="ffR-XF-3zY" firstAttribute="centerY" secondItem="byk-eZ-Cpa" secondAttribute="centerY" id="zXR-uc-tzt"/>
</constraints> </constraints>

View file

@ -12,6 +12,23 @@ extension String {
if self == "" { if self == "" {
return "" return ""
} }
return NSLocalizedString(self, comment: comment)
var localizedString = NSLocalizedString(self, comment: comment)
if localizedString == self {
// No localized string exists. Retrieve the display string
// from the base strings file.
var bundleForString: Bundle
if let path = Bundle.main.path(forResource: "en", ofType: "lproj"),
let bundle = Bundle(path: path) {
bundleForString = bundle
} else {
bundleForString = Bundle.main
}
localizedString = bundleForString.localizedString(forKey: self, value: self, table: nil)
}
return localizedString
} }
} }

View file

@ -0,0 +1,23 @@
//
// UIFont + Traits.swift
// CovidSafe
//
// Copyright © 2020 Australian Government. All rights reserved.
//
import UIKit
extension UIFont {
func withTraits(traits:UIFontDescriptor.SymbolicTraits) -> UIFont {
let descriptor = fontDescriptor.withSymbolicTraits(traits)
return UIFont(descriptor: descriptor!, size: 0) //size 0 means keep the size as it is
}
func bold() -> UIFont {
return withTraits(traits: .traitBold)
}
func italic() -> UIFont {
return withTraits(traits: .traitItalic)
}
}

View file

@ -11,4 +11,13 @@ extension UITextView {
self.attributedText = mutableString self.attributedText = mutableString
tintColor = UIColor.covidSafeColor tintColor = UIColor.covidSafeColor
} }
func parseHTMLLinks() {
guard let attributedText = attributedText else { return }
let mutableString = NSMutableAttributedString(attributedString: attributedText)
mutableString.parseHTMLLinks()
self.attributedText = mutableString
tintColor = UIColor.covidCareColor
}
} }

View file

@ -1,4 +1,30 @@
"personal_details_name_characters_prompt" = "Please use English characters for your full name. Do not use other languages or symbols like ',' or '?'."; "data_privacy_content_VO" = "من المهم أن تقرأ *سياسة خصوصية* COVIDSafe قبل التسجيل في COVIDSafe. \
\
إذا كان عمرك أقل من 16 عامًا، فيجب على والديك/ الوصي أيضًا قراءة *سياسة الخصوصية*. \
\
إنّ استخدام COVIDSafe هو أمر إختياري تمامًا. يمكنك تثبيت التطبيق أو حذفه في أي وقت. إذا قمت بحذف COVIDSafe، *يمكنك أيضًا طلب حذف معلوماتك* من نظام مقدم الخدمة الآمن. \
\
للتسجيل في COVIDSafe، ستحتاج إلى إدخال اسم ورقم هاتف محمول وفئة عمر ورمز بريدي. \
\
المعلومات التي ترسلها عند التسجيل، ومعلومات استخدامك لـ COVIDSafe سيتم جمعها وتخزينها في نظام مقدم الخدمة الآمن للغاية. \
\
لن يقوم COVIDSafe بجمع معلومات عن موقعك. \
\
سيدوّن COVIDSafe وقت الاتصال ورمز مجهول الهوية لمستخدمي COVIDSafe الآخرين الذين تتواصل معهم. \
\
سيتم تدوين مستخدمي COVIDSafe الآخرين الذين تتواصل معهم من خلال رمز مجهول الهوية ووقت الاتصال بك على أجهزتهم. \
\
إذا كانت نتائج اختبار مستخدم آخر إيجابية لـ COVID-19، فقد يقوم بتحميل معلومات الاتصال الخاصة به ويمكن أن يتصل بك مسؤول الصحة في الولاية أو الإقليم لأغراض تعقُّب جهات الاتصال. \
\
سيتم استخدام تفاصيل التسجيل الخاصة بك أو الكشف عنها فقط لتعقُّب جهات الاتصال وللأغراض المناسبة والقانونية لـ COVIDSafe. \
\
يتوفر المزيد من المعلومات على موقع *وزارة الصحة الأسترالية على الإنترنت*. \
\
راجع *سياسة خصوصية* COVIDSafe لمزيد من التفاصيل حول حقوقك المتعلقة بمعلوماتك وكيفية التعامل معها ومشاركتها.";
"home_header_inactive_title" = "\U200F COVIDSafe غير نشط.";
"PN_BluetoothStatusTitle" = "\U200F COVIDSafe غير نشط";
"home_header_active_title" = "\U200F COVIDSafe نشط.";
"UILaunchStoryboardName" = "LaunchScreen_ar";
"data_privacy_content" = "من المهم أن تقرأ *سياسة خصوصية* COVIDSafe قبل التسجيل في COVIDSafe. \ "data_privacy_content" = "من المهم أن تقرأ *سياسة خصوصية* COVIDSafe قبل التسجيل في COVIDSafe. \
\ \
إذا كان عمرك أقل من 16 عامًا، فيجب على والديك/ الوصي أيضًا قراءة *سياسة الخصوصية*. \ إذا كان عمرك أقل من 16 عامًا، فيجب على والديك/ الوصي أيضًا قراءة *سياسة الخصوصية*. \
@ -9,19 +35,70 @@
\ \
المعلومات التي ترسلها عند التسجيل، ومعلومات استخدامك لـ COVIDSafe سيتم جمعها وتخزينها في نظام مقدم الخدمة الآمن للغاية. \ المعلومات التي ترسلها عند التسجيل، ومعلومات استخدامك لـ COVIDSafe سيتم جمعها وتخزينها في نظام مقدم الخدمة الآمن للغاية. \
\ \
لن تقوم COVIDSafe بجمع معلومات عن موقعك. \ لن يقوم COVIDSafe بجمع معلومات عن موقعك. \
\ \
سيدوّن COVIDSafe وقت الاتصال ورمز مجهول الهوية لمستخدمي COVIDSafe الآخرين الذين تتواصل معهم. \ سيدوّن COVIDSafe وقت الاتصال ورمز مجهول الهوية لمستخدمي COVIDSafe الآخرين الذين تتواصل معهم. \
\ \
سيتم تدوين مستخدمي COVIDSafe الآخرين الذين تتواصل معهم من خلال رمز مجهول الهوية ووقت الاتصال بك على أجهزتهم. \ سيتم تدوين مستخدمي COVIDSafe الآخرين الذين تتواصل معهم من خلال رمز مجهول الهوية ووقت الاتصال بك على أجهزتهم. \
\ \
إذا كانت نتائج اختبار مستخدم آخر إيجابية لـ COVID-19، فقد يقوموا بتحميل معلومات الاتصال الخاصة به ويمكن أن يتصل بك مسؤول الصحة في الولاية أو الإقليم لأغراض تعقُّب جهات الاتصال. \ إذا كانت نتائج اختبار مستخدم آخر إيجابية لـ COVID-19، فقد يقوم بتحميل معلومات الاتصال الخاصة به ويمكن أن يتصل بك مسؤول الصحة في الولاية أو الإقليم لأغراض تعقُّب جهات الاتصال. \
\ \
سيتم استخدام تفاصيل التسجيل الخاصة بك أو الكشف عنها فقط لتعقُّب جهات الاتصال وللأغراض المناسبة والقانونية لـ COVIDSafe. \ سيتم استخدام تفاصيل التسجيل الخاصة بك أو الكشف عنها فقط لتعقُّب جهات الاتصال وللأغراض المناسبة والقانونية لـ COVIDSafe. \
\ \
يتوفر المزيد من المعلومات على موقع *وزارة الصحة الأسترالية على الإنترنت*. \ يتوفر المزيد من المعلومات على موقع *وزارة الصحة الأسترالية على الإنترنت*. \
\ \
راجع *سياسة خصوصية* COVIDSafe لمزيد من التفاصيل حول حقوقك المتعلقة بمعلوماتك وكيفية التعامل معها ومشاركتها."; راجع *سياسة خصوصية* COVIDSafe لمزيد من التفاصيل حول حقوقك المتعلقة بمعلوماتك وكيفية التعامل معها ومشاركتها.";
"upload_step_4_sub_header" = "ما لم توافق، لن يتم تحميل معلومات اتصال الشخص القريب منك. \
\
إذا وافقت، فسيتم تحميل معلومات اتصال الشخص القريب منك ومشاركتها مع مسؤولي الصحة في الولاية أو الإقليم لأغراض تتبع جهات الاتصال. \
\
اقرأ *سياسة الخصوصية* لـ COVIDSafe لمزيد من التفاصيل.";
"BluetoothOFF_VOLabel" = "Bluetooth: معطّل شغِّل ال Bluetooth على هاتفك. اختر \"السماح باتصالات جديدة\" في حال ظهورها.";
"AllowBluetoothOFF_VOLabel" = "الوصول إلى Bluetooth: معطّل السماح لـ COVIDSafe بالوصول إلى Bluetooth";
"AllowBluetoothON_VOLabel" = "الوصول إلى Bluetooth: تشغيل";
"BluetoothON_VOLabel" = "Bluetooth: تشغيل";
"ShareCovidSafe_VOLabel" = "شارك COVIDSafe. ادعُ الآخرين للمساعدة. معاً، نحن أقوى.";
"UploadData_VOLabel" = "هل اتصل بك مسؤول صحي؟ يمكنك فقط تحميل معلوماتك إذا كانت نتيجة اختبارك إيجابية.";
"NotificationsEnabled_VOLabel" = "الإخطارات مفعّلة. سوف تتلقى إخطاراً إذا كان COVIDSafe غير نشط.\
قم بتغيير إعدادات الإخطارات";
"NotificationsDisabled_VOLabel" = "الإخطارات معطّلة. سوف لن تتلقى إخطاراً إذا لم يكن COVIDSafe نشطاً.\
قم بتغيير إعدادات الإخطارات";
"permission_content_iOS_2_VOLabel" = "1. Bluetooth \
2. الإخطارات \
\
لا يرسل COVIDSafe طلبات الاقتران.";
"permission_content_iOS_VOLabel" = "يحتاج COVIDSafe إلى تمكين الـ Bluetooth حتى يعمل. من خلال تمكين الإخطارات، تتلقى تحديثات لتذكيرك عندما لا يكون برنامج COVIDSafe نشطًا. \
\
اختر \"تابع\" للتمكين:";
"OS1b_TopParagraph_VOLabel" = "تُستخدم إشارات Bluetooth لتحديد متى تكون بالقرب من مستخدم COVIDSafe آخر. \
\
سيتم تدوين ملاحظة في كل مرة حصل فيها إتصال عن قرب بينك وبين مستخدمي COVIDSafe الآخرين لإنشاء معلومات عن الاتصال عن قرب. يتم تشفير هذه المعلومات وتخزينها فقط في هاتفك. \
\
إذا كانت نتيجة اختبارك إيجابية لـ COVID-19 كمستخدم COVIDSafe، فسوف يتصل بك مسؤول صحي في الولاية أو الإقليم. سيساعدون في القيام بتحميل اختياري لمعلومات الاتصال عن قرب الخاصة بك إلى نظام تخزين معلومات آمن للغاية \
\
يمكن أيضاً لمسؤولي الصحة في الولاية أو الإقليم الاتصال بك إذا كنت على اتصال عن قرب بمستخدم COVIDSafe آخر وكانت نتيجته إيجابية. \
\
لمزيد من المعلومات، يرجى الرجوع إلى صفحة *مواضيع المساعدة*.";
"update_available_message" = "كنا نقوم بإدخال تحسينات على COVIDSafe.";
"OS2b_Item2_VOLabel" = "2. يجب الاستمرار في تشغيل الـ Bluetooth.";
"PINNumber_VO_Label" = "رقم التعريف الشخصي pin";
"PN_MobileNumber_VOLabel" = "رقم الهاتف المحمول";
"GetCoronaVirusApp_VOLabel" = "احصل على تطبيق Coronavirus. قم بتنزيل التطبيق الحكومي للحصول على آخر الأخبار والنصائح.";
"LatestNews_VOLabel" = "آخر الأخبار والتحديثات. توجه إلى aus.gov.au للاطلاع على آخر أخبار فيروس كورونا.";
"HelpTopics_VOLabel" = "مواضيع المساعدة. إذا كان لديك مشاكل أو أسئلة حول التطبيق.";
"personal_details_name_characters_prompt" = "يرجى استخدام الأحرف الإنجليزية لاسمك الكامل. لا تستخدم لغات أو رموز أخرى مثل \"،\" أو \"؟\".";
"update_available_title" = "التحديث متوفر!";
"update_available_app_store_btn" = "انتقل إلى App Store";
"update_available_dismiss_btn" = "ذكّرني لاحقا";
"how_it_works_content" = "تُستخدم إشارات Bluetooth® لتحديد متى تكون بالقرب من مستخدم COVIDSafe آخر. \
\
سيتم تدوين ملاحظة في كل مرة حصل فيها إتصال عن قرب بينك وبين مستخدمي COVIDSafe الآخرين لإنشاء معلومات عن الاتصال عن قرب. يتم تشفير المعلومات وتخزينها فقط في هاتفك. \
\
إذا كانت نتيجة اختبارك إيجابية لـ COVID-19 كمستخدم COVIDSafe، فسوف يتصل بك مسؤول الصحة في الولاية أو الإقليم. سيساعدون في القيام بتحميل اختياري لمعلومات الاتصال عن قرب الخاصة بك إلى نظام تخزين معلومات آمن للغاية \
\
يمكن أيضًا لمسؤولي الصحة في الولاية أو الإقليم الاتصال بك إذا كنت على اتصال عن قرب بمستخدم COVIDSafe آخر وكانت نتيجته إيجابية. \
\
لمزيد من المعلومات، يرجى الرجوع إلى صفحة *مواضيع المساعدة*.";
"intro_content" = "تم تطوير COVIDSafe من قبل الحكومة الأسترالية للمساعدة في الحفاظ على المجتمع في مأمن من انتشار فيروس كورونا. \ "intro_content" = "تم تطوير COVIDSafe من قبل الحكومة الأسترالية للمساعدة في الحفاظ على المجتمع في مأمن من انتشار فيروس كورونا. \
\ \
سوف يدوّن COVIDSafe بشكل آمن اتصالك مع مستخدمين آخرين للتطبيق. سيسمح ذلك لمسؤولي الصحة في الولاية أو الإقليم بالاتصال بك، إذا كنت على اتصال عن قرب مع شخص كانت نتيجة اختباره إيجابية بالفيروس. \ سوف يدوّن COVIDSafe بشكل آمن اتصالك مع مستخدمين آخرين للتطبيق. سيسمح ذلك لمسؤولي الصحة في الولاية أو الإقليم بالاتصال بك، إذا كنت على اتصال عن قرب مع شخص كانت نتيجة اختباره إيجابية بالفيروس. \
@ -161,7 +238,6 @@
"action_continue" = "استمر"; "action_continue" = "استمر";
"action_upload_done" = "استمر"; "action_upload_done" = "استمر";
"upload_failed" = "فشل التحميل"; "upload_failed" = "فشل التحميل";
"PN_BluetoothStatusTitle" = "COVIDSafe غير نشط";
"us_consent_button" = "أوافق"; "us_consent_button" = "أوافق";
"home_header_uploaded_on_date_ios" = "تم تحميل معلوماتك على %@ ."; "home_header_uploaded_on_date_ios" = "تم تحميل معلوماتك على %@ .";
"upload_consent_button" = "أوافق"; "upload_consent_button" = "أوافق";
@ -216,48 +292,16 @@
"upload_step_1_body" = "فقط إذا كانت نتيجة اختبارك لـ COVID-19 إيجابية، فسيتصل بك مسؤول الصحة في الولاية أو الإقليم للمساعدة في التحميل الاختياري لمعلوماتك.\ "upload_step_1_body" = "فقط إذا كانت نتيجة اختبارك لـ COVID-19 إيجابية، فسيتصل بك مسؤول الصحة في الولاية أو الإقليم للمساعدة في التحميل الاختياري لمعلوماتك.\
\ \
بمجرد أن تضغط على \"نعم\"، ستحتاج إلى إعطاء الموافقة حتى يتم تحميل معلوماتك."; بمجرد أن تضغط على \"نعم\"، ستحتاج إلى إعطاء الموافقة حتى يتم تحميل معلوماتك.";
"pin_issue" = "* مشكلات في تلقي رقم تعريف شخصي؟*";
"enter_pin_resend_pin" = "إعادة إرسال رقم تعريف شخصي"; "enter_pin_resend_pin" = "إعادة إرسال رقم تعريف شخصي";
"enter_number_button" = "احصل على رقم تعريف شخصي"; "enter_number_button" = "احصل على رقم تعريف شخصي";
"registration_consent_content" = "أوافق على أن تقوم وزارة الصحة الأسترالية بجمع:"; "registration_consent_content" = "أوافق على أن تقوم وزارة الصحة الأسترالية بجمع:";
"how_it_works_content" = "تُستخدم إشارات Bluetooth® لتحديد متى تكون بالقرب من مستخدم COVIDSafe آخر. \
\
سيتم تدوين ملاحظة في كل مرة حصل فيها إتصال عن قرب بينك وبين مستخدمي COVIDSafe الآخرين لإنشاء معلومات عن الاتصال عن قرب. يتم تشفير المعلومات وتخزينها فقط في هاتفك. \
\
إذا كانت نتيجة اختبارك إيجابية لـ COVID-19 كمستخدم COVIDSafe، فسوف يتصل بك مسؤول الصحة في الولاية أو الإقليم. سيساعدون في القيام بتحميل اختياري لمعلومات الاتصال عن قرب الخاصة بك إلى نظام تخزين معلومات آمن للغاية \
\
يمكن أيضًا لمسؤولي الصحة في الولاية أو الإقليم الاتصال بك إذا كنت على اتصال عن قرب بمستخدم COVIDSafe آخر وكانت نتيجته إيجابية. \
\
لمزيد من المعلومات، يرجى الرجوع إلى الصفحة *مواضيع المساعدة*";
"personal_details_age_error_prompt" = "يرجى اختيار فئتك العمرية."; "personal_details_age_error_prompt" = "يرجى اختيار فئتك العمرية.";
"upload_step_4_sub_header" = "ما لم توافق، لن يتم تحميل معلومات الاتصال عن قرب الخاصة بك. \
\
إذا وافقت، فسيتم تحميل معلومات الاتصال عن قرب الخاصة بك ومشاركتها مع مسؤولي الصحة في الولاية أو الإقليم لأغراض تعقُّب جهات الاتصال. \
\
اقرأ *سياسة الخصوصية* لـ COVIDSafe لمزيد من التفاصيل.";
"home_version_number_ios" = "الإصدار %@، الرقم%@"; "home_version_number_ios" = "الإصدار %@، الرقم%@";
"OS2b_Item1" = "1. عندما تغادر المنزل، احتفظ بهاتفك وتأكد من أن COVIDSafe نشط."; "OS2b_Item1" = "1. عندما تغادر المنزل، احتفظ بهاتفك وتأكد من أن COVIDSafe نشط.";
"UploadFailed" = "التحميل فشل. الرجاء عاود المحاولة في وقت لاحق."; "UploadFailed" = "التحميل فشل. الرجاء عاود المحاولة في وقت لاحق.";
"UploadFailedErrorMessage" = "الرجاء عاود المحاولة في وقت لاحق"; "UploadFailedErrorMessage" = "الرجاء عاود المحاولة في وقت لاحق";
"entryPrompt_alert_message" = "مرحبا يا صديقي، كيف تريد الاستمرار؟"; "entryPrompt_alert_message" = "مرحبا يا صديقي، كيف تريد الاستمرار؟";
"global_OK" = "حسناً"; "global_OK" = "حسناً";
"OS1b_TopParagraph_VOLabel" = "";
"permission_content_iOS_VOLabel" = "";
"permission_content_iOS_2_VOLabel" = "";
"NotificationsDisabled_VOLabel" = "";
"NotificationsEnabled_VOLabel" = "";
"HelpTopics_VOLabel" = "";
"LatestNews_VOLabel" = "";
"GetCoronaVirusApp_VOLabel" = "";
"UploadData_VOLabel" = "";
"ShareCovidSafe_VOLabel" = "";
"PN_MobileNumber_VOLabel" = "";
"PINNumber_VO_Label" = "";
"OS2b_Item2_VOLabel" = "";
"BluetoothOFF_VOLabel" = "";
"BluetoothON_VOLabel" = "";
"AllowBluetoothOFF_VOLabel" = "";
"AllowBluetoothON_VOLabel" = "";
"IntroLabel" = "ساعد في وقف الانتشار\ "IntroLabel" = "ساعد في وقف الانتشار\
وإنقاذ الأرواح."; وإنقاذ الأرواح.";
"BluetoothOFF_content" = "شغِّل الـ Bluetooth® على هاتفك، اختر \"السماح باتصالات جديدة\" في حال ظهورها."; "BluetoothOFF_content" = "شغِّل الـ Bluetooth® على هاتفك، اختر \"السماح باتصالات جديدة\" في حال ظهورها.";
@ -309,9 +353,7 @@
"country_region_name_uy" = "اوروغواي"; "country_region_name_uy" = "اوروغواي";
"permission_success_headline" = "لقد قمت بالتسجيل بنجاح"; "permission_success_headline" = "لقد قمت بالتسجيل بنجاح";
"permission_success_warning" = "استمر في تشغيل الإخطارات اللحظية للرسائل لـ COVIDSafe حتى نتمكن من إخطارك بسرعة إذا كان التطبيق لا يعمل بشكل صحيح."; "permission_success_warning" = "استمر في تشغيل الإخطارات اللحظية للرسائل لـ COVIDSafe حتى نتمكن من إخطارك بسرعة إذا كان التطبيق لا يعمل بشكل صحيح.";
"home_header_active_title" = "نشط. COVIDSafe";
"home_header_active_no_action_required" = "لا يلزم اتخاذ أي إجراء آخر."; "home_header_active_no_action_required" = "لا يلزم اتخاذ أي إجراء آخر.";
"home_header_inactive_title" = "COVIDSafe غير نشط.";
"home_header_inactive_check_your_permissions" = "تحقق من الإعدادات الخاصة بك."; "home_header_inactive_check_your_permissions" = "تحقق من الإعدادات الخاصة بك.";
"home_setup_help" = "المساعدة"; "home_setup_help" = "المساعدة";
"home_app_permission_status_title" = "تحقق من الإعدادات الخاصة بك"; "home_app_permission_status_title" = "تحقق من الإعدادات الخاصة بك";

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<model type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="16119" systemVersion="19E266" minimumToolsVersion="Automatic" sourceLanguage="Swift" userDefinedModelVersionIdentifier="">
<entity name="BLELog" representedClassName="BLELog" syncable="YES">
<attribute name="message" optional="YES" attributeType="String"/>
<attribute name="timestamp" optional="YES" attributeType="Date" usesScalarValueType="NO"/>
</entity>
<elements>
<element name="BLELog" positionX="-63" positionY="-18" width="128" height="73"/>
</elements>
</model>

View file

@ -0,0 +1,2 @@
"BluetoothUsageDesc" = "Η COVIDSafe ανταλλάσσει σήματα Bluetooth® με κοντινά τηλέφωνα που χρησιμοποιούν την ίδια εφαρμογή. Αυτά τα σήματα περιέχουν ένα ανώνυμο αναγνωριστικό, το οποίο είναι κρυπτογραφημένο και αλλάζει συνεχώς για διασφάλιση του απορρήτου σας.";
"UILaunchStoryboardName" = "LaunchScreen_el";

View file

@ -0,0 +1,487 @@
"data_privacy_content_VO" = "Συνίσταται να διαβάσετε την *πολιτική απορρήτου* της COVIDSafe πριν εγγραφείτε στην COVIDSafe. \
\
Εάν είστε κάτω των 16 ετών, ο γονέας/κηδεμόνας σας πρέπει επίσης να διαβάσει την *πολιτική απορρήτου*. \
\
Η χρήση της COVIDSafe είναι εντελώς εθελοντική. Μπορείτε να εγκαταστήσετε ή να διαγράψετε την εφαρμογή ανά πάσα στιγμή. Εάν διαγράψετε την COVIDSafe, *μπορείτε επίσης να ζητήσετε τη διαγραφή των στοιχείων σας* από τον ασφαλή διακομιστή. \
\
Για να εγγραφείτε στην COVIDSafe, θα πρέπει να εισάγετε όνομα, αριθμό κινητού τηλεφώνου, ηλικιακή ομάδα και ταχυδρομικό κώδικα. \
\
Οι πληροφορίες που υποβάλετε κατά την εγγραφή σας και οι πληροφορίες για τη χρήση της COVIDSafe από εσάς θα συλλέγονται και θα αποθηκεύονται σε έναν εξαιρετικά ασφαλή διακομιστή. \
\
Η COVIDSafe δε θα συλλέξει τις πληροφορίες τοποθεσίας σας. \
\
Η COVIDSafe θα σημειώσει την ώρα της επικοινωνίας και έναν ανώνυμο κωδικό ταυτότητας άλλων χρηστών COVIDSafe με τους οποίους έρχεστε σε επαφή. \
\
Άλλοι χρήστες της COVIDSafe με τους οποίους έρχεστε σε επαφή θα σημειώσουν έναν ανώνυμο κωδικό ταυτότητας και την ώρα επαφής μαζί σας στη συσκευή τους. \
\
Εάν ένας άλλος χρήστης διαγνωστεί θετικά με COVID-19, μπορεί να αναρτήσει τα στοιχεία επικοινωνίας του και ένας υπάλληλος υγείας της Πολιτείας ή της Επικράτειάς σας μπορεί να επικοινωνήσει μαζί σας για λόγους ανίχνευσης επαφών. \
\
Τα στοιχεία εγγραφής σας θα χρησιμοποιηθούν ή θα αποκαλυφθούν μόνο για τον εντοπισμό επαφών και για την ορθή και νόμιμη λειτουργία της COVIDSafe. \
\
Περισσότερες πληροφορίες διατίθενται στον ιστότοπο *Υπουργείο Υγείας της Αυστραλιανής Κυβέρνησης*. \
\
Διαβάστε την *πολιτική απορρήτου* της COVIDSafe για περισσότερες λεπτομέρειες σχετικά με τα δικαιώματά σας σχετικά με τις πληροφορίες σας και τον τρόπο χειρισμού και κοινοποίησής τους.";
"UILaunchStoryboardName" = "LaunchScreen_el_GR";
"data_privacy_content" = "Συνίσταται να διαβάσετε την *πολιτική απορρήτου* της COVIDSafe πριν εγγραφείτε στην COVIDSafe. \
\
Εάν είστε κάτω των 16 ετών, ο γονέας/κηδεμόνας σας πρέπει επίσης να διαβάσει την *πολιτική απορρήτου*. \
\
Η χρήση της COVIDSafe είναι εντελώς εθελοντική. Μπορείτε να εγκαταστήσετε ή να διαγράψετε την εφαρμογή ανά πάσα στιγμή. Εάν διαγράψετε την COVIDSafe, *μπορείτε επίσης να ζητήσετε τη διαγραφή των στοιχείων σας* από τον ασφαλή διακομιστή. \
\
Για να εγγραφείτε στην COVIDSafe, θα πρέπει να εισάγετε όνομα, αριθμό κινητού τηλεφώνου, ηλικιακή ομάδα και ταχυδρομικό κώδικα. \
\
Οι πληροφορίες που υποβάλετε κατά την εγγραφή σας και οι πληροφορίες για τη χρήση της COVIDSafe από εσάς θα συλλέγονται και θα αποθηκεύονται σε έναν εξαιρετικά ασφαλή διακομιστή. \
\
Η COVIDSafe δε θα συλλέξει τις πληροφορίες τοποθεσίας σας. \
\
Η COVIDSafe θα σημειώσει την ώρα της επικοινωνίας και έναν ανώνυμο κωδικό ταυτότητας άλλων χρηστών COVIDSafe με τους οποίους έρχεστε σε επαφή. \
\
Άλλοι χρήστες της COVIDSafe με τους οποίους έρχεστε σε επαφή θα σημειώσουν έναν ανώνυμο κωδικό ταυτότητας και την ώρα επαφής μαζί σας στη συσκευή τους. \
\
Εάν ένας άλλος χρήστης διαγνωστεί θετικά με COVID-19, μπορεί να αναρτήσει τα στοιχεία επικοινωνίας του και ένας υπάλληλος υγείας της Πολιτείας ή της Επικράτειάς σας μπορεί να επικοινωνήσει μαζί σας για λόγους ανίχνευσης επαφών. \
\
Τα στοιχεία εγγραφής σας θα χρησιμοποιηθούν ή θα αποκαλυφθούν μόνο για τον εντοπισμό επαφών και για την ορθή και νόμιμη λειτουργία της COVIDSafe. \
\
Περισσότερες πληροφορίες διατίθενται στον ιστότοπο *Υπουργείο Υγείας της Αυστραλιανής Κυβέρνησης*. \
\
Διαβάστε την *πολιτική απορρήτου* της COVIDSafe για περισσότερες λεπτομέρειες σχετικά με τα δικαιώματά σας σχετικά με τις πληροφορίες σας και τον τρόπο χειρισμού και κοινοποίησής τους.";
"dialog_error_uploading_negative" = "Ακύρωση";
"home_header_active_no_action_required" = "Δε χρειάζονται περαιτέρω ενέργειες.";
"country_region_name_dm" = "Δομινίκα";
"enter_number_relative" = "Προσπαθείτε να εγγραφείτε εκ μέρους φίλου ή συγγενή; \
\
Η εγγραφή θα πρέπει να γίνει χρησιμοποιώντας τη δική τους συσκευή και τον αριθμό τηλεφώνου τους, για να λειτουργήσει η COVIDSafe για αυτούς.";
"GetCoronaVirusApp_VOLabel" = "Αποκτήστε την εφαρμογή για τον Κορωνοϊό. Κατεβάστε την κυβερνητική εφαρμογή για τις τελευταίες ειδήσεις και συμβουλές.";
"upload_step_verify_pin_sub_header" = "Ένας υπάλληλος υγείας της Πολιτείας ή της Επικράτειάς σας θα στείλει ένα PIN στη συσκευή σας μέσω μηνύματος. Εισάγετέ το παρακάτω για να αναρτήσετε τα στοιχεία σας.";
"upload_step_4_sub_header" = "Εάν δε συναινέσετε, τα στοιχεία επικοινωνίας σας δε θα αναρτηθούν.\
\
Εάν συναινείτε, τα στοιχεία στενής επαφής σας θα αναρτηθούν και θα κοινοποιηθούν σε υπαλλήλους υγείας της Πολιτείας ή της Επικράτειάς σας για σκοπούς ανίχνευσης επαφών.\
\
Για περισσότερες λεπτομέρειες διαβάστε την πολιτική προστασίας προσωπικών δεδομένων της COVIDSafe *.";
"personal_details_headline" = "Εισάγετε τα στοιχεία σας";
"permission_success_warning" = "Να έχετε τις αυτόματες γνωστοποιήσεις ανοιχτές για την COVIDSafe, ώστε να μπορούμε να σας ειδοποιήσουμε γρήγορα εάν η εφαρμογή δε λειτουργεί σωστά.";
"enter_pin_headline" = "Εισάγετε το PIN που στάλθηκε στο %s %s";
"home_set_complete_external_link_share_content" = "Ζητήστε τη βοήθεια και άλλων. Μαζί, είμαστε πιο δυνατοί.";
"home_set_complete_external_link_news_content" = "Επισκεφτείτε τη σελίδα aus.gov.au για τις τελευταίες ειδήσεις για τον Κορωνοϊό.";
"intro_content" = "Η COVIDSafe έχει αναπτυχθεί από την Αυστραλιανή Κυβέρνηση για την ασφάλεια της κοινότητας από την εξάπλωση του κορωνοϊού. \
\
Η COVIDSafe θα σημειώσει με ασφάλεια την επαφή που έχετε με άλλους χρήστες της εφαρμογής. Αυτό θα επιτρέπει στους υπαλλήλους της Πολιτείας ή Επικράτειάς σας να επικοινωνήσουν μαζί σας, εάν έχετε στενή επαφή με κάποιον που έχει διαγνωστεί θετικά στον ιό.\
\
Μαζί μπορούμε να βοηθήσουμε να σταματήσουμε την εξάπλωση και να παραμείνουμε υγιείς.";
"enter_number_headline" = "Εισάγετε τον αριθμό του κινητού σας";
"country_region_name_tt" = "Τρίνινταντ και Τομπάγκο";
"country_region_name_tc" = "Νήσοι Τερκς και Κάικος";
"BluetoothOFF" = "Bluetooth®: ΑΠΕΝΕΡΓΟΠΟΙΗΜΕΝΟ";
"country_region_name_kg" = "Κιργιζιστάν";
"country_region_name_ht" = "Αϊτή";
"country_region_name_ky" = "Νησιά Κέιμαν";
"country_region_name_ai" = "Ανγκουίλα";
"country_region_name_ad" = "Ανδόρρα";
"home_set_complete_external_link_notifications_content_iOS_off" = "Δε θα λάβετε ειδοποιήσεις εάν η COVIDSafe δεν είναι ενεργή.";
"EnterPhoneReVerify" = "Εισάγετε τον αριθμό του κινητού σας για επαλήθευση εκ νέου";
"EnterPINSent" = "Εισάγετε το PIN που στάλθηκε στο % @";
"PhoneNumberFormatErrorMessage" = "Εισάγετε τον αριθμό του κινητού σας.";
"permission_button" = "Προχωρήστε";
"ShareCovidSafe_VOLabel" = "Μοιραστείτε την COVIDSafe. Καλέστε και άλλους να βοηθήσουν. Μαζί, είμαστε ισχυρότεροι.";
"UploadData_VOLabel" = "Έχει επικοινωνήσει μαζί σας υπάλληλος υγείας; Μπορείτε να αναρτήσετε τις πληροφορίες σας μόνο αν έχετε διαγνωστεί θετικά.";
"upload_step_4_header" = "Αναρτήστε τη συναίνεσή σας";
"upload_step_1_body" = "Υπάλληλος υγείας της Πολιτείας ή της Επικράτειάς σας θα επικοινωνήσει μαζί σας μόνο εάν διαγνωστείτε θετικά στο COVID-19, για να σας βοηθήσει με την εθελοντική ανάρτηση των πληροφοριών σας. \
\
Μόλις πατήσετε «Ναι», θα πρέπει να δώσετε τη συναίνεσή σας για να αναρτήσετε τα στοιχεία σας.";
"under_sixteen_first_paragraph" = "Τα στοιχεία μου εγγραφής επιτρέπουν την ανίχνευση επαφών από υπαλλήλους υγείας των Πολιτειών και Επικρατειών.";
"Select_country_or_region_headline" = "Επιλέξτε χώρα ή περιοχή";
"ReportAnIssue" = "Αναφέρετε ένα πρόβλημα";
"registration_consent_headline" = "Συναίνεση εγγραφής";
"registration_consent_first_paragraph" = "Τα στοιχεία εγγραφής μου για να επιτραπεί η ανίχνευση επαφών από υπαλλήλους υγείας των Πολιτειών ή Επικρατειών.";
"PostcodeValidationErrorMessage" = "Εισάγετε έναν έγκυρο ταχυδρομικό κώδικα της Αυστραλίας.";
"PN_ReminderBody" = "Ανοίξτε την COVIDSafe για να βεβαιωθείτε ότι λειτουργεί.";
"PINNumber_VO_Label" = "Κωδικός PΙΝ";
"personal_details_name_characters_prompt" = "Χρησιμοποιήστε Λατινικούς χαρακτήρες για το ονοματεπώνυμό σας. Μη χρησιμοποιείτε άλλες γλώσσες ή σύμβολα όπως ',' ή '?'.";
"personal_details_age_error_prompt" = "Επιλέξτε την ηλικιακή ομάδα.";
"permission_success_headline" = "Έχετε εγγραφεί επιτυχώς";
"permission_success_button" = "Συνεχίστε";
"permission_headline" = "Ρυθμίσεις εφαρμογής";
"permission_content_iOS_VOLabel" = "Η COVIDSafe για να λειτουργήσει θα πρέπει το Bluetooth να είναι ενεργοποιημένο. Όταν ενεργοποιήσετε τις Ειδοποιήσεις, θα λάβετε τις ενημερώσεις που υπενθυμίζουν πότε η COVIDSafe δεν είναι ενεργή. \
\
Επιλέξτε «Συνέχεια» για ενεργοποίηση:";
"permission_content_iOS_2_VOLabel" = "1. Bluetooth \
2. Ειδοποιήσεις \
\
Η COVIDSafe δεν αποστέλλει αιτήματα σύζευξης.";
"permission_content_iOS" = "Για να λειτουργήσει η COVIDSafe θα πρέπει το Bluetooth® να είναι ενεργοποιημένο. Όταν ενεργοποιήσετε τις Ειδοποιήσεις, θα λάβετε τις ενημερώσεις που υπενθυμίζουν πότε η COVIDSafe δεν είναι ενεργή. \
\
Επιλέξτε «Συνέχεια» για ενεργοποίηση:";
"OS1b_TopParagraph_VOLabel" = "Τα σήματα Bluetooth χρησιμοποιούνται για να προσδιορίσουν πότε βρίσκεστε κοντά σε άλλο χρήστη της COVIDSafe. \
Κάθε στενή επαφή σας με άλλους χρήστες της COVIDSafe σημειώνεται για να δημιουργεί στενά στοιχεία επικοινωνίας. Οι πληροφορίες είναι κρυπτογραφημένες και αποθηκεύονται μόνο στο τηλέφωνό σας. \
Εάν έχετε διαγνωστεί θετικά στον COVID-19 κατόπιν χρήσης της COVIDSafe, ένας υπεύθυνος υγείας της Πολιτείας ή της Επικράτειάς σας θα επικοινωνήσει μαζί σας. Θα βοηθήσει με την εθελοντική ανάρτηση των προσωπικών στοιχείων επικοινωνίας σας σε ένα εξαιρετικά ασφαλές σύστημα αποθήκευσης πληροφοριών. \
Οι υπεύθυνοι υγείας της Πολιτείας ή της Επικράτειάς σας μπορούν επίσης να επικοινωνήσουν μαζί σας εάν ήρθατε σε στενή επαφή με άλλο χρήστη της COVIDSafe που επίσης διαγνώστηκε θετικά. \
Για περισσότερες πληροφορίες, πηγαίνετε στη σελίδα Θέματα Βοήθειας.";
"NotificationsEnabledBlurb" = "Θα λάβετε ειδοποίηση εάν η COVIDSafe δεν είναι ενεργή. \n Αλλάξετε τις ρυθμίσεις ειδοποιήσεων";
"NotificationsDisabledBlurb" = "Δε θα λάβετε ειδοποίηση εάν η COVIDSafe δεν είναι ενεργή. \n Αλλαγή στις ρυθμίσεις ειδοποιήσεων";
"NotificationsDisabled_VOLabel" = "Οι ειδοποιήσεις είναι απενεργοποιημένες. Δε θα λάβετε ειδοποίηση εάν η COVIDSafe δεν είναι ενεργή. \
Αλλάξετε τις ρυθμίσεις ειδοποίησης";
"norfolk_hint" = "Για παράδειγμα: 51234";
"LatestNews_VOLabel" = "Τελευταίες ειδήσεις και ενημερώσεις. Επισκεφτείτε τη σελίδα aus.gov.au για τα τελευταία νέα του Κορωνοϊού.";
"IssueThankYou" = "Ευχαριστούμε! Λάβαμε τα σχόλια σας.";
"IssueFooter" = "Μπορεί να επικοινωνήσουμε μαζί σας για περισσότερες λεπτομέρειες σχετικά με τα σχόλια σας. Η διεύθυνση email σας δε θα χρησιμοποιηθεί για κανέναν άλλο σκοπό.";
"IntroLabel" = "Βοηθήστε να σταματήσουμε την εξάπλωση \
και σώστε ζωές.";
"home_header_inactive_title" = "Η COVIDSafe δεν είναι ενεργή";
"home_header_active_title" = "Η COVIDSafe είναι ενεργή";
"home_app_permission_status_title" = "Ελέγξτε τις ρυθμίσεις σας";
"enter_pin_wrong_number" = "Είναι ο αριθμός κινητού λάθος;";
"enter_pin_timer_expire" = "Το PIN σας θα λήξει σε &#160;";
"enter_pin_resend_pin" = "Στείλτε ξανά το PIN";
"country_region_name_au2" = "Νήσος Νόρφολκ";
"home_app_permission_status_subtitle" = "Η COVIDSafe δε θα λειτουργήσει χωρίς τις σωστές ρυθμίσεις.";
"home_header_inactive_check_your_permissions" = "Ελέγξτε τις ρυθμίσεις σας";
"home_setup_help" = "Βοήθεια";
"home_data_uploaded_message" = "Βοηθήστε να σταματήσει η εξάπλωση του COVID-19 και παρακολουθείτε τα συμπτώματά σας.";
"home_set_complete_external_link_share_title" = "Μοιραστείτε την COVIDSafe";
"home_set_complete_external_link_news_title" = "Τελευταίες ειδήσεις και ενημερώσεις";
"home_set_complete_external_link_news_url" = "https://www.australia.gov.au";
"home_set_complete_external_link_self_isolation_register_url" = "https://covid-form.service.gov.au";
"home_set_complete_external_link_app_title" = "Αποκτήστε την εφαρμογή για τον Κορωνοϊό";
"home_set_complete_external_link_app_content" = "Κατεβάστε την εφαρμογή της κυβέρνησης για τις τελευταίες ειδήσεις και συμβουλές.";
"home_set_complete_external_link_been_contacted_title" = "Έχει επικοινωνήσει μαζί σας υπάλληλος υγείας;";
"home_set_complete_external_link_been_contacted_content" = "Μπορείτε να αναρτήσετε τα στοιχεία σας μόνο εάν έχετε διαγνωστεί θετικά.";
"home_set_complete_external_link_help_topics_title" = "Θέματα βοήθειας";
"home_set_complete_external_link_help_topics_content" = "Εάν έχετε προβλήματα ή απορίες για την εφαρμογή.";
"upload_answer_yes" = "Ναι";
"upload_answer_no" = "Όχι";
"upload_step_1_header" = "Σας ζητάει υπάλληλος υγείας σας να αναρτήσετε τα στοιχεία σας;";
"upload_step_verify_pin_header" = "Αναρτήστε τα στοιχεία σας";
"upload_finished_header" = "Σας ευχαριστούμε που βοηθήσατε να σταματήσει η εξάπλωση του COVID-19!";
"upload_finished_sub_header" = "Έχετε ανεβάσει με επιτυχία τις πληροφορίες σας στο σύστημα αποθήκευσης υψηλής ασφάλειας COVIDSafe.\
\
Οι υγειονομικοί υπάλληλοι της Πολιτείας ή της Επικράτειάς σας θα ενημερώσουν άλλους χρήστες της COVIDSafe που έχουν καταγράψει στενή επαφή μαζί σας. Η ταυτότητά σας θα παραμείνει ανώνυμη σε άλλους χρήστες.";
"upload_failed" = "Η ανάρτηση απέτυχε";
"under_sixteen_registration_consent_first_paragraph" = "Τα στοιχεία εγγραφής μου επιτρέπουν την ανίχνευση επαφών από υπαλλήλους υγείας της Πολιτείας ή της Επικράτειάς σας.";
"under-sixteen_consent_call_for_action" = "Επιλέξτε «Συμφωνώ» για επιβεβαίωση της συναίνεσής σας.";
"Enter_your_mobile_number_label" = "Εισάγετε τον αριθμό του κινητού σας";
"permission_content_iOS_2" = "1. Bluetooth® \
2. Ειδοποιήσεις \
\
Η COVIDSafe δεν αποστέλλει αιτήματα σύζευξης.";
"PN_ReminderTitle" = "Δεν εντοπίστηκαν συναντήσεις για 48 ώρες";
"OS2b_Item3" = "3. Η COVIDSafe δεν αποστέλλει αιτήματα σύζευξης. Μάθετε περισσότερα.";
"UploadFailed" = "Η ανάρτηση απέτυχε. Δοκιμάστε πάλι αργότερα.";
"global_cancel_button_title" = "Ακύρωση";
"enter_pin_button" = "Επιβεβαιώστε";
"how_it_works_content" = "Τα σήματα Bluetooth χρησιμοποιούνται για να προσδιορίσουν πότε βρίσκεστε κοντά σε άλλο χρήστη της COVIDSafe.\
\
Η κάθε στενή επαφή σας με άλλους χρήστες της COVIDSafe σημειώνεται για να δημιουργεί στενά στοιχεία επικοινωνίας. Οι πληροφορίες είναι κρυπτογραφημένες και αποθηκεύονται μόνο στο τηλέφωνό σας.\
\
Εάν έχετε διαγνωστεί θετικά στην COVID-19 κατόπιν χρήσης της COVIDSafe, ένας υπεύθυνος υγείας της Πολιτείας ή της Επικράτειάς σας θα επικοινωνήσει μαζί σας. Θα βοηθήσει με την εθελοντική ανάρτηση των προσωπικών στοιχείων επικοινωνίας σας σε ένα εξαιρετικά ασφαλές σύστημα αποθήκευσης πληροφοριών. \
\
Οι υπεύθυνοι υγείας της Πολιτείας ή της Επικράτειάς σας μπορούν επίσης να επικοινωνήσουν μαζί σας εάν ήρθατε σε στενή επαφή με άλλο χρήστη της COVIDSafe που επίσης διαγνώσθηκε θετικά.\
\
Για περισσότερες πληροφορίες, πηγαίνετε στη σελίδα *Θέματα Βοήθειας*.";
"dialog_uploading_message" = "Τα στοιχεία σας αναρτίζονται στην COVIDSafe αυτή τη στιγμή. \
\
Μην κλείσετε την εφαρμογή.";
"dialog_error_uploading_message" = "Παρουσιάστηκε πρόβλημα κατά την ανάρτηση των στοιχείων σας. Δοκιμάστε ξανά.";
"share_this_app_content" = "Ελάτε μαζί μου να σταματήσουμε την εξάπλωση του COVID-19! Κατεβάστε την COVIDSafe, μια εφαρμογή της Αυστραλιανής Κυβέρνησης. # COVID19 #coronavirusaustralia #stayhomesavelives https://covidsafe.gov.au";
"migration_in_progress" = "Η ενημέρωση της COVIDSafe συνεχίζεται. \
\
Βεβαιωθείτε ότι το τηλέφωνό σας δεν είναι απενεργοποιημένο έως ότου ολοκληρωθεί η ενημέρωση.";
"intro_headline" = "Μαζί μπορούμε να σταματήσουμε την εξάπλωση του COVID-19";
"intro_button" = "Θέλω να βοηθήσω";
"how_it_works_headline" = "Πώς λειτουργεί η COVIDSafe";
"how_it_works_button" = "Επόμενο";
"consent_call_for_action" = "Επιλέξτε «Συμφωνώ» για επιβεβαίωση της συγκατάθεσης.";
"consent_button" = "Συμφωνώ";
"data_privacy_button" = "Επόμενο";
"registration_consent_content" = "Συναινώ να συλλέγει το Αυστραλιανό Υπουργείο Υγείας:";
"registration_consent_second_paragraph" = "Τα στοιχεία επικοινωνίας μου από άλλους χρήστες της COVIDSafe αφού διαγνώστηκαν θετικά για το COVID-19.";
"personal_details_name_title" = "Ονοματεπώνυμο";
"personal_details_age_title" = "Ηλικιακή ομάδα (επιλέξτε)";
"personal_details_post_code" = "Ταχυδρομικός κώδικας στην Αυστραλία";
"personal_details_name_error_prompt" = "Παρακαλώ εισάγετε το ονοματεπώνυμό σας.";
"personal_details_age_content_description" = "Επιλέξτε την ηλικιακή ομάδα";
"personal_details_post_code_error_prompt" = "Ο Αυστραλιανός ταχυδρομικός σας κώδικας πρέπει να περιέχει 4 ψηφία.";
"personal_details_dialog_ok" = "Επιλέξτε";
"personal_details_button" = "Συνεχίστε";
"under_sixteen_headline" = "Χρειάζεστε τη συναίνεση του γονέα/κηδεμόνα σας για να συνεχίσετε";
"under_sixteen_content" = "Επιβεβαιώνω ότι ως γονέας ή κηδεμόνας συναινώ με το Υπουργείο Υγείας της Αυστραλίας στη συλλογή:";
"under_sixteen_second_paragraph" = "Τα στοιχεία επικοινωνίας μου από άλλους χρήστες της COVIDSafe αφού διαγνώστηκαν θετικά για το COVID-19.";
"select_country_or_region" = "Επιλέξτε χώρα ή περιοχή";
"invalid_australian_phone_number_error_prompt" = "Οι αριθμοί κινητής τηλεφωνίας της Αυστραλίας περιέχουν έως 10 ψηφία.";
"invalid_norfolk_island_phone_number_error_prompt" = "Οι αριθμοί κινητής τηλεφωνίας στο νησί Νόρφολκ περιέχουν 5 έως 6 ψηφία.";
"enter_number_content" = "Θα σας στείλουμε ένα 6ψήφιο PIN για να επαληθεύσετε τον αριθμό του κινητού σας.";
"enter_number_button" = "Αποκτήστε PIN";
"dialog_error_uploading_positive" = "Προσπαθήστε ξανά";
"data_privacy_headline" = "Εγγραφή και προστασία του απορρήτου";
"country_region_name_zw" = "Ζιμπάμπουε";
"country_region_name_zm" = "Ζάμπια";
"country_region_name_za" = "Νότια Αφρική";
"country_region_name_ye" = "Υεμένη";
"country_region_name_ws" = "Σαμόα";
"country_region_name_vi" = "Παρθένες Νήσοι, ΗΠΑ";
"country_region_name_vg" = "Βρετανικές Παρθένες Νήσοι";
"country_region_name_vu" = "Βανουάτου";
"country_region_name_vn" = "Βιετνάμ";
"country_region_name_ve" = "Βενεζουέλα";
"country_region_name_vc" = "Άγιος Βικέντιος και Γρεναδίνες";
"country_region_name_uz" = "Ουζμπεκιστάν";
"country_region_name_uy" = "Ουρουγουάη";
"country_region_name_us" = "Ηνωμένες Πολιτείες";
"country_region_name_ug" = "Ουγκάντα";
"country_region_name_ua" = "Ουκρανία";
"country_region_name_tz" = "Τανζανία";
"country_region_name_tw" = "Ταϊβάν";
"country_region_name_tr" = "Τουρκία";
"country_region_name_to" = "Τόνγκα";
"country_region_name_tn" = "Τυνησία";
"country_region_name_tm" = "Τουρκμενιστάν";
"country_region_name_tl" = "Τιμόρ-Λέστε";
"country_region_name_tj" = "Τατζικιστάν";
"country_region_name_th" = "Ταϊλάνδη";
"country_region_name_tg" = "Τόγκο";
"country_region_name_sz" = "Εσουατίνη";
"country_region_name_st" = "Σάο Τομέ και Πρίνσιπε";
"country_region_name_ss" = "Νότιο Σουδάν";
"country_region_name_sr" = "Σουρινάμ";
"country_region_name_so" = "Σομαλία";
"country_region_name_sn" = "Σενεγάλη";
"country_region_name_sl" = "Σιέρρα Λεόνε";
"country_region_name_si" = "Σλοβενία";
"country_region_name_sk" = "Σλοβακία";
"country_region_name_sg" = "Σιγκαπούρη";
"country_region_name_se" = "Σουηδία";
"country_region_name_sd" = "Σουδάν";
"country_region_name_sc" = "Σεϋχέλλες";
"country_region_name_sb" = "Νησιά Σολομώντα";
"country_region_name_sa" = "Σαουδική Αραβία";
"country_region_name_rw" = "Ρουάντα";
"country_region_name_ru" = "Ρωσία";
"country_region_name_rs" = "Σερβία";
"country_region_name_ro" = "Ρουμανία";
"country_region_name_re" = "Νήσος Ρεϋνιόν";
"country_region_name_qa" = "Κατάρ";
"country_region_name_py" = "Παραγουάη";
"country_region_name_pw" = "Παλάου";
"country_region_name_pt" = "Πορτογαλία";
"country_region_name_ps" = "Παλαιστινιακά Εδάφη";
"country_region_name_pr" = "Πουέρτο Ρίκο";
"country_region_name_pl" = "Πολωνία";
"country_region_name_pk" = "Πακιστάν";
"country_region_name_ph" = "Φιλιππίνες";
"country_region_name_pg" = "Παπούα Νέα Γουινέα";
"country_region_name_pe" = "Περού";
"country_region_name_pa" = "Παναμά";
"country_region_name_om" = "Ομάν";
"country_region_name_nz" = "Νέα Ζηλανδία";
"country_region_name_np" = "Νεπάλ";
"country_region_name_no" = "Νορβηγία";
"country_region_name_nl" = "Κάτω Χώρες";
"country_region_name_ni" = "Νικαράγουα";
"country_region_name_ng" = "Νιγηρία";
"country_region_name_ne" = "Νίγηρα";
"country_region_name_nc" = "Νέα Καληδονία";
"country_region_name_na" = "Ναμίμπια";
"country_region_name_mz" = "Μοζαμβίκη";
"country_region_name_my" = "Μαλαισία";
"country_region_name_mx" = "Μεξικό";
"country_region_name_mw" = "Μαλάουι";
"country_region_name_mv" = "Μαλδίβες";
"country_region_name_mu" = "Μαυρίκιος";
"country_region_name_mt" = "Μάλτα";
"country_region_name_ms" = "Μοντσερράτ";
"country_region_name_mr" = "Μαυριτανία";
"country_region_name_mq" = "Μαρτινίκα";
"country_region_name_mo" = "Μακάο";
"country_region_name_mn" = "Μογγολία";
"country_region_name_mm" = "Μιανμάρ";
"country_region_name_ml" = "Μάλι";
"country_region_name_mk" = "Βόρεια Μακεδονία";
"country_region_name_mg" = "Μαδαγασκάρη";
"country_region_name_me" = "Μαυροβούνι";
"country_region_name_md" = "Μολδαβία";
"country_region_name_mc" = "Μονακό";
"country_region_name_ma" = "Μαρόκο";
"country_region_name_ly" = "Λιβύη";
"country_region_name_lu" = "Λουξεμβούργο";
"country_region_name_lt" = "Λιθουανία";
"country_region_name_lr" = "Λιβερία";
"country_region_name_lk" = "Σρι Λάνκα";
"country_region_name_li" = "Λιχτενστάιν";
"country_region_name_lc" = "Αγία Λουκία";
"country_region_name_kr" = "Νότια Κορέα";
"country_region_name_kn" = "Άγιος Κιτς και Νέβις";
"country_region_name_ir" = "Ιράν";
"country_region_name_gb" = "Ηνωμένο Βασίλειο";
"country_region_name_es" = "Ισπανία";
"country_region_name_cw" = "Κουρασάο";
"country_region_name_cu" = "Κούβα";
"country_region_name_ch" = "Ελβετία";
"country_region_name_cg" = "Δημοκρατία του Κονγκό";
"country_region_name_an" = "Ολλανδικές Αντίλλες";
"country_region_name_ae" = "Ηνωμένα Αραβικά Εμιράτα";
"AllowBluetoothON" = "Πρόσβαση στο Bluetooth®: ΕΝΕΡΓΟΠΟΙΗΜΕΝΗ";
"action_verify_upload_pin" = "Ανεβάστε τα στοιχεία μου";
"action_upload_done" = "Συνεχίστε";
"allow_bluetooth_call" = "Επιτρέψτε την COVIDSafe να έχει πρόσβαση στο Bluetooth®";
"action_verify_invalid_pin" = "Μη έγκυρο PIN, ζητήστε από τον υπεύθυνο υγείας να σας στείλει καινούριο PIN.";
"action_report_an_issue" = "Αναφέρετε το πρόβλημα";
"action_continue" = "Συνεχίστε";
"wrong_ping_number" = "Εισήχθη λάθος PIN";
"country_region_name_ls" = "Λεσόθο";
"country_region_name_lb" = "Λίβανος";
"country_region_name_lv" = "Λετονία";
"country_region_name_la" = "Λάος";
"country_region_name_kw" = "Κουβέιτ";
"country_region_name_ki" = "Κιριμπάτι";
"country_region_name_ke" = "Κένυα";
"country_region_name_kz" = "Καζακστάν";
"country_region_name_jo" = "Ιορδανία";
"country_region_name_jp" = "Ιαπωνία";
"country_region_name_jm" = "Ιαμαϊκή";
"country_region_name_ci" = "Ακτή Ελεφαντοστού";
"country_region_name_it" = "Ιταλία";
"country_region_name_il" = "Ισραήλ";
"country_region_name_ie" = "Ιρλανδία";
"country_region_name_iq" = "Ιράκ";
"country_region_name_id" = "Ινδονησία";
"country_region_name_in" = "Ινδία";
"country_region_name_is" = "Ισλανδία";
"country_region_name_hu" = "Ουγγαρία";
"country_region_name_hk" = "Χονγκ Κονγκ";
"country_region_name_hn" = "Ονδούρα";
"country_region_name_gy" = "Γουιάνα";
"country_region_name_gw" = "Γουινέα-Μπισσάου";
"country_region_name_gn" = "Παπούα Νέα Γουινέα";
"country_region_name_gt" = "Γουατεμάλα";
"country_region_name_gu" = "Γκουάμ";
"country_region_name_gd" = "Γρενάδα";
"country_region_name_gp" = "Γουαδελούπη";
"country_region_name_gl" = "Γροιλανδία";
"country_region_name_gr" = "Ελλάδα";
"country_region_name_gi" = "Γιβραλτάρ";
"country_region_name_gh" = "Γκάνα";
"country_region_name_de" = "Γερμανία";
"country_region_name_ge" = "Γεωργία";
"country_region_name_gm" = "Γκάμπια";
"country_region_name_ga" = "Γκαμπόν";
"country_region_name_gf" = "Γαλλική Γουιάνα";
"country_region_name_fr" = "Γαλλία";
"country_region_name_fi" = "Φινλανδία";
"country_region_name_fj" = "Φίτζι";
"country_region_name_fo" = "Νήσοι Φερόες";
"country_region_name_et" = "Αιθιοπία";
"country_region_name_ee" = "Εσθονία";
"country_region_name_gq" = "Ισημερινή Γουινέα";
"country_region_name_sv" = "Ελ Σαλβαδόρ";
"country_region_name_eg" = "Αίγυπτος";
"country_region_name_ec" = "Ισημερινός";
"country_region_name_do" = "Δομινικανή Δημοκρατία";
"country_region_name_dj" = "Τζιμπουτί";
"country_region_name_dk" = "Δανία";
"country_region_name_cd" = "Λαϊκή Δημοκρατία του Κονγκό";
"country_region_name_cz" = "Τσεχία";
"country_region_name_cy" = "Κύπρος";
"country_region_name_hr" = "Κροατία";
"country_region_name_cr" = "Κόστα Ρίκα";
"country_region_name_ck" = "Νήσοι Κουκ";
"country_region_name_km" = "Κομόρος";
"country_region_name_co" = "Κολομβία";
"country_region_name_cn" = "Κίνα";
"country_region_name_cl" = "Χιλή";
"country_region_name_td" = "Τσαντ";
"country_region_name_cf" = "Δημοκρατία Κεντρικής Αφρικής";
"country_region_name_cv" = "Πράσινο Ακρωτήριο";
"country_region_name_ca" = "Καναδάς";
"country_region_name_cm" = "Καμερούν";
"country_region_name_kh" = "Καμπότζη";
"country_region_name_bi" = "Μπουρούντι";
"country_region_name_bf" = "Μπουρκίνα Φάσο";
"country_region_name_bg" = "Βουλγαρία";
"country_region_name_bn" = "Μπρουνέι";
"country_region_name_br" = "Βραζιλία";
"country_region_name_bw" = "Μποτσουάνα";
"country_region_name_ba" = "Βοσνία και Ερζεγοβίνη";
"country_region_name_bo" = "Βολιβία";
"country_region_name_bt" = "Μπουτάν";
"country_region_name_bm" = "Βερμούδα";
"country_region_name_bj" = "Μπενίν";
"country_region_name_bz" = "Μπελίζ";
"country_region_name_be" = "Βέλγιο";
"country_region_name_by" = "Λευκορωσία";
"country_region_name_bb" = "Μπαρμπάντος";
"country_region_name_bd" = "Μπαγκλαντές";
"country_region_name_bh" = "Μπαχρέιν";
"country_region_name_bs" = "Μπαχάμες";
"country_region_name_au" = "Αυστραλία";
"country_region_name_aw" = "Αρούμπα";
"country_region_name_am" = "Αρμενία";
"country_region_name_ar" = "Αργεντινή";
"country_region_name_ag" = "Αντίγκουα και Μπαρμπούντα";
"country_region_name_ao" = "Αγκόλα";
"country_region_name_dz" = "Αλγερία";
"country_region_name_al" = "Αλβανία";
"country_region_name_af" = "Αφγανιστάν";
"country_region_name_az" = "Αζερμπαϊτζάν";
"country_region_name_at" = "Αυστρία";
"options_for_australia" = "Επιλογές για την Αυστραλία";
"PN_BluetoothStatusBody" = "Βεβαιωθείτε ότι είναι ενεργή πριν βγείτε από το σπίτι και όταν βρίσκεστε σε δημόσιους χώρους ενεργοποιώντας το Bluetooth®.";
"BluetoothOFF_content" = "Ενεργοποιήστε το Bluetooth® του τηλεφώνου σας. Επιλέξτε «να επιτρέπονται Νέες Συνδέσεις» εάν εμφανιστεί.";
"AllowBluetoothOFF_VOLabel" = "Πρόσβαση σε Bluetooth: ΑΠΕΝΕΡΓΟΠΟΙΗΣΗ Να επιτρέπεται στην COVIDSafe πρόσβαση σε Bluetooth";
"OS2b_Item1" = "1. Όταν βγαίνετε από το σπίτι, να κρατάτε το τηλέφωνό σας πάνω σας και να βεβαιωθείτε ότι η COVIDSafe είναι ενεργή.";
"PairingRequestsInfo" = "Η COVIDSafe δεν αποστέλλει αιτήματα σύζευξης.";
"NotificationsEnabled_VOLabel" = "Οι ειδοποιήσεις είναι ενεργοποιημένες. Θα λάβετε ειδοποίηση εάν η COVIDSafe δεν είναι ενεργή. \
Αλλαγή ρυθμίσεων ειδοποίησης";
"update_available_message" = "Έχουμε βελτιώσει την COVIDSafe.";
"PN_BluetoothStatusTitle" = "Η COVIDSafe δεν είναι ενεργή";
"home_set_complete_external_link_notifications_title_iOS" = "Οι ειδοποιήσεις είναι ενεργοποιημένες";
"NotificationsBlurbLink" = "Αλλαγή στις ρυθμίσεις ειδοποιήσεων";
"AllowBluetoothOFF" = "Πρόσβαση στο Bluetooth®: ΑΠΕΝΕΡΓΟΠΟΙΗΜΕΝΗ";
"home_set_complete_external_link_notifications_title_iOS_off" = "Οι ειδοποιήσεις είναι απενεργοποιημένες";
"BluetoothON" = "Bluetooth®: ΕΝΕΡΓΟ";
"us_consent_button" = "Συμφωνώ";
"home_header_uploaded_on_date_ios" = "Τα στοιχεία σας αναρτήθηκαν στο %@";
"home_version_number_ios" = "Έκδοση %@, Κατασκευή %@";
"upload_consent_button" = "Συμφωνώ";
"SelectedCountryTemplate" = "(+ %@ ) %@ έχει επιλεγεί";
"AllowBluetoothON_VOLabel" = "Πρόσβαση σε Bluetooth: ΕΝΕΡΓΟ";
"BluetoothON_VOLabel" = "Bluetooth: ΕΝΕΡΓΟ";
"BluetoothOFF_VOLabel" = "Bluetooth: ΑΝΕΝΕΡΓΟ Ενεργοποιήστε το Bluetooth του τηλεφώνου σας. Επιλέξτε «Να επιτρέπονται νέες συνδέσεις» εάν εμφανίζεται.";
"Done" = "Ολοκλήρωση";
"Next" = "Επόμενο";
"ValidationError" = "Σφάλμα επικύρωσης";
"PINWillExpire" = "Το PIN σας θα λήξει σε %@";
"ReceivePinIssue" = "Προβλήματα με τη λήψη του PIN σας;";
"CodeHasExpired" = "Ο κωδικός σας έχει λήξει.";
"InvalidOTP" = "Πρέπει να είναι εξαψήφιος κωδικός";
"PhoneVerificationErrorTitle" = "Σφάλμα επαλήθευσης του αριθμού τηλεφώνου";
"PhoneVerificationErrorMessage" = "Ελέγξτε τα στοιχεία σας και προσπαθήστε ξανά.";
"PhoneNumberFormatErrorTitle" = "Λάθος σύνταξη του αριθμού";
"FoundIssueWithApp" = "Βρήκατε ένα πρόβλημα στην εφαρμογή COVIDSafe;";
"IssueDescPlaceholder" = "Περιγράψτε το πρόβλημα";
"OS2b_Item2" = "2. Το Bluetooth® πρέπει να παραμείνει ενεργοποιημένο.";
"OS2b_Item2_VOLabel" = "2. Το Bluetooth πρέπει να παραμείνει ενεργοποιημένο.";
"OS2b_Item3Underline" = "Μάθετε περισσότερα";
"InformationUploaded" = "Τα στοιχεία σας αναρτήθηκαν στο %@";
"PairingRequestsInfoUnderline" = "αιτήματα σύζευξης";
"UploadFailedErrorMessage" = "Δοκιμάστε ξανά αργότερα.";
"EmailPlaceholder" = "Τοπικοποίηση Εισαγάγετε τη διεύθυνση email σας (απαιτείται)";
"global_send_button_title" = "Αποστολή";
"global_sending_indication_title" = "Αποστέλνοντας";
"global_success_indication_title" = "Επιτυχία";
"entryPrompt_alert_title" = "Πλαίσιο σχολίων";
"entryPrompt_alert_message" = "Γεια σας, πώς θα θέλατε να συνεχίσετε;";
"entryPrompt_newFeedback_button_title" = "Νέα Σχόλια";
"newFeedbackFlow_navigationTitle" = "Αναφορά προβλήματος";
"newFeedback_deleteScreenshotConfirmation_message" = "Το στιγμιότυπο οθόνης θα διαγραφεί οριστικά.";
"newFeedback_deleteScreenshot_actionTitle" = "Διαγράψετε το στιγμιότυπο οθόνης";
"newFeedback_send_errorMessage" = "Σφάλμα κατά την αποστολή σχολίων";
"newFeedback_noMessage_errorMessage" = "Πείτε μας κάτι πριν το στείλετε.";
"newFeedback_invalidEmail_errorMessage" = "Εισάγετε μια έγκυρη διεύθυνση ηλεκτρονικού ταχυδρομείου (email)!";
"PN_MobileNumber_VOLabel" = "Αριθμός κινητού";
"global_OK" = "OK";
"global_back" = "Πίσω";
"global_close" = "Κλείσε";
"global_double_tap" = "πατήστε δύο φορές για επεξεργασία";
"HelpTopics_VOLabel" = "Θέματα βοήθειας. Εάν έχετε προβλήματα ή απορίες σχετικά με την εφαρμογή.";
"update_available_title" = "Η ενημερωμένη έκδοση είναι διαθέσιμη!";
"update_available_app_store_btn" = "Πηγαίνετε στο App Store";
"update_available_dismiss_btn" = "Θύμισέ μου αργότερα";

View file

@ -1,3 +1,79 @@
"under_sixteen_content" = "I confirm my parent or guardian consents to the Digital Transformation Agency as data store administrator, under legal determination made by the Secretary of the Australian Government Department of Health collecting:";
"EmailPlaceholder" = "Enter your email address (required)";
"data_privacy_content" = "It is important that you read the COVIDSafe *privacy policy* before you register for COVIDSafe.\
\
If you are under 16 years of age, your parent/guardian must also read the *privacy policy*.\
\
Use of COVIDSafe is completely voluntary. You can install or delete the application at any time. If you delete COVIDSafe, *you may also ask for your information to be deleted* from the secure server.\
\
To register for COVIDSafe, you will need to enter a name (or pseudonym), mobile number, age range and postcode.\
\
Information you submit when you register, and information about your use of COVIDSafe will be collected and stored on a highly secure server.\
\
COVIDSafe will not collect your location information.\
\
COVIDSafe will note the time of contact, anonymous ID code of other COVIDSafe users you come into contact with, Bluetooth® signal strength and the phone model of other users, on your device.\
\
Other COVIDSafe users you come into contact with will also note your anonymous ID code, the date and time of contact with you, Bluetooth® signal strength and your phone model, on their device.\
\
If another user tests positive to COVID-19, they may upload their contact information and a state or territory health official may contact you for contact tracing purposes. \
\
Your registration details will only be used or disclosed for contact tracing and for the proper and lawful functioning of COVIDSafe. \
\
More information is available at the *Australian Government Department of Health* website.\
\
See the COVIDSafe *privacy policy* for further details about your rights about your information and how it will be handled and shared.";
"data_privacy_content_VO" = "It is important that you read the COVIDSafe privacy policy before you register for COVIDSafe.\
\
If you are under 16 years of age, your parent/guardian must also read the privacy policy.\
\
Use of COVIDSafe is completely voluntary. You can install or delete the application at any time. If you delete COVIDSafe, you may also ask for your information to be deleted from the secure server.\
\
To register for COVIDSafe, you will need to enter a name (or pseudonym), mobile number, age range and postcode.\
\
Information you submit when you register, and information about your use of COVIDSafe will be collected and stored on a highly secure server.\
\
COVIDSafe will not collect your location information.\
\
COVIDSafe will note the time of contact, anonymous ID code of other COVIDSafe users you come into contact with, Bluetooth signal strength and the phone model of other users, on your device.\
\
Other COVIDSafe users you come into contact with will also note your anonymous ID code, the date and time of contact with you, Bluetooth signal strength and your phone model, on their device.\
\
If another user tests positive to COVID-19, they may upload their contact information and a state or territory health official may contact you for contact tracing purposes. \
\
Your registration details will only be used or disclosed for contact tracing and for the proper and lawful functioning of COVIDSafe. \
\
More information is available at the Australian Government Department of Health website.\
\
See the COVIDSafe privacy policy for further details about your rights about your information and how it will be handled and shared.";
"upload_step_4_sub_header" = "Unless you consent, your contact data will not be uploaded.\
\
If you consent, your contact data will be uploaded and shared with state or territory health officials for contact tracing purposes.\
\
State and territory health officials will only be able to access information about your close contacts.\
\
Read the COVIDSafe *privacy policy* for further details.";
"personal_details_name_title" = "Full name (or pseudonym)";
"under_sixteen_second_paragraph" = "Information about my contact with other COVIDSafe users, if another user I have come into contact with tests positive for COVID-19 and uploads their contact data.";
"registration_consent_second_paragraph" = "Information about my contact with other COVIDSafe users, if another user I have come into contact with tests positive for COVID-19 and uploads their contact data.";
"under_sixteen_registration_consent_first_paragraph" = "My registration information.";
"registration_consent_first_paragraph" = "My registration information.";
"under_sixteen_first_paragraph" = "My registration information.";
"registration_consent_content" = "I consent to the Digital Transformation Agency as data store administrator, under legal determination made by the Secretary of the Australian Government Department of Health collecting:";
"how_it_works_content" = "Bluetooth® signals are used to determine when you're near another COVIDSafe user.\
\
Every instance of close contact between you and other COVIDSafe users is noted to create contact data. This information is encrypted and only stored in you the phone.\
\
If you test positive to COVID-19 as a COVIDSafe user, a state or territory health official will contact you. They will assist with voluntary upload of your contact data to a highly secure information storage system.\
\
State or territory health officials can also contact you if you came in close contact with another COVIDSafe user who tested positive.\
\
For more information please refer to the *Help Topics* page.";
"UILaunchStoryboardName" = "LaunchScreen_en";
"update_available_dismiss_btn" = "Remind me later";
"update_available_app_store_btn" = "Go to App Store";
"update_available_message" = "Weve been making improvements to COVIDSafe.";
"update_available_title" = "Update available!";
"personal_details_name_characters_prompt" = "Please use English characters for your full name. Do not use other languages or symbols like ',' or '?'."; "personal_details_name_characters_prompt" = "Please use English characters for your full name. Do not use other languages or symbols like ',' or '?'.";
"PN_MobileNumber_VOLabel" = "Mobile number"; "PN_MobileNumber_VOLabel" = "Mobile number";
"OS1b_TopParagraph_VOLabel" = "Bluetooth signals are used to determine when you're near another COVIDSafe user.\ "OS1b_TopParagraph_VOLabel" = "Bluetooth signals are used to determine when you're near another COVIDSafe user.\
@ -29,29 +105,6 @@ Change notification settings";
"home_version_number_ios" = "Version %@, Build %@"; "home_version_number_ios" = "Version %@, Build %@";
"NotificationsDisabledBlurb" = "You will not receive a notification if COVIDSafe is not active.\nChange notifications settings"; "NotificationsDisabledBlurb" = "You will not receive a notification if COVIDSafe is not active.\nChange notifications settings";
"NotificationsEnabledBlurb" = "You will receive a notification if COVIDSafe is not active.\nChange notifications settings"; "NotificationsEnabledBlurb" = "You will receive a notification if COVIDSafe is not active.\nChange notifications settings";
"data_privacy_content" = "It is important that you read the COVIDSafe *privacy policy* before you register for COVIDSafe.\
\
If you are under 16 years of age, your parent/guardian must also read the *privacy policy*.\
\
Use of COVIDSafe is completely voluntary. You can install or delete the application at any time. If you delete COVIDSafe, *you may also ask for your information to be deleted* from the secure server.\
\
To register for COVIDSafe, you will need to enter a name, mobile number, age range and postcode. \
\
Information you submit when you register, and information about your use of COVIDSafe will be collected and stored on a highly secure server.\
\
COVIDSafe will not collect your location information.\
\
COVIDSafe will note the time of contact and an anonymous ID code of other COVIDSafe users you come into contact with.\
\
Other COVIDSafe users you come into contact with will note an anonymous ID code and the time of contact with you on their device.\
\
If another user tests positive to COVID-19, they may upload their contact information and a state or territory health official may contact you for contact tracing purposes. \
\
Your registration details will only be used or disclosed for contact tracing and for the proper and lawful functioning of COVIDSafe. \
\
More information is available at the *Australian Government Department of Health* website.\
\
See the COVIDSafe *privacy policy* for further details about your rights about your information and how it will be handled and shared.";
"PINNumber_VO_Label" = "PIN number"; "PINNumber_VO_Label" = "PIN number";
"newFeedback_invalidEmail_errorMessage" = "Please enter a valid email address!"; "newFeedback_invalidEmail_errorMessage" = "Please enter a valid email address!";
"newFeedback_noMessage_errorMessage" = "Tell us something before sending."; "newFeedback_noMessage_errorMessage" = "Tell us something before sending.";
@ -66,7 +119,6 @@ See the COVIDSafe *privacy policy* for further details about your rights about y
"global_sending_indication_title" = "Sending"; "global_sending_indication_title" = "Sending";
"global_send_button_title" = "Send"; "global_send_button_title" = "Send";
"global_cancel_button_title" = "Cancel"; "global_cancel_button_title" = "Cancel";
"EmailPlaceholder" = "Enter your email address (required)";
"UploadFailedErrorMessage" = "Please try again later."; "UploadFailedErrorMessage" = "Please try again later.";
"UploadFailed" = "Upload failed. Please try again later."; "UploadFailed" = "Upload failed. Please try again later.";
"InformationUploaded" = "Your information was uploaded on %@"; "InformationUploaded" = "Your information was uploaded on %@";
@ -103,21 +155,6 @@ See the COVIDSafe *privacy policy* for further details about your rights about y
"upload_consent_button" = "I agree"; "upload_consent_button" = "I agree";
"home_header_uploaded_on_date_ios" = "Your information was uploaded on %@."; "home_header_uploaded_on_date_ios" = "Your information was uploaded on %@.";
"us_consent_button" = "I agree"; "us_consent_button" = "I agree";
"how_it_works_content" = "Bluetooth® signals are used to determine when you're near another COVIDSafe user.\
\
Every instance of close contact between you and other COVIDSafe users is noted to create close contact information. The information is encrypted and only stored in your phone.\
\
If you test positive to COVID-19 as a COVIDSafe user, a state or territory health official will contact you. They will assist with voluntary upload of your close contact information to a highly secure information storage system\
\
State or territory health officials can also contact you if you came in close contact with another COVIDSafe user who tested positive.\
\
For more information please refer to the *Help Topics* page";
"pin_issue" = "*Issues receiving your PIN?*";
"upload_step_4_sub_header" = "Unless you consent, your close contact information will not be uploaded.\
\
If you consent, your close contact information will be uploaded and shared with state or territory health officials for contact tracing purposes.\
\
Read the COVIDSafe *privacy policy* for further details.";
"IntroLabel" = "Help stop the spread\ "IntroLabel" = "Help stop the spread\
and save lives."; and save lives.";
"BluetoothOFF_content" = "Turn on your phones Bluetooth®. Select Allow New Connections if displayed."; "BluetoothOFF_content" = "Turn on your phones Bluetooth®. Select Allow New Connections if displayed.";
@ -152,7 +189,6 @@ Select Proceed' to enable:";
"Enter_your_mobile_number_label" = "Enter your mobile number"; "Enter_your_mobile_number_label" = "Enter your mobile number";
"Select_country_or_region_headline" = "Select country or region"; "Select_country_or_region_headline" = "Select country or region";
"under-sixteen_consent_call_for_action" = "Select 'I agree' to confirm consent. "; "under-sixteen_consent_call_for_action" = "Select 'I agree' to confirm consent. ";
"under_sixteen_registration_consent_first_paragraph" = "My registration information to allow contact tracing by state or territory health officials. ";
"country_region_name_sd" = "Sudan"; "country_region_name_sd" = "Sudan";
"country_region_name_ir" = "Iran"; "country_region_name_ir" = "Iran";
"country_region_name_cw" = "Curaçao"; "country_region_name_cw" = "Curaçao";
@ -418,9 +454,6 @@ They will need to register using their own device and phone number so that COVID
"invalid_australian_phone_number_error_prompt" = "Australian mobile numbers contain a maximum of 10 digits."; "invalid_australian_phone_number_error_prompt" = "Australian mobile numbers contain a maximum of 10 digits.";
"enter_number_headline" = "Enter your mobile number"; "enter_number_headline" = "Enter your mobile number";
"select_country_or_region" = "Select country or region"; "select_country_or_region" = "Select country or region";
"under_sixteen_second_paragraph" = "My contact information from other COVIDSafe users after they test positive for COVID-19.";
"under_sixteen_first_paragraph" = "My registration information to allow contact tracing by state and territory health officials.";
"under_sixteen_content" = "I confirm my parent or guardian consents to the Australian Department of Health collecting:";
"under_sixteen_headline" = "You need the consent of your parent/guardian to proceed"; "under_sixteen_headline" = "You need the consent of your parent/guardian to proceed";
"personal_details_button" = "Continue"; "personal_details_button" = "Continue";
"personal_details_dialog_ok" = "Select"; "personal_details_dialog_ok" = "Select";
@ -429,11 +462,7 @@ They will need to register using their own device and phone number so that COVID
"personal_details_age_content_description" = "Select age range"; "personal_details_age_content_description" = "Select age range";
"personal_details_age_title" = "Age range (select)"; "personal_details_age_title" = "Age range (select)";
"personal_details_name_error_prompt" = "Please enter your full name."; "personal_details_name_error_prompt" = "Please enter your full name.";
"personal_details_name_title" = "Full name";
"personal_details_headline" = "Enter your details"; "personal_details_headline" = "Enter your details";
"registration_consent_second_paragraph" = "My contact information from other COVIDSafe users after they test positive for COVID-19.";
"registration_consent_first_paragraph" = "My registration information to allow contact tracing by state or territory health officials.";
"registration_consent_content" = "I consent to the Australian Department of Health collecting:";
"registration_consent_headline" = "Registration consent"; "registration_consent_headline" = "Registration consent";
"consent_button" = "I agree"; "consent_button" = "I agree";
"consent_call_for_action" = "Select 'I agree' to confirm consent."; "consent_call_for_action" = "Select 'I agree' to confirm consent.";

View file

@ -0,0 +1,2 @@
"BluetoothUsageDesc" = "Il COVIDSafe scambia segnali Bluetooth® con telefonini vicini che utilizzano la stessa app. Questi segnali contengono un ID anonimo, che è crittografato e cambia continuamente per garantire la tua privacy.";
"UILaunchStoryboardName" = "LaunchScreen_it";

View file

@ -0,0 +1,488 @@
"dialog_uploading_message" = "I tuoi dati COVIDSafe sono attualmente in fase di caricamento. \
\
Si prega di non chiudere l'app.";
"wrong_ping_number" = "PIN errato inserito";
"permission_content_iOS_2" = "1. Bluetooth®\
2. Notifiche\
\
Il COVIDSafe non invia richieste di accoppiamento.";
"data_privacy_content_VO" = "È importante leggere *l'informativa sulla privacy* del COVIDSafe prima di eseguire la registrazione per il COVIDSafe. \
\
Se hai meno di 16 anni, anche i tuoi genitori / tutori dovranno leggere la *politica sulla privacy*. \
\
L'uso del COVIDSafe è completamente volontario. È possibile installare o eliminare l'applicazione in qualsiasi momento. Se elimini il COVIDSafe, *puoi anche chiedere che le tue informazioni vengano cancellate* dal server sicuro. \
\
Per registrarti a COVIDSafe, dovrai inserire un nome, un numero di cellulare, una fascia di età e un codice postale. \
\
Le informazioni inviate al momento della registrazione e le informazioni sul tuo utilizzo del COVIDSafe verranno raccolte e archiviate su un server altamente sicuro. \
\
Il COVIDSafe non raccoglierà le informazioni sulla tua posizione. \
\
Il COVIDSafe annota l'ora del contatto e un codice ID anonimo degli altri utenti COVIDSafe con cui entri in contatto. \
\
Gli altri utenti COVIDSafe con cui entri in contatto noteranno un codice ID anonimo e l'ora del contatto con te sul loro dispositivo. \
\
Se un altro utente risulta positivo al COVID-19, può caricare le proprie informazioni di contatto e un funzionario sanitario statale o del territorio può contattarti a scopi di ricerca dei contatti. \
\
I tuoi dettagli di registrazione verranno utilizzati o divulgati esclusivamente per l'esecuzione di traccia dei contatti e per il corretto e legittimo funzionamento del COVIDSafe. \
\
Maggiori informazioni sono disponibili sul sito web del *Dipartimento del governo australiano della salute*. \
\
Vedi *l'informativa sulla privacy* del COVIDSafe per ulteriori dettagli sui tuoi diritti sui tuoi dati e su come verranno gestiti e condivisi.";
"UILaunchStoryboardName" = "LaunchScreen_it_IT";
"country_region_name_pr" = "Puerto Rico";
"how_it_works_content" = "I segnali Bluetooth® vengono utilizzati per determinare quando sei vicino a un altro utente COVIDSafe.\
\
Ogni istanza di stretto contatto tra l'utente e gli altri utenti COVIDSafe viene notata per creare informazioni sui contatti ravvicinati. Queste informazioni sono crittografate e memorizzate solo nel tuo cellulare.\
\
Se risulti positivo al COVID-19 come utente COVIDSafe, sarai contattato da un funzionario sanitario statale o del territorio. Essi ti aiuteranno con il caricamento volontario delle tue informazioni di stretto contatto ad un sistema altamente sicuro di archiviazione delle informazioni.\
\
I funzionari sanitari statali o del territorio possono anche contattarti se sei entrato in stretto contatto con un altro utente COVIDSafe che è risultato positivo.\
\
Per ulteriori informazioni, consultare la pagina Argomenti della Guida.";
"enter_pin_headline" = "Inserisci il PIN inviato a %s %s";
"enter_pin_timer_expire" = "Il tuo codice PIN scadrà tra &#160;";
"enter_pin_button" = "Verifica";
"upload_step_4_sub_header" = "Senza il tuo consenso, i tuoi dati di stretto contatto non verranno caricati.\
\
Se dai il tuo consenso, i tuoi dati di stretto contatto verranno caricati e condivisi con funzionari sanitari statali o del territorio a scopo di tracciamento di contatti.\
\
Leggi *l'informativa sulla privacy* di COVIDSafe per ulteriori informazioni.";
"permission_content_iOS" = "Il COVIDSafe necessita del Bluetooth® abilitato per funzionare. Abilitando Notifiche, ricevi aggiornamenti per ricordarti quando il COVIDSafe non è attivo. \
\
Seleziona 'Procedi' per abilitare:";
"PN_ReminderBody" = "Apri il COVIDSafe per assicurarsi che sia in funzione.";
"OS2b_Item2" = "2. Il Bluetooth® deve rimanere ON.";
"OS2b_Item3" = "3. Il COVIDSafe non invia richieste di accoppiamento. Per saperne di più.";
"PairingRequestsInfo" = "Il COVIDSafe non invia richieste di accoppiamento.";
"permission_content_iOS_2_VOLabel" = "1. Bluetooth\
2. Notifiche\
\
Il COVIDSafe non invia richieste di accoppiamento.";
"OS1b_TopParagraph_VOLabel" = "I segnali Bluetooth vengono utilizzati per determinare quando sei vicino a un altro utente COVIDSafe. \
Ogni istanza di stretto contatto tra te e gli altri utenti COVIDSafe viene notata per creare informazioni sui stretti contatti. Queste informazioni sono crittografate e memorizzate solo nel tuo cellulare. \
Se risulti positivo al COVID-19 come utente COVIDSafe, sarai contattato da un funzionario sanitario statale o del territorio.\
Essi ti aiuteranno con il caricamento volontario delle tue informazioni di stretto contatto ad un sistema altamente sicuro di archiviazione delle informazioni. \
I funzionari sanitari statali o del territorio possono anche contattarti se sei entrato in stretto contatto con un altro utente COVIDSafe che è risultato positivo. \
Per ulteriori informazioni, consultare la pagina Argomenti della Guida.";
"data_privacy_content" = "È importante leggere *l'informativa sulla privacy* del COVIDSafe prima di eseguire la registrazione per il COVIDSafe. \
\
Se hai meno di 16 anni, anche i tuoi genitori / tutori dovranno leggere la *politica sulla privacy*. \
\
L'uso del COVIDSafe è completamente volontario. È possibile installare o eliminare l'applicazione in qualsiasi momento. Se elimini il COVIDSafe, *puoi anche chiedere che le tue informazioni vengano cancellate* dal server sicuro. \
\
Per registrarti a COVIDSafe, dovrai inserire un nome, un numero di cellulare, una fascia di età e un codice postale. \
\
Le informazioni inviate al momento della registrazione e le informazioni sul tuo utilizzo del COVIDSafe verranno raccolte e archiviate su un server altamente sicuro. \
\
Il COVIDSafe non raccoglierà le informazioni sulla tua posizione. \
\
Il COVIDSafe annota l'ora del contatto e un codice ID anonimo degli altri utenti COVIDSafe con cui entri in contatto. \
\
Gli altri utenti COVIDSafe con cui entri in contatto noteranno un codice ID anonimo e l'ora del contatto con te sul loro dispositivo. \
\
Se un altro utente risulta positivo al COVID-19, può caricare le proprie informazioni di contatto e un funzionario sanitario statale o del territorio può contattarti a scopi di ricerca dei contatti. \
\
I tuoi dettagli di registrazione verranno utilizzati o divulgati esclusivamente per l'esecuzione di traccia dei contatti e per il corretto e legittimo funzionamento del COVIDSafe. \
\
Maggiori informazioni sono disponibili sul sito web del *Dipartimento del governo australiano della salute*. \
\
Vedi *l'informativa sulla privacy* del COVIDSafe per ulteriori dettagli sui tuoi diritti sui tuoi dati e su come verranno gestiti e condivisi.";
"under_sixteen_content" = "Confermo che il mio genitore o tutore acconsente alla raccolta da parte del Dipartimento australiano della salute di:";
"consent_call_for_action" = "Seleziona \"Sono d'accordo\" per confermare il consenso.";
"under-sixteen_consent_call_for_action" = "Seleziona \"Sono d'accordo\" per confermare il consenso.";
"share_this_app_content" = "Unisciti a me per fermare la diffusione del COVID-19! Scarica il COVIDSafe, un'app del Governo australiano. #COVID19 #coronavirusaustralia #stayhomesavelives https://covidsafe.gov.au";
"migration_in_progress" = "Aggiornamento COVIDSafe in corso. \
\
Assicurarsi che il cellulare non sia spento fino al completamento dell'aggiornamento.";
"intro_content" = "Il COVIDSafe è stato sviluppato dal Governo australiano per aiutare a proteggere la comunità dalla diffusione del coronavirus. \
\
Il COVIDSafe noterà in modo sicuro i contatti che hai con altri utenti dell'app. Ciò consentirà ai funzionari sanitari statali e del territorio di contattarti, se sei stato in stretto contatto con qualcuno che è risultato positivo al virus. \
\
Insieme possiamo aiutare a fermare la diffusione e rimanere sani.";
"registration_consent_content" = "Acconsento alla raccolta da parte del Ministero della sanità australiano di:";
"personal_details_button" = "Continua";
"country_region_name_re" = "Isola della Reunion";
"invalid_norfolk_island_phone_number_error_prompt" = "I numeri di cellulare nell'Isola di Norfolk contengono da 5 a 6 cifre.";
"enter_number_relative" = "Cerchi di registrare per conto di un amico o un parente? \
\
Dovranno registrarsi utilizzando il proprio dispositivo e numero di cellulare in modo che il COVIDSafe possa funzionare per loro.";
"country_region_name_az" = "Azerbaigian";
"country_region_name_ba" = "Bosnia ed Erzegovina";
"country_region_name_cv" = "Capo Verde";
"country_region_name_td" = "Ciad";
"country_region_name_ke" = "Kenya";
"country_region_name_kg" = "Kirghizistan";
"country_region_name_ls" = "Lesotho";
"country_region_name_mo" = "Macao";
"country_region_name_mk" = "Ex Repubblica Jugoslava di Macedonia";
"country_region_name_md" = "Moldavia";
"country_region_name_st" = "São Tomé e Príncipe";
"country_region_name_ss" = "Sud Sudan";
"country_region_name_tj" = "Tagikistan";
"country_region_name_th" = "Tailandia";
"country_region_name_vi" = "Isole Vergini Americane";
"country_region_name_ye" = "Yemen";
"permission_button" = "Proceda";
"permission_success_button" = "Continua";
"home_set_complete_external_link_app_content" = "Scarica l'app governativa per le ultime notizie e consigli.";
"upload_step_1_body" = "Un funzionario sanitario statale o del territorio ti contatterà per aiutarti con il caricamento volontario dei tuoi dati solo nel caso tu risulti positivo al COVID-19.\
\
Dopo aver premuto 'Sì', dovrai fornire il consenso per caricare i tuoi dati.";
"action_continue" = "Continua";
"action_upload_done" = "Continua";
"NotificationsDisabledBlurb" = "Non riceverai una notifica se il COVIDSafe non è attivo. \nModifica le impostazioni delle notifiche";
"permission_content_iOS_VOLabel" = "Il COVIDSafe necessita il Bluetooth abilitato per funzionare. Abilitando Notifiche, ricevi aggiornamenti per ricordarti quando COVIDSafe non è attivo. \
\
Seleziona 'Procedi' per abilitare:";
"PN_BluetoothStatusTitle" = "Il COVIDSafe non è attivo";
"AllowBluetoothON" = "Accesso al Bluetooth®: ON";
"AllowBluetoothOFF" = "Accesso al Bluetooth®: OFF";
"BluetoothOFF" = "Bluetooth®: OFF";
"BluetoothON" = "Bluetooth®: ON";
"BluetoothOFF_content" = "Attiva il Bluetooth® del tuo cellulare. Seleziona \"Consenti nuove connessioni\" se visualizzato.";
"home_version_number_ios" = "Versione %@ , Build %@";
"NotificationsEnabledBlurb" = "Riceverai una notifica se il COVIDSafe non è attivo. \nModifica le impostazioni delle notifiche";
"SelectedCountryTemplate" = "(+ %@) %@ è selezionato";
"AllowBluetoothON_VOLabel" = "Accesso al Bluetooth: ON";
"AllowBluetoothOFF_VOLabel" = "Accesso a Bluetooth: OFF Consenti al COVIDSafe di accedere a Bluetooth";
"BluetoothON_VOLabel" = "Bluetooth: ON";
"BluetoothOFF_VOLabel" = "Bluetooth: OFF Attiva il Bluetooth del tuo cellulare. Selezionare \"Consenti nuove connessioni'\" se visualizzato.";
"OS2b_Item2_VOLabel" = "2. Il Bluetooth deve rimanere ON.";
"PINWillExpire" = "Il codice PIN scadrà tra %@";
"ReceivePinIssue" = "Problemi a ricevere il PIN?";
"EmailPlaceholder" = "Localizzato Inserisci il tuo indirizzo e-mail (obbligatorio)";
"global_success_indication_title" = "Successo";
"newFeedback_deleteScreenshot_actionTitle" = "Eliminare Screenshot";
"global_back" = "Indietro";
"global_close" = "Chiudere";
"ShareCovidSafe_VOLabel" = "Condividi il COVIDSafe. Invita altri ad aiutare. Insieme, siamo più forti.";
"GetCoronaVirusApp_VOLabel" = "Scarica l'app Coronavirus. Scarica l'app governativa per le ultime notizie e consigli.";
"personal_details_name_characters_prompt" = "Si prega di utilizzare caratteri inglesi per il nome completo. Non utilizzare altre lingue o simboli come ',' o '?'.";
"dialog_error_uploading_message" = "Si è verificato un errore durante il caricamento delle informazioni. Riprova.";
"dialog_error_uploading_positive" = "Riprova";
"dialog_error_uploading_negative" = "Annulla";
"intro_headline" = "Insieme possiamo fermare la diffusione del COVID-19";
"intro_button" = "Voglio aiutare";
"how_it_works_headline" = "Come funziona il COVIDSafe";
"how_it_works_button" = "Avanti";
"data_privacy_headline" = "Registrazione e privacy";
"data_privacy_button" = "Avanti";
"consent_button" = "Sono d'accordo";
"registration_consent_headline" = "Consenso alla registrazione";
"registration_consent_first_paragraph" = "I miei dati di registrazione per consentire il tracciamento dei contatti da parte dei funzionari sanitari statali o del territorio.";
"registration_consent_second_paragraph" = "I miei dati di contatto da parte di altri utenti COVIDSafe dopo che essi risultano positivi per il COVID-19.";
"personal_details_headline" = "Inserisci i tuoi dati";
"personal_details_name_title" = "Nome e cognome";
"personal_details_name_error_prompt" = "Inserisci il tuo nome e cognome.";
"personal_details_age_title" = "Fascia d'età (seleziona)";
"personal_details_age_content_description" = "Seleziona la fascia d'età";
"personal_details_age_error_prompt" = "Seleziona la tua fascia d'età.";
"personal_details_post_code" = "CAP in Australia";
"personal_details_post_code_error_prompt" = "Il tuo codice postale australiano deve contenere 4 cifre.";
"personal_details_dialog_ok" = "Selezionare";
"under_sixteen_headline" = "È necessario il consenso di un genitore o di un tutore per procedere";
"under_sixteen_first_paragraph" = "Le mie informazioni di registrazione per consentire il tracciamento dei contatti da parte dei funzionari sanitari statali o del territorio.";
"under_sixteen_second_paragraph" = "Le mie informazioni di contatto da altri utenti COVIDSafe dopo che essi risultano positivi per il COVID-19.";
"select_country_or_region" = "Seleziona il paese o la regione";
"enter_number_headline" = "Inserisci il tuo numero di cellulare";
"invalid_australian_phone_number_error_prompt" = "I numeri di cellulare australiani contengono un massimo di 10 cifre.";
"enter_number_content" = "Ti invieremo un PIN di 6 cifre per verificare il tuo numero di cellulare.";
"enter_number_button" = "Ottenere il PIN";
"options_for_australia" = "Opzioni per l'Australia";
"country_region_name_af" = "Afghanistan";
"country_region_name_al" = "Albania";
"country_region_name_dz" = "Algeria";
"country_region_name_ad" = "Andorra";
"country_region_name_ai" = "Anguilla";
"country_region_name_ao" = "Angola";
"country_region_name_ag" = "Antigua e Barbuda";
"country_region_name_ar" = "Argentina";
"country_region_name_am" = "Armenia";
"country_region_name_aw" = "Aruba";
"country_region_name_au" = "Australia";
"country_region_name_at" = "Austria";
"country_region_name_bs" = "Bahamas";
"country_region_name_bh" = "Bahrain";
"country_region_name_bd" = "Bangladesh";
"country_region_name_bb" = "Barbados";
"country_region_name_by" = "Bielorussia";
"country_region_name_be" = "Belgio";
"country_region_name_bz" = "Belize";
"country_region_name_bm" = "Bermuda";
"country_region_name_bj" = "Benin";
"country_region_name_bt" = "Bhutan";
"country_region_name_bo" = "Bolivia";
"country_region_name_bw" = "Botswana";
"country_region_name_br" = "Brasile";
"country_region_name_bn" = "Brunei";
"country_region_name_bg" = "Bulgaria";
"country_region_name_bf" = "Burkina Faso";
"country_region_name_bi" = "Burundi";
"country_region_name_kh" = "Cambogia";
"country_region_name_ca" = "Canada";
"country_region_name_cm" = "Camerun";
"country_region_name_ky" = "Isole Cayman";
"country_region_name_cf" = "Repubblica Centrafricana";
"country_region_name_cl" = "Cile";
"country_region_name_cn" = "Cina";
"country_region_name_co" = "Colombia";
"country_region_name_km" = "Comore";
"country_region_name_ck" = "Isole Cook";
"country_region_name_cr" = "Costa Rica";
"country_region_name_cy" = "Cipro";
"country_region_name_hr" = "Croazia";
"country_region_name_cz" = "Repubblica Ceca";
"country_region_name_cd" = "Repubblica Democratica del Congo";
"country_region_name_dk" = "Danimarca";
"country_region_name_dj" = "Gibuti";
"country_region_name_dm" = "Dominica";
"country_region_name_do" = "Repubblica Dominicana";
"country_region_name_ec" = "Ecuador";
"country_region_name_eg" = "Egitto";
"country_region_name_sv" = "El Salvador";
"country_region_name_gq" = "Guinea Equatoriale";
"country_region_name_ee" = "Estonia";
"country_region_name_et" = "Etiopia";
"country_region_name_fo" = "Isole Faroe";
"country_region_name_fj" = "Figi";
"country_region_name_fi" = "Finlandia";
"country_region_name_fr" = "Francia";
"country_region_name_gf" = "Guiana francese";
"country_region_name_gm" = "Gambia";
"country_region_name_ge" = "Georgia";
"country_region_name_ga" = "Gabon";
"country_region_name_de" = "Germania";
"country_region_name_gh" = "Ghana";
"country_region_name_gi" = "Gibilterra";
"country_region_name_gr" = "Grecia";
"country_region_name_gl" = "Groenlandia";
"country_region_name_gd" = "Grenada";
"country_region_name_gp" = "Guadalupa";
"country_region_name_gu" = "Guam";
"country_region_name_gt" = "Guatemala";
"country_region_name_gn" = "Guinea";
"country_region_name_gw" = "Guinea-Bissau";
"country_region_name_gy" = "Guyana";
"country_region_name_ht" = "Haiti";
"country_region_name_hn" = "Honduras";
"country_region_name_hk" = "Hong Kong";
"country_region_name_hu" = "Ungheria";
"country_region_name_is" = "Islanda";
"country_region_name_in" = "India";
"country_region_name_id" = "Indonesia";
"country_region_name_iq" = "Iraq";
"country_region_name_ie" = "Irlanda";
"country_region_name_il" = "Israele";
"country_region_name_it" = "Italia";
"country_region_name_ci" = "Costa d'Avorio";
"country_region_name_jm" = "Giamaica";
"country_region_name_jp" = "Giappone";
"country_region_name_jo" = "Giordania";
"country_region_name_kz" = "Kazakistan";
"country_region_name_ki" = "Kiribati";
"country_region_name_kw" = "Kuwait";
"country_region_name_la" = "Laos";
"country_region_name_lv" = "Lettonia";
"country_region_name_lb" = "Libano";
"country_region_name_lr" = "Liberia";
"country_region_name_ly" = "Libia";
"country_region_name_li" = "Liechtenstein";
"country_region_name_lt" = "Lituania";
"country_region_name_lu" = "Lussemburgo";
"country_region_name_mw" = "Malawi";
"country_region_name_mg" = "Madagascar";
"country_region_name_my" = "Malesia";
"country_region_name_mv" = "Maldive";
"country_region_name_ml" = "Mali";
"country_region_name_mt" = "Malta";
"country_region_name_mq" = "Martinica";
"country_region_name_mr" = "Mauritania";
"country_region_name_mu" = "Mauritius";
"country_region_name_mx" = "Messico";
"country_region_name_mc" = "Monaco";
"country_region_name_mn" = "Mongolia";
"country_region_name_me" = "Montenegro";
"country_region_name_ms" = "Montserrat";
"country_region_name_ma" = "Marocco";
"country_region_name_mz" = "Mozambico";
"country_region_name_mm" = "Myanmar";
"country_region_name_na" = "Namibia";
"country_region_name_np" = "Nepal";
"country_region_name_nl" = "Paesi Bassi";
"country_region_name_an" = "Antille olandesi";
"country_region_name_nc" = "Nuova Caledonia";
"country_region_name_ni" = "Nicaragua";
"country_region_name_nz" = "Nuova Zelanda";
"country_region_name_ne" = "Niger";
"country_region_name_ng" = "Nigeria";
"country_region_name_no" = "Norvegia";
"country_region_name_om" = "Oman";
"country_region_name_pk" = "Pakistan";
"country_region_name_pw" = "Palau";
"country_region_name_ps" = "Territori palestinesi";
"country_region_name_pa" = "Panama";
"country_region_name_pg" = "Papua Nuova Guinea";
"country_region_name_py" = "Paraguay";
"country_region_name_pe" = "Perù";
"country_region_name_ph" = "Filippine";
"country_region_name_pl" = "Polonia";
"country_region_name_qa" = "Qatar";
"country_region_name_pt" = "Portogallo";
"country_region_name_cg" = "Repubblica del Congo";
"country_region_name_ro" = "Romania";
"country_region_name_ru" = "Russia";
"country_region_name_rw" = "Ruanda";
"country_region_name_kn" = "Saint Kitts e Nevis";
"country_region_name_lc" = "Santa Lucia";
"country_region_name_vc" = "Saint Vincent e Grenadine";
"country_region_name_ws" = "Samoa";
"country_region_name_sa" = "Arabia Saudita";
"country_region_name_sn" = "Senegal";
"country_region_name_rs" = "Serbia";
"country_region_name_sc" = "Seychelles";
"country_region_name_sl" = "Sierra Leone";
"country_region_name_sg" = "Singapore";
"country_region_name_si" = "Slovenia";
"country_region_name_sk" = "Slovacchia";
"country_region_name_sb" = "Isole Salomone";
"country_region_name_so" = "Somalia";
"country_region_name_za" = "Sudafrica";
"country_region_name_kr" = "Corea del Sud";
"country_region_name_es" = "Spagna";
"country_region_name_lk" = "Sri Lanka";
"country_region_name_sr" = "Suriname";
"country_region_name_sz" = "Swaziland";
"country_region_name_se" = "Svezia";
"country_region_name_ch" = "Svizzera";
"country_region_name_tw" = "Taiwan";
"country_region_name_tz" = "Tanzania";
"country_region_name_tg" = "Togo";
"country_region_name_tl" = "Timor Est";
"country_region_name_to" = "Tonga";
"country_region_name_tt" = "Trinidad e Tobago";
"country_region_name_tn" = "Tunisia";
"country_region_name_tr" = "Turchia";
"country_region_name_tm" = "Turkmenistan";
"country_region_name_tc" = "Isole Turks e Caicos";
"country_region_name_ug" = "Uganda";
"country_region_name_ua" = "Ucraina";
"country_region_name_ae" = "Emirati Arabi Uniti";
"country_region_name_uy" = "Uruguay";
"country_region_name_uz" = "Uzbekistan";
"country_region_name_gb" = "Regno Unito";
"country_region_name_us" = "Stati Uniti";
"country_region_name_vu" = "Vanuatu";
"country_region_name_ve" = "Venezuela";
"country_region_name_vn" = "Vietnam";
"country_region_name_vg" = "Isole Vergini Britanniche";
"country_region_name_zm" = "Zambia";
"country_region_name_zw" = "Zimbabwe";
"enter_pin_wrong_number" = "Questo numero di cellulare è sbagliato?";
"enter_pin_resend_pin" = "Invia di nuovo il PIN";
"permission_headline" = "Impostazioni dell'app";
"permission_success_headline" = "Ti sei registrato con successo";
"permission_success_warning" = "Tieni attive le notifiche push per il COVIDSafe in modo che possiamo informarti rapidamente se l'app non funziona correttamente.";
"home_header_active_title" = "Il COVIDSafe è attivo";
"home_header_inactive_title" = "Il COVIDSafe non è attivo";
"home_header_active_no_action_required" = "Non è richiesta alcuna ulteriore azione.";
"home_header_inactive_check_your_permissions" = "Controlla le tue impostazioni";
"home_setup_help" = "Guida";
"home_app_permission_status_title" = "Controlla le tue impostazioni";
"home_app_permission_status_subtitle" = "Il COVIDSafe non funzionerà senza le impostazioni corrette. ";
"home_data_uploaded_message" = "Aiuta a fermare la diffusione del COVID-19 e tenere traccia dei tuoi sintomi.";
"home_set_complete_external_link_share_title" = "Condividi il COVIDSafe";
"home_set_complete_external_link_share_content" = "Invita altri ad aiutare. Insieme, siamo più forti.";
"home_set_complete_external_link_news_title" = "Ultime notizie e aggiornamenti";
"home_set_complete_external_link_news_url" = "https://www.australia.gov.au";
"home_set_complete_external_link_self_isolation_register_url" = "https://covid-form.service.gov.au";
"home_set_complete_external_link_news_content" = "Vai su aus.gov.au per le ultime notizie sul Coronavirus.";
"home_set_complete_external_link_app_title" = "Scarica l'app Coronavirus";
"home_set_complete_external_link_been_contacted_title" = "Un funzionario sanitario ti ha contattato?";
"home_set_complete_external_link_been_contacted_content" = "Puoi caricare i tuoi dati solo se sei risultato positivo.";
"home_set_complete_external_link_help_topics_title" = "Argomenti della Guida";
"home_set_complete_external_link_help_topics_content" = "In caso di problemi o domande sull'app.";
"action_report_an_issue" = "Segnala un problema";
"upload_answer_yes" = "Sì";
"upload_answer_no" = "No";
"upload_step_1_header" = "Un funzionario sanitario ti sta chiedendo di caricare i tuoi dati?";
"upload_step_4_header" = "Consenso al caricamento";
"upload_step_verify_pin_header" = "Carica i tuoi dati";
"upload_step_verify_pin_sub_header" = "Un funzionario sanitario statale o del territorio invierà un PIN al tuo dispositivo tramite messaggio di testo. Inseriscilo qui sotto per caricare i tuoi dati.";
"action_verify_upload_pin" = "Carica i miei dati";
"action_verify_invalid_pin" = "PIN non valido, chiedi al funzionario sanitario di inviarti un altro PIN.";
"upload_finished_header" = "Grazie per aver aiutato a fermare la diffusione del COVID-19!";
"upload_finished_sub_header" = "Hai caricato con successo i tuoi dati sul sistema altamente sicuro di archiviazione COVIDSafe. \
\
I funzionari sanitari statali o del territorio informeranno gli altri utenti COVIDSafe che hanno registrato casi di stretto contatto con te. La tua identità rimarrà anonima per gli altri utenti.";
"upload_failed" = "Caricamento non riuscito";
"country_region_name_au2" = "Isola di Norfolk";
"country_region_name_cu" = "Cuba";
"country_region_name_cw" = "Curaçao";
"country_region_name_ir" = "Iran";
"country_region_name_sd" = "Sudan";
"under_sixteen_registration_consent_first_paragraph" = "Le mie informazioni di registrazione per consentire il tracciamento dei contatti da parte dei funzionari sanitari statali o del territorio.";
"Select_country_or_region_headline" = "Seleziona il paese o la regione";
"Enter_your_mobile_number_label" = "Inserisci il tuo numero di cellulare";
"norfolk_hint" = "Per esempio: 51234";
"home_set_complete_external_link_notifications_title_iOS" = "Le notifiche sono abilitate";
"NotificationsBlurbLink" = "Modifica le impostazioni delle notifiche";
"PN_BluetoothStatusBody" = "Assicurati che sia attivo prima di uscire di casa e quando sei in luoghi pubblici abilitando il Bluetooth®.";
"PN_ReminderTitle" = "Nessun incontro rilevato per 48 ore";
"allow_bluetooth_call" = "Consenti al COVIDSafe di accedere al Bluetooth®";
"home_set_complete_external_link_notifications_title_iOS_off" = "Le notifiche sono disabilitate";
"home_set_complete_external_link_notifications_content_iOS_off" = "Non riceverai alcuna notifica se il COVIDSafe non è attivo.";
"IntroLabel" = "Aiuta a fermare la diffusione\
e salvare vite umane.";
"us_consent_button" = "Sono d'accordo";
"home_header_uploaded_on_date_ios" = "I tuoi dati sono stati caricati su %@";
"upload_consent_button" = "Sono d'accordo";
"Done" = "Fatto";
"Next" = "Avanti";
"ValidationError" = "Errore di convalida";
"EnterPhoneReVerify" = "Inserisci il tuo numero di cellulare per effettuare una nuova verifica";
"EnterPINSent" = "Inserire il PIN inviato a %@";
"CodeHasExpired" = "Il tuo codice è scaduto";
"InvalidOTP" = "Deve essere un codice di 6 cifre";
"PhoneVerificationErrorTitle" = "Errore nella verifica del numero di cellulare";
"PhoneVerificationErrorMessage" = "Controlla i tuoi dati e riprova.";
"PhoneNumberFormatErrorTitle" = "Formato numerico errato";
"PhoneNumberFormatErrorMessage" = "Si prega di inserire un numero di cellulare.";
"ReportAnIssue" = "Segnala un problema";
"FoundIssueWithApp" = "Hai riscontrato un problema nell'app COVIDSafe?";
"IssueDescPlaceholder" = "Si prega di descrivere il problema";
"IssueFooter" = "Potremmo contattarti per ulteriori dettagli sul tuo feedback. Il tuo indirizzo email non verrà utilizzato per nessun altro scopo.";
"IssueThankYou" = "Grazie! Abbiamo ricevuto il tuo feedback.";
"OS2b_Item1" = "1. Quando esci di casa, porti il cellulare con te e assicurati che il COVIDSafe sia attivo.";
"OS2b_Item3Underline" = "Per saperne di più";
"PairingRequestsInfoUnderline" = "richieste di accoppiamento";
"InformationUploaded" = "I tuoi dati sono stati caricati su %@";
"UploadFailed" = "Caricamento non riuscito. Riprova più tardi.";
"UploadFailedErrorMessage" = "Si prega di riprovare più tardi.";
"global_cancel_button_title" = "Annulla";
"global_send_button_title" = "Invia";
"global_sending_indication_title" = "Invio";
"entryPrompt_alert_title" = "Casella di Feedback";
"entryPrompt_alert_message" = "Ciao amico, come vorresti procedere?";
"entryPrompt_newFeedback_button_title" = "Nuovo Feedback";
"newFeedbackFlow_navigationTitle" = "Segnala un problema";
"newFeedback_deleteScreenshotConfirmation_message" = "Questo screenshot verrà eliminato definitivamente.";
"newFeedback_send_errorMessage" = "Errore durante l'invio del Feedback";
"newFeedback_noMessage_errorMessage" = "Dicci qualcosa prima di inviare.";
"newFeedback_invalidEmail_errorMessage" = "Si prega di inserire un indirizzo email valido!";
"PINNumber_VO_Label" = "Codice PIN";
"PN_MobileNumber_VOLabel" = "Numero di cellulare";
"global_OK" = "OK";
"global_double_tap" = "doppio tocco per modificare";
"PostcodeValidationErrorMessage" = "Si prega inserire un codice postale australiano valido.";
"UploadData_VOLabel" = "Un funzionario sanitario ti ha contattato? Puoi caricare le tue informazioni solo se sei risultato positivo.";
"LatestNews_VOLabel" = "Ultime notizie e aggiornamenti. Vai su aus.gov.au per le ultime notizie sul Coronavirus.";
"HelpTopics_VOLabel" = "Argomenti della Guida. In caso di problemi o domande sull'app.";
"NotificationsEnabled_VOLabel" = "Le notifiche sono abilitate. Riceverai una notifica se COVIDSafe non è attivo. \
Modifica le impostazioni di notifica";
"NotificationsDisabled_VOLabel" = "Le notifiche sono disabilitate. Non riceverai una notifica se COVIDSafe non è attivo. \
Modifica le impostazioni di notifica";
"update_available_title" = "Aggiornamento disponibile!";
"update_available_message" = "Abbiamo apportato miglioramenti a COVIDSafe.";
"update_available_app_store_btn" = "Vai all'App Store";
"update_available_dismiss_btn" = "Ricordamelo più tardi";

View file

@ -1,3 +1,68 @@
"data_privacy_content_VO" = "COVIDSafe에 등록하기 전에 COVIDSafe *개인정보 보호 정책을* 읽는 것이 중요합니다. \
\
당신이 16세 미만이라면, 부모 또는 보호자도 반드시 *개인정보 보호 정책을* 읽어야합니다. \
\
COVIDSafe의 사용은 전적으로 자발적입니다. 언제든지 앱을 설치 또는 삭제할 수 있습니다. COVIDSafe를 삭제하면, 당신은 보안 서버에 있는 자신의 정보 삭제 또한 요청할 수 있습니다. \
\
COVIDSafe에 등록하려면, 성명, 휴대폰 번호, 연령대 및 우편번호를 입력해야 합니다. \
\
등록 시 제출한 정보 및 당신의 COVIDSafe 사용정보는 보안성 높은 서버에 수집 및 저장됩니다. \
\
COVIDSafe는 당신의 위치정보를 수집하지 않습니다. \
\
COVIDSafe는 접촉 시각 및 당신과 접촉한 다른 COVIDSafe 사용자의 익명 ID 코드를 기록합니다. \
\
다른 COVIDSafe 사용자의 장치에 당신의 익명 ID 코드 및 당신과의 접촉 시각이 기록될 것입니다. \
\
다른 사용자가 COVID-19 양성 결과가 나오면, 그들이 자신의 접촉정보를 업로드 할 수 있으며, 주 또는 테리토리 보건 담당자가 접촉추적 목적으로 당신에게 연락을 취할 수 있습니다. \
\
당신의 등록 정보는 접촉추적 및 COVIDSafe의 적절하고 합법적인 기능을 위해서만 사용 또는 공개됩니다. \
\
자세한 정보는 호주 정부 보건부 웹사이트에서 확인할 수 있습니다. \
\
자신의 정보에 대한 권리와 개인정보의 취급 및 공유 방법에 대한 자세한 내용은 COVIDSafe *개인정보 보호 정책을* 참조하십시오.";
"UILaunchStoryboardName" = "LaunchScreen_ko";
"ShareCovidSafe_VOLabel" = "COVIDSafe를 공유하세요. 다른 이들에게 참여를 권유하세요. 우리는 함께할 때 더 강해집니다.";
"UploadData_VOLabel" = "보건 담당자가 여러분에게 연락했습니까? 양성 검사 결과를 받은 경우에만 여러분의 정보를 업로드할 수 있습니다.";
"HelpTopics_VOLabel" = "도움말 항목. 앱에 대한 질문이나 문제가 있는 경우.";
"NotificationsEnabled_VOLabel" = "알림이 켜졌습니다. COVIDSafe가 활성화되어 있지 않으면 알림을 받게 됩니다. 알림 설정 변경하기";
"NotificationsDisabled_VOLabel" = "알림이 꺼졌습니다. COVIDSafe가 활성화되어 있지 않으면 알림을 받을 수 없습니다. \
알림 설정 변경하기";
"permission_content_iOS_VOLabel" = "COVIDSafe가 작동하려면 블루투스가 활성화되어 있어야 합니다. 알림을 켜면 COVIDSafe가 활성화되지 않았음을 알리는 업데이트를 받게 됩니다. \
\
'진행'을 선택하여 다음을 활성화 하십시오.";
"permission_content_iOS_2_VOLabel" = "1. 블루투스\
2. 알림\
\
COVIDSafe는 페어링 요청을 보내지 않습니다.";
"OS1b_TopParagraph_VOLabel" = "블루투스® 신호는 당신이 언제 다른 COVIDSafe 사용자 근처에 있었는지를 확인하는 데 사용됩니다. \
당신과 다른 COVIDSafe 사용자들 사이의 모든 근거리 접촉상황들은 근거리 접촉정보로 기록됩니다. 이 정보는 암호화되어 당신의 휴대폰에만 저장됩니다. \
COVIDSafe 사용자로서 당신이 COVID-19에 양성 결과가 나오면, 주 또는 테리토리 보건 담당자가 당신에게 연락할 것입니다. 당신이 자신의 근거리 접촉정보를 보안성 높은 정보 저장 체계에 자발적으로 업로드할 수 있도록 도와줄 것입니다. \
또한 양성 결과가 나온 다른 COVIDSafe 사용자와 당신이 가까이 접촉한 경우, 주 또는 테리토리 보건 담당자가 당신에게 연락을 취할 수 있습니다. \
자세한 내용은 *도움말 항목* 페이지를 참조하세요";
"how_it_works_content" = "블루투스® 신호는 당신이 언제 다른 COVIDSafe 사용자 근처에 있었는지를 확인하는 데 사용됩니다. \
\
당신과 다른 COVIDSafe 사용자들 사이의 모든 근거리 접촉상황들은 근거리 접촉정보로 기록됩니다. 이 정보는 암호화되어 당신의 휴대폰에만 저장됩니다. \
\
COVIDSafe 사용자로서 당신이 COVID-19에 양성 결과가 나오면, 주 또는 테리토리 보건 담당자가 당신에게 연락할 것입니다. 당신이 자신의 근거리 접촉정보를 보안성 높은 정보 저장 체계에 자발적으로 업로드할 수 있도록 도와줄 것입니다. \
\
또한 양성 결과가 나온 다른 COVIDSafe 사용자와 당신이 가까이 접촉한 경우, 주 또는 테리토리 보건 담당자가 당신에게 연락을 취할 수 있습니다. \
\
자세한 내용은 * 도움말 항목 * 페이지를 참조하세요";
"update_available_app_store_btn" = "앱 스토어 가기";
"update_available_dismiss_btn" = "나중에 다시 알려 주세요";
"personal_details_name_characters_prompt" = "성명에는 영어 알파벳을 사용하십시오. 다른 언어, 혹은 ',' 또는 '?'와 같은 기호를 사용하지 마십시오.";
"AllowBluetoothON_VOLabel" = "블루투스 접속: ON";
"AllowBluetoothOFF_VOLabel" = "블루투스 접속: OFF COVIDSafe의 블루투스 접속을 허용해 주세요";
"BluetoothOFF_VOLabel" = "블루투스: OFF 휴대폰의 블루투스를 켜세요. '새 연결 허용'이 표시되면 선택하세요.";
"BluetoothON_VOLabel" = "블루투스: ON";
"OS2b_Item2_VOLabel" = "2. 블루투스는 켜져 있어야 합니다.";
"PINNumber_VO_Label" = "핀 번호";
"PN_MobileNumber_VOLabel" = "휴대폰 번호";
"GetCoronaVirusApp_VOLabel" = "코로나 바이러스 앱을 다운로드하세요. 최신 뉴스 및 조언을 보려면 정부 앱을 다운로드하세요.";
"LatestNews_VOLabel" = "최신 뉴스 및 업데이트. 최신 코로나 바이러스 뉴스를 보려면 aus.gov.au를 방문하세요.";
"update_available_title" = "업데이트 가능!";
"update_available_message" = "COVIDSafe를 개선하고 있습니다.";
"data_privacy_content" = "COVIDSafe에 등록하기 전에 COVIDSafe *개인정보 보호 정책을* 읽는 것이 중요합니다. \ "data_privacy_content" = "COVIDSafe에 등록하기 전에 COVIDSafe *개인정보 보호 정책을* 읽는 것이 중요합니다. \
\ \
당신이 16세 미만이라면, 부모 또는 보호자도 반드시 *개인정보 보호 정책을* 읽어야합니다. \ 당신이 16세 미만이라면, 부모 또는 보호자도 반드시 *개인정보 보호 정책을* 읽어야합니다. \
@ -22,18 +87,8 @@ COVIDSafe는 접촉 시각 및 당신과 접촉한 다른 COVIDSafe 사용자의
\ \
자신의 정보에 대한 권리와 개인정보의 취급 및 공유 방법에 대한 자세한 내용은 COVIDSafe *개인정보 보호 정책을* 참조하십시오."; 자신의 정보에 대한 권리와 개인정보의 취급 및 공유 방법에 대한 자세한 내용은 COVIDSafe *개인정보 보호 정책을* 참조하십시오.";
"intro_headline" = "함께 할 때 우리는 COVID-19의 확산을 막을 수 있습니다"; "intro_headline" = "함께 할 때 우리는 COVID-19의 확산을 막을 수 있습니다";
"personal_details_name_characters_prompt" = "";
"OS2b_Item3Underline" = "더 알아보세요"; "OS2b_Item3Underline" = "더 알아보세요";
"OS2b_Item3" = "3. COVIDSafe는 페어링 요청을 보내지 않습니다. 더 알아보세요."; "OS2b_Item3" = "3. COVIDSafe는 페어링 요청을 보내지 않습니다. 더 알아보세요.";
"how_it_works_content" = "블루투스® 신호는 당신이 언제 다른 COVIDSafe 사용자 근처에 있는지를 확인하는 데 사용됩니다. \
\
당신과 다른 COVIDSafe 사용자들 사이의 모든 근거리 접촉상황들은 근거리 접촉정보로 기록됩니다. 이 정보는 암호화되어 당신의 휴대폰에만 저장됩니다. \
\
COVIDSafe 사용자로서 당신이 COVID-19에 양성 결과가 나오면, 주 또는 테리토리 보건 담당자가 당신에게 연락할 것입니다. 당신이 자신의 근거리 접촉정보를 보안성 높은 정보 저장 체계에 자발적으로 업로드할 수 있도록 도와줄 것입니다. \
\
또한 양성 결과가 나온 다른 COVIDSafe 사용자와 당신이 가까이 접촉한 경우, 주 또는 테리토리 보건 담당자가 당신에게 연락을 취할 수 있습니다. \
\
자세한 내용은 * 도움말 항목 * 페이지를 참조하세요";
"registration_consent_content" = "본인은 호주 보건부 (Department of Health)의 다음과 같은 정보 수집에 동의합니다."; "registration_consent_content" = "본인은 호주 보건부 (Department of Health)의 다음과 같은 정보 수집에 동의합니다.";
"under_sixteen_second_paragraph" = "다른 COVIDSafe 사용자가 COVID-19 양성 결과를 받은 후 그 사용자와 나 사이의 접촉정보."; "under_sixteen_second_paragraph" = "다른 COVIDSafe 사용자가 COVID-19 양성 결과를 받은 후 그 사용자와 나 사이의 접촉정보.";
"permission_success_headline" = "등록에 성공했습니다."; "permission_success_headline" = "등록에 성공했습니다.";
@ -45,7 +100,6 @@ COVIDSafe 사용자로서 당신이 COVID-19에 양성 결과가 나오면, 주
\ \
자세한 내용은 COVIDSafe *개인 정보 보호 정책* 을 참조하세요."; 자세한 내용은 COVIDSafe *개인 정보 보호 정책* 을 참조하세요.";
"upload_finished_header" = "COVID-19의 확산을 막는 데 협조해 주셔서 감사합니다!"; "upload_finished_header" = "COVID-19의 확산을 막는 데 협조해 주셔서 감사합니다!";
"pin_issue" = "* PIN을 받는 데 문제가 있습니까? *";
"permission_content_iOS" = "COVIDSafe 작동을 위해 블루투스®가 활성화되어 있어야 합니다. 알림기능을 활성화하면, COVIDSafe가 비활성화되어 있을 때 알림을 받게 됩니다. \ "permission_content_iOS" = "COVIDSafe 작동을 위해 블루투스®가 활성화되어 있어야 합니다. 알림기능을 활성화하면, COVIDSafe가 비활성화되어 있을 때 알림을 받게 됩니다. \
\ \
'진행'을 선택하여 활성화 하십시오:"; '진행'을 선택하여 활성화 하십시오:";
@ -99,23 +153,6 @@ COVIDSafe 사용자로서 당신이 COVID-19에 양성 결과가 나오면, 주
"global_close" = "닫기"; "global_close" = "닫기";
"PostcodeValidationErrorMessage" = "유효한 호주 우편 번호를 입력하세요."; "PostcodeValidationErrorMessage" = "유효한 호주 우편 번호를 입력하세요.";
"global_double_tap" = "두 번 탭해서 수정하세요"; "global_double_tap" = "두 번 탭해서 수정하세요";
"OS1b_TopParagraph_VOLabel" = "";
"permission_content_iOS_VOLabel" = "";
"permission_content_iOS_2_VOLabel" = "";
"NotificationsDisabled_VOLabel" = "";
"NotificationsEnabled_VOLabel" = "";
"HelpTopics_VOLabel" = "";
"LatestNews_VOLabel" = "";
"GetCoronaVirusApp_VOLabel" = "";
"UploadData_VOLabel" = "";
"ShareCovidSafe_VOLabel" = "";
"PN_MobileNumber_VOLabel" = "";
"PINNumber_VO_Label" = "";
"OS2b_Item2_VOLabel" = "";
"BluetoothOFF_VOLabel" = "";
"BluetoothON_VOLabel" = "";
"AllowBluetoothOFF_VOLabel" = "";
"AllowBluetoothON_VOLabel" = "";
"home_header_uploaded_on_date_ios" = "당신의 정보가 %@에 업로드 되었습니다."; "home_header_uploaded_on_date_ios" = "당신의 정보가 %@에 업로드 되었습니다.";
"us_consent_button" = "동의"; "us_consent_button" = "동의";
"IntroLabel" = "바이러스 확산을 방지해서 \ "IntroLabel" = "바이러스 확산을 방지해서 \

View file

@ -1,18 +1,8 @@
"personal_details_name_characters_prompt" = "Please use English characters for your full name. Do not use other languages or symbols like ',' or '?'."; "data_privacy_content_VO" = "Điều quan trọng là bạn phải đọc *chính sách bảo mật* của COVIDSafe trước khi đăng ký COVIDSafe. \
"how_it_works_content" = "Tín hiệu Bluetooth® được sử dụng để xác định khi bạn ở gần người dùng COVIDSafe khác. \
\
Mọi trường hợp tiếp xúc gần giữa bạn và những người dùng COVIDSafe khác đều được ghi nhận để tạo thông tin về tiếp xúc gần. Thông tin được mã hóa và chỉ được lưu trữ trong điện thoại của bạn. \
\
Nếu bạn xét nghiệm dương tính với COVID-19 với tư cách là người dùng COVIDSafe, nhân viên y tế của tiểu bang hoặc lãnh thổ sẽ liên hệ với bạn. Họ sẽ hỗ trợ tải lên thông tin về tiếp xúc gần của bạn một cách tự nguyện vào hệ thống lưu trữ thông tin có độ an toàn cao \
\
Các nhân viên y tế của tiểu bang hoặc lãnh thổ cũng có thể liên hệ với bạn nếu bạn tiếp xúc gần với một người dùng COVIDSafe khác có kết quả xét nghiệm dương tính. \
\
Để biết thêm thông tin, vui lòng tham khảo trang *Chủ đề Trợ giúp*";
"data_privacy_content" = "Điều quan trọng là bạn phải đọc *chính sách bảo mật* của COVIDSafe trước khi đăng ký COVIDSafe. \
\ \
Nếu bạn dưới 16 tuổi, cha mẹ/người giám hộ của bạn cũng phải đọc *chính sách bảo mật*. \ Nếu bạn dưới 16 tuổi, cha mẹ/người giám hộ của bạn cũng phải đọc *chính sách bảo mật*. \
\ \
Sử dụng COVIDSafe là hoàn toàn tự nguyện. Bạn có thể cài đặt hoặc xóa ứng dụng bất cứ lúc nào. Nếu bạn xóa COVIDSafe, *bạn cũng có thể yêu cầu xóa thông tin của mình* khỏi máy chủ bảo mật. \ Sử dụng COVIDSafe là hoàn toàn tự nguyện. Bạn có thể cài đặt hoặc xóa ứng dụng này bất cứ lúc nào. Nếu bạn xóa COVIDSafe, *bạn cũng có thể yêu cầu xóa thông tin của mình* khỏi máy chủ bảo mật. \
\ \
Để đăng ký COVIDSafe, bạn cần nhập tên, số điện thoại di động, độ tuổi và mã bưu điện. \ Để đăng ký COVIDSafe, bạn cần nhập tên, số điện thoại di động, độ tuổi và mã bưu điện. \
\ \
@ -22,7 +12,7 @@ COVIDSafe sẽ không thu thập thông tin về vị trí của bạn. \
\ \
COVIDSafe sẽ lưu ý thời gian tiếp xúc và mã ID ẩn danh của những người dùng COVIDSafe khác mà bạn tiếp xúc. \ COVIDSafe sẽ lưu ý thời gian tiếp xúc và mã ID ẩn danh của những người dùng COVIDSafe khác mà bạn tiếp xúc. \
\ \
Những người dùng COVIDSafe khác mà bạn tiếp xúc sẽ ghi lại mã ID ẩn danh và thời gian tiếp xúc với bạn trên thiết bị của họ. \ Những người dùng COVIDSafe khác mà bạn tiếp xúc sẽ ghi lại mã ID ẩn danh và thời gian tiếp xúc với bạn trên máy của họ. \
\ \
Nếu người dùng khác xét nghiệm dương tính với COVID-19, họ có thể đăng tải thông tin tiếp xúc của họ và nhân viên y tế của tiểu bang hoặc lãnh thổ có thể liên hệ với bạn nhằm mục đích truy tìm việc tiếp xúc. \ Nếu người dùng khác xét nghiệm dương tính với COVID-19, họ có thể đăng tải thông tin tiếp xúc của họ và nhân viên y tế của tiểu bang hoặc lãnh thổ có thể liên hệ với bạn nhằm mục đích truy tìm việc tiếp xúc. \
\ \
@ -30,8 +20,76 @@ Chi tiết đăng ký của bạn sẽ chỉ được sử dụng hoặc tiết
\ \
Thông tin thêm có sẵn tại trang mạng của *Bộ Y tế Chính phủ Úc*. \ Thông tin thêm có sẵn tại trang mạng của *Bộ Y tế Chính phủ Úc*. \
\ \
Xem *chính sách bảo mật* của COVIDSafe để biết thêm chi tiết về các quyền về thông tin của bạn và cách xử lý và chia sẻ thông tin đó."; Xem *chính sách bảo mật* của COVIDSafe để biết thêm chi tiết về quyền về thông tin của bạn và cách xử lý và chia sẻ thông tin đó.";
"pin_issue" = "*Có vấn đề với việc nhận mã PIN của bạn?*"; "UILaunchStoryboardName" = "LaunchScreen_vi";
"how_it_works_content" = "Tín hiệu Bluetooth® được sử dụng để xác định khi bạn ở gần người dùng COVIDSafe khác. \
\
Mọi trường hợp tiếp xúc gần giữa bạn và những người dùng COVIDSafe khác đều được ghi nhận để tạo thông tin về tiếp xúc gần. Thông tin được mã hóa và chỉ được lưu trữ trong điện thoại của bạn. \
\
Nếu bạn xét nghiệm dương tính với COVID-19 và là người dùng COVIDSafe, nhân viên y tế của tiểu bang hoặc lãnh thổ sẽ liên hệ với bạn. Họ sẽ tự nguyện hỗ trợ đăng tải thông tin về tiếp xúc gần của bạn vào hệ thống lưu trữ thông tin có độ an toàn cao \
\
Các nhân viên y tế của tiểu bang hoặc lãnh thổ cũng có thể liên hệ với bạn nếu bạn tiếp xúc gần với một người dùng COVIDSafe khác có kết quả xét nghiệm dương tính. \
\
Để biết thêm thông tin, vui lòng tham khảo trang *Chủ đề Trợ giúp*";
"data_privacy_content" = "Điều quan trọng là bạn phải đọc *chính sách bảo mật* của COVIDSafe trước khi đăng ký COVIDSafe. \
\
Nếu bạn dưới 16 tuổi, cha mẹ/người giám hộ của bạn cũng phải đọc *chính sách bảo mật*. \
\
Sử dụng COVIDSafe là hoàn toàn tự nguyện. Bạn có thể cài đặt hoặc xóa ứng dụng này bất cứ lúc nào. Nếu bạn xóa COVIDSafe, *bạn cũng có thể yêu cầu xóa thông tin của mình* khỏi máy chủ bảo mật. \
\
Để đăng ký COVIDSafe, bạn cần nhập tên, số điện thoại di động, độ tuổi và mã bưu điện. \
\
Thông tin bạn gửi khi đăng ký, và thông tin về việc sử dụng COVIDSafe của bạn sẽ được thu thập và lưu trữ trên một máy chủ có độ an toàn cao. \
\
COVIDSafe sẽ không thu thập thông tin về vị trí của bạn. \
\
COVIDSafe sẽ lưu ý thời gian tiếp xúc và mã ID ẩn danh của những người dùng COVIDSafe khác mà bạn tiếp xúc. \
\
Những người dùng COVIDSafe khác mà bạn tiếp xúc sẽ ghi lại mã ID ẩn danh và thời gian tiếp xúc với bạn trên máy của họ. \
\
Nếu người dùng khác xét nghiệm dương tính với COVID-19, họ có thể đăng tải thông tin tiếp xúc của họ và nhân viên y tế của tiểu bang hoặc lãnh thổ có thể liên hệ với bạn nhằm mục đích truy tìm việc tiếp xúc. \
\
Chi tiết đăng ký của bạn sẽ chỉ được sử dụng hoặc tiết lộ để theo dõi việc tiếp xúc và cho hoạt động đúng đắn và hợp pháp của COVIDSafe. \
\
Thông tin thêm có sẵn tại trang mạng của *Bộ Y tế Chính phủ Úc*. \
\
Xem *chính sách bảo mật* của COVIDSafe để biết thêm chi tiết về quyền về thông tin của bạn và cách xử lý và chia sẻ thông tin đó.";
"country_region_name_cd" = "Cộng hòa Dân chủ Congo";
"PINNumber_VO_Label" = "Mã số PIN";
"UploadData_VOLabel" = "Nhân viên y tế có liên lạc với bạn không? Bạn chỉ có thể đăng tải thông tin của mình nếu có kết quả xét nghiệm dương tính.";
"GetCoronaVirusApp_VOLabel" = "Tải ứng dụng Coronavirus. Tải ứng dụng chính phủ để biết những tin tức và lời khuyên mới nhất.";
"LatestNews_VOLabel" = "Tin tức và cập nhật mới nhất. Vào trang aus.gov.au để biết tin tức mới nhất về coronavirus.";
"HelpTopics_VOLabel" = "Chủ đề trợ giúp. Nếu bạn gặp vấn đề hoặc có thắc mắc về ứng dụng này.";
"permission_content_iOS_VOLabel" = "Bật Bluetooth để COVIDSafe hoạt động. Khi bật Thông báo, bạn nhận được các cập nhật để nhắc nhở khi COVIDSafe không hoạt động. \
\
Chọn 'Kích hoạt' để bật:";
"permission_content_iOS_2_VOLabel" = "1. Bluetooth \
2. Thông báo \
\
COVIDSafe không gửi yêu cầu kết nối.";
"OS1b_TopParagraph_VOLabel" = "Tín hiệu Bluetooth được sử dụng để xác định khi bạn ở gần người dùng COVIDSafe khác. \
Mọi trường hợp tiếp xúc gần giữa bạn và những người dùng COVIDSafe khác đều được ghi nhận để tạo thông tin về mối tiếp xúc gần. Thông tin này sẽ được mã hóa và chỉ lưu trữ trong điện thoại của bạn. \
Nếu bạn xét nghiệm dương tính với COVID-19 và là người dùng COVIDSafe, nhân viên y tế của tiểu bang hoặc lãnh thổ sẽ liên hệ với bạn. Họ sẽ tự nguyện hỗ trợ đăng tải thông tin về tiếp xúc gần của bạn vào hệ thống lưu trữ thông tin có độ an toàn cao \
Các nhân viên y tế của tiểu bang hoặc lãnh thổ cũng có thể liên hệ với bạn nếu bạn tiếp xúc gần với một người dùng COVIDSafe khác có kết quả xét nghiệm dương tính. \
Để biết thêm thông tin, vui lòng tham khảo trang Chủ đề Trợ giúp";
"personal_details_name_characters_prompt" = "Vui lòng sử dụng các ký tự tiếng Anh để nhập họ và tên đầy đủ của bạn. Không sử dụng các ngôn ngữ khác hoặc ký hiệu như ',' hoặc '?'.";
"update_available_app_store_btn" = "Vào App Store";
"newFeedback_noMessage_errorMessage" = "Hãy đóng góp ý kiến cho chúng tôi trước khi gửi.";
"newFeedback_invalidEmail_errorMessage" = "Vui lòng nhập địa chỉ email hợp lệ!";
"AllowBluetoothON_VOLabel" = "Truy cập Bluetooth: BẬT";
"AllowBluetoothOFF_VOLabel" = "Truy cập Bluetooth: TẮT Cho phép COVIDSafe truy cập Bluetooth";
"BluetoothON_VOLabel" = "Bluetooth: BẬT";
"BluetoothOFF_VOLabel" = "Bluetooth: TẮT Bật Bluetooth trên điện thoại của bạn. Chọn 'Cho phép Kết nối Mới' nếu thấy hiển thị.";
"OS2b_Item2_VOLabel" = "2. Bluetooth nên luôn giữ ở trạng thái BẬT";
"PN_MobileNumber_VOLabel" = "Số điện thoại di động";
"ShareCovidSafe_VOLabel" = "Chia sẻ COVIDSafe. Mời người khác giúp đỡ. Cùng nhau, chúng ta mạnh mẽ hơn.";
"NotificationsEnabled_VOLabel" = "Thông báo được kích hoạt. Bạn sẽ nhận được thông báo nếu COVIDSafe không hoạt động. \
Thay đổi cài đặt thông báo";
"NotificationsDisabled_VOLabel" = "Thông báo bị vô hiệu hóa. Bạn sẽ không nhận được thông báo nếu COVIDSafe không hoạt động. \
Thay đổi cài đặt thông báo";
"update_available_title" = "Cập nhật có sẵn!";
"update_available_message" = "Chúng tôi đã và đang cải thiện COVIDSafe.";
"update_available_dismiss_btn" = "Nhắc tôi sau";
"upload_step_4_sub_header" = "Nếu bạn không đồng ý, thông tin về việc tiếp xúc gần của bạn sẽ không được đăng tải. \ "upload_step_4_sub_header" = "Nếu bạn không đồng ý, thông tin về việc tiếp xúc gần của bạn sẽ không được đăng tải. \
\ \
Nếu bạn đồng ý, thông tin về việc tiếp xúc gần của bạn sẽ được đăng tải và chia sẻ với các nhân viên y tế của tiểu bang hoặc lãnh thổ cho các mục đích truy tìm tiếp xúc. \ Nếu bạn đồng ý, thông tin về việc tiếp xúc gần của bạn sẽ được đăng tải và chia sẻ với các nhân viên y tế của tiểu bang hoặc lãnh thổ cho các mục đích truy tìm tiếp xúc. \
@ -87,25 +145,6 @@ Nếu bạn đồng ý, thông tin về việc tiếp xúc gần của bạn s
"global_close" = "Đóng"; "global_close" = "Đóng";
"global_double_tap" = "nhấn đúp để chỉnh sửa"; "global_double_tap" = "nhấn đúp để chỉnh sửa";
"PostcodeValidationErrorMessage" = "Vui lòng nhập mã bưu điện Úc hợp lệ."; "PostcodeValidationErrorMessage" = "Vui lòng nhập mã bưu điện Úc hợp lệ.";
"newFeedback_noMessage_errorMessage" = "Hãy đóng góp ý kiến cho chúng tôi trước khi gửi.";
"newFeedback_invalidEmail_errorMessage" = "Vui lòng nhập địa chỉ email hợp lệ!";
"OS1b_TopParagraph_VOLabel" = "";
"permission_content_iOS_VOLabel" = "";
"permission_content_iOS_2_VOLabel" = "";
"NotificationsDisabled_VOLabel" = "";
"NotificationsEnabled_VOLabel" = "";
"HelpTopics_VOLabel" = "";
"LatestNews_VOLabel" = "";
"GetCoronaVirusApp_VOLabel" = "";
"UploadData_VOLabel" = "";
"ShareCovidSafe_VOLabel" = "";
"PN_MobileNumber_VOLabel" = "";
"PINNumber_VO_Label" = "";
"OS2b_Item2_VOLabel" = "";
"BluetoothOFF_VOLabel" = "";
"BluetoothON_VOLabel" = "";
"AllowBluetoothOFF_VOLabel" = "";
"AllowBluetoothON_VOLabel" = "";
"us_consent_button" = "Tôi đồng ý"; "us_consent_button" = "Tôi đồng ý";
"IntroLabel" = "Giúp ngăn chặn sự lây lan\ "IntroLabel" = "Giúp ngăn chặn sự lây lan\
và cứu mạng sống."; và cứu mạng sống.";
@ -212,7 +251,6 @@ Họ cần phải đăng ký bằng máy điện thoại và số điện thoạ
"country_region_name_hr" = "Croatia"; "country_region_name_hr" = "Croatia";
"country_region_name_cy" = "Síp"; "country_region_name_cy" = "Síp";
"country_region_name_cz" = "Cộng hòa Séc"; "country_region_name_cz" = "Cộng hòa Séc";
"country_region_name_cd" = "Cộng hòa dân chủ Congo";
"country_region_name_dk" = "Đan mạch"; "country_region_name_dk" = "Đan mạch";
"country_region_name_dj" = "Djibouti"; "country_region_name_dj" = "Djibouti";
"country_region_name_dm" = "Dominica"; "country_region_name_dm" = "Dominica";

View file

@ -1,4 +1,100 @@
"personal_details_name_characters_prompt" = "Please use English characters for your full name. Do not use other languages or symbols like ',' or '?'."; "data_privacy_content_VO" = "在注册COVIDSafe之前请务必阅读COVIDSafe隐私政策。 \
\
如果您未满16岁您的父母/监护人也必须阅读隐私政策。 \
\
使用COVIDSafe属自愿行为。您可以随时安装或删除该应用程序。如果删除COVIDSafe您也可以要求从安全服务器中删除您的个人信息。 \
\
要注册使用COVIDSafe您需要输入姓名手机号码年龄段和邮政编码。 \
\
注册时提交的信息以及有关COVIDSafe使用的信息将被收集并储存在高度安全的服务器上。 \
\
COVIDSafe不会收集您的位置信息。 \
\
COVIDSafe将记录发生接触的时间以及与您接触的其他COVIDSafe用户的匿名ID代码。 \
\
与您接触的其他COVIDSafe用户将在其手机上看到一个匿名ID代码以及与您发生接触的时间。 \
\
如果其他用户对COVID-19的测试结果呈阳性他们可以上传自己的联系信息。为了追踪接触者州或领地的卫生官员有可能会与您联系。 \
\
您的详细注册信息仅在追踪接触者以及维持COVIDSafe的合法正常运行时候使用或披露。 \
\
如需更多信息,请访问澳大利亚政府卫生部网站。 \
\
如需进一步了解您对个人信息的权利以及个人信息的处理和共享方式请参阅COVIDSafe隐私策略。";
"UILaunchStoryboardName" = "LaunchScreen_zh_Hans";
"data_privacy_content" = "在注册COVIDSafe之前请务必阅读COVIDSafe隐私政策。 \
\
如果您未满16岁您的父母/监护人也必须阅读隐私政策。 \
\
使用COVIDSafe属自愿行为。您可以随时安装或删除该应用程序。如果删除COVIDSafe您也可以要求从安全服务器中删除您的个人信息。 \
\
要注册使用COVIDSafe您需要输入姓名手机号码年龄段和邮政编码。 \
\
注册时提交的信息以及有关COVIDSafe使用的信息将被收集并储存在高度安全的服务器上。 \
\
COVIDSafe不会收集您的位置信息。 \
\
COVIDSafe将记录发生接触的时间以及与您接触的其他COVIDSafe用户的匿名ID代码。 \
\
与您接触的其他COVIDSafe用户将在其手机上看到一个匿名ID代码以及与您发生接触的时间。 \
\
如果其他用户对COVID-19的测试结果呈阳性他们可以上传自己的联系信息。为了追踪接触者州或领地的卫生官员有可能会与您联系。 \
\
您的详细注册信息仅在追踪接触者以及维持COVIDSafe的合法正常运行时候使用或披露。 \
\
如需更多信息,请访问澳大利亚政府卫生部网站。 \
\
如需进一步了解您对个人信息的权利以及个人信息的处理和共享方式请参阅COVIDSafe隐私策略。";
"AllowBluetoothON_VOLabel" = "访问蓝牙®:开";
"AllowBluetoothOFF_VOLabel" = "访问蓝牙:关 允许COVIDSafe访问蓝牙";
"BluetoothON_VOLabel" = "蓝牙®:开";
"BluetoothOFF_VOLabel" = "蓝牙:关 开启手机的蓝牙。请选择屏幕上显示的“允许新连接”。";
"OS2b_Item2_VOLabel" = "2.蓝牙®应该保持开启状态。";
"PINNumber_VO_Label" = "PIN码";
"PN_MobileNumber_VOLabel" = "手机号码";
"ShareCovidSafe_VOLabel" = "共享COVIDSafe。邀请他人助力。万众一心其利断金。";
"UploadData_VOLabel" = "是否有卫生官员联系过您?只有在您的病毒检测呈阳性时,才能上传个人信息。";
"GetCoronaVirusApp_VOLabel" = "获取冠状病毒应用程序。下载政府应用程序以获取最新消息和建议。";
"LatestNews_VOLabel" = "最新消息及更新。前往aus.gov.au了解冠状病毒的最新消息。";
"HelpTopics_VOLabel" = "帮助主题。如果应用程序在使用时出现问题或者您对其有疑问。";
"NotificationsEnabled_VOLabel" = "通知已启用。如果COVIDSafe未激活您将收到通知。 \
更改通知设置";
"NotificationsDisabled_VOLabel" = "通知已禁用。如果COVIDSafe未激活您将不会收到通知。 \
更改通知设置";
"permission_content_iOS_2_VOLabel" = "1. 蓝牙®\
2. 通知\
\
COVIDSafe不会发送配对请求。";
"permission_content_iOS_VOLabel" = "COVIDSafe需要启用蓝牙®才能运行。通过启用通知您将在COVIDSafe未激活时收到提醒。 \
\
选择“继续”以启用:";
"OS1b_TopParagraph_VOLabel" = "COVIDSafe需要使用蓝牙®信号以确定您靠近另一个COVIDSafe用户的时间。 \
\
您与其他COVIDSafe用户之间的每一次密切接触都被记录下来以创建密切接触信息。该信息经过加密且仅储存在您的手机中。 \
\
如果您使用COVIDSafe并对COVID-19测试呈阳性则州或领地卫生官员将与您联系。经您同意他们会协助您将密切接触者信息上传至高度安全的信息储存系统。\
\
如果您与测试结果呈阳性的其他COVIDSafe用户发生密切接触则州或领地卫生官员也会与您联系。 \
\
如需更多信息,请参阅*帮助主题*页。";
"personal_details_name_characters_prompt" = "请输入姓名的英文拼音。请勿使用其他语言或符号,例如“,”'或“?”。";
"update_available_title" = "更新可用!";
"update_available_message" = "我们一直在改进COVIDSafe。";
"update_available_app_store_btn" = "前往App Store";
"update_available_dismiss_btn" = "稍后提醒我";
"how_it_works_content" = "COVIDSafe需要使用蓝牙®信号以确定您靠近另一个COVIDSafe用户的时间。 \
\
您与其他COVIDSafe用户之间的每一次密切接触都被记录下来以创建密切接触信息。该信息经过加密且仅储存在您的手机中。 \
\
如果您使用COVIDSafe并对COVID-19测试呈阳性则州或领地卫生官员将与您联系。经您同意他们会协助您将密切接触者信息上传至高度安全的信息储存系统。\
\
如果您与测试结果呈阳性的其他COVIDSafe用户发生密切接触则州或领地卫生官员也会与您联系。 \
\
如需更多信息,请参阅*帮助主题*页。";
"upload_finished_sub_header" = "您已成功将个人信息上传到COVIDSafe高度安全的储存系统。 \
\
根据记录其他COVIDSafe用户与您如有密切接触州或领地卫生官员将通知他们。您的身份对其他用户将保持匿名状态。";
"registration_consent_first_paragraph" = "我的注册信息,以便州和领地卫生官员追踪接触者。";
"EmailPlaceholder" = "输入您的电子邮件地址(必填)"; "EmailPlaceholder" = "输入您的电子邮件地址(必填)";
"personal_details_post_code_error_prompt" = "您的澳大利亚邮政编码必须包含4位数。"; "personal_details_post_code_error_prompt" = "您的澳大利亚邮政编码必须包含4位数。";
"enter_number_button" = "获取PIN码"; "enter_number_button" = "获取PIN码";
@ -7,9 +103,6 @@
"home_set_complete_external_link_app_title" = "下载冠状病毒应用程序"; "home_set_complete_external_link_app_title" = "下载冠状病毒应用程序";
"home_set_complete_external_link_been_contacted_content" = "只有在您的病毒检测呈阳性时,才能上传个人信息。"; "home_set_complete_external_link_been_contacted_content" = "只有在您的病毒检测呈阳性时,才能上传个人信息。";
"EnterPhoneReVerify" = "输入您的手机号码以重新验证"; "EnterPhoneReVerify" = "输入您的手机号码以重新验证";
"upload_finished_sub_header" = "您已成功将个人信息上传到COVIDSafe高度安全的存储系统。 \
\
根据记录其他COVIDSafe用户与您如有密切接触州或领地卫生官员将通知他们。您的身份对其他用户将保持匿名状态。";
"permission_content_iOS_2" = "1. 蓝牙®\ "permission_content_iOS_2" = "1. 蓝牙®\
2. 通知\ 2. 通知\
\ \
@ -66,61 +159,11 @@ COVIDSafe 不会发送配对请求。";
"global_close" = "关闭"; "global_close" = "关闭";
"global_double_tap" = "双击进行编辑"; "global_double_tap" = "双击进行编辑";
"PostcodeValidationErrorMessage" = "请输入有效的澳大利亚邮政编码。"; "PostcodeValidationErrorMessage" = "请输入有效的澳大利亚邮政编码。";
"data_privacy_content" = "在注册COVIDSafe之前请务必阅读COVIDSafe隐私政策。 \
\
如果您未满16岁您的父母/监护人也必须阅读隐私政策。 \
\
使用COVIDSafe属自愿行为。您可以随时安装或删除该应用程序。如果删除COVIDSafe您也可以要求从安全服务器中删除您的个人信息。 \
\
要注册使用COVIDSafe您需要输入姓名手机号码年龄段和邮政编码。 \
\
注册时提交的信息以及有关COVIDSafe使用的信息将被收集并存储在高度安全的服务器上。 \
\
COVIDSafe不会收集您的位置信息。 \
\
COVIDSafe将记录发生接触的时间以及与您接触的其他COVIDSafe用户的匿名ID代码。 \
\
与您接触的其他COVIDSafe用户将在其手机上看到一个匿名ID代码以及与您发生接触的时间。 \
\
如果其他用户对COVID-19的测试结果呈阳性他们可以上传自己的联系信息。为了追踪接触者州或领地的卫生官员有可能会与您联系。 \
\
您的详细注册信息仅在追踪接触者以及维持COVIDSafe的合法正常运行时候使用或披露。 \
\
如需更多信息,请访问澳大利亚政府卫生部网站。 \
\
如需进一步了解您对个人信息的权利以及个人信息的处理和共享方式请参阅COVIDSafe隐私策略。";
"how_it_works_content" = "蓝牙®信号用于确定您靠近另一个COVIDSafe用户的时间。 \
\
您与其他COVIDSafe用户之间的每一次密切接触都被记录下来以创建密切接触信息。该信息经过加密且仅存储在您的手机中。 \
\
如果您使用COVIDSafe并对COVID-19测试呈阳性则州或领地卫生官员将与您联系。他们会协助您将密切接触者信息自愿上传至高度安全的信息存储系统。\
\
如果您与测试结果呈阳性的其他COVIDSafe用户发生密切接触则州或领地卫生官员也会与您联系。 \
\
如需更多信息,请参阅*帮助主题*页。";
"pin_issue" = "*接收PIN码时遇到问题*";
"upload_step_4_sub_header" = "未经您的同意,您的密切接触者信息不会被上传。 \ "upload_step_4_sub_header" = "未经您的同意,您的密切接触者信息不会被上传。 \
\ \
如果您同意,您的密切接触者信息将被上传并与州或领地卫生官员共享,以便追踪密切接触者。 \ 如果您同意,您的密切接触者信息将被上传并与州或领地卫生官员共享,以便追踪密切接触者。 \
\ \
阅读COVIDSafe*隐私政策*以获得更多详细信息。"; 阅读COVIDSafe*隐私政策*以获得更多详细信息。";
"OS1b_TopParagraph_VOLabel" = "";
"permission_content_iOS_VOLabel" = "";
"permission_content_iOS_2_VOLabel" = "";
"NotificationsDisabled_VOLabel" = "";
"NotificationsEnabled_VOLabel" = "";
"HelpTopics_VOLabel" = "";
"LatestNews_VOLabel" = "";
"GetCoronaVirusApp_VOLabel" = "";
"UploadData_VOLabel" = "";
"ShareCovidSafe_VOLabel" = "";
"PN_MobileNumber_VOLabel" = "";
"PINNumber_VO_Label" = "";
"OS2b_Item2_VOLabel" = "";
"BluetoothOFF_VOLabel" = "";
"BluetoothON_VOLabel" = "";
"AllowBluetoothOFF_VOLabel" = "";
"AllowBluetoothON_VOLabel" = "";
"us_consent_button" = "我同意"; "us_consent_button" = "我同意";
"IntroLabel" = "阻止传播\ "IntroLabel" = "阻止传播\
拯救生命"; 拯救生命";
@ -150,7 +193,6 @@ COVIDSafe 不会发送配对请求。";
"consent_button" = "我同意"; "consent_button" = "我同意";
"registration_consent_headline" = "注册同意书"; "registration_consent_headline" = "注册同意书";
"registration_consent_content" = "我同意澳大利亚卫生部收集以下信息:"; "registration_consent_content" = "我同意澳大利亚卫生部收集以下信息:";
"registration_consent_first_paragraph" = "我的注册资料,以便州和领地卫生官员追踪接触者。";
"registration_consent_second_paragraph" = "在其他COVIDSafe用户的COVID-19测试呈阳性时从该用户处获取我的联系信息"; "registration_consent_second_paragraph" = "在其他COVIDSafe用户的COVID-19测试呈阳性时从该用户处获取我的联系信息";
"under_sixteen_second_paragraph" = "在其他COVIDSafe用户的COVID-19测试呈阳性时从该用户处获取我的联系信息"; "under_sixteen_second_paragraph" = "在其他COVIDSafe用户的COVID-19测试呈阳性时从该用户处获取我的联系信息";
"personal_details_headline" = "输入您的个人信息"; "personal_details_headline" = "输入您的个人信息";

View file

@ -1,259 +1,307 @@
"personal_details_name_characters_prompt" = "Please use English characters for your full name. Do not use other languages or symbols like ',' or '?'."; "data_privacy_content_VO" = "在註册 COVIDSafe 之前,請務必閱讀 COVIDSafe *私隱政策*。 \
"data_privacy_content" = "在註册 COVIDSafe 之前,請務必閱讀 COVIDSafe 私隱政策。 \
\ \
如果您未滿16歲您的父母/監護人也必須閱讀私隱政策。 \ 如果你未滿 16 歲,你的父母/監護人必須閱讀*私隱政策*。 \
\ \
使用 COVIDSafe 屬自願性質。您可以隨時安裝或刪除該應用程式。如果刪除 COVIDSafe亦可以要求刪除在保密伺服器内的個人資料。 \ 使用 COVIDSafe 純屬自願性質。你可以隨時安裝或刪除本應用程式。如果刪除 COVIDSafe*你亦可以要求刪除在保密伺服器内的個人資料*。\
\ \
要註册使用 COVIDSafe需要輸入姓名、手機號碼、年齡組别及郵遞區號。 \ 要註册使用 COVIDSafe需要輸入姓名、手機號碼、年齡組别及郵遞區號。 \
\ \
註册時提交的資料以及有關使用 COVIDSafe 的資料,將被收集並儲存在一個高度保密的伺服器内。 \ 我們會收集你註冊時提供的資料和關於你使用COVIDSafe的資料並且儲存在一個高度保密的伺服器內。 \
\ \
COVIDSafe 不會收集您的定位置資訊。 \ COVIDSafe 不會收集你的定位資訊。 \
\ \
COVIDSafe 將會記錄接觸的發生時間,以及其他與接觸的 COVIDSafe 用戶的匿名 ID。 \ COVIDSafe 將會記錄接觸的發生時間,以及其他與接觸的 COVIDSafe 用戶的匿名 ID。 \
\ \
其他與您接觸的 COVIDSafe 用戶亦將會在其裝置上看到一個匿名 ID 及與您接觸的時間。 \ 其他與你接觸的 COVIDSafe 用戶亦將會在其設備上記錄你的匿名 ID 及與你接觸的時間。 \
\ \
如果其他用戶的 COVID-19 測試呈陽性,他們可以上傳其聯絡資料。為了追蹤接觸者,各州或領地的衛生部官員可能會聯絡。 \ 如果其他用戶被驗出 COVID-19 陽性,他們可以上傳其聯絡資料。為了追蹤接觸者,各州或領地的衛生部官員可能會聯絡。 \
\ \
您的詳細註册資料僅在追蹤接觸者以及在維持 COVIDSafe 的合法正常運作時使用或披露。 \ 我們在追蹤接觸者和確保COVIDSafe 運作正常且合法時才會使用並且透露你的詳細註冊資料。 \
\ \
欲了解更多資訊,請瀏覧澳洲政府衛生部的網站。 \ 欲了解更多資訊,請瀏覧*澳洲政府衛生部*的網站。 \
\ \
如需進一步了解有闗於您個人資料的權利,及個人資料的處理和共享方式,請參閱 COVIDSafe 私隱政策。"; 如需進一步了解你對個人資料的權利,及個人資料的處理和共享方式,請參閱 COVIDSafe *私隱政策*。";
"enter_number_relative" = "是否替朋友或親戚註册?\ "UILaunchStoryboardName" = "LaunchScreen_zh_Hant";
"data_privacy_content" = "在註册 COVIDSafe 之前,請務必閱讀 COVIDSafe *私隱政策*。 \
\ \
他們需用自己的設備和電話號碼進行註册才能使用 COVIDSafe。"; 如果你未滿 16 歲,你的父母/監護人必須閱讀*私隱政策*。 \
"registration_consent_first_paragraph" = "我的註册資料以便各州或領地衛生部官員追蹤接觸者。";
"OS2b_Item3" = "3. COVIDSafe不會傳送配對請求。了解更多資訊。";
"OS2b_Item3Underline" = "了解更多資訊";
"PairingRequestsInfo" = "COVIDSafe不會傳送配對請求。";
"IssueFooter" = "我們可能會與您聯繫以進一步了解反饋的詳情。您的電子郵件不會被用於其他目的。";
"newFeedback_send_errorMessage" = "送出反饋時出錯";
"newFeedback_noMessage_errorMessage" = "送出前請填寫反饋意見。";
"intro_content" = "爲了避免冠狀病毒在社區傳播,澳洲政府開發了 COVIDSafe。 \
\ \
COVIDSafe 會保密地記錄您與其他用戶之間的接觸。如果您與病毒檢測呈陽性的人發生密切接觸,各州和領地的衛生部官員將會與您聯繫。 \ 使用 COVIDSafe 純屬自願性質。你可以隨時安裝或刪除本應用程式。如果刪除 COVIDSafe*你亦可以要求刪除在保密伺服器内的個人資料*。\
\ \
讓我們齊心協力,阻止病毒傳播,保護大眾健康。"; 要註册使用 COVIDSafe你需要輸入姓名、手機號碼、年齡組别及郵遞區號。 \
"IntroLabel" = "請協助阻止病毒傳播\
拯救生命";
"under_sixteen_first_paragraph" = "我的註册資料以便各州及領地衛生部官員追蹤接觸者。";
"home_set_complete_external_link_been_contacted_title" = "是否有衛生部官員聯絡您?";
"upload_step_1_header" = "是否有衛生部官員要求您上傳您的資料?";
"upload_step_1_body" = "只有在您的 COVID-19測試呈陽性的時候各州或領地的衛生部官員才會聯繫您在您同意的前提下協助您上傳您的資料。\
\ \
按“是”後,請同意上傳您的資料。"; 我們會收集你註冊時提供的資料和關於你使用COVIDSafe的資料並且儲存在一個高度保密的伺服器內。 \
\
COVIDSafe 不會收集你的定位資訊。 \
\
COVIDSafe 將會記錄接觸的發生時間,以及其他與你接觸的 COVIDSafe 用戶的匿名 ID。 \
\
其他與你接觸的 COVIDSafe 用戶亦將會在其設備上記錄你的匿名 ID 及與你接觸的時間。 \
\
如果其他用戶被驗出 COVID-19 陽性,他們可以上傳其聯絡資料。為了追蹤接觸者,各州或領地的衛生部官員可能會聯絡你。 \
\
我們在追蹤接觸者和確保COVIDSafe 運作正常且合法時才會使用並且透露你的詳細註冊資料。 \
\
欲了解更多資訊,請瀏覧*澳洲政府衛生部*的網站。 \
\
如需進一步了解你對個人資料的權利,及個人資料的處理和共享方式,請參閱 COVIDSafe *私隱政策*。";
"ShareCovidSafe_VOLabel" = "分享使用 COVIDSafe邀請他人參與防疫。團結便是力量";
"UploadData_VOLabel" = "曾有衛官員聯絡過你嗎?只有在你被驗出病毒陽性時,才能上傳個人資料。";
"HelpTopics_VOLabel" = "求助主題。如果你對應用程式有疑難或疑問。";
"NotificationsEnabled_VOLabel" = "「通知傳送」功能已被開啓。如果 COVIDSafe 尚未處於啟用狀態,你將會收到通知。更改「通知傳送」設定";
"NotificationsDisabled_VOLabel" = "「通知傳送」功能已被闗閉。如果 COVIDSafe 尚未處於啟用狀態,你將不會收到通知。更改「通知傳送」設定";
"permission_content_iOS_VOLabel" = "需開啓藍牙®才能執行 COVIDSafe 。透過開啟「通知傳送」功能,你會在 COVIDSafe 尚未處於啟用狀態時收到提醒。\
\
請選擇「繼續」來開啟:";
"OS1b_TopParagraph_VOLabel" = "藍牙®訊號用於確定你在何時接近另一名 COVIDSafe 用戶。 \
你與其他 COVIDSafe 用戶的每次密切接觸都會被記錄下來,以創建密切接觸者資料。該資料會被加密,並僅儲存在你的手機内。 \
如果你是一名 COVIDSafe 用戶,而又被驗出 COVID-19 陽性,則州或領地衛生官員將會與你聯絡。他們將會協助你自願把你自己的密切接觸者資料上傳到高度保密的資料儲存系統。\
如果你曾密切接觸過另一名化驗結果呈陽性的 COVIDSafe 用戶,則州或領地衛生官員也可能會聯絡你。 \
欲知詳情,請參閱「求助主題」頁。";
"personal_details_name_characters_prompt" = "請用英文字母輸入你的全名。請勿使用其他語言的文字或符號,例如 '或 ‘?’。";
"LatestNews_VOLabel" = "要獲得最新資訊及更新事宜,請到 aus.gov.au 收取最新的冠狀病毒資訊。";
"upload_step_verify_pin_sub_header" = "各州或領地的衛生部官員將會透過簡訊傳送一條 PIN 碼到您的設備。請在下面輸入 PIN 碼來上傳個人資料。";
"update_available_message" = "我們一直都在改良 COVIDSafe。";
"update_available_app_store_btn" = "轉往應用程式商店";
"EmailPlaceholder" = "本地化 請輸入您的電郵地址(必填)";
"IssueFooter" = "我們可能會聯絡您以進一步了解反饋的詳情。您的電郵地址不會被用於其他目的。";
"allow_bluetooth_call" = "允許 COVIDSafe 接入藍牙®";
"action_verify_invalid_pin" = "PIN 碼無效,請要求衛生部官員再傳送另一條 PIN 給您。";
"upload_step_1_body" = "只在您被驗出 COVID-19 陽性時,各州或領地的衛生部官員才會聯絡您,協助您自願上傳您的資料。\
\
按「是」後,請同意上傳您的資料。";
"home_set_complete_external_link_news_title" = "最新資訊及更新事宜";
"home_app_permission_status_subtitle" = "若設定錯誤,將無法執行 COVIDSafe。";
"intro_button" = "我肯出一分力";
"intro_content" = "爲了避免冠狀病毒在社區擴散,澳洲政府開發了 COVIDSafe。 \
\
COVIDSafe 會保密地記錄您與其他用戶之間的接觸。如果您曾密切接觸過被驗出病毒陽性的人士,各州和領地的衛生部官員就可以聯絡您。 \
\
讓我們齊心協力,遏止病毒傳播,確保生活健康。";
"migration_in_progress" = "正在更新 COVIDSafe。\
\
請保持開機狀態直至更新完成為止。";
"newFeedback_noMessage_errorMessage" = "請在傳送前向我們提供您的意見。";
"upload_finished_sub_header" = "您已成功將個人資料上傳到 COVIDSafe 高度保密的儲存系統。\
\
若錄得有其他 COVIDSafe 用户曾密切接觸過您,各州或領地的衛生部官員將會通知他們。您的身份仍舊予以保密。";
"PINNumber_VO_Label" = "PIN 碼";
"enter_pin_timer_expire" = "您的 PIN 碼將在 &#160 無效;";
"permission_success_warning" = "開啓 COVIDSafe 的傳送通知功能,以便在無法正常執行應用程式時及時通知您。";
"how_it_works_headline" = "COVIDSafe 是如何執行的";
"how_it_works_content" = "COVIDSafe 需要使用藍牙®訊號以確定您在何時接近另一名 COVIDSafe 用戶。 \
\
您與其他COVIDSafe用戶之間的每一次密切接觸都會被記錄下來以建立密切接觸者資料。該資料會被加密並僅儲存在您的手機内。\
\
如果您是 COVIDSafe 用户並被驗出 COVID-19 陽性,則各州或領地衛生部官員將會與您聯絡。他們會協助您自願地將密切接觸者資料上傳到高度保密的資料儲存系統。\
\
如果您曾密切接觸過另一名被驗出 COVID-19 陽性的 COVIDSafe 用戶,則各州或領地的衛生部官員亦會聯絡您。 \
\
欲知詳情,請參閱*求助主題*頁";
"upload_step_4_sub_header" = "除非您同意,否則您的密切接觸者資料不會被上傳。\ "upload_step_4_sub_header" = "除非您同意,否則您的密切接觸者資料不會被上傳。\
\ \
如果您同意,您的密切接觸者資料將會被上傳並與各州或領地的衛生部官員共享,作為追蹤接觸者之用。\ 如果您同意,您的密切接觸者資料將會被上傳並與各州或領地的衛生部官員共享,作為追蹤接觸者之用。\
\ \
欲知詳情,請參閱 COVIDSafe*私隱政策*。"; 欲知詳情,請參閱 COVIDSafe *私隱政策*。";
"upload_step_verify_pin_sub_header" = "各州或領地的衛生部官員將會透過簡訊傳送一組 PIN 到您的手機。請在下面輸入 PIN 來上傳個人資料。"; "newFeedback_invalidEmail_errorMessage" = "請輸入有效的電郵地址!";
"action_verify_invalid_pin" = "PIN 無效,請要求衛生部官員再傳送另一組 PIN 給您。"; "global_double_tap" = "點觸兩次來編輯";
"upload_finished_sub_header" = "您已成功將個人資料上傳到 COVIDSafe 高度保密的儲存系統。\ "newFeedback_send_errorMessage" = "傳送反饋時出錯";
"newFeedback_deleteScreenshot_actionTitle" = "刪除熒幕截圖";
"newFeedback_deleteScreenshotConfirmation_message" = "此熒幕截圖會被永久刪除。";
"entryPrompt_alert_message" = "您好,想選擇執行那一項呢?";
"UploadFailedErrorMessage" = "請稍後再試。";
"PairingRequestsInfo" = "COVIDSafe 不會傳送配對請求。";
"OS2b_Item3" = "3. COVIDSafe 不會傳送配對請求。了解更多資訊。";
"OS2b_Item2" = "2. 應保持藍牙®在開啟狀態。";
"OS2b_Item1" = "1. 請在離家時隨身攜帶手機,並確保 COVIDSafe 處於開啟狀態。";
"IssueThankYou" = "多謝!我們已經收到您的反饋。";
"IssueDescPlaceholder" = "請描述該問題";
"FoundIssueWithApp" = "發現 COVIDSafe 應用程式有問題嗎?";
"InvalidOTP" = "必須是個 6 位數字";
"PINWillExpire" = "您的 PIN 碼將在%@無效";
"CodeHasExpired" = "您的 PIN 碼已無效。";
"ReceivePinIssue" = "接收 PIN 碼時遇到問題?";
"EnterPINSent" = "輸入傳送到%@的 PIN 碼";
"NotificationsEnabledBlurb" = "如果 COVIDSafe 尚未處於啟用狀態,您將會收到通知。 \n更改通知設定";
"home_version_number_ios" = "發行版本%@ ,建構版本%@";
"IntroLabel" = "請協助遏止病毒擴散\
拯救生命";
"BluetoothOFF_content" = "請打開手機藍牙®。如有顯示,請選擇「允許新連接」選項。";
"home_set_complete_external_link_notifications_content_iOS_off" = "如果 COVIDSafe 尚未處於啟用狀態,您將不會收到通知。";
"home_set_complete_external_link_notifications_title_iOS_off" = "「傳送通知」功能已闗閉";
"PN_ReminderBody" = "開啟 COVIDSafe確保其處於執行狀態。";
"PN_BluetoothStatusTitle" = "COVIDSafe 未在啓用狀態";
"NotificationsDisabledBlurb" = "如果 COVIDSafe 尚未處於啟用狀態,您將不會收到通知。 \n更改通知設定";
"home_set_complete_external_link_notifications_title_iOS" = "「傳送通知」功能已開啟";
"permission_content_iOS" = "COVIDSafe 需要開啓藍牙®才能執行。透過開啟「通知傳送」功能,您會在 COVIDSafe 仍未處於啟用狀態時收到提醒。\
\ \
根據紀錄其他COVIDSafe 用户與您若有密切接觸,各州或領地的衛生部官員將會通知他們。您的身份將保密。"; 請選擇「繼續」來開啟:";
"under_sixteen_registration_consent_first_paragraph" = "我的註册資料以便各州或領地衛生部官員追蹤接觸者。"; "under-sixteen_consent_call_for_action" = "選擇 「我同意」以確認同意聲明。";
"upload_finished_header" = "感謝您協助遏止 COVID-19 的擴散!";
"home_set_complete_external_link_help_topics_content" = "如果您對應用程式有疑難或疑問。";
"home_set_complete_external_link_been_contacted_content" = "只有在您被驗出病毒陽性時,才能上傳個人資料。";
"home_set_complete_external_link_app_content" = "下載政府應用程式來收取最新資訊及忠告。";
"home_set_complete_external_link_app_title" = "收取冠狀病毒應用程式";
"home_set_complete_external_link_share_content" = "邀請他人參與防疫。團結便是力量!";
"home_set_complete_external_link_share_title" = "齊齊使用 COVIDSafe";
"home_data_uploaded_message" = "協助遏止 COVID-19 擴散,追蹤您的症狀。";
"home_header_inactive_title" = "COVIDSafe 未在啓用狀態。";
"home_header_active_title" = "COVIDSafe 已在啓用狀態";
"enter_pin_resend_pin" = "重新寄出 PIN 碼";
"wrong_ping_number" = "輸入了錯誤的 PIN 碼";
"enter_pin_headline" = "輸入傳送到%s%s的 PIN 碼";
"country_region_name_zw" = "津巴布韋";
"country_region_name_zm" = "贊比亞";
"country_region_name_ye" = "也門";
"country_region_name_uz" = "烏茲別克斯坦";
"country_region_name_ae" = "阿拉伯聯合酋長國";
"country_region_name_tz" = "坦桑尼亞";
"country_region_name_sr" = "蘇里南";
"country_region_name_si" = "斯洛文尼亞";
"country_region_name_sa" = "沙特阿拉伯";
"country_region_name_lc" = "聖盧西亞";
"country_region_name_rw" = "盧旺達";
"country_region_name_ng" = "尼日利亞";
"country_region_name_mu" = "毛里求斯";
"country_region_name_mv" = "馬爾代夫";
"country_region_name_kg" = "吉爾吉斯斯坦";
"country_region_name_kz" = "哈薩克斯坦";
"country_region_name_it" = "意大利";
"country_region_name_gw" = "畿內亞比索";
"country_region_name_gn" = "畿內亞";
"country_region_name_et" = "埃塞俄比亞";
"country_region_name_gq" = "赤道畿內亞";
"country_region_name_ec" = "厄瓜多爾";
"country_region_name_cy" = "塞浦路斯";
"country_region_name_hr" = "克羅地亞";
"country_region_name_cr" = "哥斯達黎加";
"country_region_name_km" = "葛摩羅斯";
"country_region_name_td" = "乍得";
"country_region_name_ba" = "波斯尼亞和黑塞哥維那";
"country_region_name_bd" = "孟加拉";
"country_region_name_az" = "阿塞拜疆";
"options_for_australia" = "澳洲適用選項";
"enter_number_button" = "收取 PIN 碼";
"enter_number_relative" = "是否替朋友或親戚註册?\
\
他們需用自己的設備及電話號碼進行註册才能使用 COVIDSafe。";
"enter_number_content" = "我們將向您傳送一條 6 數位的 PIN 碼來驗證您的手機號碼。";
"invalid_australian_phone_number_error_prompt" = "澳洲手機號碼最多有10 個數位。";
"under_sixteen_second_paragraph" = "當其他 COVIDSafe 用戶被驗出 COVID-19 陽性時,從該用戶處取得我的聯絡資料。";
"under_sixteen_headline" = "您需要經父母/監護人同意才能繼續";
"personal_details_post_code_error_prompt" = "您的澳洲郵遞區號必須是個 4 位數字。";
"registration_consent_second_paragraph" = "當其他 COVIDSafe 用戶被驗出 COVID-19 陽性時,從該用戶處取得我的聯絡資料。";
"consent_call_for_action" = "選擇「我同意」以確認同意聲明。";
"data_privacy_headline" = "註册及私隱權";
"intro_headline" = "齊心協力,遏止 COVID-19 的擴散。";
"share_this_app_content" = "同我一齊遏止 COVID-19 的擴散!下載澳洲政府提供的 COVIDSafe 應用程式。 COVID19 #coronavirusaustralia #stayhomesavelives https://covidsafe.gov.au";
"dialog_uploading_message" = "正在上傳您的 COVIDSafe 資料。 \ "dialog_uploading_message" = "正在上傳您的 COVIDSafe 資料。 \
\ \
請不要關閉應用程式。"; 請勿關閉應用程式。";
"share_this_app_content" = "讓我們一起阻止COVID-19的傳播下載* COVIDSafe * —澳洲政府開發的一款應用程式。 COVID19 #coronavirusaustralia #stayhomesavelives https://covidsafe.gov.au"; "BluetoothOFF_VOLabel" = "藍牙:關 請打開手機藍牙®。如有顯示,請選擇「允許新連接」選項。";
"intro_headline" = "齊心協力阻止COVID-19的傳播。"; "OS2b_Item2_VOLabel" = "2. 應保持藍牙®在開啟狀態。";
"intro_button" = "我想幫忙"; "GetCoronaVirusApp_VOLabel" = "收取冠狀病毒應用程式。下載政府應用程式來收取最新資訊及忠告。";
"how_it_works_content" = "藍牙®訊號用於確定您在何時接近另一名COVIDSafe用戶。 \ "permission_content_iOS_2_VOLabel" = "1. 藍牙®\
2. 通知\
\ \
您與其他COVIDSafe用戶之間的每一次密切接觸都會被記錄下來以建立密切接觸者資料。該資料會被加密並僅儲存在您的手機裏。 \ COVIDSafe 不會傳送配對請求。";
\ "update_available_title" = "可用更新版!";
如果您使用COVIDSafe並對COVID-19測試呈陽性則各州或領地衛生部官員將會與您聯絡。他們會協助您將密切接觸者資料上傳到高度保密的資料儲存系統。\ "update_available_dismiss_btn" = "請稍後提醒";
\ "PN_MobileNumber_VOLabel" = "手機號碼";
如果您與測試結果呈陽性的COVIDSafe用戶密切接觸則各州或領地的衛生部官員也會聯絡您。 \ "BluetoothON_VOLabel" = "藍牙®:開";
\ "AllowBluetoothOFF_VOLabel" = "接入藍牙:關 請允許 COVIDSafe 接入藍牙";
欲知詳情,請參閱*求助主題*頁"; "AllowBluetoothON_VOLabel" = "接入藍牙:開";
"data_privacy_headline" = "註册及隱私權"; "permission_button" = "繼續";
"registration_consent_first_paragraph" = "我的註册資料以便各州或領地衛生部官員追蹤接觸者。";
"OS2b_Item3Underline" = "了解更多資訊";
"under_sixteen_first_paragraph" = "我的註册資料以便各州及領地衛生部官員追蹤接觸者。";
"home_set_complete_external_link_been_contacted_title" = "是否有衛生部官員聯絡您?";
"upload_step_1_header" = "是否有衛生部官員要求您上傳您的資料?";
"under_sixteen_registration_consent_first_paragraph" = "我的註册資料以便各州或領地衛生部官員追蹤接觸者。";
"registration_consent_content" = "我同意澳洲衛生部收集以下資訊:"; "registration_consent_content" = "我同意澳洲衛生部收集以下資訊:";
"registration_consent_second_paragraph" = "在其他COVIDSafe用戶的COVID-19測試呈陽性時從該用戶處取得我的聯絡資料";
"personal_details_headline" = "輸入您的詳細資料"; "personal_details_headline" = "輸入您的詳細資料";
"personal_details_name_error_prompt" = "請輸入您的全名。"; "personal_details_name_error_prompt" = "請輸入您的全名。";
"personal_details_age_error_prompt" = "請選擇您的年齡組別。"; "personal_details_age_error_prompt" = "請選擇您的年齡組別。";
"personal_details_post_code" = "澳洲郵遞區號"; "personal_details_post_code" = "澳洲郵遞區號";
"personal_details_post_code_error_prompt" = "您的澳洲郵遞區號必須包含4位數。";
"under_sixteen_content" = "我確認我的父母或監護人同意澳洲衛生部收集以下資訊:"; "under_sixteen_content" = "我確認我的父母或監護人同意澳洲衛生部收集以下資訊:";
"under_sixteen_second_paragraph" = "在其他COVIDSafe用戶的COVID-19檢測呈陽性時從該用戶處取得我的聯絡資料";
"enter_number_headline" = "輸入您的手機號碼"; "enter_number_headline" = "輸入您的手機號碼";
"invalid_australian_phone_number_error_prompt" = "澳洲手機號碼最多有10位數。";
"enter_number_content" = "我們將向您傳送一組6數位的PIN來驗證您的手機號碼。";
"enter_number_button" = "取得PIN";
"country_region_name_ag" = "安地卡及巴布達"; "country_region_name_ag" = "安地卡及巴布達";
"country_region_name_az" = "亞塞拜然";
"country_region_name_bb" = "巴貝多"; "country_region_name_bb" = "巴貝多";
"country_region_name_bj" = "貝南"; "country_region_name_bj" = "貝南";
"country_region_name_ba" = "波士尼亞與赫塞哥維納";
"country_region_name_bw" = "波札那"; "country_region_name_bw" = "波札那";
"country_region_name_bf" = "布吉納法索"; "country_region_name_bf" = "布吉納法索";
"country_region_name_bi" = "蒲隆地"; "country_region_name_bi" = "蒲隆地";
"country_region_name_cv" = "維德角"; "country_region_name_cv" = "維德角";
"country_region_name_td" = "查德";
"country_region_name_km" = "葛摩";
"country_region_name_cr" = "哥斯大黎加";
"country_region_name_hr" = "克羅埃西亞";
"country_region_name_cy" = "賽普勒斯";
"country_region_name_dj" = "吉布地"; "country_region_name_dj" = "吉布地";
"country_region_name_dm" = "多明尼加"; "country_region_name_dm" = "多明尼加";
"country_region_name_ec" = "厄瓜多";
"country_region_name_et" = "衣索比亞";
"country_region_name_ge" = "喬治亞"; "country_region_name_ge" = "喬治亞";
"country_region_name_gt" = "瓜地馬拉"; "country_region_name_gt" = "瓜地馬拉";
"country_region_name_gn" = "幾內亞";
"country_region_name_gw" = "幾內亞比索";
"country_region_name_id" = "印尼"; "country_region_name_id" = "印尼";
"country_region_name_it" = "義大利";
"country_region_name_kz" = "哈薩克";
"country_region_name_ke" = "肯亞"; "country_region_name_ke" = "肯亞";
"country_region_name_ki" = "吉里巴斯"; "country_region_name_ki" = "吉里巴斯";
"country_region_name_kg" = "吉爾吉斯";
"country_region_name_ls" = "賴索托"; "country_region_name_ls" = "賴索托";
"country_region_name_lr" = "賴比瑞亞"; "country_region_name_lr" = "賴比瑞亞";
"country_region_name_mw" = "馬拉威"; "country_region_name_mw" = "馬拉威";
"country_region_name_mv" = "馬爾地夫";
"country_region_name_mu" = "模里西斯";
"country_region_name_mc" = "摩納哥"; "country_region_name_mc" = "摩納哥";
"country_region_name_mz" = "莫三比克"; "country_region_name_mz" = "莫三比克";
"country_region_name_nc" = "新喀里多尼亞"; "country_region_name_nc" = "新喀里多尼亞";
"country_region_name_nz" = "紐西蘭"; "country_region_name_nz" = "紐西蘭";
"country_region_name_ng" = "奈及利亞";
"country_region_name_pw" = "帛琉"; "country_region_name_pw" = "帛琉";
"country_region_name_qa" = "卡達"; "country_region_name_qa" = "卡達";
"country_region_name_re" = "留尼旺島"; "country_region_name_re" = "留尼旺島";
"country_region_name_rw" = "盧安達";
"country_region_name_lc" = "聖露西亞";
"country_region_name_sa" = "沙烏地阿拉伯";
"country_region_name_sc" = "塞席爾"; "country_region_name_sc" = "塞席爾";
"country_region_name_sl" = "獅子山共和國"; "country_region_name_sl" = "獅子山共和國";
"country_region_name_si" = "斯洛維尼亞";
"country_region_name_so" = "索馬利亞"; "country_region_name_so" = "索馬利亞";
"country_region_name_sr" = "蘇利南";
"country_region_name_sz" = "史瓦帝尼"; "country_region_name_sz" = "史瓦帝尼";
"country_region_name_tz" = "坦尚尼亞";
"country_region_name_to" = "東加"; "country_region_name_to" = "東加";
"country_region_name_tn" = "突尼西亞"; "country_region_name_tn" = "突尼西亞";
"country_region_name_ae" = "阿拉伯聯合大公國";
"country_region_name_uz" = "烏茲別克";
"country_region_name_ye" = "葉門";
"country_region_name_zm" = "尚比亞";
"country_region_name_zw" = "辛巴威";
"enter_pin_headline" = "輸入傳送到%s%s的PIN";
"enter_pin_wrong_number" = "請確認手機號碼是否正確"; "enter_pin_wrong_number" = "請確認手機號碼是否正確";
"enter_pin_timer_expire" = "您的 PIN 將在 &#160失效;";
"wrong_ping_number" = "錯誤的 PIN";
"enter_pin_resend_pin" = "重新寄出 PIN";
"pin_issue" = "*接收 PIN 時遇到問題? *";
"permission_headline" = "應用程式設定"; "permission_headline" = "應用程式設定";
"permission_success_warning" = "開啓 COVIDSafe的推送通知功能以便在應用程式無法正常運作時及時通知您。";
"home_header_active_title" = "COVIDSafe已啟用。";
"home_header_active_no_action_required" = "無需採取進一步行動。"; "home_header_active_no_action_required" = "無需採取進一步行動。";
"home_header_inactive_title" = "COVIDSafe未啟用。";
"home_header_inactive_check_your_permissions" = "檢查您的設定。"; "home_header_inactive_check_your_permissions" = "檢查您的設定。";
"home_app_permission_status_title" = "檢查您的設定"; "home_app_permission_status_title" = "檢查您的設定";
"home_app_permission_status_subtitle" = "若設定錯誤COVIDSafe將無法執行";
"home_data_uploaded_message" = "協助阻止COVID-19的傳播追蹤您的症狀。";
"home_set_complete_external_link_share_title" = "分享COVIDSafe";
"home_set_complete_external_link_share_content" = "邀請其他人一同防疫。團結便是力量!";
"home_set_complete_external_link_news_content" = "請到 aus.gov.au 了解冠狀病毒的最新資訊。"; "home_set_complete_external_link_news_content" = "請到 aus.gov.au 了解冠狀病毒的最新資訊。";
"home_set_complete_external_link_app_title" = "下載冠狀病毒應用程式";
"home_set_complete_external_link_app_content" = "下載政府應用程式,了解最新資訊及建議。";
"home_set_complete_external_link_been_contacted_content" = "只有在您的病毒檢測呈陽性時,才能上傳個人資料。";
"home_set_complete_external_link_help_topics_content" = "如果應用程式在使用時碰到問題或您對其有疑問。";
"action_report_an_issue" = "回報問題"; "action_report_an_issue" = "回報問題";
"upload_step_verify_pin_header" = "上傳您的資料"; "upload_step_verify_pin_header" = "上傳您的資料";
"upload_finished_header" = "感謝您協助阻止COVID-19的傳播";
"NotificationsDisabledBlurb" = "如果COVIDSafe尚未啟用您將不會收到任何通知。 \n更改通知設定";
"home_set_complete_external_link_notifications_content_iOS_off" = "如果COVIDSafe尚未啟用您將不會收到任何通知。";
"NotificationsEnabledBlurb" = "如果COVIDSafe未啟用您將會收到通知。 \n更改通知設定";
"PhoneVerificationErrorMessage" = "請檢查個人資料,然後重試。"; "PhoneVerificationErrorMessage" = "請檢查個人資料,然後重試。";
"Enter_your_mobile_number_label" = "請輸入您的手機號碼"; "Enter_your_mobile_number_label" = "請輸入您的手機號碼";
"permission_content_iOS" = "COVIDSafe 需要開啓藍牙®才能運作。當推送通知功能開啟時,您會在 COVIDSafe未啟用時收到提醒。\
\
選擇“繼續”來開啟:";
"permission_content_iOS_2" = "1. 藍牙®\ "permission_content_iOS_2" = "1. 藍牙®\
2. 通知\ 2. 通知\
\ \
COVIDSafe 不會寄出配對請求。"; COVIDSafe 不會寄出配對請求。";
"home_set_complete_external_link_notifications_title_iOS" = "推送通知功能已開啟";
"PN_BluetoothStatusTitle" = "COVIDSafe未啟用";
"PN_BluetoothStatusBody" = "在離家前及在公共場所時,務必開啟藍牙®以確保 COVIDSafe 處於啟用狀態。"; "PN_BluetoothStatusBody" = "在離家前及在公共場所時,務必開啟藍牙®以確保 COVIDSafe 處於啟用狀態。";
"PN_ReminderTitle" = "48 小時內未探測到任何接觸"; "PN_ReminderTitle" = "48 小時內未探測到任何接觸";
"AllowBluetoothON" = "連接藍牙®:開"; "AllowBluetoothON" = "連接藍牙®:開";
"AllowBluetoothOFF" = "連接藍牙®:關"; "AllowBluetoothOFF" = "連接藍牙®:關";
"home_set_complete_external_link_notifications_title_iOS_off" = "推送通知功能已關閉";
"allow_bluetooth_call" = "允許COVIDSafe連接藍牙®";
"home_header_uploaded_on_date_ios" = "您的資料已在%@上傳 。"; "home_header_uploaded_on_date_ios" = "您的資料已在%@上傳 。";
"home_version_number_ios" = "發行版本%@ ,構建版本%@";
"SelectedCountryTemplate" = "已選擇(+ %@ %@"; "SelectedCountryTemplate" = "已選擇(+ %@ %@";
"Done" = "完成"; "Done" = "完成";
"Next" = "下一步"; "Next" = "下一步";
"ValidationError" = "驗證出錯"; "ValidationError" = "驗證出錯";
"EnterPhoneReVerify" = "輸入您的手機號碼以重新驗證"; "EnterPhoneReVerify" = "輸入您的手機號碼以重新驗證";
"EnterPINSent" = "輸入寄送到%@的PIN碼";
"PINWillExpire" = "您的PIN碼將在%@失效";
"ReceivePinIssue" = "接收PIN碼時遇到問題";
"InvalidOTP" = "PIN碼為6位數";
"CodeHasExpired" = "您的PIN碼已失效。";
"PhoneVerificationErrorTitle" = "驗證電話號碼時出錯"; "PhoneVerificationErrorTitle" = "驗證電話號碼時出錯";
"PhoneNumberFormatErrorTitle" = "號碼格式錯誤"; "PhoneNumberFormatErrorTitle" = "號碼格式錯誤";
"PhoneNumberFormatErrorMessage" = "請輸入手機號碼。"; "PhoneNumberFormatErrorMessage" = "請輸入手機號碼。";
"ReportAnIssue" = "回報問題"; "ReportAnIssue" = "回報問題";
"FoundIssueWithApp" = "在COVIDSafe應用程式中發現問題嗎";
"IssueDescPlaceholder" = "請描述問題";
"IssueThankYou" = "謝謝!我們已經收到您的反饋。";
"OS2b_Item1" = "1.離開家時請隨身攜帶手機並確保COVIDSafe處於開啟狀態。";
"OS2b_Item2" = "2.藍牙®應該保持開啟狀態。";
"PairingRequestsInfoUnderline" = "配對請求"; "PairingRequestsInfoUnderline" = "配對請求";
"InformationUploaded" = "個人資料已在%@ 上傳。"; "InformationUploaded" = "個人資料已在%@ 上傳。";
"UploadFailed" = "上傳失敗。請稍後再試。"; "UploadFailed" = "上傳失敗。請稍後再試。";
"UploadFailedErrorMessage" = "請稍後再試";
"EmailPlaceholder" = "輸入您的電子郵件(必填)";
"global_cancel_button_title" = "取消"; "global_cancel_button_title" = "取消";
"global_send_button_title" = "寄送"; "global_send_button_title" = "寄送";
"global_sending_indication_title" = "正在寄送"; "global_sending_indication_title" = "正在寄送";
"global_success_indication_title" = "成功"; "global_success_indication_title" = "成功";
"entryPrompt_alert_title" = "意見箱"; "entryPrompt_alert_title" = "意見箱";
"entryPrompt_alert_message" = "您好,請選擇接下來的執行選項。";
"entryPrompt_newFeedback_button_title" = "新的反饋"; "entryPrompt_newFeedback_button_title" = "新的反饋";
"newFeedbackFlow_navigationTitle" = "回報問題"; "newFeedbackFlow_navigationTitle" = "回報問題";
"newFeedback_deleteScreenshotConfirmation_message" = "此螢幕截圖將被永久刪除。";
"newFeedback_deleteScreenshot_actionTitle" = "刪除螢幕截圖";
"newFeedback_invalidEmail_errorMessage" = "請輸入有效的電子郵件!";
"global_OK" = "確定"; "global_OK" = "確定";
"global_back" = "返回"; "global_back" = "返回";
"global_close" = "關閉"; "global_close" = "關閉";
"global_double_tap" = "點擊兩次進行編輯";
"PostcodeValidationErrorMessage" = "請輸入有效的澳洲郵遞區號。"; "PostcodeValidationErrorMessage" = "請輸入有效的澳洲郵遞區號。";
"OS1b_TopParagraph_VOLabel" = "";
"permission_content_iOS_VOLabel" = "";
"permission_content_iOS_2_VOLabel" = "";
"NotificationsDisabled_VOLabel" = "";
"NotificationsEnabled_VOLabel" = "";
"HelpTopics_VOLabel" = "";
"LatestNews_VOLabel" = "";
"GetCoronaVirusApp_VOLabel" = "";
"UploadData_VOLabel" = "";
"ShareCovidSafe_VOLabel" = "";
"PN_MobileNumber_VOLabel" = "";
"PINNumber_VO_Label" = "";
"OS2b_Item2_VOLabel" = "";
"BluetoothOFF_VOLabel" = "";
"BluetoothON_VOLabel" = "";
"AllowBluetoothOFF_VOLabel" = "";
"AllowBluetoothON_VOLabel" = "";
"upload_consent_button" = "我同意"; "upload_consent_button" = "我同意";
"us_consent_button" = "我同意"; "us_consent_button" = "我同意";
"how_it_works_headline" = "COVIDSafe 是怎樣運作的";
"BluetoothON" = "藍牙®:開"; "BluetoothON" = "藍牙®:開";
"registration_consent_headline" = "註册同意書"; "registration_consent_headline" = "註册同意書";
"enter_pin_button" = "驗證"; "enter_pin_button" = "驗證";
"BluetoothOFF_content" = "請打開手機藍牙®。如有顯示,請選擇‘允許新連接’選項,";
"BluetoothOFF" = "藍牙®:關"; "BluetoothOFF" = "藍牙®:關";
"select_country_or_region" = "選擇國家或地區"; "select_country_or_region" = "選擇國家或地區";
"NotificationsBlurbLink" = "更改通知設定"; "NotificationsBlurbLink" = "更改通知設定";
@ -272,12 +320,10 @@ COVIDSafe 不會寄出配對請求。";
"country_region_name_rs" = "塞爾維亞"; "country_region_name_rs" = "塞爾維亞";
"country_region_name_sg" = "新加坡"; "country_region_name_sg" = "新加坡";
"country_region_name_sk" = "斯洛伐克"; "country_region_name_sk" = "斯洛伐克";
"permission_button" = "執行";
"country_region_name_za" = "南非"; "country_region_name_za" = "南非";
"country_region_name_kr" = "南韓"; "country_region_name_kr" = "南韓";
"country_region_name_ss" = "南蘇丹"; "country_region_name_ss" = "南蘇丹";
"country_region_name_by" = "白俄羅斯"; "country_region_name_by" = "白俄羅斯";
"under-sixteen_consent_call_for_action" = "選擇“我同意”以確認同意聲明。";
"Select_country_or_region_headline" = "選擇國家或地區"; "Select_country_or_region_headline" = "選擇國家或地區";
"home_setup_help" = "求助"; "home_setup_help" = "求助";
"country_region_name_es" = "西班牙"; "country_region_name_es" = "西班牙";
@ -295,7 +341,6 @@ COVIDSafe 不會寄出配對請求。";
"norfolk_hint" = "例如51234"; "norfolk_hint" = "例如51234";
"invalid_norfolk_island_phone_number_error_prompt" = "諾福克島的手機號碼是個5至6位數字。"; "invalid_norfolk_island_phone_number_error_prompt" = "諾福克島的手機號碼是個5至6位數字。";
"country_region_name_gu" = "關島"; "country_region_name_gu" = "關島";
"home_set_complete_external_link_news_title" = "最新資訊及更新";
"home_set_complete_external_link_news_url" = "https://www.australia.gov.au"; "home_set_complete_external_link_news_url" = "https://www.australia.gov.au";
"home_set_complete_external_link_self_isolation_register_url" = "https://covid-form.service.gov.au"; "home_set_complete_external_link_self_isolation_register_url" = "https://covid-form.service.gov.au";
"upload_answer_no" = "否"; "upload_answer_no" = "否";
@ -341,7 +386,6 @@ COVIDSafe 不會寄出配對請求。";
"country_region_name_tg" = "多哥"; "country_region_name_tg" = "多哥";
"country_region_name_tt" = "特立尼達和多巴哥"; "country_region_name_tt" = "特立尼達和多巴哥";
"country_region_name_uy" = "烏拉圭"; "country_region_name_uy" = "烏拉圭";
"options_for_australia" = "澳洲選項";
"country_region_name_mm" = "緬甸"; "country_region_name_mm" = "緬甸";
"country_region_name_ly" = "利比亞"; "country_region_name_ly" = "利比亞";
"home_set_complete_external_link_help_topics_title" = "求助主題"; "home_set_complete_external_link_help_topics_title" = "求助主題";
@ -382,7 +426,6 @@ COVIDSafe 不會寄出配對請求。";
"country_region_name_au" = "澳洲"; "country_region_name_au" = "澳洲";
"country_region_name_at" = "奧地利"; "country_region_name_at" = "奧地利";
"country_region_name_bh" = "巴林"; "country_region_name_bh" = "巴林";
"country_region_name_bd" = "孟加拉國";
"country_region_name_be" = "比利時"; "country_region_name_be" = "比利時";
"country_region_name_bz" = "伯利茲"; "country_region_name_bz" = "伯利茲";
"country_region_name_bm" = "百慕達"; "country_region_name_bm" = "百慕達";
@ -394,15 +437,10 @@ COVIDSafe 不會寄出配對請求。";
"permission_success_button" = "繼續"; "permission_success_button" = "繼續";
"how_it_works_button" = "下一步"; "how_it_works_button" = "下一步";
"data_privacy_button" = "下一步"; "data_privacy_button" = "下一步";
"consent_call_for_action" = "選擇“我同意”以確認同意聲明。";
"consent_button" = "我同意"; "consent_button" = "我同意";
"dialog_error_uploading_positive" = "重試"; "dialog_error_uploading_positive" = "重試";
"dialog_error_uploading_negative" = "取消"; "dialog_error_uploading_negative" = "取消";
"migration_in_progress" = "COVIDSafe 正在更新。\
\
請保持開機狀態直至更新完成。";
"personal_details_dialog_ok" = "選擇"; "personal_details_dialog_ok" = "選擇";
"under_sixteen_headline" = "您需要得到父母/監護人的同意才能繼續";
"country_region_name_al" = "阿爾巴尼亞"; "country_region_name_al" = "阿爾巴尼亞";
"country_region_name_cm" = "喀麥隆"; "country_region_name_cm" = "喀麥隆";
"country_region_name_ca" = "加拿大"; "country_region_name_ca" = "加拿大";
@ -418,7 +456,6 @@ COVIDSafe 不會寄出配對請求。";
"country_region_name_do" = "多明尼加共和國"; "country_region_name_do" = "多明尼加共和國";
"country_region_name_eg" = "埃及"; "country_region_name_eg" = "埃及";
"country_region_name_sv" = "薩爾瓦多"; "country_region_name_sv" = "薩爾瓦多";
"country_region_name_gq" = "赤道幾內亞";
"country_region_name_ee" = "愛沙尼亞"; "country_region_name_ee" = "愛沙尼亞";
"country_region_name_fo" = "法羅群島"; "country_region_name_fo" = "法羅群島";
"country_region_name_fj" = "斐濟"; "country_region_name_fj" = "斐濟";
@ -446,4 +483,3 @@ COVIDSafe 不會寄出配對請求。";
"country_region_name_ms" = "蒙特塞拉特"; "country_region_name_ms" = "蒙特塞拉特";
"country_region_name_ma" = "摩洛哥"; "country_region_name_ma" = "摩洛哥";
"personal_details_age_title" = "年齡組別(選擇)"; "personal_details_age_title" = "年齡組別(選擇)";
"PN_ReminderBody" = "開啟 COVIDSafe確保其處於運行狀態。";