diff --git a/DateAid.xcodeproj/project.xcworkspace/xcshareddata/DateAid.xccheckout b/DateAid.xcodeproj/project.xcworkspace/xcshareddata/DateAid.xccheckout deleted file mode 100644 index a1b9cce..0000000 --- a/DateAid.xcodeproj/project.xcworkspace/xcshareddata/DateAid.xccheckout +++ /dev/null @@ -1,41 +0,0 @@ - - - - - IDESourceControlProjectFavoriteDictionaryKey - - IDESourceControlProjectIdentifier - 0F627369-6F82-4740-9DC7-A3E6EA46093A - IDESourceControlProjectName - DateAid - IDESourceControlProjectOriginsDictionary - - F31C737610E760743C7ACE182E457F5BC9CDC557 - https://github.com/willia15/DateAid.git - - IDESourceControlProjectPath - DateAid.xcodeproj - IDESourceControlProjectRelativeInstallPathDictionary - - F31C737610E760743C7ACE182E457F5BC9CDC557 - ../.. - - IDESourceControlProjectURL - https://github.com/willia15/DateAid.git - IDESourceControlProjectVersion - 111 - IDESourceControlProjectWCCIdentifier - F31C737610E760743C7ACE182E457F5BC9CDC557 - IDESourceControlProjectWCConfigurations - - - IDESourceControlRepositoryExtensionIdentifierKey - public.vcs.git - IDESourceControlWCCIdentifierKey - F31C737610E760743C7ACE182E457F5BC9CDC557 - IDESourceControlWCCName - Date%20Aid - - - - diff --git a/DateAid.xcodeproj/xcuserdata/AWilliamson.xcuserdatad/xcschemes/DateAid.xcscheme b/DateAid.xcodeproj/xcuserdata/AWilliamson.xcuserdatad/xcschemes/DateAid.xcscheme deleted file mode 100644 index 13b020c..0000000 --- a/DateAid.xcodeproj/xcuserdata/AWilliamson.xcuserdatad/xcschemes/DateAid.xcscheme +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/DateAid.xcodeproj/xcuserdata/AWilliamson.xcuserdatad/xcschemes/xcschememanagement.plist b/DateAid.xcodeproj/xcuserdata/AWilliamson.xcuserdatad/xcschemes/xcschememanagement.plist deleted file mode 100644 index 87ec722..0000000 --- a/DateAid.xcodeproj/xcuserdata/AWilliamson.xcuserdatad/xcschemes/xcschememanagement.plist +++ /dev/null @@ -1,27 +0,0 @@ - - - - - SchemeUserState - - DateAid.xcscheme - - orderHint - 0 - - - SuppressBuildableAutocreation - - 97364CDF1AFBF44A0095BC57 - - primary - - - 97364CF71AFBF44A0095BC57 - - primary - - - - - diff --git a/DateAid.xcodeproj/xcuserdata/AaronWilliamson.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/DateAid.xcodeproj/xcuserdata/AaronWilliamson.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist deleted file mode 100644 index dcdeb3d..0000000 --- a/DateAid.xcodeproj/xcuserdata/AaronWilliamson.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +++ /dev/null @@ -1,6 +0,0 @@ - - - diff --git a/DateAid.xcodeproj/xcuserdata/AaronWilliamson.xcuserdatad/xcschemes/DateAid.xcscheme b/DateAid.xcodeproj/xcuserdata/AaronWilliamson.xcuserdatad/xcschemes/DateAid.xcscheme deleted file mode 100644 index e930e02..0000000 --- a/DateAid.xcodeproj/xcuserdata/AaronWilliamson.xcuserdatad/xcschemes/DateAid.xcscheme +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/DateAid.xcodeproj/xcuserdata/AaronWilliamson.xcuserdatad/xcschemes/xcschememanagement.plist b/DateAid.xcodeproj/xcuserdata/AaronWilliamson.xcuserdatad/xcschemes/xcschememanagement.plist deleted file mode 100644 index 87ec722..0000000 --- a/DateAid.xcodeproj/xcuserdata/AaronWilliamson.xcuserdatad/xcschemes/xcschememanagement.plist +++ /dev/null @@ -1,27 +0,0 @@ - - - - - SchemeUserState - - DateAid.xcscheme - - orderHint - 0 - - - SuppressBuildableAutocreation - - 97364CDF1AFBF44A0095BC57 - - primary - - - 97364CF71AFBF44A0095BC57 - - primary - - - - - diff --git a/DateAid/Common/DataModels/DateAid.xcdatamodeld/DateAid.xcdatamodel/contents b/DateAid/Common/DataModels/DateAid.xcdatamodeld/DateAid.xcdatamodel/contents deleted file mode 100644 index fb7f3c1..0000000 --- a/DateAid/Common/DataModels/DateAid.xcdatamodeld/DateAid.xcdatamodel/contents +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/DateAid/Common/DataModels/DateAid.xcdatamodeld/DateAid_V2.xcdatamodel/contents b/DateAid/Common/DataModels/DateAid.xcdatamodeld/DateAid_V2.xcdatamodel/contents deleted file mode 100644 index eacc2ab..0000000 --- a/DateAid/Common/DataModels/DateAid.xcdatamodeld/DateAid_V2.xcdatamodel/contents +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/DateAid/Common/DataModels/DateAid.xcdatamodeld/DateAid_V4.xcdatamodel/contents b/DateAid/Common/DataModels/DateAid.xcdatamodeld/DateAid_V4.xcdatamodel/contents deleted file mode 100644 index cd8b485..0000000 --- a/DateAid/Common/DataModels/DateAid.xcdatamodeld/DateAid_V4.xcdatamodel/contents +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/DateAid/Common/DataModels/DateAidMappingModel_V1_V2.xcmappingmodel/xcmapping.xml b/DateAid/Common/DataModels/DateAidMappingModel_V1_V2.xcmappingmodel/xcmapping.xml deleted file mode 100644 index 280152f..0000000 --- a/DateAid/Common/DataModels/DateAidMappingModel_V1_V2.xcmappingmodel/xcmapping.xml +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - 134481920 - 113D7F1E-DD06-4169-BEEA-63EF7E5EE5AC - 115 - - - - NSPersistenceFrameworkVersion - 526 - NSStoreModelVersionHashes - - XDDevAttributeMapping - - 0plcXXRN7XHKl5CcF+fwriFmUpON3ZtcI/AfK748aWc= - - XDDevEntityMapping - - qeN1Ym3TkWN1G6dU9RfX6Kd2ccEvcDVWHpd3LpLgboI= - - XDDevMappingModel - - EqtMzvRnVZWkXwBHu4VeVGy8UyoOe+bi67KC79kphlQ= - - XDDevPropertyMapping - - XN33V44TTGY4JETlMoOB5yyTKxB+u4slvDIinv0rtGA= - - XDDevRelationshipMapping - - akYY9LhehVA/mCb4ATLWuI9XGLcjpm14wWL1oEBtIcs= - - - NSStoreModelVersionHashesVersion - 3 - NSStoreModelVersionIdentifiers - - - - - - - - - city - - - - abbreviatedName - - - - type - - - - street - - - - Date - Undefined - 1 - Date - 1 - - - - - - name - - - - DateAid/DateAid.xcdatamodeld/DateAid.xcdatamodel - YnBsaXN0MDDUAAEAAgADAAQABQAGB/cH+FgkdmVyc2lvblgkb2JqZWN0c1kkYXJjaGl2ZXJUJHRv -cBIAAYagrxDGAAcACAAXADMANAA1AD0APgBZAFoAWwBhAGIAbgCEAIUAhgCHAIgAiQCKAIsAjACNAKYAqQCwALYAxQDUANcA5gD1APgAWAEIARcBGwEfAS4BNAE1AT0BTAFNAVYBZAFlAWYBZwFoAWkBfgF/AYcBiAGJAZUBqQGqAasBrAGtAa4BrwGwAbEBwAHPAd4B4gHxAgACAQIQAh8CLgI6AkwCTQJOAk8CUAJRAlICUwJiAnECgAKPApACnwKuAr0CxQLaAtsC4wLvAwMDEgMhAzADNANDA1IDYQNwA38DiwOdA6wDuwPKA9kD6AP3BAYEGwQcBCQEMAREBFMEYgRxBHUEhASTBKIEsQTABMwE3gTtBPwFCwUaBSkFOAVHBVwFXQVlBXEFhQWUBaMFsgW2BcUF1AXjBfIGAQYNBh8GLgY9BkwGWwZqBnkGiAadBp4GpgayBsYG1QbkBvMG9wcGBxUHJAczB0IHTgdgB28HfgeNB5wHnQesB7sHygfLB84H1wfbB98H4wfrB+4H8gfzVSRudWxs1wAJAAoACwAMAA0ADgAPABAAEQASABMAFAATABZfEA9feGRfcm9vdFBhY2thZ2VWJGNsYXNzXF94ZF9jb21tZW50c18QEF94ZF9tb2RlbE1hbmFnZXJfEBVfY29uZmlndXJhdGlvbnNCeU5hbWVdX3hkX21vZGVsTmFtZV8QF19tb2RlbFZlcnNpb25JZGVudGlmaWVygAKAxYDCgACAw4AAgMTeABgAGQAaABsAHAAdAB4ACgAfACAAIQAiACMAJAAlACYAJwAoACUAEwArACwALQAuAC8AJQAlABNfEBxYREJ1Y2tldEZvckNsYXNzZXN3YXNFbmNvZGVkXxAaWERCdWNrZXRGb3JQYWNrYWdlc3N0b3JhZ2VfEBxYREJ1Y2tldEZvckludGVyZmFjZXNzdG9yYWdlXxAPX3hkX293bmluZ01vZGVsXxAdWERCdWNrZXRGb3JQYWNrYWdlc3dhc0VuY29kZWRWX293bmVyXxAbWERCdWNrZXRGb3JEYXRhVHlwZXNzdG9yYWdlW192aXNpYmlsaXR5XxAZWERCdWNrZXRGb3JDbGFzc2Vzc3RvcmFnZVVfbmFtZV8QH1hEQnVja2V0Rm9ySW50ZXJmYWNlc3dhc0VuY29kZWRfEB5YREJ1Y2tldEZvckRhdGFUeXBlc3dhc0VuY29kZWRfEBBfdW5pcXVlRWxlbWVudElEgASAwIC+gAGABIAAgL+AwRAAgAWAA4AEgASAAFBTWUVT0wA2ADcACgA4ADoAPFdOUy5rZXlzWk5TLm9iamVjdHOhADmABqEAO4AHgCVURGF0Zd8QEAA/AEAAQQBCAB0AQwBEAB8ARQBGAAoAIQBHAEgAJABJAEoASwAlACUAEABPAFAALQAlAEoAUwA5AEoAVgBXAFhfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2VfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAkWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNkdXBsaWNhdGVzXxAkWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWRfECFYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc29yZGVyZWRfECFYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc3N0b3JhZ2VbX2lzQWJzdHJhY3SACYAtgASABIACgAqAu4AEgAmAvYAGgAmAvIAICBLHdN/2V29yZGVyZWTTADYANwAKAFwAXgA8oQBdgAuhAF+ADIAlXlhEX1BTdGVyZW90eXBl2QAdACEAYwAKACQAZAAfAEkAZQA7AF0ASgBpABMAJQAtAFgAbV8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYAHgAuACYAsgACABAiADdMANgA3AAoAbwB5ADypAHAAcQByAHMAdAB1AHYAdwB4gA6AD4AQgBGAEoATgBSAFYAWqQB6AHsAfAB9AH4AfwCAAIEAgoAXgBuAHIAegB+AIYAjgCaAKoAlXxAT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lwATAPoAEwVjAFgAWABYAC0AWACgAj0AWABYABMAWIAAgCKAAICaCAgICIAagE8ICIAACN8QDwCOAI8AkAAdAJEAkgCTAB8AlAAKACEAlQCWACQAlwATABMAEwVjAFgAWABYAC0AWACgAj4AWABYABMAWIAAgACAAICaCAgICIAagFAICIAACN8QDwCOAI8AkAAdAJEAkgCTAB8AlAAKACEAlQCWACQAlwATAoIAEwVjAFgAWABYAC0AWACgAj8AWABYABMAWIAAgFmAAICaCAgICIAagFEICIAACN8QDwCOAI8AkAAdAJEAkgCTAB8AlAAKACEAlQCWACQAlwATABMAEwVjAFgAWABYAC0AWACgAkAAWABYABMAWIAAgACAAICaCAgICIAagFIICIAACN8QDwCOAI8AkAAdAJEAkgCTAB8AlAAKACEAlQCWACQAlwATABMAEwVjAFgAWABYAC0AWACgAkEAWABYABMAWIAAgACAAICaCAgICIAagFMICIAACN8QDwCOAI8AkAAdAJEAkgCTAB8AlAAKACEAlQCWACQAlwATABMAEwVjAFgAWABYAC0AWACgAkIAWABYABMAWIAAgACAAICaCAgICIAagFQICIAACN8QEgCOAI8AkAaJAB0AkgCTBooAHwCRBosAlAAKACEAlQCWACQAlwATABMAEwAlADsAWABYBpMALQBYAEoAWAF4AVwAWABYBpsAWF8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgAcICIClCIAJCIBdgDIICICkCBMAAAABGwv4YNMANgA3AAoGnwaiADyiAYEBgoA2gDeiBqMGpICmgLGAJdkAHQAhBqcACgAkBqgAHwBJBqkBYgGBAEoAaQATACUALQBYBrFfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WAo4A2gAmALIAAgAQIgKfTADYANwAKBrMGvAA8qAGXAZgBmQGaAZsBnAGdAZ6AOoA7gDyAPYA+gD+AQIBBqAa9Br4GvwbABsEGwgbDBsSAqICpgKqArICtgK6Ar4CwgCXfEA8AjgCPAJAAHQCRAJIAkwAfAJQACgAhAJUAlgAkAJcAEwD6ABMGowBYAFgAWAAtAFgAoAGXAFgAWAATAFiAAIAigACApggICAiAGoA6CAiAAAjfEA8AjgCPAJAAHQCRAJIAkwAfAJQACgAhAJUAlgAkAJcAEwATABMGowBYAFgAWAAtAFgAoAGYAFgAWAATAFiAAIAAgACApggICAiAGoA7CAiAAAjfEA8AjgCPAJAAHQCRAJIAkwAfAJQACgAhAJUAlgAkAJcAEwbmABMGowBYAFgAWAAtAFgAoAGZAFgAWAATAFiAAICrgACApggICAiAGoA8CAiAAAjTADYANwAKBvQG9QA8oKCAJd8QDwCOAI8AkAAdAJEAkgCTAB8AlAAKACEAlQCWACQAlwATAPoAEwajAFgAWABYAC0AWACgAZoAWABYABMAWIAAgCKAAICmCAgICIAagD0ICIAACN8QDwCOAI8AkAAdAJEAkgCTAB8AlAAKACEAlQCWACQAlwATAfMAEwajAFgAWABYAC0AWACgAZsAWABYABMAWIAAgEiAAICmCAgICIAagD4ICIAACN8QDwCOAI8AkAAdAJEAkgCTAB8AlAAKACEAlQCWACQAlwATAPoAEwajAFgAWABYAC0AWACgAZwAWABYABMAWIAAgCKAAICmCAgICIAagD8ICIAACN8QDwCOAI8AkAAdAJEAkgCTAB8AlAAKACEAlQCWACQAlwATABMAEwajAFgAWABYAC0AWACgAZ0AWABYABMAWIAAgACAAICmCAgICIAagEAICIAACN8QDwCOAI8AkAAdAJEAkgCTAB8AlAAKACEAlQCWACQAlwATAPoAEwajAFgAWABYAC0AWACgAZ4AWABYABMAWIAAgCKAAICmCAgICIAagEEICIAACNkAHQAhB0MACgAkB0QAHwBJB0UBYgGCAEoAaQATACUALQBYB01fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WAo4A3gAmALIAAgAQIgLLTADYANwAKB08HVwA8pwI8Aj0CPgI/AkACQQJCgE6AT4BQgFGAUoBTgFSnB1gHWQdaB1sHXAddB16As4C0gLWAtoC4gLmAuoAl3xAPAI4AjwCQAB0AkQCSAJMAHwCUAAoAIQCVAJYAJACXABMAEwATBqQAWABYAFgALQBYAKACPABYAFgAEwBYgACAAIAAgLEICAgIgBqATggIgAAI3xAPAI4AjwCQAB0AkQCSAJMAHwCUAAoAIQCVAJYAJACXABMA+gATBqQAWABYAFgALQBYAKACPQBYAFgAEwBYgACAIoAAgLEICAgIgBqATwgIgAAI3xAPAI4AjwCQAB0AkQCSAJMAHwCUAAoAIQCVAJYAJACXABMAEwATBqQAWABYAFgALQBYAKACPgBYAFgAEwBYgACAAIAAgLEICAgIgBqAUAgIgAAI3xAPAI4AjwCQAB0AkQCSAJMAHwCUAAoAIQCVAJYAJACXABMHjwATBqQAWABYAFgALQBYAKACPwBYAFgAEwBYgACAt4AAgLEICAgIgBqAUQgIgAAIEQOE3xAPAI4AjwCQAB0AkQCSAJMAHwCUAAoAIQCVAJYAJACXABMAEwATBqQAWABYAFgALQBYAKACQABYAFgAEwBYgACAAIAAgLEICAgIgBqAUggIgAAI3xAPAI4AjwCQAB0AkQCSAJMAHwCUAAoAIQCVAJYAJACXABMAEwATBqQAWABYAFgALQBYAKACQQBYAFgAEwBYgACAAIAAgLEICAgIgBqAUwgIgAAI3xAPAI4AjwCQAB0AkQCSAJMAHwCUAAoAIQCVAJYAJACXABMAEwATBqQAWABYAFgALQBYAKACQgBYAFgAEwBYgACAAIAAgLEICAgIgBqAVAgIgAAIWmR1cGxpY2F0ZXPSADcACgfMAKiggBnSAKoAqwfPB9BaWERQTUVudGl0eacH0QfSB9MH1AfVB9YAr1pYRFBNRW50aXR5XVhEVU1MQ2xhc3NJbXBfEBJYRFVNTENsYXNzaWZpZXJJbXBfEBFYRFVNTE5hbWVzcGFjZUltcF8QFFhEVU1MTmFtZWRFbGVtZW50SW1wXxAPWERVTUxFbGVtZW50SW1w0wA2ADcACgfYB9kAPKCggCXTADYANwAKB9wH3QA8oKCAJdMANgA3AAoH4AfhADygoIAl0gCqAKsH5AflXlhETW9kZWxQYWNrYWdlpgfmB+cH6AfpB+oAr15YRE1vZGVsUGFja2FnZV8QD1hEVU1MUGFja2FnZUltcF8QEVhEVU1MTmFtZXNwYWNlSW1wXxAUWERVTUxOYW1lZEVsZW1lbnRJbXBfEA9YRFVNTEVsZW1lbnRJbXDSADcACgfsAKiggBnTADYANwAKB+8H8AA8oKCAJVDSAKoAqwf0B/VZWERQTU1vZGVsowf0B/YAr1dYRE1vZGVsXxAPTlNLZXllZEFyY2hpdmVy0Qf5AChUcm9vdIABAAgAGQAiACsANQA6AD8BzgHUAfECAwIKAhcCKgJCAlACagJsAm4CcAJyAnQCdgJ4ArEC0ALtAwwDHgM+A0UDYwNvA4sDkQOzA9QD5wPpA+sD7QPvA/ED8wP1A/cD+QP7A/0D/wQBBAMEBAQIBBUEHQQoBCsELQQwBDIENAQ5BHwEoATEBOcFDgUuBVUFfAWcBcAF5AXwBfIF9AX2BfgF+gX8Bf4GAAYCBgQGBgYIBgoGDAYNBhIGGgYnBioGLAYvBjEGMwZCBmcGiwayBtYG2AbaBtwG3gbgBuIG4wblBvIHBQcHBwkHCwcNBw8HEQcTBxUHFwcqBywHLgcwBzIHNAc2BzgHOgc8Bz4HVAdnB4MHoAe8B9AH4gf4CBEIUAhWCF8IbAh4CIIIjAiXCKIIrwi3CLkIuwi9CL8IwAjBCMIIwwjFCMcIyAjJCMsIzAjVCNYI2AjhCOwI9QkECQsJEwkcCSUJOAlBCVQJawl9CbwJvgnACcIJxAnFCcYJxwnICcoJzAnNCc4J0AnRChAKEgoUChYKGAoZChoKGwocCh4KIAohCiIKJAolCi4KLwoxCnAKcgp0CnYKeAp5CnoKewp8Cn4KgAqBCoIKhAqFCsQKxgrICsoKzArNCs4KzwrQCtIK1ArVCtYK2ArZCuIK4wrlCyQLJgsoCyoLLAstCy4LLwswCzILNAs1CzYLOAs5CzoLeQt7C30LfwuBC4ILgwuEC4ULhwuJC4oLiwuNC44LmwucC50LnwuoC74LxQvSDBEMEwwVDBcMGQwaDBsMHAwdDB8MIQwiDCMMJQwmDD8MQQxDDEUMRgxIDF8MaAx2DIMMkQymDLoM0QzjDSINJA0mDSgNKg0rDSwNLQ0uDTANMg0zDTQNNg03DUQNTQ1iDXENhg2UDakNvQ3UDeYN8w3+DgAOAg4EDgYOCA4TDhUOFw4ZDhsOHQ4fDjEONg5EDkkOTg6ZDrwO3A78Dv4PAA8CDwQPBg8HDwgPCg8LDw0PDg8QDxIPEw8UDxYPFw8cDykPLg8wDzIPNw85DzsPPQ9SD2cPjA+wD9cP+w/9D/8QARADEAUQBxAIEAoQFxAoECoQLBAuEDAQMhA0EDYQOBBJEEsQTRBPEFEQUxBVEFcQWRBbEHkQlxCqEL4Q0xDwEQQRGhFZEVsRXRFfEWERYhFjEWQRZRFnEWkRahFrEW0RbhGtEa8RsRGzEbURthG3EbgRuRG7Eb0RvhG/EcERwhIBEgMSBRIHEgkSChILEgwSDRIPEhESEhITEhUSFhIjEiQSJRInEmYSaBJqEmwSbhJvEnAScRJyEnQSdhJ3EngSehJ7EroSvBK+EsASwhLDEsQSxRLGEsgSyhLLEswSzhLPEtATDxMRExMTFRMXExgTGRMaExsTHRMfEyATIRMjEyQTYxNlE2cTaRNrE2wTbRNuE28TcRNzE3QTdRN3E3gTtxO5E7sTvRO/E8ATwRPCE8MTxRPHE8gTyRPLE8wT8RQVFDwUYBRiFGQUZhRoFGoUbBRtFG8UfBSLFI0UjxSRFJMUlRSXFJkUqBSqFKwUrhSwFLIUtBS2FLgU2BUDFR0VNhVQFXAVkxXSFdQV1hXYFdoV2xXcFd0V3hXgFeIV4xXkFeYV5xYmFigWKhYsFi4WLxYwFjEWMhY0FjYWNxY4FjoWOxZ6FnwWfhaAFoIWgxaEFoUWhhaIFooWixaMFo4WjxbOFtAW0hbUFtYW1xbYFtkW2hbcFt4W3xbgFuIW4xbmFyUXJxcpFysXLRcuFy8XMBcxFzMXNRc2FzcXORc6F3kXexd9F38XgReCF4MXhBeFF4cXiReKF4sXjReOF80XzxfRF9MX1RfWF9cX2BfZF9sX3RfeF98X4RfiF+sX+RgGGBQYIRg0GEsYXRioGMsY6xkLGQ0ZDxkRGRMZFRkWGRcZGRkaGRwZHRkfGSEZIhkjGSUZJhkvGTwZQRlDGUUZShlMGU4ZUBl1GZkZwBnkGeYZ6BnqGewZ7hnwGfEZ8xoAGhEaExoVGhcaGRobGh0aHxohGjIaNBo2GjgaOho8Gj4aQBpCGkQagxqFGocaiRqLGowajRqOGo8akRqTGpQalRqXGpga1xrZGtsa3RrfGuAa4RriGuMa5RrnGuga6RrrGuwbKxstGy8bMRszGzQbNRs2GzcbORs7GzwbPRs/G0AbTRtOG08bURuQG5IblBuWG5gbmRuaG5sbnBueG6AboRuiG6QbpRvkG+Yb6BvqG+wb7RvuG+8b8BvyG/Qb9Rv2G/gb+Rw4HDocPBw+HEAcQRxCHEMcRBxGHEgcSRxKHEwcTRyMHI4ckBySHJQclRyWHJccmByaHJwcnRyeHKAcoRzgHOIc5BzmHOgc6RzqHOsc7BzuHPAc8RzyHPQc9R0aHT4dZR2JHYsdjR2PHZEdkx2VHZYdmB2lHbQdth24HbodvB2+HcAdwh3RHdMd1R3XHdkd2x3dHd8d4R4gHiIeJB4mHigeKR4qHiseLB4uHjAeMR4yHjQeNR50HnYeeB56HnwefR5+Hn8egB6CHoQehR6GHogeiR7IHsoezB7OHtAe0R7SHtMe1B7WHtge2R7aHtwe3R8cHx4fIB8iHyQfJR8mHycfKB8qHywfLR8uHzAfMR9wH3IfdB92H3gfeR96H3sffB9+H4AfgR+CH4QfhR/EH8YfyB/KH8wfzR/OH88f0B/SH9Qf1R/WH9gf2SAYIBogHCAeICAgISAiICMgJCAmICggKSAqICwgLSB4IJsguyDbIN0g3yDhIOMg5SDmIOcg6SDqIOwg7SDvIPEg8iDzIPUg9iD7IQghDSEPIREhFiEYIRohHCFBIWUhjCGwIbIhtCG2IbghuiG8Ib0hvyHMId0h3yHhIeMh5SHnIekh6yHtIf4iACICIgQiBiIIIgoiDCIOIhAiTyJRIlMiVSJXIlgiWSJaIlsiXSJfImAiYSJjImQioyKlIqciqSKrIqwirSKuIq8isSKzIrQitSK3Irgi9yL5Ivsi/SL/IwAjASMCIwMjBSMHIwgjCSMLIwwjGSMaIxsjHSNcI14jYCNiI2QjZSNmI2cjaCNqI2wjbSNuI3AjcSOwI7IjtCO2I7gjuSO6I7sjvCO+I8AjwSPCI8QjxSQEJAYkCCQKJAwkDSQOJA8kECQSJBQkFSQWJBgkGSRYJFokXCReJGAkYSRiJGMkZCRmJGgkaSRqJGwkbSSsJK4ksCSyJLQktSS2JLckuCS6JLwkvSS+JMAkwSTmJQolMSVVJVclWSVbJV0lXyVhJWIlZCVxJYAlgiWEJYYliCWKJYwljiWdJZ8loSWj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 - - DateAid/DateAid.xcdatamodeld/DateAid_V2.xcdatamodel - YnBsaXN0MDDUAAEAAgADAAQABQAGEIIQg1gkdmVyc2lvblgkb2JqZWN0c1kkYXJjaGl2ZXJUJHRv -cBIAAYagrxEBdwAHAAgAFwAzADQANQA/AEAAQQBcAF0AXgBkAGUAcQCHAIgAiQCKAIsAjACNAI4AjwCQAKkArACzALkAyADXANoA6QD4APsAWwELARoBHgEiATEBNwE4AUABTwFYAWYBZwFoAWkBagFrAYABgQGJAYoBiwGXAasBrAGtAa4BrwGwAbEBsgGzAcIB0QHgAeQB8wICAgMCEgIhAjACPAJOAk8CUAJRAlICUwJUAlUCZAJzAoICkQKSAqECsAK/AscC3ALdAuUC8QMFAxQDIwMyAzYDRQNUA2MDcgOBA40DnwOuA70DzAPbA+oD+QQIBB0EHgQmBDIERgRVBGQEcwR3BIYElQSkBLMEwgTOBOAE7wT+BQ0FHAUrBToFSQVeBV8FZwVzBYcFlgWlBbQFuAXHBdYF5QX0BgMGDwYhBjAGMQZABk8GXgZfBm4GfQaMBqEGogaqBqsGtwbLBtoG6Qb4BvwHCwcaBykHOAdHB1MHZQdmB2cHaAdpB2oHawdsAC0HeweKB4sHmgepB8MHxAfKB9YH7Af7B/4IDQgcCB8ILgg9CEAITwheCGIIcQiACIEIkQiSCJMIlAiVCJYIqwisCLQIwAjUCOMI8gkBCQUJFAkjCTIJQQlQCVwJbgl9CYwJmwmqCbkJyAnXCewJ7Qn1CgEKFQokCjMKQgpGClUKZApzCoIKkQqdCq8KvgrNCtwK6wr6CwkLGAstCy4LNgtCC1YLZQt0C4MLhwuWC6ULtAvDC9IL3gvwC/8MDgwdDCwMOwxKDFkMYQx2DHcMfwyLDJ8Mrgy9DMwM0AzfDO4M/Q0MDRsNJw05DUgNVw1mDXUNhA2TDaINtw24DcANzA3gDe8N/g4NDhEOIA4vDj4OTQ5cDmgOeg6JDpgOpw62DsUO1A7jDvgO+Q8BDw0PIQ8wDz8PTg9SD2EPcA9/D44PnQ+pD7sPyg/ZD+gP9w/4EAcQFhAlECYQKRAyEEEQUBBfEGIQZhBqEG4QdhB5EH0QflUkbnVsbNcACQAKAAsADAANAA4ADwAQABEAEgATABQAEwAWXxAPX3hkX3Jvb3RQYWNrYWdlViRjbGFzc1xfeGRfY29tbWVudHNfEBBfeGRfbW9kZWxNYW5hZ2VyXxAVX2NvbmZpZ3VyYXRpb25zQnlOYW1lXV94ZF9tb2RlbE5hbWVfEBdfbW9kZWxWZXJzaW9uSWRlbnRpZmllcoACgQF2gQFzgACBAXSAAIEBdd4AGAAZABoAGwAcAB0AHgAKAB8AIAAhACIAIwAkACUAJgAnACgAJQATACsALAAtAC4ALwAlACUAE18QHFhEQnVja2V0Rm9yQ2xhc3Nlc3dhc0VuY29kZWRfEBpYREJ1Y2tldEZvclBhY2thZ2Vzc3RvcmFnZV8QHFhEQnVja2V0Rm9ySW50ZXJmYWNlc3N0b3JhZ2VfEA9feGRfb3duaW5nTW9kZWxfEB1YREJ1Y2tldEZvclBhY2thZ2Vzd2FzRW5jb2RlZFZfb3duZXJfEBtYREJ1Y2tldEZvckRhdGFUeXBlc3N0b3JhZ2VbX3Zpc2liaWxpdHlfEBlYREJ1Y2tldEZvckNsYXNzZXNzdG9yYWdlVV9uYW1lXxAfWERCdWNrZXRGb3JJbnRlcmZhY2Vzd2FzRW5jb2RlZF8QHlhEQnVja2V0Rm9yRGF0YVR5cGVzd2FzRW5jb2RlZF8QEF91bmlxdWVFbGVtZW50SUSABIEBcYEBb4ABgASAAIEBcIEBchAAgAWAA4AEgASAAFBTWUVT0wA2ADcACgA4ADsAPldOUy5rZXlzWk5TLm9iamVjdHOiADkAOoAGgAeiADwAPYAIgMOAJldBZGRyZXNzVERhdGXfEBAAQgBDAEQARQAdAEYARwAfAEgASQAKACEASgBLACQATABNAE4AJQAlABAAUgBTAC0AJQBNAFYAOQBNAFkAWgBbXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zZHVwbGljYXRlc18QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNvcmRlcmVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNzdG9yYWdlW19pc0Fic3RyYWN0gAqALYAEgASAAoALgQFogASACoEBaoAGgAqBAW6ACQgScFvsd1dvcmRlcmVk0wA2ADcACgBfAGEAPqEAYIAMoQBigA2AJl5YRF9QU3RlcmVvdHlwZdkAHQAhAGYACgAkAGcAHwBMAGgAPABgAE0AbAATACUALQBbAHBfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WACIAMgAqALIAAgAQIgA7TADYANwAKAHIAfAA+qQBzAHQAdQB2AHcAeAB5AHoAe4APgBCAEYASgBOAFIAVgBaAF6kAfQB+AH8AgACBAIIAgwCEAIWAGIAcgB2AH4AggCKAJIAngCuAJl8QE1hEUE1Db21wb3VuZEluZGV4ZXNfEBBYRF9QU0tfZWxlbWVudElEXxAZWERQTVVuaXF1ZW5lc3NDb25zdHJhaW50c18QGlhEX1BTS192ZXJzaW9uSGFzaE1vZGlmaWVyXxAZWERfUFNLX2ZldGNoUmVxdWVzdHNBcnJheV8QEVhEX1BTS19pc0Fic3RyYWN0XxAPWERfUFNLX3VzZXJJbmZvXxATWERfUFNLX2NsYXNzTWFwcGluZ18QFlhEX1BTS19lbnRpdHlDbGFzc05hbWXfEA8AkQCSAJMAHQCUAJUAlgAfAJcACgAhAJgAmQAkAJoAEwCcABMAYgBbAFsAWwAtAFsAowBzAFsAWwATAFtVX3R5cGVYX2RlZmF1bHRcX2Fzc29jaWF0aW9uW19pc1JlYWRPbmx5WV9pc1N0YXRpY1lfaXNVbmlxdWVaX2lzRGVyaXZlZFpfaXNPcmRlcmVkXF9pc0NvbXBvc2l0ZVdfaXNMZWFmgACAGYAAgA0ICAgIgBuADwgIgAAI0gA3AAoAqgCroIAa0gCtAK4ArwCwWiRjbGFzc25hbWVYJGNsYXNzZXNeTlNNdXRhYmxlQXJyYXmjAK8AsQCyV05TQXJyYXlYTlNPYmplY3TSAK0ArgC0ALVfEBBYRFVNTFByb3BlcnR5SW1wpAC2ALcAuACyXxAQWERV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GxkbPRs/G0EbQxtFG0cbSRtKG0wbWRtqG2wbbhtwG3IbdBt2G3gbehuLG40bjxuRG5MblRuXG5kbmxudG9wb3hvgG+Ib5BvlG+Yb5xvoG+ob7BvtG+4b8BvxHDAcMhw0HDYcOBw5HDocOxw8HD4cQBxBHEIcRBxFHIQchhyIHIocjByNHI4cjxyQHJIclByVHJYcmByZHKYcpxyoHKoc6RzrHO0c7xzxHPIc8xz0HPUc9xz5HPoc+xz9HP4dPR0/HUEdQx1FHUYdRx1IHUkdSx1NHU4dTx1RHVIdkR2THZUdlx2ZHZodmx2cHZ0dnx2hHaIdox2lHaYd5R3nHekd6x3tHe4d7x3wHfEd8x31HfYd9x35HfoeOR47Hj0ePx5BHkIeQx5EHkUeRx5JHkoeSx5NHk4ecx6XHr4e4h7kHuYe6B7qHuwe7h7vHvEe/h8NHw8fER8THxUfFx8ZHxsfKh8sHy4fMB8yHzQfNh84HzofeR97H30ffx+BH4Ifgx+EH4Ufhx+JH4ofix+NH44fzR/PH9Ef0x/VH9Yf1x/YH9kf2x/dH94f3x/hH+IgISAjICUgJyApICogKyAsIC0gLyAxIDIgMyA1IDYgdSB3IHkgeyB9IH4gfyCAIIEggyCFIIYghyCJIIogySDLIM0gzyDRINIg0yDUINUg1yDZINog2yDdIN4hHSEfISEhIyElISYhJyEoISkhKyEtIS4hLyExITIhcSFzIXUhdyF5IXoheyF8IX0hfyGBIYIhgyGFIYYh0SH0IhQiNCI2IjgiOiI8Ij4iPyJAIkIiQyJFIkYiSCJKIksiTCJOIk8iVCJhImYiaCJqIm8icSJzInUimiK+IuUjCSMLIw0jDyMRIxMjFSMWIxgjJSM2IzgjOiM8Iz4jQCNCI0QjRiNXI1kjWyNdI18jYSNjI2UjZyNpI6gjqiOsI64jsCOxI7IjsyO0I7YjuCO5I7ojvCO9I/wj/iQAJAIkBCQFJAYkByQIJAokDCQNJA4kECQRJFAkUiRUJFYkWCRZJFokWyRcJF4kYCRhJGIkZCRlJHIkcyR0JHYktSS3JLkkuyS9JL4kvyTAJMEkwyTFJMYkxyTJJMolCSULJQ0lDyURJRIlEyUUJRUlFyUZJRolGyUdJR4lXSVfJWElYyVlJWYlZyVoJWklayVtJW4lbyVxJXIlsSWzJbUltyW5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UtRS1lLXUxZTGFMaUxxTH1MgUyFTIlMjUyVTJ1MoUylTK1MsU2tTbVNvU3FTdFN1U3ZTd1N4U3pTfFN9U35TgFOBU6ZTylPxVBVUGFQaVBxUHlQgVCJUI1QmVDNUQlREVEZUSFRKVExUTlRQVF9UYlRlVGhUa1RuVHFUdFR2VLVUt1S5VLtUvlS/VMBUwVTCVMRUxlTHVMhUylTLVQpVDFUOVRBVE1UUVRVVFlUXVRlVG1UcVR1VH1UgVV9VYVVjVWVVaFVpVWpVa1VsVW5VcFVxVXJVdFV1VbRVtlW4VbpVvVW+Vb9VwFXBVcNVxVXGVcdVyVXKVglWC1YNVg9WElYTVhRWFVYWVhhWGlYbVhxWHlYfVl5WYFZiVmRWZ1ZoVmlWalZrVm1Wb1ZwVnFWc1Z0VrNWtVa3VrlWvFa9Vr5Wv1bAVsJWxFbFVsZWyFbJVtJW5VbyVwVXElclVzxXTleZV7xX3Ff8V/5YAFgCWARYBlgHWAhYC1gMWA5YD1gRWBNYFFgVWBhYGVgeWCtYMFgyWDRYOVg8WD9YQVhmWIpYsVjVWNhY2ljcWN5Y4FjiWONY5ljzWQRZBlkIWQpZDFkOWRBZElkUWSVZKFkrWS5ZMVk0WTdZOlk9WT9ZflmAWYJZhFmHWYhZiVmKWYtZjVmPWZBZkVmTWZRZ01nVWddZ2VncWd1Z3lnfWeBZ4lnkWeVZ5lnoWelaKFoqWi1aL1oyWjNaNFo1WjZaOFo6WjtaPFo+Wj9aTFpNWk5aUFqPWpFak1qVWphamVqaWptanFqeWqBaoVqiWqRapVrkWuZa6FrqWu1a7lrvWvBa8VrzWvVa9lr3Wvla+ls5WztbPVs/W0JbQ1tEW0VbRltIW0pbS1tMW05bT1uOW5BbkluUW5dbmFuZW5pbm1udW59boFuhW6NbpFvjW+Vb51vpW+xb7VvuW+9b8FvyW/Rb9Vv2W/hb+VweXEJcaVyNXJBcklyUXJZcmFyaXJtcnlyrXLpcvFy+XMBcwlzEXMZcyFzXXNpc3VzgXONc5lzpXOxc7l0tXS9dMV0zXTZdN104XTldOl08XT5dP11AXUJdQ12CXYRdhl2IXYtdjF2NXY5dj12RXZNdlF2VXZddmF3XXdld213dXeBd4V3iXeNd5F3mXehd6V3qXexd7V4sXi5eMF4yXjVeNl43XjheOV47Xj1ePl4/XkFeQl6BXoNehV6HXopei16MXo1ejl6QXpJek16UXpZel17WXthe2l7cXt9e4F7hXuJe417lXude6F7pXute7F8rXy1fL18xXzRfNV82XzdfOF86XzxfPV8+X0BfQV+MX69fz1/vX/Ff81/1X/df+V/6X/tf/l//YAFgAmAEYAZgB2AIYAtgDGAVYCJgJ2ApYCtgMGAzYDZgOGBdYIFgqGDMYM9g0WDTYNVg12DZYNpg3WDqYPtg/WD/YQFhA2EFYQdhCWELYRxhH2EiYSVhKGErYS5hMWE0YTZhdWF3YXlhe2F+YX9hgGGBYYJhhGGGYYdhiGGKYYthymHMYc5h0GHTYdRh1WHWYddh2WHbYdxh3WHfYeBiH2IhYiRiJmIpYipiK2IsYi1iL2IxYjJiM2I1YjZiQ2JEYkViR2KGYohiimKMYo9ikGKRYpJik2KVYpdimGKZYptinGLbYt1i32LhYuRi5WLmYudi6GLqYuxi7WLuYvBi8WMwYzJjNGM2YzljOmM7YzxjPWM/Y0FjQmNDY0VjRmOFY4djiWOLY45jj2OQY5FjkmOUY5Zjl2OYY5pjm2PaY9xj3mPgY+Nj5GPlY+Zj52PpY+tj7GPtY+9j8GQVZDlkYGSEZIdkiWSLZI1kj2SRZJJklWSiZLFks2S1ZLdkuWS7ZL1kv2TOZNFk1GTXZNpk3WTgZONk5WUkZSZlKGUqZS1lLmUvZTBlMWUzZTVlNmU3ZTllOmV5ZXtlfWV/ZYJlg2WEZYVlhmWIZYpli2WMZY5lj2XOZdBl0mXUZddl2GXZZdpl22XdZd9l4GXhZeNl5GYjZiVmJ2YpZixmLWYuZi9mMGYyZjRmNWY2ZjhmOWZ4ZnpmfGZ+ZoFmgmaDZoRmhWaHZolmimaLZo1mjmbNZs9m0WbTZtZm12bYZtlm2mbcZt5m32bgZuJm42ciZyRnJmcoZytnLGctZy5nL2cxZzNnNGc1ZzdnOGeDZ6ZnxmfmZ+hn6mfsZ+5n8GfxZ/Jn9Wf2Z/hn+Wf7Z/1n/mf/aAJoA2gIaBVoGmgcaB5oI2gmaCloK2hQaHRom2i/aMJoxGjGaMhoymjMaM1o0GjdaO5o8GjyaPRo9mj4aPpo/Gj+aQ9pEmkVaRhpG2keaSFpJGknaSlpaGlqaWxpbmlxaXJpc2l0aXVpd2l5aXppe2l9aX5pvWm/acFpw2nGacdpyGnJacppzGnOac9p0GnSadNqEmoUahdqGWocah1qHmofaiBqImokaiVqJmooailqNmo3ajhqOmp5antqfWp/aoJqg2qEaoVqhmqIaopqi2qMao5qj2rOatBq0mrUatdq2GrZatpq22rdat9q4GrhauNq5GsjayVrJ2spayxrLWsuay9rMGsyazRrNWs2azhrOWt4a3prfGt+a4FrgmuDa4RrhWuHa4lrimuLa41rjmvNa89r0WvTa9Zr12vYa9lr2mvca95r32vga+Jr42wIbCxsU2x3bHpsfGx+bIBsgmyEbIVsiGyVbKRspmyobKpsrGyubLBssmzBbMRsx2zKbM1s0GzTbNZs2G0XbRltG20dbSBtIW0ibSNtJG0mbShtKW0qbSxtLW1sbW5tcG1ybXVtdm13bXhteW17bX1tfm1/bYFtgm3BbcNtxW3Hbcpty23Mbc1tzm3QbdJt023UbdZt124WbhhuG24dbiBuIW4ibiNuJG4mbihuKW4qbixuLW4wbm9ucW5zbnVueG55bnpue258bn5ugG6BboJuhG6FbsRuxm7IbspuzW7Obs9u0G7RbtNu1W7Wbtdu2W7abxlvG28dbx9vIm8jbyRvJW8mbyhvKm8rbyxvLm8vbzpvQ29Eb0ZvT29ab2lvdG+Cb5dvq2/Cb9RwE3AVcBdwGXAbcBxwHXAecB9wIXAjcCRwJXAncChwZ3BpcGtwbXBvcHBwcXBycHNwdXB3cHhweXB7cHxwu3C9cMBwwnDEcMVwxnDHcMhwynDMcM1wznDQcNFw2nDbcN1w6nDrcOxw7nD7cPxw/XD/cQxxDXEOcRBxGXEocTVxRHFWcWpxgXGTcZxxnXGfcaxxrXGucbBxsXG6ccRxy3HTceVx6nHvAAAAAAAAAgIAAAAAAAAQhgAAAAAAAAAAAAAAAAAAcfE= - - - - - equalizedDate - - - - state - - - - date - - - - 1 - address - - - - Date - Undefined - 2 - Address - 1 - - - - - - zip - - - - DateToDate - $source - 1 - date - - - \ No newline at end of file diff --git a/DateAid/Common/DataModels/DateAidMappingModel_V2_V3.xcmappingmodel/xcmapping.xml b/DateAid/Common/DataModels/DateAidMappingModel_V2_V3.xcmappingmodel/xcmapping.xml deleted file mode 100644 index f1d46e0..0000000 --- a/DateAid/Common/DataModels/DateAidMappingModel_V2_V3.xcmappingmodel/xcmapping.xml +++ /dev/null @@ -1,147 +0,0 @@ - - - - - - 134481920 - B44C3440-5C20-47EC-A31F-0C3B70AAA552 - 118 - - - - NSPersistenceFrameworkVersion - 526 - NSStoreModelVersionHashes - - XDDevAttributeMapping - - 0plcXXRN7XHKl5CcF+fwriFmUpON3ZtcI/AfK748aWc= - - XDDevEntityMapping - - qeN1Ym3TkWN1G6dU9RfX6Kd2ccEvcDVWHpd3LpLgboI= - - XDDevMappingModel - - EqtMzvRnVZWkXwBHu4VeVGy8UyoOe+bi67KC79kphlQ= - - XDDevPropertyMapping - - XN33V44TTGY4JETlMoOB5yyTKxB+u4slvDIinv0rtGA= - - XDDevRelationshipMapping - - akYY9LhehVA/mCb4ATLWuI9XGLcjpm14wWL1oEBtIcs= - - - NSStoreModelVersionHashesVersion - 3 - NSStoreModelVersionIdentifiers - - - - - - - - - DateToNote - $source - 1 - date - - - - DateAid/DateAid.xcdatamodeld/DateAid_V2.xcdatamodel - YnBsaXN0MDDUAAEAAgADAAQABQAGEIIQg1gkdmVyc2lvblgkb2JqZWN0c1kkYXJjaGl2ZXJUJHRv -cBIAAYagrxEBdwAHAAgAFwAzADQANQA/AEAAQQBcAF0AXgBkAGUAcQCHAIgAiQCKAIsAjACNAI4AjwCQAKkArACzALkAyADXANoA6QD4APsAWwELARoBHgEiATEBNwE4AUABTwFYAWYBZwFoAWkBagFrAYABgQGJAYoBiwGXAasBrAGtAa4BrwGwAbEBsgGzAcIB0QHgAeQB8wICAgMCEgIhAjACPAJOAk8CUAJRAlICUwJUAlUCZAJzAoICkQKSAqECsAK/AscC3ALdAuUC8QMFAxQDIwMyAzYDRQNUA2MDcgOBA40DnwOuA70DzAPbA+oD+QQIBB0EHgQmBDIERgRVBGQEcwR3BIYElQSkBLMEwgTOBOAE7wT+BQ0FHAUrBToFSQVeBV8FZwVzBYcFlgWlBbQFuAXHBdYF5QX0BgMGDwYhBjAGMQZABk8GXgZfBm4GfQaMBqEGogaqBqsGtwbLBtoG6Qb4BvwHCwcaBykHOAdHB1MHZQdmB2cHaAdpB2oHawdsAC0HeweKB4sHmgepB8MHxAfKB9YH7Af7B/4IDQgcCB8ILgg9CEAITwheCGIIcQiACIEIkQiSCJMIlAiVCJYIqwisCLQIwAjUCOMI8gkBCQUJFAkjCTIJQQlQCVwJbgl9CYwJmwmqCbkJyAnXCewJ7Qn1CgEKFQokCjMKQgpGClUKZApzCoIKkQqdCq8KvgrNCtwK6wr6CwkLGAstCy4LNgtCC1YLZQt0C4MLhwuWC6ULtAvDC9IL3gvwC/8MDgwdDCwMOwxKDFkMYQx2DHcMfwyLDJ8Mrgy9DMwM0AzfDO4M/Q0MDRsNJw05DUgNVw1mDXUNhA2TDaINtw24DcANzA3gDe8N/g4NDhEOIA4vDj4OTQ5cDmgOeg6JDpgOpw62DsUO1A7jDvgO+Q8BDw0PIQ8wDz8PTg9SD2EPcA9/D44PnQ+pD7sPyg/ZD+gP9w/4EAcQFhAlECYQKRAyEEEQUBBfEGIQZhBqEG4QdhB5EH0QflUkbnVsbNcACQAKAAsADAANAA4ADwAQABEAEgATABQAEwAWXxAPX3hkX3Jvb3RQYWNrYWdlViRjbGFzc1xfeGRfY29tbWVudHNfEBBfeGRfbW9kZWxNYW5hZ2VyXxAVX2NvbmZpZ3VyYXRpb25zQnlOYW1lXV94ZF9tb2RlbE5hbWVfEBdfbW9kZWxWZXJzaW9uSWRlbnRpZmllcoACgQF2gQFzgACBAXSAAIEBdd4AGAAZABoAGwAcAB0AHgAKAB8AIAAhACIAIwAkACUAJgAnACgAJQATACsALAAtAC4ALwAlACUAE18QHFhEQnVja2V0Rm9yQ2xhc3Nlc3dhc0VuY29kZWRfEBpYREJ1Y2tldEZvclBhY2thZ2Vzc3RvcmFnZV8QHFhEQnVja2V0Rm9ySW50ZXJmYWNlc3N0b3JhZ2VfEA9feGRfb3duaW5nTW9kZWxfEB1YREJ1Y2tldEZvclBhY2thZ2Vzd2FzRW5jb2RlZFZfb3duZXJfEBtYREJ1Y2tldEZvckRhdGFUeXBlc3N0b3JhZ2VbX3Zpc2liaWxpdHlfEBlYREJ1Y2tldEZvckNsYXNzZXNzdG9yYWdlVV9uYW1lXxAfWERCdWNrZXRGb3JJbnRlcmZhY2Vzd2FzRW5jb2RlZF8QHlhEQnVja2V0Rm9yRGF0YVR5cGVzd2FzRW5jb2RlZF8QEF91bmlxdWVFbGVtZW50SUSABIEBcYEBb4ABgASAAIEBcIEBchAAgAWAA4AEgASAAFBTWUVT0wA2ADcACgA4ADsAPldOUy5rZXlzWk5TLm9iamVjdHOiADkAOoAGgAeiADwAPYAIgMOAJldBZGRyZXNzVERhdGXfEBAAQgBDAEQARQAdAEYARwAfAEgASQAKACEASgBLACQATABNAE4AJQAlABAAUgBTAC0AJQBNAFYAOQBNAFkAWgBbXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zZHVwbGljYXRlc18QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNvcmRlcmVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNzdG9yYWdlW19pc0Fic3RyYWN0gAqALYAEgASAAoALgQFogASACoEBaoAGgAqBAW6ACQgSVyNdtFdvcmRlcmVk0wA2ADcACgBfAGEAPqEAYIAMoQBigA2AJl5YRF9QU3RlcmVvdHlwZdkAHQAhAGYACgAkAGcAHwBMAGgAPABgAE0AbAATACUALQBbAHBfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WACIAMgAqALIAAgAQIgA7TADYANwAKAHIAfAA+qQBzAHQAdQB2AHcAeAB5AHoAe4APgBCAEYASgBOAFIAVgBaAF6kAfQB+AH8AgACBAIIAgwCEAIWAGIAcgB2AH4AggCKAJIAngCuAJl8QE1hEUE1Db21wb3VuZEluZGV4ZXNfEBBYRF9QU0tfZWxlbWVudElEXxAZWERQTVVuaXF1ZW5lc3NDb25zdHJhaW50c18QGlhEX1BTS192ZXJzaW9uSGFzaE1vZGlmaWVyXxAZWERfUFNLX2ZldGNoUmVxdWVzdHNBcnJheV8QEVhEX1BTS19pc0Fic3RyYWN0XxAPWERfUFNLX3VzZXJJbmZvXxATWERfUFNLX2NsYXNzTWFwcGluZ18QFlhEX1BTS19lbnRpdHlDbGFzc05hbWXfEA8AkQCSAJMAHQCUAJUAlgAfAJcACgAhAJgAmQAkAJoAEwCcABMAYgBbAFsAWwAtAFsAowBzAFsAWwATAFtVX3R5cGVYX2RlZmF1bHRcX2Fzc29jaWF0aW9uW19pc1JlYWRPbmx5WV9pc1N0YXRpY1lfaXNVbmlxdWVaX2lzRGVyaXZlZFpfaXNPcmRlcmVkXF9pc0NvbXBvc2l0ZVdfaXNMZWFmgACAGYAAgA0ICAgIgBuADwgIgAAI0gA3AAoAqgCroIAa0gCtAK4ArwCwWiRjbGFzc25hbWVYJGNsYXNzZXNeTlNNdXRhYmxlQXJyYXmjAK8AsQCyV05TQXJyYXlYTlNPYmplY3TSAK0ArgC0ALVfEBBYRFVNTFByb3BlcnR5SW1wpAC2ALcAuACyXxAQWERV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GtYa+hshG0UbRxtJG0sbTRtPG1EbUhtUG2Ebcht0G3YbeBt6G3wbfhuAG4IbkxuVG5cbmRubG50bnxuhG6MbpRvkG+Yb6BvqG+wb7RvuG+8b8BvyG/Qb9Rv2G/gb+Rw4HDocPBw+HEAcQRxCHEMcRBxGHEgcSRxKHEwcTRyMHI4ckBySHJQclRyWHJccmByaHJwcnRyeHKAcoRyuHK8csByyHPEc8xz1HPcc+Rz6HPsc/Bz9HP8dAR0CHQMdBR0GHUUdRx1JHUsdTR1OHU8dUB1RHVMdVR1WHVcdWR1aHZkdmx2dHZ8doR2iHaMdpB2lHacdqR2qHasdrR2uHe0d7x3xHfMd9R32Hfcd+B35Hfsd/R3+Hf8eAR4CHkEeQx5FHkceSR5KHkseTB5NHk8eUR5SHlMeVR5WHnsenx7GHuoe7B7uHvAe8h70HvYe9x75HwYfFR8XHxkfGx8dHx8fIR8jHzIfNB82HzgfOh88Hz4fQB9CH4Efgx+FH4cfiR+KH4sfjB+NH48fkR+SH5MflR+WH9Uf1x/ZH9sf3R/eH98f4B/hH+Mf5R/mH+cf6R/qICkgKyAtIC8gMSAyIDMgNCA1IDcgOSA6IDsgPSA+IH0gfyCBIIMghSCGIIcgiCCJIIsgjSCOII8gkSCSINEg0yDVINcg2SDaINsg3CDdIN8g4SDiIOMg5SDmISUhJyEpISshLSEuIS8hMCExITMhNSE2ITchOSE6IXkheyF9IX8hgSGCIYMhhCGFIYchiSGKIYshjSGOIdkh/CIcIjwiPiJAIkIiRCJGIkciSCJKIksiTSJOIlAiUiJTIlQiViJXIlwiaSJuInAiciJ3InkieyJ9IqIixiLtIxEjEyMVIxcjGSMbIx0jHiMgIy0jPiNAI0IjRCNGI0gjSiNMI04jXyNhI2MjZSNnI2kjayNtI28jcSOwI7IjtCO2I7gjuSO6I7sjvCO+I8AjwSPCI8QjxSQEJAYkCCQKJAwkDSQOJA8kECQSJBQkFSQWJBgkGSRYJFokXCReJGAkYSRiJGMkZCRmJGgkaSRqJGwkbSR6JHskfCR+JL0kvyTBJMMkxSTGJMckyCTJJMskzSTOJM8k0STSJRElEyUVJRclGSUaJRslHCUdJR8lISUiJSMlJSUmJWUlZyVpJWslbSVuJW8lcCVxJXMldSV2JXcleSV6JbkluyW9Jb8lwSXCJcMlxCXFJcclySXKJcslzSXOJg0mDyYRJhMmFSYWJhcmGCYZJhsmHSYeJh8mISYiJkcmayaSJrYmuCa6JrwmvibAJsImwybFJtIm4SbjJuUm5ybpJusm7SbvJv4nACcCJwQnBicIJwonDCcOJ00nTydRJ1MnVSdWJ1cnWCdZJ1snXSdeJ18nYSdiJ6EnoyelJ6cnqSeqJ6snrCetJ68nsSeyJ7MntSe2J/Un9yf5J/sn/Sf+J/8oACgBKAMoBSgGKAcoCSgKKEkoSyhNKE8oUShSKFMoVChVKFcoWShaKFsoXSheKJ0onyihKKMopSimKKcoqCipKKsorSiuKK8osSiyKPEo8yj1KPco+Sj6KPso/Cj9KP8pASkCKQMpBSkGKUUpRylJKUspTSlOKU8pUClRKVMpVSlWKVcpWSlaKaUpyCnoKggqCioMKg4qECoSKhMqFCoWKhcqGSoaKhwqHiofKiAqIiojKigqNSo6KjwqPipDKkUqRypJKm4qkiq5Kt0q3yrhKuMq5SrnKukq6irsKvkrCisMKw4rECsSKxQrFisYKxorKystKy8rMSszKzUrNys5KzsrPSt8K34rgCuCK4QrhSuGK4criCuKK4wrjSuOK5ArkSvQK9Ir1CvWK9gr2SvaK9sr3CveK+Ar4SviK+Qr5SwkLCYsKCwqLCwsLSwuLC8sMCwyLDQsNSw2LDgsOSxGLEcsSCxKLIksiyyNLI8skSySLJMslCyVLJcsmSyaLJssnSyeLN0s3yzhLOMs5SzmLOcs6CzpLOss7SzuLO8s8SzyLTEtMy01LTctOS06LTstPC09LT8tQS1CLUMtRS1GLYUthy2JLYstjS2OLY8tkC2RLZMtlS2WLZctmS2aLdkt2y3dLd8t4S3iLeMt5C3lLect6S3qLest7S3uLhMuNy5eLoIuhC6GLoguii6MLo4ujy6RLp4urS6vLrEusy61LrcuuS67LsouzC7OLtAu0i7ULtYu2C7aLxkvGy8dLx8vIS8iLyMvJC8lLycvKS8qLysvLS8uLzAvby9xL3MvdS93L3gveS96L3svfS9/L4AvgS+DL4Qvwy/FL8cvyS/LL8wvzS/OL88v0S/TL9Qv1S/XL9gwFzAZMBswHTAfMCAwITAiMCMwJTAnMCgwKTArMCwwLjBtMG8wcTBzMHUwdjB3MHgweTB7MH0wfjB/MIEwgjDBMMMwxTDHMMkwyjDLMMwwzTDPMNEw0jDTMNUw1jEVMRcxGTEbMR0xHjEfMSAxITEjMSUxJjEnMSkxKjF1MZgxuDHYMdox3DHeMeAx4jHjMeQx5jHnMekx6jHtMe8x8DHxMfMx9DH5MgYyCzINMg8yFDIWMhgyGjItMlIydjKdMsEywzLFMscyyTLLMs0yzjLQMt0y7jLwMvIy9DL2Mvgy+jL8Mv4zDzMRMxMzFTMXMxkzGzMdMx8zITNgM2IzZDNmM2gzaTNqM2szbDNuM3AzcTNyM3QzdTO0M7YzuDO6M7wzvTO+M78zwDPCM8QzxTPGM8gzyTQINAo0DDQONBA0ETQSNBM0FDQWNBg0GTQaNBw0HTQqNCs0LDQuNG00bzRxNHM0dTR2NHc0eDR5NHs0fTR+NH80gTSCNME0wzTFNMc0yTTKNMs0zDTNNM800TTSNNM01TTWNRU1FzUZNRs1HTUeNR81IDUhNSM1JTUmNSc1KTUqNWk1azVtNW81cTVyNXM1dDV1NXc1eTV6NXs1fTV+Nb01vzXBNcM1xTXGNcc1yDXJNcs1zTXONc810TXSNfc2GzZCNmY2aDZqNmw2bjZwNnI2czZ1NoI2kTaTNpU2lzaZNps2nTafNq42sDayNrQ2tja5Nrw2vzbBNtM25zb5Nw43IDcvN0w3izeNN483kTeTN5Q3lTeWN5c3mTebN5w3nTefN6A33zfhN+M35TfnN+g36TfqN+s37TfvN/A38TfzN/Q39jg1ODc4OTg7OD04Pjg/OEA4QThDOEU4RjhHOEk4SjiJOIs4jTiPOJE4kjiTOJQ4lTiXOJk4mjibOJ04njjhOQU5KTlMOXM5kzm6OeE6ATolOkk6SzpNOk86UTpTOlU6WDpaOlw6XzphOmM6ZjpoOmk6cjp/OoI6hDqHOok6izqwOtQ6+zsfOyE7IzslOyc7KTsrOyw7Ljs7O047UDtSO1Q7VjtYO1o7XDteO2A7czt1O3c7eTt7O307fzuBO4M7hTuHO8Y7yDvKO8w7zjvPO9A70TvSO9Q71jvXO9g72jvbO+Q75TvnPCY8KDwqPCw8LjwvPDA8MTwyPDQ8Njw3PDg8Ojw7PHo8fDx+PIA8gjyDPIQ8hTyGPIg8ijyLPIw8jjyPPJg8mTybPNo83DzePOA84jzjPOQ85TzmPOg86jzrPOw87jzvPS49MD0yPTQ9Nj03PTg9OT06PTw9Pj0/PUA9Qj1DPUw9TT1PPY49kD2SPZQ9lj2XPZg9mT2aPZw9nj2fPaA9oj2jPeI95D3mPeg96j3rPew97T3uPfA98j3zPfQ99j33PgQ+BT4GPgg+Rz5JPks+TT5PPlA+UT5SPlM+VT5XPlg+WT5bPlw+mz6dPp8+oT6jPqQ+pT6mPqc+qT6rPqw+rT6vPrA+vT7KPtc+2T7bPt0+3z7hPuM+8D7yPvQ+9z76Pv0/AD8CPxQ/GT8hPy8/ND9/P6I/wj/iP+Q/5j/oP+o/7D/tP+4/8D/xP/M/9D/2P/g/+T/6P/w//UACQA9AFEAWQBhAHUAfQCFAI0BIQGxAk0C3QLlAu0C9QL9AwUDDQMRAxkDTQORA5kDoQOpA7EDuQPBA8kD0QQVBB0EJQQtBDUEPQRFBE0EVQRdBVkFYQVpBXEFeQV9BYEFhQWJBZEFmQWdBaEFqQWtBqkGsQa5BsEGyQbNBtEG1QbZBuEG6QbtBvEG+Qb9B/kIAQgJCBEIGQgdCCEIJQgpCDEIOQg9CEEISQhNCIEIhQiJCJEJjQmVCZ0JpQmtCbEJtQm5Cb0JxQnNCdEJ1QndCeEK3QrlCu0K9Qr9CwELBQsJCw0LFQsdCyELJQstCzEMLQw1DD0MRQxNDFEMVQxZDF0MZQxtDHEMdQx9DIENfQ2FDY0NlQ2dDaENpQ2pDa0NtQ29DcENxQ3NDdEOzQ7VDt0O5Q7tDvEO9Q75Dv0PBQ8NDxEPFQ8dDyEPtRBFEOERcRF5EYERiRGREZkRoRGlEa0R4RIdEiUSLRI1Ej0SRRJNElUSkRKZEqESqRKxErkSwRLJEtETzRPVE90T5RPtE/ET9RP5E/0UBRQNFBEUFRQdFCEVHRUlFS0VNRU9FUEVRRVJFU0VVRVdFWEVZRVtFXEWbRZ1Fn0WhRaNFpEWlRaZFp0WpRatFrEWtRa9FsEXvRfFF80X1RfdF+EX5RfpF+0X9Rf9GAEYBRgNGBEZDRkVGR0ZJRktGTEZNRk5GT0ZRRlNGVEZVRldGWEaXRplGm0adRp9GoEahRqJGo0alRqdGqEapRqtGrEbrRu1G70bxRvNG9Eb1RvZG90b5RvtG/Eb9Rv9HAEdLR25HjkeuR7BHske0R7ZHuEe5R7pHvEe9R79HwEfCR8RHxUfGR8hHyUfOR9tH4EfiR+RH6UfrR+5H8EgVSDlIYEiESIZIiEiKSIxIjkiQSJFIk0igSLFIs0i1SLdIuUi7SL1Iv0jBSNJI1EjWSNhI2kjcSN5I4EjjSOVJJEkmSShJKkksSS1JLkkvSTBJMkk0STVJNkk4STlJeEl6SXxJfkmASYFJgkmDSYRJhkmISYlJikmMSY1JzEnOSdBJ0knUSdVJ1knXSdhJ2kncSd1J3kngSeFJ7knvSfBJ8koxSjNKNUo3SjlKOko7SjxKPUo/SkFKQkpDSkVKRkqFSodKiUqLSo1KjkqPSpBKkUqTSpVKlkqXSplKmkrZSttK3UrfSuFK4krjSuRK5UrnSulK6krrSu1K7kstSy9LMUszSzVLNks3SzhLOUs7Sz1LPks/S0FLQkuBS4NLhUuHS4lLikuLS4xLjUuPS5FLkkuTS5VLlku7S99MBkwqTCxMLkwwTDJMNEw2TDdMOkxHTFZMWExaTFxMXkxgTGJMZExzTHZMeUx8TH9MgkyFTIhMikzJTMtMzUzPTNJM00zUTNVM1kzYTNpM20zcTN5M300eTSBNIk0kTSdNKE0pTSpNK00tTS9NME0xTTNNNE1zTXVNd015TXxNfU1+TX9NgE2CTYRNhU2GTYhNiU3ITcpNzE3OTdFN0k3TTdRN1U3XTdlN2k3bTd1N3k4dTh9OIU4jTiZOJ04oTilOKk4sTi5OL04wTjJOM05yTnROdk54TntOfE59Tn5Of06BToNOhE6FTodOiE7HTslOy07NTtBO0U7STtNO1E7WTthO2U7aTtxO3U8oT0tPa0+LT41Pj0+RT5NPlU+WT5dPmk+bT51Pnk+hT6NPpE+lT6hPqU+uT7tPwE/CT8RPyU/MT89P0U/2UBpQQVBlUGhQalBsUG5QcFByUHNQdlCDUJRQllCYUJpQnFCeUKBQolCkULVQuFC7UL5QwVDEUMdQylDNUM9RDlEQURJRFFEXURhRGVEaURtRHVEfUSBRIVEjUSRRY1FlUWdRaVFsUW1RblFvUXBRclF0UXVRdlF4UXlRuFG6Ub1Rv1HCUcNRxFHFUcZRyFHKUctRzFHOUc9R3FHdUd5R4FIfUiFSI1IlUihSKVIqUitSLFIuUjBSMVIyUjRSNVJ0UnZSeFJ6Un1SflJ/UoBSgVKDUoVShlKHUolSilLJUstSzVLPUtJS01LUUtVS1lLYUtpS21LcUt5S31MeUyBTIlMkUydTKFMpUypTK1MtUy9TMFMxUzNTNFNzU3VTd1N5U3xTfVN+U39TgFOCU4RThVOGU4hTiVOuU9JT+VQdVCBUIlQkVCZUKFQqVCtULlQ7VEpUTFROVFBUUlRUVFZUWFRnVGpUbVRwVHNUdlR5VHxUflS9VL9UwVTDVMZUx1TIVMlUylTMVM5Uz1TQVNJU01USVRRVFlUYVRtVHFUdVR5VH1UhVSNVJFUlVSdVKFVnVWlVa1VtVXBVcVVyVXNVdFV2VXhVeVV6VXxVfVW8Vb5VwFXCVcVVxlXHVchVyVXLVc1VzlXPVdFV0lYRVhNWFVYXVhpWG1YcVh1WHlYgViJWI1YkViZWJ1ZmVmhWalZsVm9WcFZxVnJWc1Z1VndWeFZ5VntWfFa7Vr1Wv1bBVsRWxVbGVsdWyFbKVsxWzVbOVtBW0VbaVu1W+lcNVxpXLVdEV1ZXoVfEV+RYBFgGWAhYClgMWA5YD1gQWBNYFFgWWBdYGVgbWBxYHVggWCFYJlgzWDhYOlg8WEFYRFhHWElYbliSWLlY3VjgWOJY5FjmWOhY6ljrWO5Y+1kMWQ5ZEFkSWRRZFlkYWRpZHFktWTBZM1k2WTlZPFk/WUJZRVlHWYZZiFmKWYxZj1mQWZFZklmTWZVZl1mYWZlZm1mcWdtZ3VnfWeFZ5FnlWeZZ51noWepZ7FntWe5Z8FnxWjBaMlo1WjdaOlo7WjxaPVo+WkBaQlpDWkRaRlpHWlRaVVpWWlhal1qZWptanVqgWqFaolqjWqRaplqoWqlaqlqsWq1a7FruWvBa8lr1WvZa91r4Wvla+1r9Wv5a/1sBWwJbQVtDW0VbR1tKW0tbTFtNW05bUFtSW1NbVFtWW1dblluYW5pbnFufW6BboVuiW6NbpVunW6hbqVurW6xb61vtW+9b8Vv0W/Vb9lv3W/hb+lv8W/1b/lwAXAFcJlxKXHFclVyYXJpcnFyeXKBcolyjXKZcs1zCXMRcxlzIXMpczFzOXNBc31ziXOVc6FzrXO5c8Vz0XPZdNV03XTldO10+XT9dQF1BXUJdRF1GXUddSF1KXUtdil2MXY5dkF2TXZRdlV2WXZddmV2bXZxdnV2fXaBd313hXeNd5V3oXeld6l3rXexd7l3wXfFd8l30XfVeNF42XjheOl49Xj5eP15AXkFeQ15FXkZeR15JXkpeiV6LXo1ej16SXpNelF6VXpZemF6aXptenF6eXp9e3l7gXuJe5F7nXuhe6V7qXute7V7vXvBe8V7zXvRfM181XzdfOV88Xz1fPl8/X0BfQl9EX0VfRl9IX0lflF+3X9df91/5X/tf/V//YAFgAmADYAZgB2AJYApgDGAOYA9gEGATYBRgGWAmYCtgLWAvYDRgN2A6YDxgYWCFYKxg0GDTYNVg12DZYNtg3WDeYOFg7mD/YQFhA2EFYQdhCWELYQ1hD2EgYSNhJmEpYSxhL2EyYTVhOGE6YXlhe2F9YX9hgmGDYYRhhWGGYYhhimGLYYxhjmGPYc5h0GHSYdRh12HYYdlh2mHbYd1h32HgYeFh42HkYiNiJWIoYipiLWIuYi9iMGIxYjNiNWI2YjdiOWI6YkdiSGJJYktiimKMYo5ikGKTYpRilWKWYpdimWKbYpxinWKfYqBi32LhYuNi5WLoYuli6mLrYuxi7mLwYvFi8mL0YvVjNGM2YzhjOmM9Yz5jP2NAY0FjQ2NFY0ZjR2NJY0pjiWOLY41jj2OSY5NjlGOVY5ZjmGOaY5tjnGOeY59j3mPgY+Jj5GPnY+hj6WPqY+tj7WPvY/Bj8WPzY/RkGWQ9ZGRkiGSLZI1kj2SRZJNklWSWZJlkpmS1ZLdkuWS7ZL1kv2TBZMNk0mTVZNhk22TeZOFk5GTnZOllKGUqZSxlLmUxZTJlM2U0ZTVlN2U5ZTplO2U9ZT5lfWV/ZYFlg2WGZYdliGWJZYpljGWOZY9lkGWSZZNl0mXUZdZl2GXbZdxl3WXeZd9l4WXjZeRl5WXnZehmJ2YpZitmLWYwZjFmMmYzZjRmNmY4ZjlmOmY8Zj1mfGZ+ZoBmgmaFZoZmh2aIZolmi2aNZo5mj2aRZpJm0WbTZtVm12baZttm3GbdZt5m4GbiZuNm5GbmZudnJmcoZypnLGcvZzBnMWcyZzNnNWc3ZzhnOWc7Zzxnh2eqZ8pn6mfsZ+5n8GfyZ/Rn9Wf2Z/ln+mf8Z/1n/2gBaAJoA2gGaAdoDGgZaB5oIGgiaCdoKmgtaC9oVGh4aJ9ow2jGaMhoymjMaM5o0GjRaNRo4WjyaPRo9mj4aPpo/Gj+aQBpAmkTaRZpGWkcaR9pImklaShpK2ktaWxpbmlwaXJpdWl2aXdpeGl5aXtpfWl+aX9pgWmCacFpw2nFacdpymnLacxpzWnOadBp0mnTadRp1mnXahZqGGobah1qIGohaiJqI2okaiZqKGopaipqLGotajpqO2o8aj5qfWp/aoFqg2qGaodqiGqJaopqjGqOao9qkGqSapNq0mrUatZq2Grbatxq3Wreat9q4WrjauRq5WrnauhrJ2spaytrLWswazFrMmszazRrNms4azlrOms8az1rfGt+a4BrgmuFa4Zrh2uIa4lri2uNa45rj2uRa5Jr0WvTa9Vr12vaa9tr3Gvda95r4Gvia+Nr5Gvma+dsDGwwbFdse2x+bIBsgmyEbIZsiGyJbIxsmWyobKpsrGyubLBssmy0bLZsxWzIbMtszmzRbNRs12zabNxtG20dbR9tIW0kbSVtJm0nbShtKm0sbS1tLm0wbTFtcG1ybXRtdm15bXpte218bX1tf22BbYJtg22FbYZtxW3Hbclty23Obc9t0G3RbdJt1G3Wbddt2G3abdtuGm4cbh9uIW4kbiVuJm4nbihuKm4sbi1uLm4wbjFuNG5zbnVud255bnxufW5+bn9ugG6CboRuhW6GbohuiW7IbspuzG7ObtFu0m7TbtRu1W7Xbtlu2m7bbt1u3m8dbx9vIW8jbyZvJ28obylvKm8sby5vL28wbzJvM28+b0dvSG9Kb1NvXm9tb3hvhm+bb69vxm/YcBdwGXAbcB1wH3AgcCFwInAjcCVwJ3AocClwK3AscGtwbXBvcHFwc3B0cHVwdnB3cHlwe3B8cH1wf3CAcL9wwXDEcMZwyHDJcMpwy3DMcM5w0HDRcNJw1HDVcN5w33DhcO5w73DwcPJw/3EAcQFxA3EQcRFxEnEUcR1xLHE5cUhxWnFucYVxl3GgcaFxo3GwcbFxsnG0cbVxvnHIcc9x13Hpce5x8wAAAAAAAAICAAAAAAAAEIYAAAAAAAAAAAAAAAAAAHH1 - - DateAid/DateAid.xcdatamodeld/DateAid_V3.xcdatamodel - YnBsaXN0MDDUAAEAAgADAAQABQAGE+oT61gkdmVyc2lvblgkb2JqZWN0c1kkYXJjaGl2ZXJUJHRv -cBIAAYagrxEBuwAHAAgAFwAzADQANQBBAEIAQwBEAF8AYABhAGcAaAB0AIoAiwCMAI0AjgCPAJAAkQCSAJMArACvALYAvADLANoA3QDsAPsA/gBeAQ4BHQEhASUBNAE6ATsBQwFSAVMBXAFmAWcBaAFpAX4BfwGHAYgBiQGVAakBqgGrAawBrQGuAa8BsAGxAcABzwHeAeIB8QIAAgECEAIfAi4COgJMAk0CTgJPAlACUQJSAlMCYgJxAoACjwKQAp8CrgK9AsUC2gLbAuMC7wMDAxIDIQMwAzQDQwNSA2EDcAN/A4sDnQOsA7sDygPZA+gD9wQGBBsEHAQkBCUEMQRFBFQEYwRyBHYEhQSUBKMEsgTBBM0E3wTgBOEE4gTjBOQE5QTmAC0E9QUEBQUFFAUjBT0FPgVEBVAFZgV1BXgFhwWWBZkFqAW3BboFyQXYBdwF6wX6BfsGDQYOBg8GEAYRBhIGEwYoBikGMQY9BlEGYAZvBn4GggaRBqAGrwa+Bs0G2QbrBvoHCQcYBycHNgdFB1QHXAdxB3IHegeGB5oHqQe4B8cHywfaB+kH+AgHCBYIIgg0CEMIUghhCHAIigiLCJEInQizCMIIxQjUCOMI5gj1CQQJBwkWCSUJKQk4CUcJSAlSCVMJVAlpCWoJcgl+CZIJoQmwCb8JwwnSCeEJ8An/Cg4KGgosCjsKSgpZCmgKdwqGCpUKqgqrCrMKvwrTCuIK8QsACwQLEwsiCzELQAtPC1sLbQt8C4sLmgupC7gLxwvWC+sL7Av0DAAMFAwjDDIMQQxFDFQMYwxyDIEMkAycDK4MvQzMDNsM6gz5DQgNFw0YDRsNJA0zDUINUQ1mDWcNbw17DY8Nng2tDbwNwA3PDd4N7Q38DgsOFw4pDjgORw5WDmUOdA6DDpIOpw6oDrAOvA7QDt8O7g79DwEPEA8fDy4PPQ9MD1gPag95D4gPlw+mD7UPxA/TD+gP6Q/xD/0QERAgEC8QPhBCEFEQYBBvEH4QjRCZEKsQuhDJENgQ5xDoEPcRBhEVESoRKxEzET8RUxFiEXERgBGEEZMRohGxEcARzxHbEe0R/BILEhoSKRI4EkcSVhJrEmwSdBKAEpQSoxKyEsESxRLUEuMS8hMBExATHBMuEz0TTBNbE2oTeROIE5cTmhOpE7gTxxPKE84T0hPWE94T4RPlE+ZVJG51bGzXAAkACgALAAwADQAOAA8AEAARABIAEwAUABMAFl8QD194ZF9yb290UGFja2FnZVYkY2xhc3NcX3hkX2NvbW1lbnRzXxAQX3hkX21vZGVsTWFuYWdlcl8QFV9jb25maWd1cmF0aW9uc0J5TmFtZV1feGRfbW9kZWxOYW1lXxAXX21vZGVsVmVyc2lvbklkZW50aWZpZXKAAoEBuoEBt4AAgQG4gACBAbneABgAGQAaABsAHAAdAB4ACgAfACAAIQAiACMAJAAlACYAJwAoACUAEwArACwALQAuAC8AJQAlABNfEBxYREJ1Y2tldEZvckNsYXNzZXN3YXNFbmNvZGVkXxAaWERCdWNrZXRGb3JQYWNrYWdlc3N0b3JhZ2VfEBxYREJ1Y2tldEZvckludGVyZmFjZXNzdG9yYWdlXxAPX3hkX293bmluZ01vZGVsXxAdWERCdWNrZXRGb3JQYWNrYWdlc3dhc0VuY29kZWRWX293bmVyXxAbWERCdWNrZXRGb3JEYXRhVHlwZXNzdG9yYWdlW192aXNpYmlsaXR5XxAZWERCdWNrZXRGb3JDbGFzc2Vzc3RvcmFnZVVfbmFtZV8QH1hEQnVja2V0Rm9ySW50ZXJmYWNlc3dhc0VuY29kZWRfEB5YREJ1Y2tldEZvckRhdGFUeXBlc3dhc0VuY29kZWRfEBBfdW5pcXVlRWxlbWVudElEgASBAbWBAbOAAYAEgACBAbSBAbYQAIAFgAOABIAEgABQU1lFU9MANgA3AAoAOAA8AEBXTlMua2V5c1pOUy5vYmplY3RzowA5ADoAO4AGgAeACKMAPQA+AD+ACYCTgNmAJ1dBZGRyZXNzVERhdGVUTm90Zd8QEABFAEYARwBIAB0ASQBKAB8ASwBMAAoAIQBNAE4AJABPAFAAUQAlACUAEABVAFYALQAlAFAAWQA5AFAAXABdAF5fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2VfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAkWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNkdXBsaWNhdGVzXxAkWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWRfECFYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc29yZGVyZWRfECFYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc3N0b3JhZ2VbX2lzQWJzdHJhY3SAC4AvgASABIACgAyBATSABIALgQE2gAaAC4EBsoAKCBK3Tnm7V29yZGVyZWTTADYANwAKAGIAZABAoQBjgA2hAGWADoAnXlhEX1BTdGVyZW90eXBl2QAdACEAaQAKACQAagAfAE8AawA9AGMAUABvABMAJQAtAF4Ac18QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYAJgA2AC4AugACABAiAD9MANgA3AAoAdQB/AECpAHYAdwB4AHkAegB7AHwAfQB+gBCAEYASgBOAFIAVgBaAF4AYqQCAAIEAggCDAIQAhQCGAIcAiIAZgB2AHoAggCGAI4AlgCiALIAnXxATWERQTUNvbXBvdW5kSW5kZXhlc18QEFhEX1BTS19lbGVtZW50SURfEBlYRFBNVW5pcXVlbmVzc0NvbnN0cmFpbnRzXxAaWERfUFNLX3ZlcnNpb25IYXNoTW9kaWZpZXJfEBlYRF9QU0tfZmV0Y2hSZXF1ZXN0c0FycmF5XxARWERfUFNLX2lzQWJzdHJhY3RfEA9YRF9QU0tfdXNlckluZm9fEBNYRF9QU0tfY2xhc3NNYXBwaW5nXxAWWERfUFNLX2VudGl0eUNsYXNzTmFtZd8QDwCUAJUAlgAdAJcAmACZAB8AmgAKACEAmwCcACQAnQATAJ8AEwBlAF4AXgBeAC0AXgCmAHYAXgBeABMAXlVfdHlwZVhfZGVmYXVsdFxfYXNzb2NpYXRpb25bX2lzUmVhZE9ubHlZX2lzU3RhdGljWV9pc1VuaXF1ZVpfaXNEZXJpdmVkWl9pc09yZGVyZWRcX2lzQ29tcG9zaXRlV19pc0xlYWaAAIAagACADggICAiAHIAQCAiAAAjSADcACgCtAK6ggBvSALAAsQCyALNaJGNsYXNzbmFtZVgkY2xhc3Nlc15OU011dGFibGVBcnJheaMAsgC0ALVXTlNBcnJheVhOU09iamVjdNIAsACxALcAuF8QEFhEVU1MUHJvcGVydHlJbXCkALkAugC7ALVfEBBYRFVNTFByb3BlcnR5SW1wXxAUWERVTUxOYW1lZEVsZW1lbnRJbXBfEA9YRFVNTEVsZW1lbnRJbXDfEA8AlACVAJYAHQCXAJgAmQAfAJoACgAhAJsAnAAkAJ0AEwATABMAZQBeAF4AXgAtAF4ApgB3AF4AXgATAF6AAIAAgACADggICAiAHIARCAiAAAjfEA8AlACVAJYAHQCXAJgAmQAfAJoACgAhAJsAnAAkAJ0AEwDNABMAZQBeAF4AXgAtAF4ApgB4AF4AXgATAF6AAIAfgACADggICAiAHIASCAiAAAjSADcACgDbAK6ggBvfEA8AlACVAJYAHQCXAJgAmQAfAJoACgAhAJsAnAAkAJ0AEwATABMAZQBeAF4AXgAtAF4ApgB5AF4AXgATAF6AAIAAgACADggICAiAHIATCAiAAAjfEA8AlACVAJYAHQCXAJgAmQAfAJoACgAhAJsAnAAkAJ0AEwDuABMAZQBeAF4AXgAtAF4ApgB6AF4AXgATAF6AAIAigACADggICAiAHIAUCAiAAAjSADcACgD8AK6ggBvfEA8AlACVAJYAHQCXAJgAmQAfAJoACgAhAJsAnAAkAJ0AEwEAABMAZQBeAF4AXgAtAF4ApgB7AF4AXgATAF6AAIAkgACADggICAiAHIAVCAiAAAgI3xAPAJQAlQCWAB0AlwCYAJkAHwCaAAoAIQCbAJwAJACdABMBEAATAGUAXgBeAF4ALQBeAKYAfABeAF4AEwBegACAJoAAgA4ICAgIgByAFggIgAAI0wA2ADcACgEeAR8AQKCggCfSALAAsQEiASNfEBNOU011dGFibGVEaWN0aW9uYXJ5owEiASQAtVxOU0RpY3Rpb25hcnnfEA8AlACVAJYAHQCXAJgAmQAfAJoACgAhAJsAnAAkAJ0AEwEnABMAZQBeAF4AXgAtAF4ApgB9AF4AXgATAF6AAIApgACADggICAiAHIAXCAiAAAjWACEACgAkAE8AHQAfATUBNgATAF4AEwAtgCqAK4AACIAAXxAUWERHZW5lcmljUmVjb3JkQ2xhc3PSALAAsQE8AT1dWERVTUxDbGFzc0ltcKYBPgE/AUABQQFCALVdWERVTUxDbGFzc0ltcF8QElhEVU1MQ2xhc3NpZmllckltcF8QEVhEVU1MTmFtZXNwYWNlSW1wXxAUWERVTUxOYW1lZEVsZW1lbnRJbXBfEA9YRFVNTEVsZW1lbnRJbXDfEA8AlACVAJYAHQCXAJgAmQAfAJoACgAhAJsAnAAkAJ0AEwFFABMAZQBeAF4AXgAtAF4ApgB+AF4AXgATAF6AAIAtgACADggICAiAHIAYCAiAAAhfEA9EYXRlQWlkLkFkZHJlc3PSALAAsQFUAVVfEBJYRFVNTFN0ZXJlb3R5cGVJbXCnAVYBVwFYAVkBWgFbALVfEBJYRFVNTFN0ZXJlb3R5cGVJbXBdWERVTUxDbGFzc0ltcF8QElhEVU1MQ2xhc3NpZmllckltcF8QEVhEVU1MTmFtZXNwYWNlSW1wXxAUWERVTUxOYW1lZEVsZW1lbnRJbXBfEA9YRFVNTEVsZW1lbnRJbXDTADYANwAKAV0BYQBAowFeAV8BYIAwgDGAMqMBYgFjAWSAM4BegHWAJ1ZyZWdpb25Wc3RyZWV0VGRhdGXfEBIAlACVAJYBagAdAJgAmQFrAB8AlwFsAJoACgAhAJsAnAAkAJ0AEwATABMAJQA9AF4AXgF0AC0AXgBQAF4BeAFeAF4AXgF8AF5fECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIAJCAiANQiACwiAXYAwCAiANAgTAAAAAQOYZS7TADYANwAKAYABgwBAogGBAYKANoA3ogGEAYWAOIBMgCdfEBJYRF9QUHJvcFN0ZXJlb3R5cGVfEBJYRF9QQXR0X1N0ZXJlb3R5cGXZAB0AIQGKAAoAJAGLAB8ATwGMAWIBgQBQAG8AEwAlAC0AXgGUXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERC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FKwUrhSwFLIUsxS0FLUUthS4FLoUuxS8FL4UvxTAFP8VARUDFQUVBxUIFQkVChULFQ0VDxUQFREVExUUFVMVVRVXFVkVWxVcFV0VXhVfFWEVYxVkFWUVZxVoFacVqRWrFa0VrxWwFbEVshWzFbUVtxW4FbkVuxW8FeEWBRYsFlAWUhZUFlYWWBZaFlwWXRZfFmwWexZ9Fn8WgRaDFoUWhxaJFpgWmhacFp4WoBaiFqQWphaoFsgW8xcNFyYXQBdgF4MXwhfEF8YXyBfKF8sXzBfNF84X0BfSF9MX1BfWF9cYFhgYGBoYHBgeGB8YIBghGCIYJBgmGCcYKBgqGCsYahhsGG4YcBhyGHMYdBh1GHYYeBh6GHsYfBh+GH8YvhjAGMIYxBjGGMcYyBjJGMoYzBjOGM8Y0BjSGNMY1hkVGRcZGRkbGR0ZHhkfGSAZIRkjGSUZJhknGSkZKhlpGWsZbRlvGXEZchlzGXQZdRl3GXkZehl7GX0Zfhm9Gb8ZwRnDGcUZxhnHGcgZyRnLGc0ZzhnPGdEZ0hnbGekZ9hoEGhEaJBo7Gk0amBq7Gtsa+xr9Gv8bARsDGwUbBhsHGwkbChsMGw0bDxsRGxIbExsVGxYbGxsoGy0bLxsxGzYbOBs6GzwbYRuFG6wb0BvSG9Qb1hvYG9ob3BvdG98b7Bv9G/8cARwDHAUcBxwJHAscDRweHCAcIhwkHCYcKBwqHCwcLhwwHG8ccRxzHHUcdxx4HHkcehx7HH0cfxyAHIEcgxyEHMMcxRzHHMkcyxzMHM0czhzPHNEc0xzUHNUc1xzYHRcdGR0bHR0dHx0gHSEdIh0jHSUdJx0oHSkdKx0sHTkdOh07HT0dfB1+HYAdgh2EHYUdhh2HHYgdih2MHY0djh2QHZEd0B3SHdQd1h3YHdkd2h3bHdwd3h3gHeEd4h3kHeUeJB4mHigeKh4sHi0eLh4vHjAeMh40HjUeNh44HjkeeB56Hnwefh6AHoEegh6DHoQehh6IHokeih6MHo0ezB7OHtAe0h7UHtUe1h7XHtge2h7cHt0e3h7gHuEfBh8qH1EfdR93H3kfex99H38fgR+CH4QfkR+gH6IfpB+mH6gfqh+sH64fvR+/H8Efwx/FH8cfyR/LH80gDCAOIBAgEiAUIBUgFiAXIBggGiAcIB0gHiAgICEgYCBiIGQgZiBoIGkgaiBr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N5g3mjecN503njefN6A3ojekN6U3pjeoN6k36DfqN+w37jfwN/E38jfzN/Q39jf4N/k3+jf8N/04BjgZOCY4OThGOFk4cDiCOM048DkQOTA5Mjk0OTY5ODk6OTs5PDk+OT85QTlCOUQ5RjlHOUg5SjlLOVA5XTliOWQ5ZjlrOW05bzlxOZY5ujnhOgU6BzoJOgs6DToPOhE6EjoUOiE6Mjo0OjY6ODo6Ojw6PjpAOkI6UzpVOlc6WTpbOl06XzphOmM6ZTqkOqY6qDqqOqw6rTquOq86sDqyOrQ6tTq2Org6uTr4Ovo6/Dr+OwA7ATsCOwM7BDsGOwg7CTsKOww7DTtMO047UDtSO1Q7VTtWO1c7WDtaO1w7XTteO2A7YTtuO287cDtyO7E7szu1O7c7uTu6O7s7vDu9O787wTvCO8M7xTvGPAU8BzwJPAs8DTwOPA88EDwRPBM8FTwWPBc8GTwaPFk8WzxdPF88YTxiPGM8ZDxlPGc8aTxqPGs8bTxuPK08rzyxPLM8tTy2PLc8uDy5PLs8vTy+PL88wTzCPQE9Az0FPQc9CT0KPQs9DD0NPQ89ET0SPRM9FT0WPTs9Xz2GPao9rD2uPbA9sj20PbY9tz25PcY91T3XPdk92z3dPd894T3jPfI99D32Pfg9+j39PgA+Az4FPkQ+Rj5IPko+TD5NPk4+Tz5QPlI+VD5VPlY+WD5ZPpg+mj6cPp4+oD6hPqI+oz6kPqY+qD6pPqo+rD6tPuw+7j7wPvI+9D71PvY+9z74Pvo+/D79Pv4/AD8BP0A/Qj9EP0Y/SD9JP0o/Sz9MP04/UD9RP1I/VD9VP5g/vD/gQANAKkBKQHFAmEC4QNxBAEECQQRBBkEIQQpBDEEPQRFBE0EWQRhBGkEdQR9BIEElQTJBNUE3QTpBPEE+QWNBh0GuQdJB1EHWQdhB2kHcQd5B30HhQe5CAUIDQgVCB0IJQgtCDUIPQhFCE0ImQihCKkIsQi5CMEIyQjRCNkI4QjpCeUJ7Qn1Cf0KBQoJCg0KEQoVCh0KJQopCi0KNQo5Cl0KYQppC2ULbQt1C30LhQuJC40LkQuVC50LpQupC60LtQu5DLUMvQzFDM0M1QzZDN0M4QzlDO0M9Qz5DP0NBQ0JDS0NMQ05DjUOPQ5FDk0OVQ5ZDl0OYQ5lDm0OdQ55Dn0OhQ6JD4UPjQ+VD50PpQ+pD60PsQ+1D70PxQ/JD80P1Q/ZD/0QARAJEQURDREVER0RJREpES0RMRE1ET0RRRFJEU0RVRFZElUSXRJlEm0SdRJ5En0SgRKFEo0SlRKZEp0SpRKpEt0S4RLlEu0T6RPxE/kUARQJFA0UERQVFBkUIRQpFC0UMRQ5FD0VORVBFUkVURVZFV0VYRVlFWkVcRV5FX0VgRWJFY0VwRX1FhEWGRYhFikWRRZNFlkWZRZtFoUWmRfFGFEY0RlRGVkZYRlpGXEZeRl9GYEZiRmNGZUZmRmhGakZrRmxGbkZvRnRGgUaGRohGikaPRpFGk0aVRrpG3kcFRylHK0ctRy9HMUczRzVHNkc4R0VHVkdYR1pHXEdeR2BHYkdkR2ZHd0d5R3tHfUd/R4FHg0eFR4dHiUfIR8pHzEfOR9BH0UfSR9NH1EfWR9hH2UfaR9xH3UgcSB5IIEgiSCRIJUgmSCdIKEgqSCxILUguSDBIMUhwSHJIdEh2SHhIeUh6SHtIfEh+SIBIgUiCSIRIhUiSSJNIlEiWSNVI10jZSNtI3UjeSN9I4EjhSONI5UjmSOdI6UjqSSlJK0ktSS9JMUkySTNJNEk1STdJOUk6STtJPUk+SX1Jf0mBSYNJhUmGSYdJiEmJSYtJjUmOSY9JkUmSSdFJ00nVSddJ2UnaSdtJ3EndSd9J4UniSeNJ5UnmSiVKJ0opSitKLUouSi9KMEoxSjNKNUo2SjdKOUo6Sl9Kg0qqSs5K0ErSStRK1krYStpK20rdSupK+Ur7Sv1K/0sBSwNLBUsHSxZLGEsbSx5LIUskSydLKkssS2tLbUtvS3FLc0t0S3VLdkt3S3lLe0t8S31Lf0uAS79LwUvDS8VLx0vIS8lLykvLS81Lz0vQS9FL00vUTBNMFUwXTBlMG0wcTB1MHkwfTCFMI0wkTCVMJ0woTGdMaUxrTG1Mb0xwTHFMckxzTHVMd0x4THlMe0x8TLtMvUy/TMFMw0zETMVMxkzHTMlMy0zMTM1Mz0zQTQ9NEU0TTRVNF00YTRlNGk0bTR1NH00gTSFNI00kTWNNZU1nTWlNa01sTW1Nbk1vTXFNc010TXVNd014TcNN5k4GTiZOKE4qTixOLk4wTjFOMk41TjZOOE45TjtOPU4+Tj9OQk5DTkxOWU5eTmBOYk5nTmpObU5vTpROuE7fTwNPBk8ITwpPDE8OTxBPEU8UTyFPMk80TzZPOE86TzxPPk9AT0JPU09WT1lPXE9fT2JPZU9oT2tPbU+sT65PsE+yT7VPtk+3T7hPuU+7T71Pvk+/T8FPwlABUANQBVAHUApQC1AMUA1QDlAQUBJQE1AUUBZQF1BWUFhQW1BdUGBQYVBiUGNQZFBmUGhQaVBqUGxQbVB6UHtQfFB+UL1Qv1DBUMNQxlDHUMhQyVDKUMxQzlDPUNBQ0lDTURJRFFEWURhRG1EcUR1RHlEfUSFRI1EkUSVRJ1EoUWdRaVFrUW1RcFFxUXJRc1F0UXZReFF5UXpRfFF9UbxRvlHAUcJRxVHGUcdRyFHJUctRzVHOUc9R0VHSUhFSE1IVUhdSGlIbUhxSHVIeUiBSIlIjUiRSJlInUkxScFKXUrtSvlLAUsJSxFLGUshSyVLMUtlS6FLqUuxS7lLwUvJS9FL2UwVTCFMLUw5TEVMUUxdTGlMcU1tTXVNfU2FTZFNlU2ZTZ1NoU2pTbFNtU25TcFNxU7BTslO0U7ZTuVO6U7tTvFO9U79TwVPCU8NTxVPGVAVUB1QJVAtUDlQPVBBUEVQSVBRUFlQXVBhUGlQbVFpUXFReVGBUY1RkVGVUZlRnVGlUa1RsVG1Ub1RwVK9UsVSzVLVUuFS5VLpUu1S8VL5UwFTBVMJUxFTFVQRVBlUIVQpVDVUOVQ9VEFURVRNVFVUWVRdVGVUaVVlVW1VdVV9VYlVjVWRVZVVmVWhValVrVWxVblVvVbpV3VX9Vh1WH1YhViNWJVYnVihWKVYsVi1WL1YwVjJWNFY1VjZWOVY6Vj9WTFZRVlNWVVZaVl1WYFZiVodWq1bSVvZW+Vb7Vv1W/1cBVwNXBFcHVxRXJVcnVylXK1ctVy9XMVczVzVXRldJV0xXT1dSV1VXWFdbV15XYFefV6FXo1elV6hXqVeqV6tXrFeuV7BXsVeyV7RXtVf0V/ZX+Ff6V/1X/lf/WABYAVgDWAVYBlgHWAlYClhJWEtYTlhQWFNYVFhVWFZYV1hZWFtYXFhdWF9YYFhtWG5Yb1hxWLBYsli0WLZYuVi6WLtYvFi9WL9YwVjCWMNYxVjGWQVZB1kJWQtZDlkPWRBZEVkSWRRZFlkXWRhZGlkbWVpZXFleWWBZY1lkWWVZZllnWWlZa1lsWW1Zb1lwWa9ZsVmzWbVZuFm5WbpZu1m8Wb5ZwFnBWcJZxFnFWgRaBloIWgpaDVoOWg9aEFoRWhNaFVoWWhdaGVoaWj9aY1qKWq5asVqzWrVat1q5WrtavFq/Wsxa21rdWt9a4VrjWuVa51rpWvha+1r+WwFbBFsHWwpbDVsPW05bUFtSW1RbV1tYW1lbWltbW11bX1tgW2FbY1tkW6NbpVunW6lbrFutW65br1uwW7JbtFu1W7ZbuFu5W/hb+lv8W/5cAVwCXANcBFwFXAdcCVwKXAtcDVwOXE1cT1xRXFNcVlxXXFhcWVxaXFxcXlxfXGBcYlxjXKJcpFymXKhcq1ysXK1crlyvXLFcs1y0XLVct1y4XPdc+Vz7XP1dAF0BXQJdA10EXQZdCF0JXQpdDF0NXUxdTl1QXVJdVV1WXVddWF1ZXVtdXV1eXV9dYV1iXW1ddl13XXldgl2NXZxdp121Xcpd3l31XgdeRl5IXkpeTF5OXk9eUF5RXlJeVF5WXldeWF5aXlteml6cXp5eoF6iXqNepF6lXqZeqF6qXqterF6uXq9e7l7wXvNe9V73Xvhe+V76Xvte/V7/XwBfAV8DXwRfT19yX5Jfsl+0X7ZfuF+6X7xfvV++X8Ffwl/EX8Vfx1/JX8pfy1/OX89f1F/hX+Zf6F/qX+9f8l/1X/dgHGBAYGdgi2COYJBgkmCUYJZgmGCZYJxgqWC6YLxgvmDAYMJgxGDGYMhgymDbYN5g4WDkYOdg6mDtYPBg82D1YTRhNmE4YTphPWE+YT9hQGFBYUNhRWFGYUdhSWFKYYlhi2GNYY9hkmGTYZRhlWGWYZhhmmGbYZxhnmGfYd5h4GHjYeVh6GHpYeph62HsYe5h8GHxYfJh9GH1YgJiA2IEYgZiRWJHYkliS2JOYk9iUGJRYlJiVGJWYldiWGJaYltimmKcYp5ioGKjYqRipWKmYqdiqWKrYqxirWKvYrBi72LxYvNi9WL4Yvli+mL7Yvxi/mMAYwFjAmMEYwVjRGNGY0hjSmNNY05jT2NQY1FjU2NVY1ZjV2NZY1pjmWObY51jn2OiY6NjpGOlY6ZjqGOqY6tjrGOuY69j1GP4ZB9kQ2RGZEhkSmRMZE5kUGRRZFRkYWRwZHJkdGR2ZHhkemR8ZH5kjWSQZJNklmSZZJxkn2SiZKRk42TlZOdk6WTsZO1k7mTvZPBk8mT0ZPVk9mT4ZPllOGU6ZTxlPmVBZUJlQ2VEZUVlR2VJZUplS2VNZU5ljWWPZZFlk2WWZZdlmGWZZZplnGWeZZ9loGWiZaNl4mXkZeZl6GXrZexl7WXuZe9l8WXzZfRl9WX3ZfhmN2Y5ZjtmPWZAZkFmQmZDZkRmRmZIZklmSmZMZk1mjGaOZpBmkmaVZpZml2aYZplmm2adZp5mn2ahZqJm4WbjZuVm52bqZutm7GbtZu5m8GbyZvNm9Gb2ZvdnQmdlZ4VnpWenZ6lnq2etZ69nsGexZ7RntWe3Z7hnume8Z71nvmfBZ8Jny2fYZ91n32fhZ+Zn6WfsZ+5oE2g3aF5ogmiFaIdoiWiLaI1oj2iQaJNooGixaLNotWi3aLlou2i9aL9owWjSaNVo2GjbaN5o4WjkaOdo6mjsaStpLWkvaTFpNGk1aTZpN2k4aTppPGk9aT5pQGlBaYBpgmmEaYZpiWmKaYtpjGmNaY9pkWmSaZNplWmWadVp12naadxp32ngaeFp4mnjaeVp52noaelp62nsaflp+mn7af1qPGo+akBqQmpFakZqR2pIaklqS2pNak5qT2pRalJqkWqTapVql2qaaptqnGqdap5qoGqiaqNqpGqmaqdq5mroaupq7GrvavBq8WryavNq9Wr3avhq+Wr7avxrO2s9az9rQWtEa0VrRmtHa0hrSmtMa01rTmtQa1FrkGuSa5RrlmuZa5prm2uca51rn2uha6Jro2ula6Zry2vvbBZsOmw9bD9sQWxDbEVsR2xIbEtsWGxnbGlsa2xtbG9scWxzbHVshGyHbIpsjWyQbJNslmyZbJts2mzcbN5s4GzjbORs5WzmbOds6WzrbOxs7WzvbPBtL20xbTNtNW04bTltOm07bTxtPm1AbUFtQm1EbUVthG2GbYhtim2NbY5tj22QbZFtk22VbZZtl22ZbZpt2W3bbd1t323ibeNt5G3lbeZt6G3qbett7G3ube9uLm4wbjJuNG43bjhuOW46bjtuPW4/bkBuQW5DbkRug26FboduiW6Mbo1ujm6PbpBukm6UbpVulm6Ybplu2G7abtxu3m7hbuJu427kbuVu527pbupu627tbu5vOW9cb3xvnG+eb6Bvom+kb6Zvp2+ob6tvrG+ub69vsW+zb7RvtW+4b7lvvm/Lb9Bv0m/Ub9lv3G/fb+FwBnAqcFFwdXB4cHpwfHB+cIBwgnCDcIZwk3CkcKZwqHCqcKxwrnCwcLJwtHDFcMhwy3DOcNFw1HDXcNpw3XDfcR5xIHEicSRxJ3EocSlxKnErcS1xL3EwcTFxM3E0cXNxdXF3cXlxfHF9cX5xf3GAcYJxhHGFcYZxiHGJcchxynHNcc9x0nHTcdRx1XHWcdhx2nHbcdxx3nHfcexx7XHucfByL3IxcjNyNXI4cjlyOnI7cjxyPnJAckFyQnJEckVyhHKGcohyinKNco5yj3KQcpFyk3KVcpZyl3KZcppy2XLbct1y33LicuNy5HLlcuZy6HLqcuty7HLucu9zLnMwczJzNHM3czhzOXM6cztzPXM/c0BzQXNDc0Rzg3OFc4dziXOMc41zjnOPc5BzknOUc5VzlnOYc5lzvnPidAl0LXQwdDJ0NHQ2dDh0OnQ7dD50S3RadFx0XnRgdGJ0ZHRmdGh0d3R6dH10gHSDdIZ0iXSMdI50zXTPdNF003TWdNd02HTZdNp03HTedN904HTidON1InUkdSZ1KHUrdSx1LXUudS91MXUzdTR1NXU3dTh1d3V5dXt1fXWAdYF1gnWDdYR1hnWIdYl1inWMdY11zHXOddF103XWddd12HXZddp13HXedd914HXideN15nYldid2KXYrdi52L3YwdjF2MnY0djZ2N3Y4djp2O3Z6dnx2fnaAdoN2hHaFdoZ2h3aJdot2jHaNdo92kHbPdtF203bVdth22Xbadtt23HbeduB24XbiduR25Xcwd1N3c3eTd5V3l3eZd5t3nXeed593onejd6V3pneod6p3q3esd693sHe1d8J3x3fJd8t30HfTd9Z32Hf9eCF4SHhseG94cXhzeHV4d3h5eHp4fXiKeJt4nXifeKF4o3ileKd4qXireLx4v3jCeMV4yHjLeM540XjUeNZ5FXkXeRl5G3keeR95IHkheSJ5JHkmeSd5KHkqeSt5anlseW55cHlzeXR5dXl2eXd5eXl7eXx5fXl/eYB5v3nBecR5xnnJecp5y3nMec15z3nRedJ503nVedZ543nkeeV553omeih6Knosei96MHoxejJ6M3o1ejd6OHo5ejt6PHp7en16f3qBeoR6hXqGeod6iHqKeox6jXqOepB6kXrQetJ61HrWetl62nrbetx63XrfeuF64nrjeuV65nsleyd7KXsrey57L3swezF7Mns0ezZ7N3s4ezp7O3t6e3x7fnuAe4N7hHuFe4Z7h3uJe4t7jHuNe497kHu1e9l8AHwkfCd8KXwrfC18L3wxfDJ8NXxCfFF8U3xVfFd8WXxbfF18X3xufHF8dHx3fHp8fXyAfIN8hXzEfMZ8yHzKfM18znzPfNB80XzTfNV81nzXfNl82n0ZfRt9HX0ffSJ9I30kfSV9Jn0ofSp9K30sfS59L31ufXB9cn10fXd9eH15fXp9e319fX99gH2BfYN9hH3DfcV9x33Jfcx9zX3Ofc990H3SfdR91X3Wfdh92X4Yfhp+HH4efiF+In4jfiR+JX4nfil+Kn4rfi1+Ln5tfm9+cX5zfnZ+d354fnl+en58fn5+f36AfoJ+g37CfsR+xn7Ifst+zH7Nfs5+z37RftN+1H7Vftd+2H8jf0Z/Zn+Gf4h/in+Mf45/kH+Rf5J/lX+Wf5h/mX+bf51/nn+ff6J/o3+of7V/un+8f75/w3/Gf8l/y3/wgBSAO4BfgGKAZIBmgGiAaoBsgG2AcIB9gI6AkICSgJSAloCYgJqAnICegK+AsoC1gLiAu4C+gMGAxIDHgMmBCIEKgQyBDoERgRKBE4EUgRWBF4EZgRqBG4EdgR6BXYFfgWGBY4FmgWeBaIFpgWqBbIFugW+BcIFygXOBsoG0gbeBuYG8gb2BvoG/gcCBwoHEgcWBxoHIgcmB1oHXgdiB2oIZghuCHYIfgiKCI4IkgiWCJoIogiqCK4Isgi6CL4JugnCCcoJ0gneCeIJ5gnqCe4J9gn+CgIKBgoOChILDgsWCx4LJgsyCzYLOgs+C0ILSgtSC1YLWgtiC2YMYgxqDHIMegyGDIoMjgySDJYMngymDKoMrgy2DLoNtg2+DcYNzg3aDd4N4g3mDeoN8g36Df4OAg4KDg4Oog8yD84QXhBqEHIQehCCEIoQkhCWEKIQ1hESERoRIhEqETIROhFCEUoRhhGSEZ4RqhG2EcIRzhHaEeIS3hLmEu4S9hMCEwYTChMOExITGhMiEyYTKhMyEzYUMhQ6FEIUShRWFFoUXhRiFGYUbhR2FHoUfhSGFIoVhhWOFZYVnhWqFa4VshW2FboVwhXKFc4V0hXaFd4W2hbiFuoW8hb+FwIXBhcKFw4XFhceFyIXJhcuFzIYLhg2GD4YRhhSGFYYWhheGGIYahhyGHYYehiCGIYZghmKGZIZmhmmGaoZrhmyGbYZvhnGGcoZzhnWGdoa1hreGuYa7hr6Gv4bAhsGGwobEhsaGx4bIhsqGy4bUhtWG14cWhxiHGocchx6HH4cghyGHIockhyaHJ4cohyqHK4dqh2yHbodwh3KHc4d0h3WHdod4h3qHe4d8h36Hf4e+h8CHwofEh8aHx4fIh8mHyofMh86Hz4fQh9KH04fch92H34fsh+2H7ofwh/2H/of/iAGIDogPiBCIEogbiCqIN4hGiFiIbIiDiJWInoifiKGIroiviLCIsoiziLyIxojNiNWI54jsiPEAAAAAAAACAgAAAAAAABPuAAAAAAAAAAAAAAAAAACI8w== - - - - - title - - - - Date - Undefined - 3 - Date - 1 - - - - - - 1 - date - - - - date - - - - 1 - address - - - - abbreviatedName - - - - street - - - - body - - - - 1 - notes - - - - type - - - - Date - DateToNote - Undefined - 2 - Note - 1 - - - - - - region - - - - name - - - - Address - Undefined - 1 - Address - 1 - - - - - - equalizedDate - - - \ No newline at end of file diff --git a/DateAid/DateAid-Bridging-Header.h b/DateAid/DateAid-Bridging-Header.h deleted file mode 100644 index aaeee6f..0000000 --- a/DateAid/DateAid-Bridging-Header.h +++ /dev/null @@ -1,13 +0,0 @@ -// -// Date Dots-Bridging-Header.h -// Date Dots -// -// Created by Aaron Williamson on 4/29/20. -// Copyright © 2020 Aaron Williamson. All rights reserved. -// - -#ifndef DateAid_Bridging_Header_h -#define DateAid_Bridging_Header_h - - -#endif /* DateAid_Bridging_Header_h */ diff --git a/DateAid.xcodeproj/project.pbxproj b/DateDots.xcodeproj/project.pbxproj similarity index 88% rename from DateAid.xcodeproj/project.pbxproj rename to DateDots.xcodeproj/project.pbxproj index e6e0946..f59f742 100644 --- a/DateAid.xcodeproj/project.pbxproj +++ b/DateDots.xcodeproj/project.pbxproj @@ -7,6 +7,8 @@ objects = { /* Begin PBXBuildFile section */ + 203068516447E6B4D79CE7AD /* Pods_DateDotsTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 85BDD19F05AA45C118EA7FA6 /* Pods_DateDotsTests.framework */; }; + 2E12DAFEDB4864E0087A11D1 /* Pods_DateDots.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E4F5F96E7FDFD0A3A2C6B86C /* Pods_DateDots.framework */; }; 97007BAC267FE35D007BA2F1 /* ReminderRouter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97007BAB267FE35D007BA2F1 /* ReminderRouter.swift */; }; 97007BAE267FE78A007BA2F1 /* ReminderPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97007BAD267FE78A007BA2F1 /* ReminderPresenter.swift */; }; 97007BB0267FE799007BA2F1 /* ReminderInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97007BAF267FE799007BA2F1 /* ReminderInteractor.swift */; }; @@ -56,7 +58,6 @@ 9781F9881E3E8A4500E2C434 /* EventsNavigationRouter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9781F9871E3E8A4500E2C434 /* EventsNavigationRouter.swift */; }; 978E710525D25E060052AD24 /* UIDevice+Type.swift in Sources */ = {isa = PBXBuildFile; fileRef = 978E710425D25E060052AD24 /* UIDevice+Type.swift */; }; 97901FAC2467C82C00912CB0 /* Populatable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97901FAB2467C82C00912CB0 /* Populatable.swift */; }; - 9791F7861BD4CA57001E82BB /* DateAidMappingModel_V1_V2.xcmappingmodel in Sources */ = {isa = PBXBuildFile; fileRef = 9791F7851BD4CA57001E82BB /* DateAidMappingModel_V1_V2.xcmappingmodel */; }; 9791F78C1BD4CCDF001E82BB /* Address.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9791F78A1BD4CCDF001E82BB /* Address.swift */; }; 97943B591B0EDEB3004FC095 /* DateAid.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 97943B571B0EDEB3004FC095 /* DateAid.xcdatamodeld */; }; 9794A92B262E533700C2385C /* EventDetailsInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9794A92A262E533700C2385C /* EventDetailsInteractor.swift */; }; @@ -71,11 +72,9 @@ 979C36AB1E0E14C20098345E /* InitialImportWireframe.swift in Sources */ = {isa = PBXBuildFile; fileRef = 979C36AA1E0E14C20098345E /* InitialImportWireframe.swift */; }; 979F3DC9262AAB38000FD1EB /* EventAging.swift in Sources */ = {isa = PBXBuildFile; fileRef = 979F3DC8262AAB38000FD1EB /* EventAging.swift */; }; 97A00A91248C84D900AB7F85 /* NotificationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97A00A90248C84D900AB7F85 /* NotificationManager.swift */; }; - 97AD26A51BD81A14004C1C7D /* DateAidMappingModel_V2_V3.xcmappingmodel in Sources */ = {isa = PBXBuildFile; fileRef = 97AD26A41BD81A14004C1C7D /* DateAidMappingModel_V2_V3.xcmappingmodel */; }; 97AD26A91BD81C59004C1C7D /* Note.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97AD26A71BD81C59004C1C7D /* Note.swift */; }; 97AEAC0C1B2DFD6900ADF181 /* Optional+IsEmptyOrNil.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97AEAC0B1B2DFD6900ADF181 /* Optional+IsEmptyOrNil.swift */; }; 97AEAC0E1B2EA58000ADF181 /* Date+Utilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97AEAC0D1B2EA58000ADF181 /* Date+Utilities.swift */; }; - 97AEAC101B2EA74A00ADF181 /* Holidays.plist in Resources */ = {isa = PBXBuildFile; fileRef = 97AEAC0F1B2EA74A00ADF181 /* Holidays.plist */; }; 97B099BC1BF55C5600ADE476 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 97B099BB1BF55C5600ADE476 /* Security.framework */; }; 97B099BE1BF55C5C00ADE476 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 97B099BD1BF55C5C00ADE476 /* SystemConfiguration.framework */; }; 97B40DAB1DA17900000DA0E0 /* ContactConverter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97B40DAA1DA17900000DA0E0 /* ContactConverter.swift */; }; @@ -115,6 +114,10 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ + 01352474C1A1FE4A149A2968 /* Pods-DateDots.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DateDots.debug.xcconfig"; path = "Target Support Files/Pods-DateDots/Pods-DateDots.debug.xcconfig"; sourceTree = ""; }; + 0C95F7D8EF4B3A730CDE4EF4 /* Pods-DateDotsTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DateDotsTests.debug.xcconfig"; path = "Target Support Files/Pods-DateDotsTests/Pods-DateDotsTests.debug.xcconfig"; sourceTree = ""; }; + 2E105043688BFA5068CDBDD6 /* Pods-DateDotsTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DateDotsTests.release.xcconfig"; path = "Target Support Files/Pods-DateDotsTests/Pods-DateDotsTests.release.xcconfig"; sourceTree = ""; }; + 85BDD19F05AA45C118EA7FA6 /* Pods_DateDotsTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_DateDotsTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 97007BAB267FE35D007BA2F1 /* ReminderRouter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReminderRouter.swift; sourceTree = ""; }; 97007BAD267FE78A007BA2F1 /* ReminderPresenter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReminderPresenter.swift; sourceTree = ""; }; 97007BAF267FE799007BA2F1 /* ReminderInteractor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReminderInteractor.swift; sourceTree = ""; }; @@ -134,15 +137,15 @@ 971E488A26BE125C00DE5691 /* InitialImportView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InitialImportView.swift; sourceTree = ""; }; 9727AA4626AF88C600E21313 /* EventDetails.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EventDetails.swift; sourceTree = ""; }; 972BFE7926159F87003B7429 /* RoundedButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoundedButton.swift; sourceTree = ""; }; - 972E323A245A8BC300E9DAAA /* DateAid-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "DateAid-Bridging-Header.h"; sourceTree = ""; }; - 97364CE01AFBF44A0095BC57 /* DateAid.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = DateAid.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 972E323A245A8BC300E9DAAA /* DateDots-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "DateDots-Bridging-Header.h"; sourceTree = ""; }; + 97364CE01AFBF44A0095BC57 /* DateDots.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = DateDots.app; sourceTree = BUILT_PRODUCTS_DIR; }; 97364CE41AFBF44A0095BC57 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 97364CE51AFBF44A0095BC57 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 97364CEA1AFBF44A0095BC57 /* InitialImportViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InitialImportViewController.swift; sourceTree = ""; }; 97364CED1AFBF44A0095BC57 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 97364CEF1AFBF44A0095BC57 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; 97364CF21AFBF44A0095BC57 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; }; - 97364CF81AFBF44A0095BC57 /* DateAidTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = DateAidTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 97364CF81AFBF44A0095BC57 /* DateDotsTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = DateDotsTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 97364CFD1AFBF44A0095BC57 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 97364CFE1AFBF44A0095BC57 /* DateAidTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DateAidTests.swift; sourceTree = ""; }; 9749E6CE24837C1200DAAB49 /* CoreDataManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CoreDataManager.swift; sourceTree = ""; }; @@ -169,11 +172,7 @@ 9781F9871E3E8A4500E2C434 /* EventsNavigationRouter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EventsNavigationRouter.swift; sourceTree = ""; }; 978E710425D25E060052AD24 /* UIDevice+Type.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIDevice+Type.swift"; sourceTree = ""; }; 97901FAB2467C82C00912CB0 /* Populatable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Populatable.swift; sourceTree = ""; }; - 9791F7821BD4C757001E82BB /* DateAid_V2.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = DateAid_V2.xcdatamodel; sourceTree = ""; }; - 9791F7851BD4CA57001E82BB /* DateAidMappingModel_V1_V2.xcmappingmodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcmappingmodel; path = DateAidMappingModel_V1_V2.xcmappingmodel; sourceTree = ""; }; 9791F78A1BD4CCDF001E82BB /* Address.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Address.swift; sourceTree = ""; }; - 979350F91BD58704008F24F2 /* DateAid_V3.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = DateAid_V3.xcdatamodel; sourceTree = ""; }; - 97943B581B0EDEB3004FC095 /* DateAid.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = DateAid.xcdatamodel; sourceTree = ""; }; 9794A92A262E533700C2385C /* EventDetailsInteractor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EventDetailsInteractor.swift; sourceTree = ""; }; 9796AEC725EFF660003933C5 /* NoteDetailsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NoteDetailsViewController.swift; sourceTree = ""; }; 9796AECB25EFF69C003933C5 /* NoteDetailsRouter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NoteDetailsRouter.swift; sourceTree = ""; }; @@ -186,11 +185,9 @@ 979C36AA1E0E14C20098345E /* InitialImportWireframe.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InitialImportWireframe.swift; sourceTree = ""; }; 979F3DC8262AAB38000FD1EB /* EventAging.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EventAging.swift; sourceTree = ""; }; 97A00A90248C84D900AB7F85 /* NotificationManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationManager.swift; sourceTree = ""; }; - 97AD26A41BD81A14004C1C7D /* DateAidMappingModel_V2_V3.xcmappingmodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcmappingmodel; path = DateAidMappingModel_V2_V3.xcmappingmodel; sourceTree = ""; }; 97AD26A71BD81C59004C1C7D /* Note.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Note.swift; sourceTree = ""; }; 97AEAC0B1B2DFD6900ADF181 /* Optional+IsEmptyOrNil.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Optional+IsEmptyOrNil.swift"; sourceTree = ""; }; 97AEAC0D1B2EA58000ADF181 /* Date+Utilities.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Date+Utilities.swift"; sourceTree = ""; }; - 97AEAC0F1B2EA74A00ADF181 /* Holidays.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Holidays.plist; sourceTree = ""; }; 97B099BB1BF55C5600ADE476 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; }; 97B099BD1BF55C5C00ADE476 /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; }; 97B40DAA1DA17900000DA0E0 /* ContactConverter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ContactConverter.swift; sourceTree = ""; }; @@ -218,6 +215,8 @@ 97F7AE5425E779BF0023BFA5 /* NoteType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NoteType.swift; sourceTree = ""; }; 97F7B1D2263DDC1F001D1313 /* Route.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Route.swift; sourceTree = ""; }; 97F8FFC625F9E618003F05D2 /* EventNaming.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EventNaming.swift; sourceTree = ""; }; + E4F5F96E7FDFD0A3A2C6B86C /* Pods_DateDots.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_DateDots.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + EA7B7B582414D9A40ABEDB74 /* Pods-DateDots.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DateDots.release.xcconfig"; path = "Target Support Files/Pods-DateDots/Pods-DateDots.release.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -227,6 +226,7 @@ files = ( 97B099BE1BF55C5C00ADE476 /* SystemConfiguration.framework in Frameworks */, 97B099BC1BF55C5600ADE476 /* Security.framework in Frameworks */, + 2E12DAFEDB4864E0087A11D1 /* Pods_DateDots.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -234,12 +234,25 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 203068516447E6B4D79CE7AD /* Pods_DateDotsTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 223046C370D991DDF7E549B8 /* Pods */ = { + isa = PBXGroup; + children = ( + 01352474C1A1FE4A149A2968 /* Pods-DateDots.debug.xcconfig */, + EA7B7B582414D9A40ABEDB74 /* Pods-DateDots.release.xcconfig */, + 0C95F7D8EF4B3A730CDE4EF4 /* Pods-DateDotsTests.debug.xcconfig */, + 2E105043688BFA5068CDBDD6 /* Pods-DateDotsTests.release.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; 97007BAA267FE2C5007BA2F1 /* Reminders */ = { isa = PBXGroup; children = ( @@ -299,7 +312,7 @@ 972E323C245A8D9500E9DAAA /* Root Files */ = { isa = PBXGroup; children = ( - 972E323A245A8BC300E9DAAA /* DateAid-Bridging-Header.h */, + 972E323A245A8BC300E9DAAA /* DateDots-Bridging-Header.h */, 97364CE41AFBF44A0095BC57 /* Info.plist */, ); name = "Root Files"; @@ -308,23 +321,24 @@ 97364CD71AFBF44A0095BC57 = { isa = PBXGroup; children = ( - 97364CE21AFBF44A0095BC57 /* DateAid */, - 97364CFB1AFBF44A0095BC57 /* DateAidTests */, + 97364CE21AFBF44A0095BC57 /* DateDots */, + 97364CFB1AFBF44A0095BC57 /* DateDotsTests */, 97364CE11AFBF44A0095BC57 /* Products */, FB0A3B81F2621109FE6C5764 /* Frameworks */, + 223046C370D991DDF7E549B8 /* Pods */, ); sourceTree = ""; }; 97364CE11AFBF44A0095BC57 /* Products */ = { isa = PBXGroup; children = ( - 97364CE01AFBF44A0095BC57 /* DateAid.app */, - 97364CF81AFBF44A0095BC57 /* DateAidTests.xctest */, + 97364CE01AFBF44A0095BC57 /* DateDots.app */, + 97364CF81AFBF44A0095BC57 /* DateDotsTests.xctest */, ); name = Products; sourceTree = ""; }; - 97364CE21AFBF44A0095BC57 /* DateAid */ = { + 97364CE21AFBF44A0095BC57 /* DateDots */ = { isa = PBXGroup; children = ( 972E323C245A8D9500E9DAAA /* Root Files */, @@ -340,16 +354,16 @@ 97007BAA267FE2C5007BA2F1 /* Reminders */, 9796AEC625EFF636003933C5 /* NoteDetails */, ); - path = DateAid; + path = DateDots; sourceTree = ""; }; - 97364CFB1AFBF44A0095BC57 /* DateAidTests */ = { + 97364CFB1AFBF44A0095BC57 /* DateDotsTests */ = { isa = PBXGroup; children = ( 97364CFE1AFBF44A0095BC57 /* DateAidTests.swift */, 97364CFC1AFBF44A0095BC57 /* Supporting Files */, ); - path = DateAidTests; + path = DateDotsTests; sourceTree = ""; }; 97364CFC1AFBF44A0095BC57 /* Supporting Files */ = { @@ -363,8 +377,6 @@ 9749E6D124837D3900DAAB49 /* DataModels */ = { isa = PBXGroup; children = ( - 9791F7851BD4CA57001E82BB /* DateAidMappingModel_V1_V2.xcmappingmodel */, - 97AD26A41BD81A14004C1C7D /* DateAidMappingModel_V2_V3.xcmappingmodel */, 97943B571B0EDEB3004FC095 /* DateAid.xcdatamodeld */, ); path = DataModels; @@ -405,7 +417,6 @@ 97C901E6245A8855005AF301 /* Supporting Files */ = { isa = PBXGroup; children = ( - 97AEAC0F1B2EA74A00ADF181 /* Holidays.plist */, 97364CF11AFBF44A0095BC57 /* LaunchScreen.xib */, 97364CEF1AFBF44A0095BC57 /* Images.xcassets */, ); @@ -551,6 +562,8 @@ children = ( 97B099BD1BF55C5C00ADE476 /* SystemConfiguration.framework */, 97B099BB1BF55C5600ADE476 /* Security.framework */, + E4F5F96E7FDFD0A3A2C6B86C /* Pods_DateDots.framework */, + 85BDD19F05AA45C118EA7FA6 /* Pods_DateDotsTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -558,27 +571,30 @@ /* End PBXGroup section */ /* Begin PBXNativeTarget section */ - 97364CDF1AFBF44A0095BC57 /* DateAid */ = { + 97364CDF1AFBF44A0095BC57 /* DateDots */ = { isa = PBXNativeTarget; - buildConfigurationList = 97364D021AFBF44A0095BC57 /* Build configuration list for PBXNativeTarget "DateAid" */; + buildConfigurationList = 97364D021AFBF44A0095BC57 /* Build configuration list for PBXNativeTarget "DateDots" */; buildPhases = ( + D3D15E5D8B781E249D74482C /* [CP] Check Pods Manifest.lock */, 97364CDC1AFBF44A0095BC57 /* Sources */, 97364CDD1AFBF44A0095BC57 /* Frameworks */, 97364CDE1AFBF44A0095BC57 /* Resources */, + 51CE667459BFBA5AFFE65114 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); dependencies = ( ); - name = DateAid; + name = DateDots; productName = DateAid; - productReference = 97364CE01AFBF44A0095BC57 /* DateAid.app */; + productReference = 97364CE01AFBF44A0095BC57 /* DateDots.app */; productType = "com.apple.product-type.application"; }; - 97364CF71AFBF44A0095BC57 /* DateAidTests */ = { + 97364CF71AFBF44A0095BC57 /* DateDotsTests */ = { isa = PBXNativeTarget; - buildConfigurationList = 97364D051AFBF44A0095BC57 /* Build configuration list for PBXNativeTarget "DateAidTests" */; + buildConfigurationList = 97364D051AFBF44A0095BC57 /* Build configuration list for PBXNativeTarget "DateDotsTests" */; buildPhases = ( + 035F1BBF7E98CD05D967EE29 /* [CP] Check Pods Manifest.lock */, 97364CF41AFBF44A0095BC57 /* Sources */, 97364CF51AFBF44A0095BC57 /* Frameworks */, 97364CF61AFBF44A0095BC57 /* Resources */, @@ -588,9 +604,9 @@ dependencies = ( 97364CFA1AFBF44A0095BC57 /* PBXTargetDependency */, ); - name = DateAidTests; + name = DateDotsTests; productName = DateAidTests; - productReference = 97364CF81AFBF44A0095BC57 /* DateAidTests.xctest */; + productReference = 97364CF81AFBF44A0095BC57 /* DateDotsTests.xctest */; productType = "com.apple.product-type.bundle.unit-test"; }; /* End PBXNativeTarget section */ @@ -616,7 +632,7 @@ }; }; }; - buildConfigurationList = 97364CDB1AFBF44A0095BC57 /* Build configuration list for PBXProject "DateAid" */; + buildConfigurationList = 97364CDB1AFBF44A0095BC57 /* Build configuration list for PBXProject "DateDots" */; compatibilityVersion = "Xcode 3.2"; developmentRegion = en; hasScannedForEncodings = 0; @@ -629,8 +645,8 @@ projectDirPath = ""; projectRoot = ""; targets = ( - 97364CDF1AFBF44A0095BC57 /* DateAid */, - 97364CF71AFBF44A0095BC57 /* DateAidTests */, + 97364CDF1AFBF44A0095BC57 /* DateDots */, + 97364CF71AFBF44A0095BC57 /* DateDotsTests */, ); }; /* End PBXProject section */ @@ -640,7 +656,6 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 97AEAC101B2EA74A00ADF181 /* Holidays.plist in Resources */, 97364CEE1AFBF44A0095BC57 /* Main.storyboard in Resources */, 97364CF31AFBF44A0095BC57 /* LaunchScreen.xib in Resources */, 97364CF01AFBF44A0095BC57 /* Images.xcassets in Resources */, @@ -656,6 +671,71 @@ }; /* End PBXResourcesBuildPhase section */ +/* Begin PBXShellScriptBuildPhase section */ + 035F1BBF7E98CD05D967EE29 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-DateDotsTests-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + 51CE667459BFBA5AFFE65114 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-DateDots/Pods-DateDots-frameworks.sh", + "${BUILT_PRODUCTS_DIR}/Flurry-iOS-SDK/Flurry_iOS_SDK.framework", + ); + name = "[CP] Embed Pods Frameworks"; + outputPaths = ( + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Flurry_iOS_SDK.framework", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-DateDots/Pods-DateDots-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + D3D15E5D8B781E249D74482C /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-DateDots-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + /* Begin PBXSourcesBuildPhase section */ 97364CDC1AFBF44A0095BC57 /* Sources */ = { isa = PBXSourcesBuildPhase; @@ -699,7 +779,6 @@ 97AD26A91BD81C59004C1C7D /* Note.swift in Sources */, 979C36AB1E0E14C20098345E /* InitialImportWireframe.swift in Sources */, 97E5F36C263DC5AB00395D87 /* Routing.swift in Sources */, - 97AD26A51BD81A14004C1C7D /* DateAidMappingModel_V2_V3.xcmappingmodel in Sources */, 97069CD42627BC4200102F89 /* EventDetailsPresenter.swift in Sources */, 971E488926BDFF5800DE5691 /* DispatchQueue+Helpers.swift in Sources */, 975713AD24553A9900EDD963 /* CircleLabel.swift in Sources */, @@ -745,7 +824,6 @@ 9796AEC825EFF660003933C5 /* NoteDetailsViewController.swift in Sources */, 97BDFCFA265E13A00061E0CB /* EventCreationInteractor.swift in Sources */, 976ED7791DA0D5E300AC5D29 /* ContactManager.swift in Sources */, - 9791F7861BD4CA57001E82BB /* DateAidMappingModel_V1_V2.xcmappingmodel in Sources */, 9749E6CF24837C1200DAAB49 /* CoreDataManager.swift in Sources */, 976473AC24330CE000D2F11D /* EventCircleImageView.swift in Sources */, 97BDFCF0265E124E0061E0CB /* EventCreationRouter.swift in Sources */, @@ -765,7 +843,7 @@ /* Begin PBXTargetDependency section */ 97364CFA1AFBF44A0095BC57 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = 97364CDF1AFBF44A0095BC57 /* DateAid */; + target = 97364CDF1AFBF44A0095BC57 /* DateDots */; targetProxy = 97364CF91AFBF44A0095BC57 /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ @@ -904,6 +982,7 @@ }; 97364D031AFBF44A0095BC57 /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 01352474C1A1FE4A149A2968 /* Pods-DateDots.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; @@ -911,7 +990,7 @@ CURRENT_PROJECT_VERSION = 2; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; - INFOPLIST_FILE = DateAid/Info.plist; + INFOPLIST_FILE = DateDots/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; MARKETING_VERSION = 2.0.0; @@ -921,7 +1000,7 @@ PRODUCT_BUNDLE_IDENTIFIER = com.datedots.Datedots; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_INCLUDE_PATHS = "$(inherited)"; - SWIFT_OBJC_BRIDGING_HEADER = "DateAid/DateAid-Bridging-Header.h"; + SWIFT_OBJC_BRIDGING_HEADER = "DateDots/DateDots-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_SWIFT3_OBJC_INFERENCE = Default; SWIFT_VERSION = 5.0; @@ -930,6 +1009,7 @@ }; 97364D041AFBF44A0095BC57 /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = EA7B7B582414D9A40ABEDB74 /* Pods-DateDots.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; @@ -938,7 +1018,7 @@ ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; HEADER_SEARCH_PATHS = "$(inherited)"; - INFOPLIST_FILE = DateAid/Info.plist; + INFOPLIST_FILE = DateDots/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; MARKETING_VERSION = 2.0.0; @@ -948,7 +1028,7 @@ PRODUCT_BUNDLE_IDENTIFIER = com.datedots.Datedots; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_INCLUDE_PATHS = ""; - SWIFT_OBJC_BRIDGING_HEADER = "DateAid/DateAid-Bridging-Header.h"; + SWIFT_OBJC_BRIDGING_HEADER = "DateDots/DateDots-Bridging-Header.h"; SWIFT_SWIFT3_OBJC_INFERENCE = Default; SWIFT_VERSION = 5.0; USER_HEADER_SEARCH_PATHS = ""; @@ -957,6 +1037,7 @@ }; 97364D061AFBF44A0095BC57 /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 0C95F7D8EF4B3A730CDE4EF4 /* Pods-DateDotsTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; FRAMEWORK_SEARCH_PATHS = ( @@ -967,38 +1048,39 @@ "DEBUG=1", "$(inherited)", ); - INFOPLIST_FILE = DateAidTests/Info.plist; + INFOPLIST_FILE = DateDotsTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "com.example.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_SWIFT3_OBJC_INFERENCE = On; SWIFT_VERSION = 5.0; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/DateAid.app/DateAid"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/DateDots.app/DateDots"; }; name = Debug; }; 97364D071AFBF44A0095BC57 /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 2E105043688BFA5068CDBDD6 /* Pods-DateDotsTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; FRAMEWORK_SEARCH_PATHS = ( "$(SDKROOT)/Developer/Library/Frameworks", "$(inherited)", ); - INFOPLIST_FILE = DateAidTests/Info.plist; + INFOPLIST_FILE = DateDotsTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "com.example.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_SWIFT3_OBJC_INFERENCE = On; SWIFT_VERSION = 5.0; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/DateAid.app/DateAid"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/DateDots.app/DateDots"; }; name = Release; }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 97364CDB1AFBF44A0095BC57 /* Build configuration list for PBXProject "DateAid" */ = { + 97364CDB1AFBF44A0095BC57 /* Build configuration list for PBXProject "DateDots" */ = { isa = XCConfigurationList; buildConfigurations = ( 97364D001AFBF44A0095BC57 /* Debug */, @@ -1007,7 +1089,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 97364D021AFBF44A0095BC57 /* Build configuration list for PBXNativeTarget "DateAid" */ = { + 97364D021AFBF44A0095BC57 /* Build configuration list for PBXNativeTarget "DateDots" */ = { isa = XCConfigurationList; buildConfigurations = ( 97364D031AFBF44A0095BC57 /* Debug */, @@ -1016,7 +1098,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 97364D051AFBF44A0095BC57 /* Build configuration list for PBXNativeTarget "DateAidTests" */ = { + 97364D051AFBF44A0095BC57 /* Build configuration list for PBXNativeTarget "DateDotsTests" */ = { isa = XCConfigurationList; buildConfigurations = ( 97364D061AFBF44A0095BC57 /* Debug */, @@ -1032,9 +1114,6 @@ isa = XCVersionGroup; children = ( 97D97C2A26AFDC0E0000F2B9 /* DateAid_V4.xcdatamodel */, - 979350F91BD58704008F24F2 /* DateAid_V3.xcdatamodel */, - 9791F7821BD4C757001E82BB /* DateAid_V2.xcdatamodel */, - 97943B581B0EDEB3004FC095 /* DateAid.xcdatamodel */, ); currentVersion = 97D97C2A26AFDC0E0000F2B9 /* DateAid_V4.xcdatamodel */; path = DateAid.xcdatamodeld; diff --git a/DateAid.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/DateDots.xcodeproj/project.xcworkspace/contents.xcworkspacedata similarity index 55% rename from DateAid.xcodeproj/project.xcworkspace/contents.xcworkspacedata rename to DateDots.xcodeproj/project.xcworkspace/contents.xcworkspacedata index 95ac353..585afb6 100644 --- a/DateAid.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ b/DateDots.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -2,6 +2,6 @@ + location = "self:/Users/AaronWilliamson/Desktop/dev/date_dots/DateDots.xcodeproj"> diff --git a/DateAid.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/DateDots.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from DateAid.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to DateDots.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/DateDots.xcworkspace/contents.xcworkspacedata b/DateDots.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..c2a7866 --- /dev/null +++ b/DateDots.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/DateAid/Supporting Files/Holidays.plist b/DateDots.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 51% rename from DateAid/Supporting Files/Holidays.plist rename to DateDots.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist index 1d21476..18d9810 100644 --- a/DateAid/Supporting Files/Holidays.plist +++ b/DateDots.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -2,11 +2,7 @@ - Thanksgiving - 1621-11-26T12:00:00Z - 4th of July - 1776-07-04T12:00:00Z - Christmas - 336-12-25T12:00:00Z + IDEDidComputeMac32BitWarning + diff --git a/DateAid/.DS_Store b/DateDots/.DS_Store similarity index 100% rename from DateAid/.DS_Store rename to DateDots/.DS_Store diff --git a/DateAid/AppDelegate.swift b/DateDots/AppDelegate.swift similarity index 74% rename from DateAid/AppDelegate.swift rename to DateDots/AppDelegate.swift index f47d7f5..a4293f8 100644 --- a/DateAid/AppDelegate.swift +++ b/DateDots/AppDelegate.swift @@ -8,6 +8,7 @@ import UIKit import CoreData +import Flurry_iOS_SDK @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate, Routing { @@ -22,6 +23,8 @@ class AppDelegate: UIResponder, UIApplicationDelegate, Routing { self.child = RouteManager.shared.router(for: .eventsNavigation, parent: self) self.child?.present() } + + startFlurryAnalytics() return true } @@ -35,4 +38,15 @@ class AppDelegate: UIResponder, UIApplicationDelegate, Routing { // Persist data to disk when app terminates do { try CoreDataManager.save() } catch {} } + + private func startFlurryAnalytics() { + + Flurry.startSession( + "ZRGQSS9NYG66WPJY5J6P", + with: FlurrySessionBuilder.init() + .withCrashReporting(true) + .withAppVersion("2.1.0") + .withLogLevel(FlurryLogLevelAll) + ) + } } diff --git a/DateAid/Array+Subscript.swift b/DateDots/Array+Subscript.swift similarity index 100% rename from DateAid/Array+Subscript.swift rename to DateDots/Array+Subscript.swift diff --git a/DateAid/Base.lproj/Dates~.storyboard b/DateDots/Base.lproj/Dates~.storyboard similarity index 100% rename from DateAid/Base.lproj/Dates~.storyboard rename to DateDots/Base.lproj/Dates~.storyboard diff --git a/DateAid/CNContact+Tasks.swift b/DateDots/CNContact+Tasks.swift similarity index 100% rename from DateAid/CNContact+Tasks.swift rename to DateDots/CNContact+Tasks.swift diff --git a/DateAid/Calendar+Utilities.swift b/DateDots/Calendar+Utilities.swift similarity index 100% rename from DateAid/Calendar+Utilities.swift rename to DateDots/Calendar+Utilities.swift diff --git a/DateAid/CalendarViewController.swift b/DateDots/CalendarViewController.swift similarity index 100% rename from DateAid/CalendarViewController.swift rename to DateDots/CalendarViewController.swift diff --git a/DateAid/Common/Base.lproj/Main.storyboard b/DateDots/Common/Base.lproj/Main.storyboard similarity index 100% rename from DateAid/Common/Base.lproj/Main.storyboard rename to DateDots/Common/Base.lproj/Main.storyboard diff --git a/DateAid/Common/DataModels/DateAid.xcdatamodeld/.xccurrentversion b/DateDots/Common/DataModels/DateAid.xcdatamodeld/.xccurrentversion similarity index 100% rename from DateAid/Common/DataModels/DateAid.xcdatamodeld/.xccurrentversion rename to DateDots/Common/DataModels/DateAid.xcdatamodeld/.xccurrentversion diff --git a/DateAid/Common/DataModels/DateAid.xcdatamodeld/DateAid_V3.xcdatamodel/contents b/DateDots/Common/DataModels/DateAid.xcdatamodeld/DateAid_V4.xcdatamodel/contents similarity index 90% rename from DateAid/Common/DataModels/DateAid.xcdatamodeld/DateAid_V3.xcdatamodel/contents rename to DateDots/Common/DataModels/DateAid.xcdatamodeld/DateAid_V4.xcdatamodel/contents index cd8b485..bfb7ea3 100644 --- a/DateAid/Common/DataModels/DateAid.xcdatamodeld/DateAid_V3.xcdatamodel/contents +++ b/DateDots/Common/DataModels/DateAid.xcdatamodeld/DateAid_V4.xcdatamodel/contents @@ -1,11 +1,11 @@ - + - + @@ -17,7 +17,7 @@ - + diff --git a/DateAid/Common/Device/DeviceModel.swift b/DateDots/Common/Device/DeviceModel.swift similarity index 100% rename from DateAid/Common/Device/DeviceModel.swift rename to DateDots/Common/Device/DeviceModel.swift diff --git a/DateAid/Common/Device/UIDevice+Type.swift b/DateDots/Common/Device/UIDevice+Type.swift similarity index 100% rename from DateAid/Common/Device/UIDevice+Type.swift rename to DateDots/Common/Device/UIDevice+Type.swift diff --git a/DateAid/Common/Entities/Address.swift b/DateDots/Common/Entities/Address.swift similarity index 100% rename from DateAid/Common/Entities/Address.swift rename to DateDots/Common/Entities/Address.swift diff --git a/DateAid/Common/Entities/Event.swift b/DateDots/Common/Entities/Event.swift similarity index 100% rename from DateAid/Common/Entities/Event.swift rename to DateDots/Common/Entities/Event.swift diff --git a/DateAid/Common/Entities/Note.swift b/DateDots/Common/Entities/Note.swift similarity index 100% rename from DateAid/Common/Entities/Note.swift rename to DateDots/Common/Entities/Note.swift diff --git a/DateAid/Common/Managers/CalendarManager.swift b/DateDots/Common/Managers/CalendarManager.swift similarity index 100% rename from DateAid/Common/Managers/CalendarManager.swift rename to DateDots/Common/Managers/CalendarManager.swift diff --git a/DateAid/Common/Managers/ContactConverter.swift b/DateDots/Common/Managers/ContactConverter.swift similarity index 100% rename from DateAid/Common/Managers/ContactConverter.swift rename to DateDots/Common/Managers/ContactConverter.swift diff --git a/DateAid/Common/Managers/ContactManager.swift b/DateDots/Common/Managers/ContactManager.swift similarity index 100% rename from DateAid/Common/Managers/ContactManager.swift rename to DateDots/Common/Managers/ContactManager.swift diff --git a/DateAid/Common/Managers/CoreDataManager.swift b/DateDots/Common/Managers/CoreDataManager.swift similarity index 100% rename from DateAid/Common/Managers/CoreDataManager.swift rename to DateDots/Common/Managers/CoreDataManager.swift diff --git a/DateAid/Common/Managers/DatePickerManager.swift b/DateDots/Common/Managers/DatePickerManager.swift similarity index 100% rename from DateAid/Common/Managers/DatePickerManager.swift rename to DateDots/Common/Managers/DatePickerManager.swift diff --git a/DateAid/Common/Managers/NotificationManager.swift b/DateDots/Common/Managers/NotificationManager.swift similarity index 100% rename from DateAid/Common/Managers/NotificationManager.swift rename to DateDots/Common/Managers/NotificationManager.swift diff --git a/DateAid/Common/Models/EventType.swift b/DateDots/Common/Models/EventType.swift similarity index 100% rename from DateAid/Common/Models/EventType.swift rename to DateDots/Common/Models/EventType.swift diff --git a/DateAid/Common/Models/Font.swift b/DateDots/Common/Models/Font.swift similarity index 100% rename from DateAid/Common/Models/Font.swift rename to DateDots/Common/Models/Font.swift diff --git a/DateAid/Common/Models/InfoType.swift b/DateDots/Common/Models/InfoType.swift similarity index 100% rename from DateAid/Common/Models/InfoType.swift rename to DateDots/Common/Models/InfoType.swift diff --git a/DateAid/Common/Models/NoteType.swift b/DateDots/Common/Models/NoteType.swift similarity index 100% rename from DateAid/Common/Models/NoteType.swift rename to DateDots/Common/Models/NoteType.swift diff --git a/DateAid/Common/Protocols/EventAging.swift b/DateDots/Common/Protocols/EventAging.swift similarity index 100% rename from DateAid/Common/Protocols/EventAging.swift rename to DateDots/Common/Protocols/EventAging.swift diff --git a/DateAid/Common/Protocols/EventNaming.swift b/DateDots/Common/Protocols/EventNaming.swift similarity index 100% rename from DateAid/Common/Protocols/EventNaming.swift rename to DateDots/Common/Protocols/EventNaming.swift diff --git a/DateAid/Common/Routing/Route.swift b/DateDots/Common/Routing/Route.swift similarity index 100% rename from DateAid/Common/Routing/Route.swift rename to DateDots/Common/Routing/Route.swift diff --git a/DateAid/Common/Routing/Routing.swift b/DateDots/Common/Routing/Routing.swift similarity index 100% rename from DateAid/Common/Routing/Routing.swift rename to DateDots/Common/Routing/Routing.swift diff --git a/DateAid/Common/Views/BaseView/BaseView.swift b/DateDots/Common/Views/BaseView/BaseView.swift similarity index 100% rename from DateAid/Common/Views/BaseView/BaseView.swift rename to DateDots/Common/Views/BaseView/BaseView.swift diff --git a/DateAid/Common/Views/BaseView/ConstructableView.swift b/DateDots/Common/Views/BaseView/ConstructableView.swift similarity index 100% rename from DateAid/Common/Views/BaseView/ConstructableView.swift rename to DateDots/Common/Views/BaseView/ConstructableView.swift diff --git a/DateAid/Common/Views/BaseView/Populatable.swift b/DateDots/Common/Views/BaseView/Populatable.swift similarity index 100% rename from DateAid/Common/Views/BaseView/Populatable.swift rename to DateDots/Common/Views/BaseView/Populatable.swift diff --git a/DateAid/Common/Views/CircleViews/CircleImageView.swift b/DateDots/Common/Views/CircleViews/CircleImageView.swift similarity index 100% rename from DateAid/Common/Views/CircleViews/CircleImageView.swift rename to DateDots/Common/Views/CircleViews/CircleImageView.swift diff --git a/DateAid/Common/Views/CircleViews/CircleLabel.swift b/DateDots/Common/Views/CircleViews/CircleLabel.swift similarity index 100% rename from DateAid/Common/Views/CircleViews/CircleLabel.swift rename to DateDots/Common/Views/CircleViews/CircleLabel.swift diff --git a/DateAid/Common/Views/CircleViews/EventCircleImageView.swift b/DateDots/Common/Views/CircleViews/EventCircleImageView.swift similarity index 100% rename from DateAid/Common/Views/CircleViews/EventCircleImageView.swift rename to DateDots/Common/Views/CircleViews/EventCircleImageView.swift diff --git a/DateAid/Common/Views/CircleViews/InfoCircleImageView.swift b/DateDots/Common/Views/CircleViews/InfoCircleImageView.swift similarity index 100% rename from DateAid/Common/Views/CircleViews/InfoCircleImageView.swift rename to DateDots/Common/Views/CircleViews/InfoCircleImageView.swift diff --git a/DateAid/Common/Views/CircleViews/NoteCircleImageView.swift b/DateDots/Common/Views/CircleViews/NoteCircleImageView.swift similarity index 100% rename from DateAid/Common/Views/CircleViews/NoteCircleImageView.swift rename to DateDots/Common/Views/CircleViews/NoteCircleImageView.swift diff --git a/DateAid/Common/Views/CircleViews/ReminderCircleLabel.swift b/DateDots/Common/Views/CircleViews/ReminderCircleLabel.swift similarity index 100% rename from DateAid/Common/Views/CircleViews/ReminderCircleLabel.swift rename to DateDots/Common/Views/CircleViews/ReminderCircleLabel.swift diff --git a/DateAid/Common/Views/PaddedTextField.swift b/DateDots/Common/Views/PaddedTextField.swift similarity index 100% rename from DateAid/Common/Views/PaddedTextField.swift rename to DateDots/Common/Views/PaddedTextField.swift diff --git a/DateAid/Common/Views/RoundedButton.swift b/DateDots/Common/Views/RoundedButton.swift similarity index 100% rename from DateAid/Common/Views/RoundedButton.swift rename to DateDots/Common/Views/RoundedButton.swift diff --git a/DateAid/Date+Utilities.swift b/DateDots/Date+Utilities.swift similarity index 100% rename from DateAid/Date+Utilities.swift rename to DateDots/Date+Utilities.swift diff --git a/DateDots/DateDots-Bridging-Header.h b/DateDots/DateDots-Bridging-Header.h new file mode 100644 index 0000000..6367847 --- /dev/null +++ b/DateDots/DateDots-Bridging-Header.h @@ -0,0 +1,13 @@ +// +// DateDots-Bridging-Header.h +// Date Dots +// +// Created by Aaron Williamson on 4/29/20. +// Copyright © 2020 Aaron Williamson. All rights reserved. +// + +#ifndef DateDots_Bridging_Header_h +#define DateDots_Bridging_Header_h + + +#endif /* DateDots_Bridging_Header_h */ diff --git a/DateAid/DispatchQueue+Helpers.swift b/DateDots/DispatchQueue+Helpers.swift similarity index 100% rename from DateAid/DispatchQueue+Helpers.swift rename to DateDots/DispatchQueue+Helpers.swift diff --git a/DateAid/EventCreation/EventCreationInteractor.swift b/DateDots/EventCreation/EventCreationInteractor.swift similarity index 100% rename from DateAid/EventCreation/EventCreationInteractor.swift rename to DateDots/EventCreation/EventCreationInteractor.swift diff --git a/DateAid/EventCreation/EventCreationManager.swift b/DateDots/EventCreation/EventCreationManager.swift similarity index 100% rename from DateAid/EventCreation/EventCreationManager.swift rename to DateDots/EventCreation/EventCreationManager.swift diff --git a/DateAid/EventCreation/EventCreationPresenter.swift b/DateDots/EventCreation/EventCreationPresenter.swift similarity index 100% rename from DateAid/EventCreation/EventCreationPresenter.swift rename to DateDots/EventCreation/EventCreationPresenter.swift diff --git a/DateAid/EventCreation/EventCreationRouter.swift b/DateDots/EventCreation/EventCreationRouter.swift similarity index 100% rename from DateAid/EventCreation/EventCreationRouter.swift rename to DateDots/EventCreation/EventCreationRouter.swift diff --git a/DateAid/EventCreation/EventCreationView.swift b/DateDots/EventCreation/EventCreationView.swift similarity index 100% rename from DateAid/EventCreation/EventCreationView.swift rename to DateDots/EventCreation/EventCreationView.swift diff --git a/DateAid/EventCreation/EventCreationViewController.swift b/DateDots/EventCreation/EventCreationViewController.swift similarity index 100% rename from DateAid/EventCreation/EventCreationViewController.swift rename to DateDots/EventCreation/EventCreationViewController.swift diff --git a/DateAid/EventDetails/EventDetails.swift b/DateDots/EventDetails/EventDetails.swift similarity index 100% rename from DateAid/EventDetails/EventDetails.swift rename to DateDots/EventDetails/EventDetails.swift diff --git a/DateAid/EventDetails/EventDetailsInteractor.swift b/DateDots/EventDetails/EventDetailsInteractor.swift similarity index 100% rename from DateAid/EventDetails/EventDetailsInteractor.swift rename to DateDots/EventDetails/EventDetailsInteractor.swift diff --git a/DateAid/EventDetails/EventDetailsPresenter.swift b/DateDots/EventDetails/EventDetailsPresenter.swift similarity index 100% rename from DateAid/EventDetails/EventDetailsPresenter.swift rename to DateDots/EventDetails/EventDetailsPresenter.swift diff --git a/DateAid/EventDetails/EventDetailsRouter.swift b/DateDots/EventDetails/EventDetailsRouter.swift similarity index 87% rename from DateAid/EventDetails/EventDetailsRouter.swift rename to DateDots/EventDetails/EventDetailsRouter.swift index 6107757..7072471 100644 --- a/DateAid/EventDetails/EventDetailsRouter.swift +++ b/DateDots/EventDetails/EventDetailsRouter.swift @@ -7,6 +7,7 @@ // import UIKit +import Flurry_iOS_SDK class EventDetailsRouter { @@ -51,16 +52,25 @@ extension EventDetailsRouter: Routing { func presentEventCreation(event: Event) { child = RouteManager.shared.router(for: .eventCreation, parent: self, with: event) child?.present() + Flurry.logEvent("Show Event Creation - Edit") } func presentEventReminder(details: ReminderDetails) { child = RouteManager.shared.router(for: .eventReminder, parent: self, with: details) child?.present() + if details.reminder != nil { + Flurry.logEvent("Show Event Reminder - Edit") + } else { + Flurry.logEvent("Show Event Reminder - New") + } } func presentEventNote(noteState: NoteState) { child = RouteManager.shared.router(for: .eventNoteDetails, parent: self, with: noteState) child?.present() + + let params = ["noteType": noteState.noteType.rawValue] + Flurry.logEvent("Show Event Note - Event Details", withParameters: params) } func dismiss(route: Route, data: T) { diff --git a/DateAid/EventDetails/EventDetailsView.swift b/DateDots/EventDetails/EventDetailsView.swift similarity index 100% rename from DateAid/EventDetails/EventDetailsView.swift rename to DateDots/EventDetails/EventDetailsView.swift diff --git a/DateAid/EventDetails/EventDetailsViewController.swift b/DateDots/EventDetails/EventDetailsViewController.swift similarity index 100% rename from DateAid/EventDetails/EventDetailsViewController.swift rename to DateDots/EventDetails/EventDetailsViewController.swift diff --git a/DateAid/Events/Events/EventCell.swift b/DateDots/Events/Events/EventCell.swift similarity index 100% rename from DateAid/Events/Events/EventCell.swift rename to DateDots/Events/Events/EventCell.swift diff --git a/DateAid/Events/Events/EventSectionHeader.swift b/DateDots/Events/Events/EventSectionHeader.swift similarity index 100% rename from DateAid/Events/Events/EventSectionHeader.swift rename to DateDots/Events/Events/EventSectionHeader.swift diff --git a/DateAid/Events/Events/EventsInteractor.swift b/DateDots/Events/Events/EventsInteractor.swift similarity index 100% rename from DateAid/Events/Events/EventsInteractor.swift rename to DateDots/Events/Events/EventsInteractor.swift diff --git a/DateAid/Events/Events/EventsPresenter.swift b/DateDots/Events/Events/EventsPresenter.swift similarity index 95% rename from DateAid/Events/Events/EventsPresenter.swift rename to DateDots/Events/Events/EventsPresenter.swift index fdb1b8e..3a2bb0a 100644 --- a/DateAid/Events/Events/EventsPresenter.swift +++ b/DateDots/Events/Events/EventsPresenter.swift @@ -7,6 +7,7 @@ // import UIKit +import Flurry_iOS_SDK protocol EventsEventHandling: AnyObject { @@ -121,6 +122,9 @@ class EventsPresenter { let newPreference = !oldPreference userDefaults.set(newPreference, forKey: eventType.key) + let params = ["eventType": eventType.rawValue, "isOn": "\(newPreference)"] + Flurry.logEvent("Toggle Event Type", withParameters: params) + return newPreference } @@ -130,6 +134,9 @@ class EventsPresenter { let newPreference = !oldPreference userDefaults.set(newPreference, forKey: noteType.key) + let params = ["noteType": noteType.rawValue, "isOn": "\(newPreference)"] + Flurry.logEvent("Toggle Note Type", withParameters: params) + return newPreference } } diff --git a/DateAid/Events/Events/EventsRouter.swift b/DateDots/Events/Events/EventsRouter.swift similarity index 84% rename from DateAid/Events/Events/EventsRouter.swift rename to DateDots/Events/Events/EventsRouter.swift index b08d9f6..474b501 100644 --- a/DateAid/Events/Events/EventsRouter.swift +++ b/DateDots/Events/Events/EventsRouter.swift @@ -7,6 +7,7 @@ // import UIKit +import Flurry_iOS_SDK class EventsRouter { @@ -55,17 +56,21 @@ extension EventsRouter: Routing { func presentEventCreation() { child = RouteManager.shared.router(for: .eventCreation, parent: self) child?.present() + Flurry.logEvent("Show Event Creation - New") } func presentEventDetails(eventDetails: EventDetails) { - print("present event details") child = RouteManager.shared.router(for: .eventDetails, parent: self, with: eventDetails) child?.present() + let params = ["eventType": eventDetails.event.eventType.rawValue] + Flurry.logEvent("Show Event Details", withParameters: params) } func presentEventNote(noteState: NoteState) { child = RouteManager.shared.router(for: .eventNoteDetails, parent: self, with: noteState) child?.present() + let params = ["noteType": noteState.noteType.rawValue] + Flurry.logEvent("Show Event Note - Events", withParameters: params) } func dismiss(route: Route, data: T?) { diff --git a/DateAid/Events/Events/EventsView.swift b/DateDots/Events/Events/EventsView.swift similarity index 100% rename from DateAid/Events/Events/EventsView.swift rename to DateDots/Events/Events/EventsView.swift diff --git a/DateAid/Events/Events/EventsViewController.swift b/DateDots/Events/Events/EventsViewController.swift similarity index 89% rename from DateAid/Events/Events/EventsViewController.swift rename to DateDots/Events/Events/EventsViewController.swift index 4c80427..a394d30 100644 --- a/DateAid/Events/Events/EventsViewController.swift +++ b/DateDots/Events/Events/EventsViewController.swift @@ -199,13 +199,20 @@ extension EventsViewController: EventsViewOutputting { } func presentMailComposer(recipient: String, subject: String, body: String) { - let mailComposer = MFMailComposeViewController() - mailComposer.mailComposeDelegate = self - mailComposer.setToRecipients([recipient]) - mailComposer.setSubject(subject) - mailComposer.setMessageBody(body, isHTML: false) - present(mailComposer, animated: true, completion: nil) + if MFMailComposeViewController.canSendMail() { + let mailComposer = MFMailComposeViewController() + mailComposer.mailComposeDelegate = self + mailComposer.setToRecipients([recipient]) + mailComposer.setSubject(subject) + mailComposer.setMessageBody(body, isHTML: false) + + present(mailComposer, animated: true, completion: nil) + } else { + let emailString = "mailto:\(recipient)?subject=\(subject)&body=\(body)".addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)! + let emailURL = URL(string: emailString)! + UIApplication.shared.open(emailURL, options: [:], completionHandler: nil) + } } } diff --git a/DateAid/Events/Events/NoteCell.swift b/DateDots/Events/Events/NoteCell.swift similarity index 100% rename from DateAid/Events/Events/NoteCell.swift rename to DateDots/Events/Events/NoteCell.swift diff --git a/DateAid/EventsNavigation/EventsNavigationPresenter.swift b/DateDots/EventsNavigation/EventsNavigationPresenter.swift similarity index 100% rename from DateAid/EventsNavigation/EventsNavigationPresenter.swift rename to DateDots/EventsNavigation/EventsNavigationPresenter.swift diff --git a/DateAid/EventsNavigation/EventsNavigationRouter.swift b/DateDots/EventsNavigation/EventsNavigationRouter.swift similarity index 100% rename from DateAid/EventsNavigation/EventsNavigationRouter.swift rename to DateDots/EventsNavigation/EventsNavigationRouter.swift diff --git a/DateAid/EventsNavigation/EventsNavigationViewController.swift b/DateDots/EventsNavigation/EventsNavigationViewController.swift similarity index 100% rename from DateAid/EventsNavigation/EventsNavigationViewController.swift rename to DateDots/EventsNavigation/EventsNavigationViewController.swift diff --git a/DateAid/Import/InitialImportEventHandling.swift b/DateDots/Import/InitialImportEventHandling.swift similarity index 100% rename from DateAid/Import/InitialImportEventHandling.swift rename to DateDots/Import/InitialImportEventHandling.swift diff --git a/DateAid/Import/InitialImportInteractor.swift b/DateDots/Import/InitialImportInteractor.swift similarity index 100% rename from DateAid/Import/InitialImportInteractor.swift rename to DateDots/Import/InitialImportInteractor.swift diff --git a/DateAid/Import/InitialImportInteractorInputting.swift b/DateDots/Import/InitialImportInteractorInputting.swift similarity index 100% rename from DateAid/Import/InitialImportInteractorInputting.swift rename to DateDots/Import/InitialImportInteractorInputting.swift diff --git a/DateAid/Import/InitialImportInteractorOutputting.swift b/DateDots/Import/InitialImportInteractorOutputting.swift similarity index 100% rename from DateAid/Import/InitialImportInteractorOutputting.swift rename to DateDots/Import/InitialImportInteractorOutputting.swift diff --git a/DateAid/Import/InitialImportPresenter.swift b/DateDots/Import/InitialImportPresenter.swift similarity index 100% rename from DateAid/Import/InitialImportPresenter.swift rename to DateDots/Import/InitialImportPresenter.swift diff --git a/DateAid/Import/InitialImportView.swift b/DateDots/Import/InitialImportView.swift similarity index 100% rename from DateAid/Import/InitialImportView.swift rename to DateDots/Import/InitialImportView.swift diff --git a/DateAid/Import/InitialImportViewController.swift b/DateDots/Import/InitialImportViewController.swift similarity index 100% rename from DateAid/Import/InitialImportViewController.swift rename to DateDots/Import/InitialImportViewController.swift diff --git a/DateAid/Import/InitialImportViewOutputting.swift b/DateDots/Import/InitialImportViewOutputting.swift similarity index 100% rename from DateAid/Import/InitialImportViewOutputting.swift rename to DateDots/Import/InitialImportViewOutputting.swift diff --git a/DateAid/Import/InitialImportWireframe.swift b/DateDots/Import/InitialImportWireframe.swift similarity index 100% rename from DateAid/Import/InitialImportWireframe.swift rename to DateDots/Import/InitialImportWireframe.swift diff --git a/DateAid/Info.plist b/DateDots/Info.plist similarity index 100% rename from DateAid/Info.plist rename to DateDots/Info.plist diff --git a/DateAid/NSManagedObjectContext+Fetch.swift b/DateDots/NSManagedObjectContext+Fetch.swift similarity index 100% rename from DateAid/NSManagedObjectContext+Fetch.swift rename to DateDots/NSManagedObjectContext+Fetch.swift diff --git a/DateAid/NoteDetails/NoteDetailType.swift b/DateDots/NoteDetails/NoteDetailType.swift similarity index 100% rename from DateAid/NoteDetails/NoteDetailType.swift rename to DateDots/NoteDetails/NoteDetailType.swift diff --git a/DateAid/NoteDetails/NoteDetailsInteractor.swift b/DateDots/NoteDetails/NoteDetailsInteractor.swift similarity index 100% rename from DateAid/NoteDetails/NoteDetailsInteractor.swift rename to DateDots/NoteDetails/NoteDetailsInteractor.swift diff --git a/DateAid/NoteDetails/NoteDetailsPresenter.swift b/DateDots/NoteDetails/NoteDetailsPresenter.swift similarity index 100% rename from DateAid/NoteDetails/NoteDetailsPresenter.swift rename to DateDots/NoteDetails/NoteDetailsPresenter.swift diff --git a/DateAid/NoteDetails/NoteDetailsRouter.swift b/DateDots/NoteDetails/NoteDetailsRouter.swift similarity index 100% rename from DateAid/NoteDetails/NoteDetailsRouter.swift rename to DateDots/NoteDetails/NoteDetailsRouter.swift diff --git a/DateAid/NoteDetails/NoteDetailsView.swift b/DateDots/NoteDetails/NoteDetailsView.swift similarity index 100% rename from DateAid/NoteDetails/NoteDetailsView.swift rename to DateDots/NoteDetails/NoteDetailsView.swift diff --git a/DateAid/NoteDetails/NoteDetailsViewController.swift b/DateDots/NoteDetails/NoteDetailsViewController.swift similarity index 100% rename from DateAid/NoteDetails/NoteDetailsViewController.swift rename to DateDots/NoteDetails/NoteDetailsViewController.swift diff --git a/DateAid/Optional+IsEmptyOrNil.swift b/DateDots/Optional+IsEmptyOrNil.swift similarity index 100% rename from DateAid/Optional+IsEmptyOrNil.swift rename to DateDots/Optional+IsEmptyOrNil.swift diff --git a/DateAid/Reminders/Reminder.swift b/DateDots/Reminders/Reminder.swift similarity index 100% rename from DateAid/Reminders/Reminder.swift rename to DateDots/Reminders/Reminder.swift diff --git a/DateAid/Reminders/ReminderDetails.swift b/DateDots/Reminders/ReminderDetails.swift similarity index 100% rename from DateAid/Reminders/ReminderDetails.swift rename to DateDots/Reminders/ReminderDetails.swift diff --git a/DateAid/Reminders/ReminderInteractor.swift b/DateDots/Reminders/ReminderInteractor.swift similarity index 100% rename from DateAid/Reminders/ReminderInteractor.swift rename to DateDots/Reminders/ReminderInteractor.swift diff --git a/DateAid/Reminders/ReminderPresenter.swift b/DateDots/Reminders/ReminderPresenter.swift similarity index 100% rename from DateAid/Reminders/ReminderPresenter.swift rename to DateDots/Reminders/ReminderPresenter.swift diff --git a/DateAid/Reminders/ReminderRouter.swift b/DateDots/Reminders/ReminderRouter.swift similarity index 100% rename from DateAid/Reminders/ReminderRouter.swift rename to DateDots/Reminders/ReminderRouter.swift diff --git a/DateAid/Reminders/ReminderView.swift b/DateDots/Reminders/ReminderView.swift similarity index 100% rename from DateAid/Reminders/ReminderView.swift rename to DateDots/Reminders/ReminderView.swift diff --git a/DateAid/Reminders/ReminderViewController.swift b/DateDots/Reminders/ReminderViewController.swift similarity index 100% rename from DateAid/Reminders/ReminderViewController.swift rename to DateDots/Reminders/ReminderViewController.swift diff --git a/DateAid/Supporting Files/Base.lproj/LaunchScreen.xib b/DateDots/Supporting Files/Base.lproj/LaunchScreen.xib similarity index 100% rename from DateAid/Supporting Files/Base.lproj/LaunchScreen.xib rename to DateDots/Supporting Files/Base.lproj/LaunchScreen.xib diff --git a/DateAid/Supporting Files/Images.xcassets/AppIcon.appiconset/Contents.json b/DateDots/Supporting Files/Images.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from DateAid/Supporting Files/Images.xcassets/AppIcon.appiconset/Contents.json rename to DateDots/Supporting Files/Images.xcassets/AppIcon.appiconset/Contents.json diff --git a/DateAid/Supporting Files/Images.xcassets/AppIcon.appiconset/app-icon.png b/DateDots/Supporting Files/Images.xcassets/AppIcon.appiconset/app-icon.png similarity index 100% rename from DateAid/Supporting Files/Images.xcassets/AppIcon.appiconset/app-icon.png rename to DateDots/Supporting Files/Images.xcassets/AppIcon.appiconset/app-icon.png diff --git a/DateAid/Supporting Files/Images.xcassets/AppIcon.appiconset/icon-20@2x.png b/DateDots/Supporting Files/Images.xcassets/AppIcon.appiconset/icon-20@2x.png similarity index 100% rename from DateAid/Supporting Files/Images.xcassets/AppIcon.appiconset/icon-20@2x.png rename to DateDots/Supporting Files/Images.xcassets/AppIcon.appiconset/icon-20@2x.png diff --git a/DateAid/Supporting Files/Images.xcassets/AppIcon.appiconset/icon-20@3x.png b/DateDots/Supporting Files/Images.xcassets/AppIcon.appiconset/icon-20@3x.png similarity index 100% rename from DateAid/Supporting Files/Images.xcassets/AppIcon.appiconset/icon-20@3x.png rename to DateDots/Supporting Files/Images.xcassets/AppIcon.appiconset/icon-20@3x.png diff --git a/DateAid/Supporting Files/Images.xcassets/AppIcon.appiconset/icon-29@2x.png b/DateDots/Supporting Files/Images.xcassets/AppIcon.appiconset/icon-29@2x.png similarity index 100% rename from DateAid/Supporting Files/Images.xcassets/AppIcon.appiconset/icon-29@2x.png rename to DateDots/Supporting Files/Images.xcassets/AppIcon.appiconset/icon-29@2x.png diff --git a/DateAid/Supporting Files/Images.xcassets/AppIcon.appiconset/icon-29@3x.png b/DateDots/Supporting Files/Images.xcassets/AppIcon.appiconset/icon-29@3x.png similarity index 100% rename from DateAid/Supporting Files/Images.xcassets/AppIcon.appiconset/icon-29@3x.png rename to DateDots/Supporting Files/Images.xcassets/AppIcon.appiconset/icon-29@3x.png diff --git a/DateAid/Supporting Files/Images.xcassets/AppIcon.appiconset/icon-40@2x.png b/DateDots/Supporting Files/Images.xcassets/AppIcon.appiconset/icon-40@2x.png similarity index 100% rename from DateAid/Supporting Files/Images.xcassets/AppIcon.appiconset/icon-40@2x.png rename to DateDots/Supporting Files/Images.xcassets/AppIcon.appiconset/icon-40@2x.png diff --git a/DateAid/Supporting Files/Images.xcassets/AppIcon.appiconset/icon-40@3x.png b/DateDots/Supporting Files/Images.xcassets/AppIcon.appiconset/icon-40@3x.png similarity index 100% rename from DateAid/Supporting Files/Images.xcassets/AppIcon.appiconset/icon-40@3x.png rename to DateDots/Supporting Files/Images.xcassets/AppIcon.appiconset/icon-40@3x.png diff --git a/DateAid/Supporting Files/Images.xcassets/AppIcon.appiconset/icon-60@2x.png b/DateDots/Supporting Files/Images.xcassets/AppIcon.appiconset/icon-60@2x.png similarity index 100% rename from DateAid/Supporting Files/Images.xcassets/AppIcon.appiconset/icon-60@2x.png rename to DateDots/Supporting Files/Images.xcassets/AppIcon.appiconset/icon-60@2x.png diff --git a/DateAid/Supporting Files/Images.xcassets/AppIcon.appiconset/icon-60@3x.png b/DateDots/Supporting Files/Images.xcassets/AppIcon.appiconset/icon-60@3x.png similarity index 100% rename from DateAid/Supporting Files/Images.xcassets/AppIcon.appiconset/icon-60@3x.png rename to DateDots/Supporting Files/Images.xcassets/AppIcon.appiconset/icon-60@3x.png diff --git a/DateAid/Supporting Files/Images.xcassets/Contents.json b/DateDots/Supporting Files/Images.xcassets/Contents.json similarity index 100% rename from DateAid/Supporting Files/Images.xcassets/Contents.json rename to DateDots/Supporting Files/Images.xcassets/Contents.json diff --git a/DateAid/Supporting Files/Images.xcassets/TypeEvent/Contents.json b/DateDots/Supporting Files/Images.xcassets/TypeEvent/Contents.json similarity index 100% rename from DateAid/Supporting Files/Images.xcassets/TypeEvent/Contents.json rename to DateDots/Supporting Files/Images.xcassets/TypeEvent/Contents.json diff --git a/DateAid/Supporting Files/Images.xcassets/TypeEvent/anniversary.imageset/Contents.json b/DateDots/Supporting Files/Images.xcassets/TypeEvent/anniversary.imageset/Contents.json similarity index 100% rename from DateAid/Supporting Files/Images.xcassets/TypeEvent/anniversary.imageset/Contents.json rename to DateDots/Supporting Files/Images.xcassets/TypeEvent/anniversary.imageset/Contents.json diff --git a/DateAid/Supporting Files/Images.xcassets/TypeEvent/anniversary.imageset/anniversary.pdf b/DateDots/Supporting Files/Images.xcassets/TypeEvent/anniversary.imageset/anniversary.pdf similarity index 100% rename from DateAid/Supporting Files/Images.xcassets/TypeEvent/anniversary.imageset/anniversary.pdf rename to DateDots/Supporting Files/Images.xcassets/TypeEvent/anniversary.imageset/anniversary.pdf diff --git a/DateAid/Supporting Files/Images.xcassets/TypeEvent/birthday.imageset/Contents.json b/DateDots/Supporting Files/Images.xcassets/TypeEvent/birthday.imageset/Contents.json similarity index 100% rename from DateAid/Supporting Files/Images.xcassets/TypeEvent/birthday.imageset/Contents.json rename to DateDots/Supporting Files/Images.xcassets/TypeEvent/birthday.imageset/Contents.json diff --git a/DateAid/Supporting Files/Images.xcassets/TypeEvent/birthday.imageset/birthday.pdf b/DateDots/Supporting Files/Images.xcassets/TypeEvent/birthday.imageset/birthday.pdf similarity index 100% rename from DateAid/Supporting Files/Images.xcassets/TypeEvent/birthday.imageset/birthday.pdf rename to DateDots/Supporting Files/Images.xcassets/TypeEvent/birthday.imageset/birthday.pdf diff --git a/DateAid/Supporting Files/Images.xcassets/TypeEvent/custom.imageset/Contents.json b/DateDots/Supporting Files/Images.xcassets/TypeEvent/custom.imageset/Contents.json similarity index 100% rename from DateAid/Supporting Files/Images.xcassets/TypeEvent/custom.imageset/Contents.json rename to DateDots/Supporting Files/Images.xcassets/TypeEvent/custom.imageset/Contents.json diff --git a/DateAid/Supporting Files/Images.xcassets/TypeEvent/custom.imageset/custom.pdf b/DateDots/Supporting Files/Images.xcassets/TypeEvent/custom.imageset/custom.pdf similarity index 100% rename from DateAid/Supporting Files/Images.xcassets/TypeEvent/custom.imageset/custom.pdf rename to DateDots/Supporting Files/Images.xcassets/TypeEvent/custom.imageset/custom.pdf diff --git a/DateAid/Supporting Files/Images.xcassets/TypeInfo/Contents.json b/DateDots/Supporting Files/Images.xcassets/TypeInfo/Contents.json similarity index 100% rename from DateAid/Supporting Files/Images.xcassets/TypeInfo/Contents.json rename to DateDots/Supporting Files/Images.xcassets/TypeInfo/Contents.json diff --git a/DateAid/Supporting Files/Images.xcassets/TypeInfo/address.imageset/Contents.json b/DateDots/Supporting Files/Images.xcassets/TypeInfo/address.imageset/Contents.json similarity index 100% rename from DateAid/Supporting Files/Images.xcassets/TypeInfo/address.imageset/Contents.json rename to DateDots/Supporting Files/Images.xcassets/TypeInfo/address.imageset/Contents.json diff --git a/DateAid/Supporting Files/Images.xcassets/TypeInfo/address.imageset/address.pdf b/DateDots/Supporting Files/Images.xcassets/TypeInfo/address.imageset/address.pdf similarity index 100% rename from DateAid/Supporting Files/Images.xcassets/TypeInfo/address.imageset/address.pdf rename to DateDots/Supporting Files/Images.xcassets/TypeInfo/address.imageset/address.pdf diff --git a/DateAid/Supporting Files/Images.xcassets/TypeInfo/reminder.imageset/Contents.json b/DateDots/Supporting Files/Images.xcassets/TypeInfo/reminder.imageset/Contents.json similarity index 100% rename from DateAid/Supporting Files/Images.xcassets/TypeInfo/reminder.imageset/Contents.json rename to DateDots/Supporting Files/Images.xcassets/TypeInfo/reminder.imageset/Contents.json diff --git a/DateAid/Supporting Files/Images.xcassets/TypeInfo/reminder.imageset/reminder.pdf b/DateDots/Supporting Files/Images.xcassets/TypeInfo/reminder.imageset/reminder.pdf similarity index 100% rename from DateAid/Supporting Files/Images.xcassets/TypeInfo/reminder.imageset/reminder.pdf rename to DateDots/Supporting Files/Images.xcassets/TypeInfo/reminder.imageset/reminder.pdf diff --git a/DateAid/Supporting Files/Images.xcassets/TypeNote/Contents.json b/DateDots/Supporting Files/Images.xcassets/TypeNote/Contents.json similarity index 100% rename from DateAid/Supporting Files/Images.xcassets/TypeNote/Contents.json rename to DateDots/Supporting Files/Images.xcassets/TypeNote/Contents.json diff --git a/DateAid/Supporting Files/Images.xcassets/TypeNote/gifts.imageset/Contents.json b/DateDots/Supporting Files/Images.xcassets/TypeNote/gifts.imageset/Contents.json similarity index 100% rename from DateAid/Supporting Files/Images.xcassets/TypeNote/gifts.imageset/Contents.json rename to DateDots/Supporting Files/Images.xcassets/TypeNote/gifts.imageset/Contents.json diff --git a/DateAid/Supporting Files/Images.xcassets/TypeNote/gifts.imageset/gift.pdf b/DateDots/Supporting Files/Images.xcassets/TypeNote/gifts.imageset/gift.pdf similarity index 100% rename from DateAid/Supporting Files/Images.xcassets/TypeNote/gifts.imageset/gift.pdf rename to DateDots/Supporting Files/Images.xcassets/TypeNote/gifts.imageset/gift.pdf diff --git a/DateAid/Supporting Files/Images.xcassets/TypeNote/misc.imageset/Contents.json b/DateDots/Supporting Files/Images.xcassets/TypeNote/misc.imageset/Contents.json similarity index 100% rename from DateAid/Supporting Files/Images.xcassets/TypeNote/misc.imageset/Contents.json rename to DateDots/Supporting Files/Images.xcassets/TypeNote/misc.imageset/Contents.json diff --git a/DateAid/Supporting Files/Images.xcassets/TypeNote/misc.imageset/other.pdf b/DateDots/Supporting Files/Images.xcassets/TypeNote/misc.imageset/other.pdf similarity index 100% rename from DateAid/Supporting Files/Images.xcassets/TypeNote/misc.imageset/other.pdf rename to DateDots/Supporting Files/Images.xcassets/TypeNote/misc.imageset/other.pdf diff --git a/DateAid/Supporting Files/Images.xcassets/TypeNote/plans.imageset/Contents.json b/DateDots/Supporting Files/Images.xcassets/TypeNote/plans.imageset/Contents.json similarity index 100% rename from DateAid/Supporting Files/Images.xcassets/TypeNote/plans.imageset/Contents.json rename to DateDots/Supporting Files/Images.xcassets/TypeNote/plans.imageset/Contents.json diff --git a/DateAid/Supporting Files/Images.xcassets/TypeNote/plans.imageset/event.pdf b/DateDots/Supporting Files/Images.xcassets/TypeNote/plans.imageset/event.pdf similarity index 100% rename from DateAid/Supporting Files/Images.xcassets/TypeNote/plans.imageset/event.pdf rename to DateDots/Supporting Files/Images.xcassets/TypeNote/plans.imageset/event.pdf diff --git a/DateAid/Supporting Files/Images.xcassets/calendar.imageset/Contents.json b/DateDots/Supporting Files/Images.xcassets/calendar.imageset/Contents.json similarity index 100% rename from DateAid/Supporting Files/Images.xcassets/calendar.imageset/Contents.json rename to DateDots/Supporting Files/Images.xcassets/calendar.imageset/Contents.json diff --git a/DateAid/Supporting Files/Images.xcassets/calendar.imageset/calendar.pdf b/DateDots/Supporting Files/Images.xcassets/calendar.imageset/calendar.pdf similarity index 100% rename from DateAid/Supporting Files/Images.xcassets/calendar.imageset/calendar.pdf rename to DateDots/Supporting Files/Images.xcassets/calendar.imageset/calendar.pdf diff --git a/DateAid/Supporting Files/Images.xcassets/celebrate.imageset/Contents.json b/DateDots/Supporting Files/Images.xcassets/celebrate.imageset/Contents.json similarity index 100% rename from DateAid/Supporting Files/Images.xcassets/celebrate.imageset/Contents.json rename to DateDots/Supporting Files/Images.xcassets/celebrate.imageset/Contents.json diff --git a/DateAid/Supporting Files/Images.xcassets/celebrate.imageset/celebrate.pdf b/DateDots/Supporting Files/Images.xcassets/celebrate.imageset/celebrate.pdf similarity index 100% rename from DateAid/Supporting Files/Images.xcassets/celebrate.imageset/celebrate.pdf rename to DateDots/Supporting Files/Images.xcassets/celebrate.imageset/celebrate.pdf diff --git a/DateAid/Supporting Files/Images.xcassets/edit.imageset/Contents.json b/DateDots/Supporting Files/Images.xcassets/edit.imageset/Contents.json similarity index 100% rename from DateAid/Supporting Files/Images.xcassets/edit.imageset/Contents.json rename to DateDots/Supporting Files/Images.xcassets/edit.imageset/Contents.json diff --git a/DateAid/Supporting Files/Images.xcassets/edit.imageset/edit.png b/DateDots/Supporting Files/Images.xcassets/edit.imageset/edit.png similarity index 100% rename from DateAid/Supporting Files/Images.xcassets/edit.imageset/edit.png rename to DateDots/Supporting Files/Images.xcassets/edit.imageset/edit.png diff --git a/DateAid/Supporting Files/Images.xcassets/edit.imageset/edit@2x.png b/DateDots/Supporting Files/Images.xcassets/edit.imageset/edit@2x.png similarity index 100% rename from DateAid/Supporting Files/Images.xcassets/edit.imageset/edit@2x.png rename to DateDots/Supporting Files/Images.xcassets/edit.imageset/edit@2x.png diff --git a/DateAid/Supporting Files/Images.xcassets/edit.imageset/edit@3x.png b/DateDots/Supporting Files/Images.xcassets/edit.imageset/edit@3x.png similarity index 100% rename from DateAid/Supporting Files/Images.xcassets/edit.imageset/edit@3x.png rename to DateDots/Supporting Files/Images.xcassets/edit.imageset/edit@3x.png diff --git a/DateAid/Supporting Files/Images.xcassets/envelope.imageset/Contents.json b/DateDots/Supporting Files/Images.xcassets/envelope.imageset/Contents.json similarity index 100% rename from DateAid/Supporting Files/Images.xcassets/envelope.imageset/Contents.json rename to DateDots/Supporting Files/Images.xcassets/envelope.imageset/Contents.json diff --git a/DateAid/Supporting Files/Images.xcassets/envelope.imageset/envelope.pdf b/DateDots/Supporting Files/Images.xcassets/envelope.imageset/envelope.pdf similarity index 100% rename from DateAid/Supporting Files/Images.xcassets/envelope.imageset/envelope.pdf rename to DateDots/Supporting Files/Images.xcassets/envelope.imageset/envelope.pdf diff --git a/DateAid/Supporting Files/Images.xcassets/reminder-add.imageset/Contents.json b/DateDots/Supporting Files/Images.xcassets/reminder-add.imageset/Contents.json similarity index 100% rename from DateAid/Supporting Files/Images.xcassets/reminder-add.imageset/Contents.json rename to DateDots/Supporting Files/Images.xcassets/reminder-add.imageset/Contents.json diff --git a/DateAid/Supporting Files/Images.xcassets/reminder-add.imageset/reminder-add.pdf b/DateDots/Supporting Files/Images.xcassets/reminder-add.imageset/reminder-add.pdf similarity index 100% rename from DateAid/Supporting Files/Images.xcassets/reminder-add.imageset/reminder-add.pdf rename to DateDots/Supporting Files/Images.xcassets/reminder-add.imageset/reminder-add.pdf diff --git a/DateAid/Supporting Files/Images.xcassets/reminder-set.imageset/Contents.json b/DateDots/Supporting Files/Images.xcassets/reminder-set.imageset/Contents.json similarity index 100% rename from DateAid/Supporting Files/Images.xcassets/reminder-set.imageset/Contents.json rename to DateDots/Supporting Files/Images.xcassets/reminder-set.imageset/Contents.json diff --git a/DateAid/Supporting Files/Images.xcassets/reminder-set.imageset/reminder-set.pdf b/DateDots/Supporting Files/Images.xcassets/reminder-set.imageset/reminder-set.pdf similarity index 100% rename from DateAid/Supporting Files/Images.xcassets/reminder-set.imageset/reminder-set.pdf rename to DateDots/Supporting Files/Images.xcassets/reminder-set.imageset/reminder-set.pdf diff --git a/DateAid/UIColor+Colors.swift b/DateDots/UIColor+Colors.swift similarity index 100% rename from DateAid/UIColor+Colors.swift rename to DateDots/UIColor+Colors.swift diff --git a/DateAid/UIView+Spring.swift b/DateDots/UIView+Spring.swift similarity index 100% rename from DateAid/UIView+Spring.swift rename to DateDots/UIView+Spring.swift diff --git a/DateAidTests/DateAidTests.swift b/DateDotsTests/DateAidTests.swift similarity index 100% rename from DateAidTests/DateAidTests.swift rename to DateDotsTests/DateAidTests.swift diff --git a/DateAidTests/Info.plist b/DateDotsTests/Info.plist similarity index 100% rename from DateAidTests/Info.plist rename to DateDotsTests/Info.plist diff --git a/Podfile b/Podfile new file mode 100644 index 0000000..528b30b --- /dev/null +++ b/Podfile @@ -0,0 +1,16 @@ +# Uncomment the next line to define a global platform for your project +# platform :ios, '9.0' + +target 'DateDots' do + # Comment the next line if you don't want to use dynamic frameworks + use_frameworks! + + # Pods for DateDots + pod 'Flurry-iOS-SDK/FlurrySDK' #Analytics Pod + + target 'DateDotsTests' do + inherit! :search_paths + # Pods for testing + end + +end diff --git a/Podfile.lock b/Podfile.lock new file mode 100644 index 0000000..09bcb58 --- /dev/null +++ b/Podfile.lock @@ -0,0 +1,16 @@ +PODS: + - Flurry-iOS-SDK/FlurrySDK (11.3.0) + +DEPENDENCIES: + - Flurry-iOS-SDK/FlurrySDK + +SPEC REPOS: + trunk: + - Flurry-iOS-SDK + +SPEC CHECKSUMS: + Flurry-iOS-SDK: 494e340b623f1413711603dc0184f1fd4183e0d3 + +PODFILE CHECKSUM: 7c460dae566a634109421748e50fc6739b373d70 + +COCOAPODS: 1.9.1 diff --git a/Pods/Flurry-iOS-SDK/Flurry/Flurry+Event.h b/Pods/Flurry-iOS-SDK/Flurry/Flurry+Event.h new file mode 100644 index 0000000..76ab0e6 --- /dev/null +++ b/Pods/Flurry-iOS-SDK/Flurry/Flurry+Event.h @@ -0,0 +1,819 @@ +// +// Flurry+Event.h +// Flurry iOS Analytics Agent +// +// Copyright 2021 Flurry, Inc. All rights reserved. +// +// Methods in this header file are for use with Flurry Analytics + +#import +#import "Flurry.h" + +typedef NS_ENUM (NSUInteger, FlurryStandardEventNameType) { + FlurryStringParamType = 0, + FlurryIntegerParamType, + FlurryDoubleParamType, + FlurryBooleanParamType, + FlurryLongParamType +}; + +typedef NS_ENUM (NSUInteger, FlurryEvent) { + /*! + * @brief Log this event when a user clicks on an Ad. + * suggested event params: adType + * mandatory event params : none + */ + FLURRY_EVENT_AD_CLICK = 0, + /*! + * @brief Log this event when a user views an Ad impression. + * suggested event params : adType + * mandatory event params : none + */ + FLURRY_EVENT_AD_IMPRESSION, + /*! + * @brief Log this event when a user is granted a reward for viewing a rewarded Ad. + * suggested event params : adType + * mandatory event params : none + */ + FLURRY_EVENT_AD_REWARDED, + /*! + * @brief Log this event when a user skips an Ad + * suggested event params : adType + * mandatory event params : none + */ + FLURRY_EVENT_AD_SKIPPED, + /*! + * @brief Log this event when a user spends credit in the app + * suggested event params : levelNumber, totalAmount, isCurrencySoft, creditType, creditId, creditName, currencyType + * mandatory event params : totalAmount + */ + FLURRY_EVENT_CREDITS_SPENT, + /*! + * @brief Log this event when a user purchases credit in the app + * suggested event params : levelNumber, totalAmount, isCurrencySoft, creditType, creditId, creditName, currencyType + * mandatory event params : totalAmount + */ + FLURRY_EVENT_CREDITS_PURCHASED, + /*! + * @brief Log this event when a user earns credit in the app + * suggested event params : levelNumber, totalAmount, isCurrencySoft, creditType, creditId, creditName, currencyType + * mandatory event params : totalAmount + */ + FLURRY_EVENT_CREDITS_EARNED, + /*! + * @brief Log this event when a user unlocks an achievement in the app + * suggested event params : achievementId + * mandatory event params : none + */ + FLURRY_EVENT_ACHIEVEMENT_UNLOCKED, + /*! + * @brief Log this event when an App user completes a level + * suggested event params : levelNumber, levelName + * mandatory event params : levelNumber + */ + FLURRY_EVENT_LEVEL_COMPLETED, + /*! + * @brief Log this event when an App user fails a level + * suggested event params : levelNumber, levelName + * mandatory event params : levelNumber + */ + FLURRY_EVENT_LEVEL_FAILED, + /*! + * @brief Log this event when an App user levels up + * suggested event params : levelNumber, levelName + * mandatory event params : levelNumber + */ + FLURRY_EVENT_LEVEL_UP, + /*! + * @brief Log this event when an App user starts a level + * suggested event params : levelNumber, levelName + * mandatory event params : levelNumber + */ + FLURRY_EVENT_LEVEL_STARTED, + /*! + * @brief Log this event when an App user skips a level + * suggested event params : levelNumber, levelName + * mandatory event params : levelNumber + */ + FLURRY_EVENT_LEVEL_SKIP, + /*! + * @brief Log this event when an App user posts his score + * suggested event params : score, levelNumber + * mandatory event params : score + */ + FLURRY_EVENT_SCORE_POSTED, + /*! + * @brief Log this event when a user rates a content in the App + * suggested event params : contentId, contentType, contentName, rating + * mandatory event params : contentId, rating + */ + FLURRY_EVENT_CONTENT_RATED, + /*! + * @brief Log this event when a specific content is viewed by a user + * suggested event params : contentId, contentType, contentName + * mandatory event params : contentId + */ + FLURRY_EVENT_CONTENT_VIEWED, + /*! + * @brief Log this event when a user saves the content in the App + * suggested event params : contentId, contentType, contentName + * mandatory event params : contentId + */ + FLURRY_EVENT_CONTENT_SAVED, + /*! + * @brief Log this event when a user customizes the App/product + * suggested event params : none + * mandatory event params : none + */ + FLURRY_EVENT_PRODUCT_CUSTOMIZED, + /*! + * @brief Log this event when the App is activated + * suggested event params : none + * mandatory event params : none + */ + FLURRY_EVENT_APP_ACTIVATED, + /*! + * @brief Log this event when a user submits an application through the App + * suggested event params : none + * mandatory event params : none + */ + FLURRY_EVENT_APPLICATION_SUBMITTED, + /*! + * @brief Log this event when an item is added to the cart + * suggested event params : itemCount, price, itemId, itemName, itemType + * mandatory event params : itemCount, price + */ + FLURRY_EVENT_ADD_ITEM_TO_CART, + /*! + * @brief Log this event when an item is added to the wish list + * suggested event params : itemCount, price, itemId, itemName, itemType + * mandatory event params : itemCount, price + */ + FLURRY_EVENT_ADD_ITEM_TO_WISH_LIST, + /*! + * @brief Log this event when checkout is completed or transaction is successfully completed + * suggested event params : itemCount, totalAmount, currencyType, transactionId + * mandatory event params : itemCount, totalAmount + */ + FLURRY_EVENT_COMPLETED_CHECKOUT, + /*! + * @brief Log this event when payment information is added during a checkout process + * suggested event params : success, paymentType + * mandatory event params : none + */ + FLURRY_EVENT_PAYMENT_INFO_ADDED, + /*! + * @brief Log this event when an item is viewed + * suggested event params : itemId, itemName, itemType, price + * mandatory event params : itemId + */ + FLURRY_EVENT_ITEM_VIEWED, + /*! + * @brief Log this event when a list of items is viewed + * suggested event params : itemListType + * mandatory event params : none + */ + FLURRY_EVENT_ITEM_LIST_VIEWED, + /*! + * @brief Log this event when a user does a purchase in the App + * suggested event params : itemCount, totalAmount, itemId, success, itemName, itemType, currencyType, transactionId + * mandatory event params : totalAmount + */ + FLURRY_EVENT_PURCHASED, + /*! + * @brief Log this event when a purchase is refunded + * suggested event params : price, currencyType + * mandatory event params : price + */ + FLURRY_EVENT_PURCHASE_REFUNDED, + /*! + * @brief Log this event when a user removes an item from the cart + * suggested event params : itemId, price, itemName, itemType + * mandatory event params : itemId + */ + FLURRY_EVENT_REMOVE_ITEM_FROM_CART, + /*! + * @brief Log this event when a user starts checkout + * suggested event params : itemCount, totalAmount + * mandatory event params : itemCount, totalAmount + */ + FLURRY_EVENT_CHECKOUT_INITIATED, + /*! + * @brief Log this event when a user donates fund to your App or through the App + * suggested event params : price, currencyType + * mandatory event params : price + */ + FLURRY_EVENT_FUNDS_DONATED, + /*! + * @brief Log this event when user schedules an appointment using the App + * suggested event params : none + * mandatory event params : none + */ + FLURRY_EVENT_USER_SCHEDULED, + /*! + * @brief Log this event when an offer is presented to the user + * suggested event params : itemId, itemName, itemCategory, price + * mandatory event params : itemId, price + */ + FLURRY_EVENT_OFFER_PRESENTED, + /*! + * @brief Log this event at the start of a paid subscription for a service or product + * suggested event params : price, isAnnualSubscription, trialDays, predictedLTV, currencyType, subscriptionCountry + * mandatory event params : price, isAnnualSubscription + */ + FLURRY_EVENT_SUBSCRIPTION_STARTED, + /*! + * @brief Log this event when a user unsubscribes from a paid subscription + * for a service or product + * suggested event params : isAnnualSubscription, currencyType, subscriptionCountry + * mandatory event params : isAnnualSubscription + */ + FLURRY_EVENT_SUBSCRIPTION_ENDED, + /*! + * @brief Log this event when user joins a group. + * suggested event params : groupName + * mandatory event params : none + */ + FLURRY_EVENT_GROUP_JOINED, + /*! + * @brief Log this event when user leaves a group + * suggested event params : groupName + * mandatory event params : none + */ + FLURRY_EVENT_GROUP_LEFT, + /*! + * @brief Log this event when a user starts a tutorial + * suggested event params : tutorialName + * mandatory event params : none + */ + FLURRY_EVENT_TUTORIAL_STARTED, + /*! + * @brief Log this event when a user completes a tutorial + * suggested event params : tutorialName + * mandatory event params : none + */ + FLURRY_EVENT_TUTORIAL_COMPLETED, + /*! + * @brief Log this event when a specific tutorial step is completed + * suggested event params : stepNumber, tutorialName + * mandatory event params : stepNumber + */ + FLURRY_EVENT_TUTORIAL_STEP_COMPLETED, + /*! + * @brief Log this event when user skips the tutorial + * suggested event params : stepNumber, tutorialName + * mandatory event params : stepNumber + */ + FLURRY_EVENT_TUTORIAL_SKIPPED, + /*! + * @brief Log this event when a user login on the App + * suggested event params : userId, method + * mandatory event params : none + */ + FLURRY_EVENT_LOGIN, + /*! + * @brief Log this event when a user logout of the App + * suggested event params : userId, method + * mandatory event params : none + */ + FLURRY_EVENT_LOGOUT, + /*! + * @brief Log the event when a user registers (signup). Helps capture the method + * used to sign-up (sign up with google / apple or email address) + * suggested event params : userId, method + * mandatory event params : none + */ + FLURRY_EVENT_USER_REGISTERED, + /*! + * @brief Log this event when user views search results + * suggested event params : query, searchType (e.g. voice, text) + * mandatory event params : none + */ + FLURRY_EVENT_SEARCH_RESULT_VIEWED, + /*! + * @brief Log this event when a user searches for a keyword using Search + * suggested event params : query, searchType (e.g. voice, text) + * mandatory event params : none + */ + FLURRY_EVENT_KEYWORD_SEARCHED, + /*! + * @brief Log this event when a user searches for a location using Search + * suggested event params : query + * mandatory event params : none + */ + FLURRY_EVENT_LOCATION_SEARCHED, + /*! + * @brief Log this event when a user invites another user + * suggested event params : userId, method + * mandatory event params : none + */ + FLURRY_EVENT_INVITE, + /*! + * @brief Log this event when a user shares content with another user in the App + * suggested event params : socialContentId, socialContentName, method + * mandatory event params : socialContentId + */ + FLURRY_EVENT_SHARE, + /*! + * @brief Log this event when a user likes a social content. e.g. likeType captures what kind of like is logged ("celebrate", "insightful", etc) + * suggested event params : socialContentId, socialContentName, likeType + * mandatory event params : socialContentId + */ + FLURRY_EVENT_LIKE, + /*! + * @brief Log this event when a user comments or replies on a social post + * suggested event params : socialContentId, socialContentName + * mandatory event params : socialContentId + */ + FLURRY_EVENT_COMMENT, + /*! + * @brief Log this event when an image, audio or a video is captured + * suggested event params : mediaId, mediaName, mediaType + * mandatory event params : none + */ + FLURRY_EVENT_MEDIA_CAPTURED, + /*! + * @brief Log this event when an audio or video starts + * suggested event params : mediaId, mediaName, mediaType + * mandatory event params : none + */ + FLURRY_EVENT_MEDIA_STARTED, + /*! + * @brief Log this event when an audio or video is stopped + * suggested event params : mediaId, duration (in seconds), mediaName, mediaType + * mandatory event params : duration (in seconds) + */ + FLURRY_EVENT_MEDIA_STOPPED, + /*! + * @brief Log this event when an audio or video is paused + * suggested event params : mediaId, duration (in seconds), mediaName, mediaType + * mandatory event params : duration (in seconds) + */ + FLURRY_EVENT_MEDIA_PAUSED, + /*! + * @brief Log this event when a privacy prompt is displayed + * suggested event params : none + * mandatory event params : none + */ + FLURRY_EVENT_PRIVACY_PROMPT_DISPLAYED, + /*! + * @brief Log this event when a user opts in (on the privacy prompt) + * suggested event params : none + * mandatory event params : none + */ + FLURRY_EVENT_PRIVACY_OPT_IN, + /*! + * @brief Log this event when a user opts out (on the privacy prompt) + * suggested event params : none + * mandatory event params : none + */ + FLURRY_EVENT_PRIVACY_OPT_OUT, + +}; + +/*! + * @brief FlurryParam serves as a generic class for five types of Flurry param keys. + * + * Each Flurry-defined param key is allowed to map to the value within five data types: string, int, + * double, boolean, long. Flurry also defines the interface for each type of the key. + * + * @since 11.3.0 + */ +@interface FlurryParam : NSObject + +@end +/*! + * @brief FlurryStringParam is the interface of Flurry-defined param keys which can be only + * mapped with string value. It is a subclass of FlurryParam interface. + * + * @since 11.3.0 + */ +@interface FlurryStringParam : FlurryParam + +@end +/*! + * @brief FlurryIntegerParam is the interface of Flurry-defined param keys which can be only + * mapped with integer value. It is a subclass of FlurryParam interface. + * + * @since 11.3.0 + */ +@interface FlurryIntegerParam : FlurryParam + +@end +/*! + * @brief FlurryDoubleParam is the interface of Flurry-defined param keys which can be only + * mapped with double value. It is a subclass of FlurryParam interface. + * + * @since 11.3.0 + */ +@interface FlurryDoubleParam : FlurryParam + +@end +/*! + * @brief FlurryLongParam is the interface of Flurry-defined param keys which can be only + * mapped with long value. It is a subclass of FlurryParam interface. + * + * @since 11.3.0 + */ +@interface FlurryLongParam : FlurryParam + +@end +/*! + * @brief FlurryBooleanParam is the interface of Flurry-defined param keys which can be only + * mapped with boolean value. It is a subclass of FlurryParam interface. + * + * @since 11.3.0 + */ +@interface FlurryBooleanParam : FlurryParam + +@end + +/*! + * @brief FlurryParamBuilder is the interface to use to assemble your parameters for standard event. + * @since 11.3.0 + * + * In order for Flurry to log a standard event, you might want to put the standardized parameters as well as + * your own defined parameters together. There will be recommended standardized parameter keys and + * mandatory standardized parameter keys defined for each standard event name. For instance, to log + * FLURRY_EVENT_PURCHASED event, SDK suggests to include itemCount, totalAmount, itemId, + * success, itemName, itemType, currencyType and transactionId parameters, in which totalAmount is also + * a mandatory parameter that is indicated by the SDK. Since each type of standardized param key can + * only be mapped to its corresponding data value - string, integer, double, boolean, long, when you assemble + * your FlurryParamBuilder object with the standardized parameters, you will need to use the public APIs + * specified in FlurryParamBuilder interface to map them correctly. + */ +@interface FlurryParamBuilder : NSObject +/*! + * @brief return the flurry-defined key for param - adType + * @since 11.3.0 + */ ++ (FlurryStringParam * _Nonnull) adType; +/*! + * @brief return the flurry-defined key for param - levelName + * @since 11.3.0 + */ ++ (FlurryStringParam * _Nonnull) levelName; +/*! + * @brief return the flurry-defined key for param - levelNumber + * @since 11.3.0 + */ ++ (FlurryIntegerParam * _Nonnull) levelNumber; +/*! + * @brief return the flurry-defined key for param - contentName + * @since 11.3.0 + */ ++ (FlurryStringParam * _Nonnull) contentName; +/*! + * @brief return the flurry-defined key for param - contentType + * @since 11.3.0 + */ ++ (FlurryStringParam * _Nonnull) contentType; +/*! + * @brief return the flurry-defined key for param - contentId + * @since 11.3.0 + */ ++ (FlurryStringParam * _Nonnull) contentId; +/*! + * @brief return the flurry-defined key for param - creditName + * @since 11.3.0 + */ ++ (FlurryStringParam * _Nonnull) creditName; +/*! + * @brief return the flurry-defined key for param - creditType + * @since 11.3.0 + */ ++ (FlurryStringParam * _Nonnull) creditType; +/*! + * @brief return the flurry-defined key for param - creditId + * @since 11.3.0 + */ ++ (FlurryStringParam * _Nonnull) creditId; +/*! + * @brief return the flurry-defined key for param - currencyType (ISO code) + * @since 11.3.0 + */ ++ (FlurryStringParam * _Nonnull) currencyType; +/*! + * @brief return the flurry-defined key for param - isCurrencySoft + * @since 11.3.0 + */ ++ (FlurryBooleanParam * _Nonnull) isCurrencySoft; +/*! + * @brief return the flurry-defined key for param - itemName + * @since 11.3.0 + */ ++ (FlurryStringParam * _Nonnull) itemName; +/*! + * @brief return the flurry-defined key for param - itemType + * @since 11.3.0 + */ ++ (FlurryStringParam * _Nonnull) itemType; +/*! + * @brief return the flurry-defined key for param - itemId + * @since 11.3.0 + */ ++ (FlurryStringParam * _Nonnull) itemId; +/*! + * @brief return the flurry-defined key for param - itemCount + * @since 11.3.0 + */ ++ (FlurryIntegerParam * _Nonnull) itemCount; +/*! + * @brief return the flurry-defined key for param - itemCategory + * @since 11.3.0 + */ ++ (FlurryStringParam * _Nonnull) itemCategory; +/*! + * @brief return the flurry-defined key for param - itemListType + * @since 11.3.0 + */ ++ (FlurryStringParam * _Nonnull) itemListType; +/*! + * @brief return the flurry-defined key for param - price + * @since 11.3.0 + */ ++ (FlurryDoubleParam * _Nonnull) price; +/*! + * @brief return the flurry-defined key for param - totalAmount + * @since 11.3.0 + */ ++ (FlurryDoubleParam * _Nonnull) totalAmount; +/*! + * @brief return the flurry-defined key for param - achievementId + * @since 11.3.0 + */ ++ (FlurryStringParam * _Nonnull) achievementId; +/*! + * @brief return the flurry-defined key for param - score + * @since 11.3.0 + */ ++ (FlurryIntegerParam * _Nonnull) score; +/*! + * @brief return the flurry-defined key for param - rating + * @since 11.3.0 + */ ++ (FlurryStringParam * _Nonnull) rating; +/*! + * @brief return the flurry-defined key for param - transactionId + * @since 11.3.0 + */ ++ (FlurryStringParam * _Nonnull) transactionId; +/*! + * @brief return the flurry-defined key for param - success + * @since 11.3.0 + */ ++ (FlurryBooleanParam * _Nonnull) success; +/*! + * @brief return the flurry-defined key for param - paymentType + * @since 11.3.0 + */ ++ (FlurryStringParam * _Nonnull) paymentType; +/*! + * @brief return the flurry-defined key for param - isAnnualSubscription + * @since 11.3.0 + */ ++ (FlurryBooleanParam * _Nonnull) isAnnualSubscription; +/*! + * @brief return the flurry-defined key for param - subscriptionCountry + * @since 11.3.0 + */ ++ (FlurryStringParam * _Nonnull) subscriptionCountry; +/*! + * @brief return the flurry-defined key for param - trialDays + * @since 11.3.0 + */ ++ (FlurryIntegerParam * _Nonnull) trialDays; +/*! + * @brief return the flurry-defined key for param - predictedLTV + * @since 11.3.0 + */ ++ (FlurryStringParam * _Nonnull) predictedLTV; +/*! + * @brief return the flurry-defined key for param - groupName + * @since 11.3.0 + */ ++ (FlurryStringParam * _Nonnull) groupName; +/*! + * @brief return the flurry-defined key for param - stepNumber + * @since 11.3.0 + */ ++ (FlurryIntegerParam * _Nonnull) stepNumber; +/*! + * @brief return the flurry-defined key for param - tutorialName + * @since 11.3.0 + */ ++ (FlurryStringParam * _Nonnull) tutorialName; +/*! + * @brief return the flurry-defined key for param - userId + * @since 11.3.0 + */ ++ (FlurryStringParam * _Nonnull) userId; +/*! + * @brief return the flurry-defined key for param - method + * @since 11.3.0 + */ ++ (FlurryStringParam * _Nonnull) method; +/*! + * @brief return the flurry-defined key for param - query + * @since 11.3.0 + */ ++ (FlurryStringParam * _Nonnull) query; +/*! + * @brief return the flurry-defined key for param - searchType + * @since 11.3.0 + */ ++ (FlurryStringParam * _Nonnull) searchType; +/*! + * @brief return the flurry-defined key for param - socialContentName + * @since 11.3.0 + */ ++ (FlurryStringParam * _Nonnull) socialContentName; +/*! + * @brief return the flurry-defined key for param - socialContentId + * @since 11.3.0 + */ ++ (FlurryStringParam * _Nonnull) socialContentId; +/*! + * @brief return the flurry-defined key for param - likeType + * @since 11.3.0 + */ ++ (FlurryStringParam * _Nonnull) likeType; +/*! + * @brief return the flurry-defined key for param - mediaName + * @since 11.3.0 + */ ++ (FlurryStringParam * _Nonnull) mediaName; +/*! + * @brief return the flurry-defined key for param - mediaType + * @since 11.3.0 + */ ++ (FlurryStringParam * _Nonnull) mediaType; +/*! + * @brief return the flurry-defined key for param - mediaId + * @since 11.3.0 + */ ++ (FlurryStringParam * _Nonnull) mediaId; +/*! + * @brief return the flurry-defined key for param - duration + * @since 11.3.0 + */ ++ (FlurryIntegerParam * _Nonnull) duration; + +/*! + * @brief Get the parameters map object for logging the standard events + * @since 11.3.0 + * + * @return an NSDictionary object contains all set key-value pairs + */ +- (nonnull NSDictionary *)parameters; +/*! + * @brief set a string value for a user defined key + * @since 11.3.0 + * + * @return FlurryParamBuilder object after setting the string value + */ +- (nonnull FlurryParamBuilder *)setString:(nonnull NSString *)val + forKey:(nonnull NSString *)key; +/*! + * @brief set a string value for a flurry param key + * @since 11.3.0 + * + * @return FlurryParamBuilder object after setting the string value + */ +- (nonnull FlurryParamBuilder *)setString:(nonnull NSString *)val + forParam:(nonnull FlurryStringParam *)key; +/*! + * @brief set an int value for a used defined key + * @since 11.3.0 + * + * @return FlurryParamBuilder object after setting the int value + */ +- (nonnull FlurryParamBuilder *)setInteger:(int)val + forKey:(nonnull NSString *)key; +/*! + * @brief set an int value for a flurry param key + * @since 11.3.0 + * + * @return FlurryParamBuilder object after setting the int value + */ +- (nonnull FlurryParamBuilder *)setInteger:(int)val + forParam:(nonnull FlurryIntegerParam *)key; +/*! + * @brief set a long value for a user defined key + * @since 11.3.0 + * + * @return FlurryParamBuilder object after setting the long value + */ +- (nonnull FlurryParamBuilder *)setLong:(long)val + forKey:(nonnull NSString *)key; +/*! + * @brief set a long value for a flurry param key + * @since 11.3.0 + * + * @return FlurryParamBuilder object after setting the long value + */ +- (nonnull FlurryParamBuilder *)setLong:(long)val + forParam:(nonnull FlurryLongParam *)key; +/*! + * @brief set a boolean value for a user defined key + * @since 11.3.0 + * + * @return FlurryParamBuilder object after setting the boolean value + */ +- (nonnull FlurryParamBuilder *)setBoolean:(BOOL)val + forKey:(nonnull NSString *)key; +/*! + * @brief set a boolean value for a flurry param key + * @since 11.3.0 + * + * @return FlurryParamBuilder object after setting the boolean value + */ +- (nonnull FlurryParamBuilder *)setBoolean:(BOOL)val + forParam:(nonnull FlurryBooleanParam *)key; +/*! + * @brief set a double value for a user defined key + * @since 11.3.0 + * + * @return FlurryParamBuilder object after setting the double value + */ +- (nonnull FlurryParamBuilder *)setDouble:(double)val + forKey:(nonnull NSString *)key; +/*! + * @brief set a double value for a flurry param key + * @since 11.3.0 + * + * @return FlurryParamBuilder object after setting the double value + */ +- (nonnull FlurryParamBuilder *)setDouble:(double)val + forParam:(nonnull FlurryDoubleParam *)key; +/*! + * @brief remove the value for a specified key (user-defined key or flurry param key) + * @since 11.3.0 + * @code + * - (void)someEvent{ + + FlurryParamBuilder *param = [[[[[[FlurryParamBuilder alloc] init] + setString:@"Game pro" + * forParam:[FlurryParamBuilder levelName]] + setInteger:2 forKey:@"level"] + removeObjectForKey:[FlurryParamBuilder levelName]] + removeObjectForKey:@"level"]; + } + * @endcode + * + * @return FlurryParamBuilder object after removing the value + */ +- (nonnull FlurryParamBuilder *)removeObjectForKey:(nonnull id)key; +/*! + * @brief set a standard event parameter by parsing a FlurryParamBuilder object + * @since 11.3.0 + * + * @return FlurryParamBuilder object after setting all key-value pairs + */ +- (nonnull FlurryParamBuilder *)setAll:(nonnull FlurryParamBuilder *)param; + +@end + +@interface Flurry (Event) + +/*! + * @brief Records a standard parameterized event specified by @c eventType with @c parameters. + * @since 11.3.0 + * + * This method allows you to log standard events associated with parameters. Parameters + * are extremely valuable as they allow you to store characteristics of an action. For example, + * if a user purchased an item (log an purchase event), it may be helpful to know item info (itemName, itemType, + * itemId, itemCount), and transaction info (price, totalAmount, currency, transactionId) of such events. + * + * @note You should not pass private or confidential information about your users in a + * standard event. + * + * A maximum of 10 parameter names may be associated with any event. Sending + * over 10 parameter names with a single event will result in no parameters being logged + * for that event. + * + * @code + * - (void)someGamingEvent{ + + FlurryParamBuilder *param = [[[[[[FlurryParamBuilder alloc] init] + setString:@"Game pro" forParam:[FlurryParamBuilder levelName]] + setInteger:2 forParam:[FlurryParamBuilder levelNumber]] + setString:@"12345" forKey:@"userId"] + setInteger:10 forKey:@"numOfTrials"]; + + [Flurry logStandardEvent:FLURRY_EVENT_LEVEL_COMPLETED withParameters:param]; + } + * @endcode + * + * @param eventType FlurryEvent enum. + * @param parameters a FlurryParam object that stores key-value pairs of a standard parameterized event. + * + * @return enum FlurryEventRecordStatus for the recording status of the logged event. + */ + ++ (FlurryEventRecordStatus)logStandardEvent:(FlurryEvent)eventType + withParameters:(nullable FlurryParamBuilder *)parameters; + + +@end + diff --git a/Pods/Flurry-iOS-SDK/Flurry/Flurry.h b/Pods/Flurry-iOS-SDK/Flurry/Flurry.h new file mode 100644 index 0000000..606eba6 --- /dev/null +++ b/Pods/Flurry-iOS-SDK/Flurry/Flurry.h @@ -0,0 +1,1300 @@ +// +// Flurry.h +// Flurry iOS Analytics Agent +// +// Copyright 2016 Flurry, Inc. All rights reserved. +// +// Methods in this header file are for use with Flurry Analytics + +#import +#if !TARGET_OS_WATCH +@class SKPaymentTransaction; +#endif +#if TARGET_OS_TV +@class JSContext; +#endif + +#import "FlurrySessionBuilder.h" + +/*! + * @brief Enum for payment transaction state + */ +typedef enum { + FlurryPaymentTransactionStatePurchasing = 0, + FlurryPaymentTransactionStateSuccess = 1, + FlurryPaymentTransactionStateFailure = 2, + FlurryPaymentTransactionStateRestored = 3, + FlurryPaymentTransactionStateDeferred = 4 +} FlurryPaymentTransactionState; + + +typedef enum { + FlurryEventFailed = 0, + FlurryEventRecorded, + FlurryEventUniqueCountExceeded, + FlurryEventParamsCountExceeded, + FlurryEventLogCountExceeded, + FlurryEventLoggingDelayed, + FlurryEventAnalyticsDisabled, + FlurryEventParametersMismatched +} FlurryEventRecordStatus; + + +/*! + * @brief Enum for logging events that occur within a syndicated app + * @since 6.7.0 + * + */ + +typedef enum { + FlurrySyndicationReblog = 0, + FlurrySyndicationFastReblog = 1, + FlurrySyndicationSourceClick = 2, + FlurrySyndicationLike = 3, + FlurrySyndicationShareClick = 4, + FlurrySyndicationPostSend = 5 + +}FlurrySyndicationEvent; + +extern NSString* _Nonnull const kSyndicationiOSDeepLink; +extern NSString* _Nonnull const kSyndicationAndroidDeepLink; +extern NSString* _Nonnull const kSyndicationWebDeepLink; + + +typedef enum { + FlurryTransactionRecordFailed = 0, + FlurryTransactionRecorded, + FlurryTransactionRecordExceeded, + FlurryTransactionRecodingDisabled +} FlurryTransactionRecordStatus; + +#if !TARGET_OS_WATCH + +/*! + * @brief Provides all available delegates for receiving callbacks related to Flurry analytics. + * + * Set of methods that allow developers to manage and take actions within + * different phases of App. + * + * @note This class serves as a delegate for Flurry. \n + * For additional information on how to use Flurry's Ads SDK to + * attract high-quality users and monetize your user base see Support Center - Publisher. + * @author 2010 - 2014 Flurry, Inc. All Rights Reserved. + * @version 6.3.0 + * + */ +@protocol FlurryDelegate + +/*! + * @brief Invoked when analytics session is created + * @since 6.3.0 + * + * This method informs the app that an analytics session is created. + * + * @see Flurry#startSession for details on session. + * + * @param info A dictionary of session information: sessionID, apiKey + * @note By default the callback is received on the global_queue with default priority. Optionally users can choose to receive on a specific queue by using + * + (void)setDelegate:(nonnull id)delegate withCallbackQueue:(dispatch_queue_t)flurryCallbackQueue; + */ +- (void)flurrySessionDidCreateWithInfo:(nonnull NSDictionary*)info; + +@end + +#if TARGET_OS_IOS +/*! + * @brief Provides delegate method for receiving callbacks related to publisher data is fetched. + */ +@protocol FlurryFetchObserver + +@optional + +/*! + * @brief Invoked when publisher data is fetched + * @since 11.3.0 + * + * @param publisherData A dictionary of key-value paired configuration for publisher segmentation data, nil if data not fetched or not changed. + */ +- (void)onFetched:(NSDictionary *_Nullable)publisherData; + +@end +#endif + +/*! + * @brief Provides all available methods for defining and reporting Analytics from use + * of your app. + * + * Set of methods that allow developers to capture detailed, aggregate information + * regarding the use of their app by end users. + * + * @note This class provides methods necessary for correct function of Flurry.h. + * For information on how to use Flurry's Ads SDK to + * attract high-quality users and monetize your user base see Support Center - Publishers. + * + * @version 4.3.0 + * + */ + +@interface Flurry : NSObject { +} + +#pragma mark - Pre-Session Calls + +/** @name Pre-Session Calls + * Optional sdk settings that should be called before start session. + */ +//@{ + +/*! + * @brief Retrieves the Flurry Agent Build Version. + * @since 2.7 + * + * This is an optional method that retrieves the Flurry Agent Version the app is running under. + * It is most often used if reporting an unexpected behavior of the SDK to + * Flurry Support + * + * @see #setLogLevel: for information on how to view debugging information on your console. + * + * @return The agent version of the Flurry SDK. + * + */ ++ (nonnull NSString *)getFlurryAgentVersion; + +/*! + * @brief Displays an exception in the debug log if thrown during a Session. + * @since 2.7 + * + * This is an optional method that augments the debug logs with exceptions that occur during the session. + * You must both capture exceptions to Flurry and set debug logging to enabled for this method to + * display information to the console. The default setting for this method is @c NO. + * + * @note This method can be called at any point in the execution of your application and + * the setting will take effect for SDK activity after this call. + * + * @see #setLogLevel: for information on how to view debugging information on your console. \n + * #logError:message:exception: for details on logging exceptions. \n + * #logError:message:error: for details on logging errors. + * + * @param value @c YES to show errors in debug logs, @c NO to omit errors in debug logs. + */ ++ (void)setShowErrorInLogEnabled:(BOOL)value; + +/*! + * @brief Generates debug logs to console. + * @since 4.2.2 + * + * This is an optional method that displays debug information related to the Flurry SDK. + * display information to the console. The default setting for this method is @c FlurryLogLevelCriticalOnly. + * + * @note The log level can be changed at any point in the execution of your application and + * the level that is set will take effect for SDK activity after this call. + * + * @param value Log level + * + */ ++ (void)setLogLevel:(FlurryLogLevel)value; +//@} + + + +#pragma mark - Flurry Delegate setters + +/*! + * @brief Set Flurry delegate for callback on session creation. + * @since 6.3.0 + * + * @code + * - (BOOL) application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions + { + // Optional Flurry startup methods + // If self implements protocol, FlurryDelegate + [Flurry setDelegate:self]; + // .... + } + * @endcode + * + + */ ++ (void)setDelegate:(nonnull id)delegate; + +/*! + * @brief Set Flurry delegate for callback on session creation with a callback queue. + * @since 8.4.4 + * + * @code + * - (BOOL) application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions + { + // Optional Flurry startup methods + // If self implements protocol, FlurryDelegate + [Flurry setDelegate:self withCallbackQueue:queue]; + // .... + } + * @endcode + * + */ ++ (void)setDelegate:(nonnull id)delegate withCallbackQueue:(nonnull dispatch_queue_t)flurryCallbackQueue; + +#pragma mark - start session APIs' + +/** @name startSession APIs' + * API to start session by passing API key, optionally passing launchOptions and/or customizing the session settings/options + * Only one of the API must be called to start the session + */ +//@{ + +/*! + * @brief Start a Flurry session for the project denoted by @c apiKey. + * @since 2.6 + * + * This method serves as the entry point to Flurry Analytics collection. It must be + * called in the scope of @c applicationDidFinishLaunching. The session will continue + * for the period the app is in the foreground until your app is backgrounded for the + * time specified in #withSessionContinueSeconds:. If the app is resumed in that period + * the session will continue, otherwise a new session will begin. + * + * Crash reporting will not be enabled. See #withCrashReporting: in FlurrySessionBuilder for + * more information. + * + * @note If testing on a simulator, please be sure to send App to background via home + * button. Flurry depends on the iOS lifecycle to be complete for full reporting. + * + * @see #withSessionContinueSeconds: for details on setting a custom session timeout in FlurrySessionBuilder. + * + * @code + * - (void)applicationDidFinishLaunching:(UIApplication *)application + { + // Optional Flurry startup methods + [Flurry startSession:@"YOUR_API_KEY"]; + // .... + } + * @endcode + * + * @param apiKey The API key for this project. + */ + ++ (void)startSession:(nonnull NSString *)apiKey; + + +/*! + * @brief Start a Flurry session for the project denoted by @c apiKey. Gather more information by passing in the launchOptions. + * @since 4.0.8 + * + * This method overloads on the #startSession: and serves as the entry point to Flurry Analytics collection. It must be + * called in the scope of @c applicationDidFinishLaunching passing in the launchOptions param. + * The session will continue + * for the period the app is in the foreground until your app is backgrounded for the + * time specified in #withSessionContinueSeconds:. If the app is resumed in that period + * the session will continue, otherwise a new session will begin. + * + * Crash reporting will not be enabled. See #withCrashReporting: in FlurrySessionBuilder for + * more information. + * + * @note If testing on a simulator, please be sure to send App to background via home + * button. Flurry depends on the iOS lifecycle to be complete for full reporting. + * + * @see #withSessionContinueSeconds: for details on setting a custom session timeout in FlurrySessionBuilder. + * + * @code + * - (BOOL) application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions + { + // Optional Flurry startup methods + [Flurry startSession:@"YOUR_API_KEY" withOptions:launchOptions]; + // .... + } + * @endcode + * + * @param apiKey The API key for this project. + * @param options passed launchOptions from the applicatin's didFinishLaunchingWithOptions:(NSDictionary *)launchOptions + + */ ++ (void) startSession:(nonnull NSString *)apiKey withOptions:(nullable id)options; + + +/*! + * @brief Start a Flurry session for the project denoted by @c apiKey by specifying the desired session construction options. + * Gather more information by passing in the launchOptions. + * + * @since 7.7.0 + * + * This method overloads on the #startSession:withOptions: and serves as the entry point to Flurry Analytics collection. It must be + * called in the scope of @c applicationDidFinishLaunching passing in the launchOptions param. + * The session will continue + * for the period the app is in the foreground until your app is backgrounded for the + * time specified in #withSessionContinueSeconds:. If the app is resumed in that period + * the session will continue, otherwise a new session will begin. + * + * @note If testing on a simulator, please be sure to send App to background via home + * button. Flurry depends on the iOS lifecycle to be complete for full reporting. + * + * @see #withSessionContinueSeconds: for details on setting a custom session timeout in FlurrySessionBuilder. + * + * @code + * - (BOOL) application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions + { + // Optional Flurry startup methods + FlurrySessionBuilder* builder = [[[[[FlurrySessionBuilder new] withLogLevel:FlurryLogLevelDebug] + withCrashReporting:NO] + withSessionContinueSeconds:10] + withAppVersion:@"0.1.2"]; + + [Flurry startSession:@"YOUR_API_KEY" withOptions:launchOptions withSessionBuilder:sessionBuilder]; + // .... + } + * @endcode + * + * @param apiKey The API key for this project. + * @param options passed launchOptions from the applicatin's didFinishLaunchingWithOptions:(NSDictionary *)launchOptions + * @param sessionBuilder pass in the session builder object to specify that session construction options + + */ ++ (void) startSession:(nonnull NSString *)apiKey withOptions:(nullable id)options withSessionBuilder:(nullable FlurrySessionBuilder*) sessionBuilder; + + +/*! + * @brief Start a Flurry session for the project denoted by @c apiKey by specifying the desired session construction options. + * @since 7.7.0 + * + * This method overloads on the #startSession: and serves as the entry point to Flurry Analytics collection. It must be + * called in the scope of @c applicationDidFinishLaunching. + * The session will continue + * for the period the app is in the foreground until your app is backgrounded for the + * time specified in #withSessionContinueSeconds:. If the app is resumed in that period + * the session will continue, otherwise a new session will begin. + * + * @note If testing on a simulator, please be sure to send App to background via home + * button. Flurry depends on the iOS lifecycle to be complete for full reporting. + * + * @see #withSessionContinueSeconds: for details on setting a custom session timeout in FlurrySessionBuilder. + * + * @code + * - (BOOL) application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions + { + // Optional Flurry startup methods + FlurrySessionBuilder* builder = [[[[[FlurrySessionBuilder new] withLogLevel:FlurryLogLevelDebug] + withCrashReporting:NO] + withSessionContinueSeconds:10] + withAppVersion:@"0.1.2"]; + + [Flurry startSession:@"YOUR_API_KEY" withSessionBuilder:sessionBuilder]; + // .... + } + * @endcode + * + * @param apiKey The API key for this project. + * @param sessionBuilder pass in the session builder object to specify that session construction options + */ ++ (void) startSession:(nonnull NSString *)apiKey withSessionBuilder:(nullable FlurrySessionBuilder *)sessionBuilder; +//@} + +#pragma mark - Session Details + +/*! + * @brief Returns true if a session currently exists and is active. + * @since 6.0.0 + * + * @code + * - (BOOL) application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions + { + // Optional Flurry startup methods + [Flurry activeSessionExists]; + // .... + } + * @endcode + * + */ ++ (BOOL)activeSessionExists; + +/*! + * @brief Returns the session ID of the current active session. + * @since 6.3.0 + * + * @code + * - (BOOL) application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions + { + // Optional Flurry startup methods + [Flurry getSessionID]; + // .... + } + * @endcode + * + + */ ++ (nonnull NSString*)getSessionID; + +#pragma mark - Manual session pausing + +#if !TARGET_OS_TV +/*! + * @brief Pauses a Flurry session left running in background. + * @since 4.2.2 + * + * This method can be called when application finished all background tasks (such as playing music) to pause session. + * + * @code + * - (void)allBackgroundTasksFinished + { + // .... + [Flurry pauseBackgroundSession]; + // .... + } + * @endcode + * + */ ++ (void)pauseBackgroundSession; +#endif + +#pragma mark - User Info Setters and Getters + +/** @name User Info + * Methods to set user information. + */ +//@{ + +/*! + * @brief Assign a unique id for a user in your app. + * @since 2.7 + * + * @note Please be sure not to use this method to pass any private or confidential information + * about the user. + * + * @param userID The app id for a user. + */ ++ (void)setUserID:(nullable NSString *)userID; + +/*! + * @brief Set your user's age in years. + * @since 2.7 + * + * Use this method to capture the age of your user. Only use this method if you collect this + * information explictly from your user (i.e. - there is no need to set a default value). + * + * @note The age is aggregated across all users of your app and not available on a per user + * basis. + * + * @param age Reported age of user. + * + */ ++ (void)setAge:(int)age; + +/*! + * @brief Set your user's gender. + * @since 2.7 + * + * Use this method to capture the gender of your user. Only use this method if you collect this + * information explictly from your user (i.e. - there is no need to set a default value). Allowable + * values are @c @"m" or @c @"f" + * + * @note The gender is aggregated across all users of your app and not available on a per user + * basis. + * + * @param gender Reported gender of user. + * + */ ++ (void)setGender:(nonnull NSString *)gender; // user's gender m or f + +//@} + +/** @name Location Reporting + * Opt-out Methods for setting location information. + */ +//@{ +/*! + * @brief Turn on/off location information of the session (default is on). + * @since 8.4.0 + * + * Use CLLocationManager to start the location tracking of the session. Flurry does not + * prompt users for location permission, we fetch the available location in device daemon. + * + * @note Only the last location in cache is captured per session. \n + * Regardless of accuracy specified, the Flurry SDK will only report location at city level or higher. \n + * Location is aggregated across all users of your app and not available on a per user basis. \n + * This information should only be captured if it is germaine to the use of your app. + * + * @code + CLLocationManager *locationManager = [[CLLocationManager alloc] init]; + [locationManager startUpdatingLocation]; + * @endcode + * + * It is on by default. After starting the location manager, you can turn off + * opt-out location tracking by calling this method. + * + * @code + [Flurry trackPreciseLocation:NO]; + * @endcode + * @param state The boolean to switch on/off for location tracking + * @return a boolean, if the state is YES, it tests device/app permission. If permission + * is granted, it returns NO. If permission is valid, it returns YES. If the + * state is NO, it always returns NO. + */ ++ (BOOL)trackPreciseLocation:(BOOL)state; + +//@} + +/** @name Session Reporting Calls + * Optional methods that can be called at any point to control session reporting. + */ +//@{ + +/*! + * @brief Set session to report when app closes. + * @since 2.7 + * @deprecated since 10.0.2. + * + * Use this method report session data when the app is closed. The default value is @c YES. + * + * @note This method is rarely invoked in iOS >= 3.2 due to the updated iOS lifecycle. + * + * @see #setSessionReportsOnPauseEnabled: + * + * @param sendSessionReportsOnClose YES to send on close, NO to omit reporting on close. + * + */ ++ (void)setSessionReportsOnCloseEnabled:(BOOL)sendSessionReportsOnClose __attribute__ ((deprecated)); + +/*! + * @brief Set session to report when app is sent to the background. + * @since 2.7 + * @deprecated since 10.0.2. + * + * Use this method report session data when the app is paused. The default value is @c YES. + * + * @param setSessionReportsOnPauseEnabled YES to send on pause, NO to omit reporting on pause. + * + */ ++ (void)setSessionReportsOnPauseEnabled:(BOOL)setSessionReportsOnPauseEnabled __attribute__ ((deprecated)); + +/*! + * @brief Enables implicit recording of Apple Store transactions. + * @since 7.9.0 + * + * This method needs to be called before any transaction is finialized. + * @note: Needs a 'required' dependency on StoreKit for this API to function correctly. + * + * @param value YES to enable transaction logging, NO to stop transaction logging. + * + */ ++ (void) setIAPReportingEnabled:(BOOL)value; + + +#pragma mark - Add sessionOrigin, originAttributes and sessionProperties + +/*! + * @brief Adds an session origin attached to each session specified by @c sessionOriginName. + * @since 6.5.0 + * + * This method allows you to specify session origin for each session. This is different than #addOrigin:withVersion: (originAttributes) which is used for third party + * wrappers after every session start. + * + * @code + * - (void)interestingMethod + { + // ... after calling startSession + [Flurry addSessionOrigin:@"facebuk"]; + // more code ... + } + * @endcode + * + * @param sessionOriginName Name of the origin. + */ ++ (void)addSessionOrigin:(nonnull NSString *)sessionOriginName; + +/*! + * @brief Adds an session origin and deep link attached to each session specified by @c sessionOriginName and @c deepLink. + * @since 6.5.0 + * + * This method allows you to specify session origin and deep link for each session. This is different than addOrigin:withVersion: (originAttributes) which is used for third party + * wrappers after every session start. + * + * + * @code + * - (void)interestingMethod + { + // ... after calling startSession + [Flurry addSessionOrigin:@"facebuk" withDeepLink:@"https://www.facebuk.com/xyz/"]; + // more code ... + } + * @endcode + * + * @param sessionOriginName Name of the origin. + * @param deepLink Url of the deep Link. + */ ++ (void)addSessionOrigin:(nonnull NSString *)sessionOriginName + withDeepLink:(nonnull NSString *)deepLink; + +/*! + * @brief Adds a custom parameterized session parameters @c parameters. + * @since 6.5.0 + * + * This method allows you to associate parameters with a session. Parameters + * are valuable as they allow you to store characteristics of a session. + * + * @note You should not pass private or confidential information about your origin info in a + * custom origin. \n + * A maximum of 10 parameter names may be associated with any origin. Sending + * over 10 parameter names with a single origin will result in no parameters being logged + * for that origin. + * + * + * @code + * - (void)interestingMethod + { + // ... after calling startSession + NSDictionary *params = + [NSDictionary dictionaryWithObjectsAndKeys:@"Session Info Item", // Parameter Value + @"Session Info Item Key", // Parameter Name + nil]; + [Flurry sessionProperties:params]; + // more code ... + } + * @endcode + * + * @param parameters An immutable copy of map containing Name-Value pairs of parameters. + */ ++ (void)sessionProperties:(nonnull NSDictionary *)parameters; + +/*! + * @brief Adds an SDK origin specified by @c originName and @c originVersion. + * @since 5.0.0 + * + * This method allows you to specify origin within your Flurry SDK wrapper. As a general rule + * you should capture all the origin info related to your wrapper for Flurry SDK after every session start. + * + * @see #addOrigin:withVersion:withParameters: for details on reporting origin info with parameters. \n + * + * @code + * - (void)interestingSDKWrapperLibraryfunction + { + // ... after calling startSession + [Flurry addOrigin:@"Interesting_Wrapper" withVersion:@"1.0.0"]; + // more code ... + } + * @endcode + * + * @param originName Name of the origin. + * @param originVersion Version string of the origin wrapper + */ ++ (void)addOrigin:(nonnull NSString *)originName + withVersion:(nonnull NSString *)originVersion; + +/*! + * @brief Adds a custom parameterized origin specified by @c originName with @c originVersion and @c parameters. + * @since 5.0.0 + * + * This method overloads #addOrigin to allow you to associate parameters with an origin attribute. Parameters + * are valuable as they allow you to store characteristics of an origin. + * + * @note You should not pass private or confidential information about your origin info in a + * custom origin. \n + * A maximum of 9 parameter names may be associated with any origin. Sending + * over 10 parameter names with a single origin will result in no parameters being logged + * for that origin. + * + * + * @code + * - (void)userPurchasedSomethingCool + { + NSDictionary *params = + [NSDictionary dictionaryWithObjectsAndKeys:@"Origin Info Item", // Parameter Value + @"Origin Info Item Key", // Parameter Name + nil]; + // ... after calling startSession + [Flurry addOrigin:@"Interesting_Wrapper" withVersion:@"1.0.0" withParameters:params]; + // more code ... + } + * @endcode + * + * @param originName Name of the origin. + * @param originVersion Version string of the origin wrapper + * @param parameters An immutable copy of map containing Name-Value pairs of parameters. + */ ++ (void)addOrigin:(nonnull NSString *)originName + withVersion:(nonnull NSString*)originVersion + withParameters:(nullable NSDictionary *)parameters; + +#pragma mark - Event Logging + +/** @name Event and Error Logging + * Methods for reporting custom events and errors during the session. + */ +//@{ + +/*! + * @brief Records a custom event specified by @c eventName. + * @since 2.8.4 + * + * This method allows you to specify custom events within your app. As a general rule + * you should capture events related to user navigation within your app, any action + * around monetization, and other events as they are applicable to tracking progress + * towards your business goals. + * + * @note You should not pass private or confidential information about your users in a + * custom event. \n + * Where applicable, you should make a concerted effort to use timed events with + * parameters (#logEvent:withParameters:timed:) or events with parameters + * (#logEvent:withParameters:). This provides valuable information around the time the user + * spends within an action (e.g. - time spent on a level or viewing a page) or characteristics + * of an action (e.g. - Buy Event that has a Parameter of Widget with Value Golden Sword). + * + * @see #logEvent:withParameters: for details on storing events with parameters. \n + * #logEvent:timed: for details on storing timed events. \n + * #logEvent:withParameters:timed: for details on storing timed events with parameters. \n + * #endTimedEvent:withParameters: for details on stopping a timed event and (optionally) updating + * parameters. + * + * @code + * - (void)interestingAppAction + { + [Flurry logEvent:@"Interesting_Action"]; + // Perform interesting action + } + * @endcode + * + * @param eventName Name of the event. For maximum effectiveness, we recommend using a naming scheme + * that can be easily understood by non-technical people in your business domain. + * + * @return enum FlurryEventRecordStatus for the recording status of the logged event. + */ ++ (FlurryEventRecordStatus)logEvent:(nonnull NSString *)eventName; + +/*! + * @brief Records a custom parameterized event specified by @c eventName with @c parameters. + * @since 2.8.4 + * + * This method overloads #logEvent to allow you to associate parameters with an event. Parameters + * are extremely valuable as they allow you to store characteristics of an action. For example, + * if a user purchased an item it may be helpful to know what level that user was on. + * By setting this parameter you will be able to view a distribution of levels for the purcahsed + * event on the Flurrly Dev Portal. + * + * @note You should not pass private or confidential information about your users in a + * custom event. \n + * A maximum of 10 parameter names may be associated with any event. Sending + * over 10 parameter names with a single event will result in no parameters being logged + * for that event. You may specify an infinite number of Parameter values. For example, + * a Search Box would have 1 parameter name (e.g. - Search Box) and many values, which would + * allow you to see what values users look for the most in your app. \n + * Where applicable, you should make a concerted effort to use timed events with + * parameters (#logEvent:withParameters:timed:). This provides valuable information + * around the time the user spends within an action (e.g. - time spent on a level or + * viewing a page). + * + * @see #logEvent:withParameters:timed: for details on storing timed events with parameters. \n + * #endTimedEvent:withParameters: for details on stopping a timed event and (optionally) updating + * parameters. + * + * @code + * - (void)userPurchasedSomethingCool + { + NSDictionary *params = + [NSDictionary dictionaryWithObjectsAndKeys:@"Cool Item", // Parameter Value + @"Item Purchased", // Parameter Name + nil]; + [Flurry logEvent:@"Something Cool Purchased" withParameters:params]; + // Give user cool item + } + * @endcode + * + * @param eventName Name of the event. For maximum effectiveness, we recommend using a naming scheme + * that can be easily understood by non-technical people in your business domain. + * @param parameters An immutable copy of map containing Name-Value pairs of parameters. + * + * @return enum FlurryEventRecordStatus for the recording status of the logged event. + */ ++ (FlurryEventRecordStatus)logEvent:(nonnull NSString *)eventName + withParameters:(nullable NSDictionary *)parameters; + +/*! + * @brief Records a syndicated event specified by @c syndicationEvent. + * @since 6.7.0 + * + * This method is excusively for use by the Tumblr App, calls from others app will be ignored. + * + * @code + - (void) reblogButtonHandler + { + [Flurry logEvent:Reblog syndicationID:@"123", parameters:nil]; + // Perform + } + * @endcode + * + * @param syndicationEvent syndication event. + * @param syndicationID syndication ID that is associated with the event + * @param parameters use this to pass in syndication parameters such as + * kSyndicationiOSDeepLink, kSyndicationAndroidDeepLink, kSyndicationWebLinkDeepLink + * + * @return enum FlurryEventRecordStatus for the recording status of the logged event. + */ ++ (FlurryEventRecordStatus) logEvent:(FlurrySyndicationEvent) syndicationEvent + syndicationID:(nonnull NSString *) syndicationID + parameters:(nullable NSDictionary *) parameters; + +/*! + * @brief Records an Apple Store transaction. + * @since 7.8.0 + * + * This method needs to be called before a transaction is finished and finalized. + * @note: Needs a 'required' dependency on StoreKit for this API to function correctly. + * + * @param transaction an SKPaymentTransaction. + * @param statusCallback a callback gettign called when the status of ID that is associated with the event + * + */ ++ (void) logPaymentTransaction:(nonnull SKPaymentTransaction *)transaction + statusCallback:(nullable void(^)(FlurryTransactionRecordStatus))statusCallback; + + +/*! + * @brief Records Apple store IAP transaction params and user defined transaction params manually. + * @since 10.0.0 + * + * @deprecated since 11.0.0. + * @param transactionId a string Id for this IAP transaction + * @param productId a string Id for this IAP transaction product + * @param quantity a string representation of quantity of items purchased + * @param price a string representation of price of the item + * @param currency a string representation of currency of the transaction + * @param productName a string representation of product name + * @param transactionState a string representation of 0 - 4 representing transaction state: 0:Purchasing, 1:Success, 2:Failure, 3:Restored, 4:Deferred + * @param transactionParams a dictionary of user defined transaction params to record + * @param statusCallback a callback gettign called when the status of ID that is associated with the event + * + */ + ++ (void) logPaymentTransactionParamsWithTransactionId:(nonnull NSString *)transactionId + productId:(nonnull NSString *)productId + quantity:(nonnull NSString *)quantity + price:(nonnull NSString *)price + currency:(nonnull NSString *)currency + productName:(nonnull NSString *)productName + transactionState:(nonnull NSString *)transactionState + userDefinedParams:(nullable NSDictionary*)transactionParams + statusCallback:(nullable void(^)(FlurryTransactionRecordStatus))statusCallback __attribute__((deprecated("use +logFlurryPaymentTransactionParamsWithTransactionId:productId:quantity:price:currency:productName:transactionState:userDefinedParams:statusCallback:"))); + +/*! + * @brief Records Apple store IAP transaction params and user defined transaction params manually. + * @since 11.0.0 + * + * @param transactionId a string Id for this IAP transaction + * @param productId a string Id for this IAP transaction product + * @param quantity an integer representation of quantity of items purchased + * @param price a float representation of price of the item + * @param currency a string representation of currency of the transaction + * @param productName a string representation of product name + * @param transactionState an enum to convert transaction state to integer: 0:Purchasing, 1:Success, 2:Failure, 3:Restored, 4:Deferred + * @param transactionParams a dictionary of user defined transaction params to record + * @param statusCallback a callback gettign called when the status of ID that is associated with the event + * + */ + ++ (void) logFlurryPaymentTransactionParamsWithTransactionId:(nonnull NSString *)transactionId + productId:(nonnull NSString *)productId + quantity:(nonnull NSUInteger*)quantity + price:(nonnull NSDecimalNumber*)price + currency:(nonnull NSString *)currency + productName:(nonnull NSString *)productName + transactionState:(FlurryPaymentTransactionState)transactionState + userDefinedParams:(nullable NSDictionary *)transactionParams + statusCallback:(nullable void(^)(FlurryTransactionRecordStatus))statusCallback; + + +#pragma mark - Timed Event Logging + +/*! + * @brief Records a timed event specified by @c eventName. + * @since 2.8.4 + * + * This method overloads #logEvent to allow you to capture the length of an event. This can + * be extremely valuable to understand the level of engagement with a particular action. For + * example, you can capture how long a user spends on a level or reading an article. + * + * @note You should not pass private or confidential information about your users in a + * custom event. \n + * Where applicable, you should make a concerted effort to use parameters with your timed + * events (#logEvent:withParameters:timed:). This provides valuable information + * around the characteristics of an action (e.g. - Buy Event that has a Parameter of Widget with + * Value Golden Sword). + * + * @see #logEvent:withParameters:timed: for details on storing timed events with parameters. \n + * #endTimedEvent:withParameters: for details on stopping a timed event and (optionally) updating + * parameters. + * + * @code + * - (void)startLevel + { + [Flurry logEvent:@"Level Played" timed:YES]; + // Start user on level + } + + - (void)endLevel + { + [Flurry endTimedEvent:@"Level Played" withParameters:nil]; + // User done with level + } + * @endcode + * + * @param eventName Name of the event. For maximum effectiveness, we recommend using a naming scheme + * that can be easily understood by non-technical people in your business domain. + * @param timed Specifies the event will be timed.. + * + * @return enum FlurryEventRecordStatus for the recording status of the logged event. + */ ++ (FlurryEventRecordStatus)logEvent:(nonnull NSString *)eventName timed:(BOOL)timed; + +/*! + * @brief Records a custom parameterized timed event specified by @c eventName with @c parameters. + * @since 2.8.4 + * + * This method overloads #logEvent to allow you to capture the length of an event with parameters. + * This can be extremely valuable to understand the level of engagement with a particular action + * and the characteristics associated with that action. For example, you can capture how long a user + * spends on a level or reading an article. Parameters can be used to capture, for example, the + * author of an article or if something was purchased while on the level. + * + * @note You should not pass private or confidential information about your users in a + * custom event. + * + * @see #endTimedEvent:withParameters: for details on stopping a timed event and (optionally) updating + * parameters. + * + * @code + * - (void)startLevel + { + NSDictionary *params = + [NSDictionary dictionaryWithObjectsAndKeys:@"100", // Parameter Value + @"Current Points", // Parameter Name + nil]; + + [Flurry logEvent:@"Level Played" withParameters:params timed:YES]; + // Start user on level + } + + - (void)endLevel + { + // User gained additional 100 points in Level + NSDictionary *params = + [NSDictionary dictionaryWithObjectsAndKeys:@"200", // Parameter Value + @"Current Points", // Parameter Name + nil]; + [Flurry endTimedEvent:@"Level Played" withParameters:params]; + // User done with level + } + * @endcode + * + * @param eventName Name of the event. For maximum effectiveness, we recommend using a naming scheme + * that can be easily understood by non-technical people in your business domain. + * @param parameters An immutable copy of map containing Name-Value pairs of parameters. + * @param timed Specifies the event will be timed.. + * + * @return enum FlurryEventRecordStatus for the recording status of the logged event. + */ ++ (FlurryEventRecordStatus)logEvent:(nonnull NSString *)eventName withParameters:(nullable NSDictionary *)parameters timed:(BOOL)timed; + +/*! + * @brief Ends a timed event specified by @c eventName and optionally updates parameters with @c parameters. + * @since 2.8.4 + * + * This method ends an existing timed event. If parameters are provided, this will overwrite existing + * parameters with the same name or create new parameters if the name does not exist in the parameter + * map set by #logEvent:withParameters:timed:. + * + * @note You should not pass private or confidential information about your users in a + * custom event. \n + * If the app is backgrounded prior to ending a timed event, the Flurry SDK will automatically + * end the timer on the event. \n + * #endTimedEvent:withParameters: is ignored if called on a previously + * terminated event. + * + * @see #logEvent:withParameters:timed: for details on starting a timed event with parameters. + * + * @code + * - (void)startLevel + { + NSDictionary *params = + [NSDictionary dictionaryWithObjectsAndKeys:@"100", // Parameter Value + @"Current Points", // Parameter Name + nil]; + + [Flurry logEvent:@"Level Played" withParameters:params timed:YES]; + // Start user on level + } + + - (void)endLevel + { + // User gained additional 100 points in Level + NSDictionary *params = + [NSDictionary dictionaryWithObjectsAndKeys:@"200", // Parameter Value + @"Current Points", // Parameter Name + nil]; + [Flurry endTimedEvent:@"Level Played" withParameters:params]; + // User done with level + } + * @endcode + * + * @param eventName Name of the event. For maximum effectiveness, we recommend using a naming scheme + * that can be easily understood by non-technical people in your business domain. + * @param parameters An immutable copy of map containing Name-Value pairs of parameters. + */ ++ (void)endTimedEvent:(nonnull NSString *)eventName withParameters:(nullable NSDictionary *)parameters; // non-nil parameters will update the parameters + +#pragma mark - Exceptions Logging + +/*! + * @brief Records an app exception. Commonly used to catch unhandled exceptions. + * @since 2.7 + * + * This method captures an exception for reporting to Flurry. We recommend adding an uncaught + * exception listener to capture any exceptions that occur during usage that is not + * anticipated by your app. + * + * @see #logError:message:error: for details on capturing errors. + * + * @code + * - (void) uncaughtExceptionHandler(NSException *exception) + { + [Flurry logError:@"Uncaught" message:@"Crash!" exception:exception]; + } + + - (void)applicationDidFinishLaunching:(UIApplication *)application + { + NSSetUncaughtExceptionHandler(&uncaughtExceptionHandler); + [Flurry startSession:@"YOUR_API_KEY"]; + // .... + } + * @endcode + * + * @param errorID Name of the error. + * @param message The message to associate with the error. + * @param exception The exception object to report. + */ ++ (void)logError:(nonnull NSString *)errorID + message:(nullable NSString *)message + exception:(nullable NSException *)exception; + +/*! + * @brief Records an app exception. Commonly used to catch unhandled exceptions. + * @since 8.4.0 + * + * This method overloads on logError:message:exception: to capture an exception with parameters for reporting to Flurry. We recommend adding an uncaught + * exception listener to capture any exceptions that occur during usage that is not + * anticipated by your app. + * + * @see #logError:message:error:withParameters: for details on capturing errors. + * + * @code + * - (void) uncaughtExceptionHandler(NSException *exception) + { + NSDictionary* crashParameters = [NSDictionary dictionaryWithObjectsAndKeys:@"AppVersion", @"3.2", nil]; + [Flurry logError:@"Uncaught" message:@"Crash!" exception:exception withParameters:crashParameters]; + } + + - (void)applicationDidFinishLaunching:(UIApplication *)application + { + NSSetUncaughtExceptionHandler(&uncaughtExceptionHandler); + [Flurry startSession:@"YOUR_API_KEY"]; + // .... + } + * @endcode + * + * @param errorID Name of the error. + * @param message The message to associate with the error. + * @param exception The exception object to report. + * @param parameters Custom parameters associated with the exception + */ ++ (void)logError:(nonnull NSString *)errorID + message:(nullable NSString *)message + exception:(nullable NSException *)exception + withParameters:(nullable NSDictionary*)parameters; + +#pragma mark - Error Logging + +/*! + * @brief Records an app error for reporting to Flurry. + * @since 2.7 + * + * @see #logError:message:exception: for details on capturing exceptions. + * + * @code + * - (void)webView:(WKWebView *)webView didFailNavigation:(WKNavigation *)navigation withError:(NSError *)error; + * { + [Flurry logError:@"WebView No Load" message:[error localizedDescription] error:error]; + } + * @endcode + * + * @param errorID Name of the error. + * @param message The message to associate with the error. + * @param error The error object to report. + */ ++ (void)logError:(nonnull NSString *)errorID + message:(nullable NSString *)message + error:(nullable NSError *)error; + +/*! + * @brief Records an app error. + * @since 8.4.0 + * This method overloads on logError:message:error: to capture an error for reporting to Flurry. + * + * @see #logError:message:exception:withParameters: for details on capturing exceptions. + * + * @code + * - (void)webView:(WKWebView *)webView didFailNavigation:(WKNavigation *)navigation withError:(NSError *)error; + { + [Flurry logError:@"WebView No Load" message:[error localizedDescription] error:error]; + } + * @endcode + * + * @param errorID Name of the error. + * @param message The message to associate with the error. + * @param error The error object to report. + * @param parameters Custom parameters associated with the error + */ ++ (void)logError:(nonnull NSString *)errorID + message:(nullable NSString *)message + error:(nullable NSError *)error + withParameters:(nullable NSDictionary*)parameters; + +/*! + * @brief Leave a breadcrumb. + * @since 8.4.0 + * This method captures breadcrumbs of 250 characters. The last 207 recorded + * breadcrumbs are included in crash and error logs. + * Breadcrumbs are reset at every application launch. + * + * @code + * - (void)webView:(WKWebView *)webView didFailNavigation:(WKNavigation *)navigation withError:(NSError *)error; + { + [Flurry leaveBreadcrumb:@"WebView not loading"]; + } + * @endcode + * + * @param breadcrumb string. + * + */ ++ (void)leaveBreadcrumb:(nonnull NSString*)breadcrumb; +//@} + +#pragma mark - TVML JSContext + +#if TARGET_OS_TV +/*! + * @brief Registers the TVML's JSContext with the Flurry SDK. + * @since 1.0.0 + * + * + * appController The TVApplicationController object + * jsContext The JavaScript context object passed in + * + * This method is exclusively for use by the Client-Server TV apps. This method will internally register + * JavaScript APIs exposed on the TVJS domain with the Flurry SDK. The JavaScript methods available are: + * + * Flurry.logEvent(eventId: string); + * Flurry.logEvent(eventId: string, timed: boolean); + * Flurry.logEvent(eventId: string, parameters: object); + * Flurry.logEvent(eventId: string, parameters: object, timed: boolean); + * + * Flurry.endTimedEvent(eventId: string); + * Flurry.endTimedEvent(eventId: string, parameters: object); + * + * Flurry.onError(errorId: string, message: string, errorClass: string); + * Flurry.onError(errorId: string, message: string, errorClass: string, errorParams: object); + * + * Flurry.setAge(age: number); + * Flurry.setGender(gender: string); + * Flurry.setUserId(userId: string); + * + * Flurry.setSessionOrigin(originName: string, deepLink: string); + * Flurry.addOrigin(originName: string, originVersion: string); + * Flurry.addOrigin(originName: string, originVersion: string, originParameters: object); + * Flurry.addSessionProperty(name: string, value: string); + * + * Flurry.setIAPReportingEnabled(enableIAP: boolean); + * Flurry.getVersions(): object; + * + * Deprecated TVML JavaScript APIs: + * + * flurryLogEvent({String} eventName) + * flurryLogEvent({String} eventName, {object} params) + * flurryLogTimedEvent({String} eventName) + * flurryLogTimedEvent({String} eventName, {object} params) + * flurryEndTimedEvent({String} eventName, {object} params) + * flurryLogError({String} eventName, {String} message, {object} error) + * -> error : { + * errorDomain: {String}, + errorID: {Number}, + userInfo: {object} + * } + * flurrySetUserID({String} userID) + * flurrySetGender({String} gender) + * flurrySetAge({Number} age) + * + * @code + - (void)appController:(TVApplicationController *)appController evaluateAppJavaScriptInContext:(JSContext *)jsContext { + [Flurry registerJSContextWithContext:jsContext]; + } + * @endcode + * + * @param jscontext JavaScript context passed in by the -appController:evaluateAppJavaScriptInContext method + */ + ++ (void)registerJSContextWithContext:(JSContext * _Nonnull)jscontext; +#endif + +#pragma mark - Privacy dashboard + +/*! + * @brief Open privacy dashboard in Safari Browser async with a completion handler callback + * @since 8.5.0 + * + * This method is used to open a web page of privacy dashboard in external browser for user to access and edit their data under the scope of GDPR, in the callback, you are able to check whether privacy dashboard is successfully opened, and apply fallback logics. + * @note: Call this method after invoking #startSession: + * + * @param completionHandler a callback getting called when SDK finishes the attempt to openURL the privacy dashboard, the success boolean provided for checks and fallbacks. + * + */ ++ (void)openPrivacyDashboard:(nullable void(^)(BOOL success))completionHandler; + +#if TARGET_OS_IOS +#pragma mark - Publisher Segmentation + +/*! + * @brief indicate whether the publisher data is fetched and ready to use + * @since 11.3.0 + * @return YES if the publisher segmentation data is fetched and ready to use + */ ++ (BOOL)isFetchFinished; + +/*! + * @brief register as an observer with given execution queue + * @since 11.3.0 + * @param observer an observing object + * @param queue the execution queue on which the observer callbacks will be executed + */ ++ (void)registerFetchObserver:(id _Nonnull)observer withExecutionQueue:(dispatch_queue_t _Nonnull)queue; + +/*! + * @brief unregister as an observer + * @Since 11.3.0 + * @param observer an observing object + */ ++ (void)unregisterFetchObserver:(id _Nonnull)observer; + +/*! + * @brief Retrive the fetched publisher data + * @Since 11.3.0 + * @return the key-value paired configuration for publisher segmentation data. If not yet fetched, + * will return the cached segments data. + */ ++ (nullable NSDictionary *)getPublisherData; + +/*! + * @brief Fetch the publisher data + * @Since 11.3.0 + * Fetch will trigger an async call to the server. Server has a throttle + * where when the user calls fetch Config many times in a row, it will + * basically do a no-op. + */ ++ (void)fetch; + +#endif +@end + +#endif diff --git a/Pods/Flurry-iOS-SDK/Flurry/FlurryCCPA.h b/Pods/Flurry-iOS-SDK/Flurry/FlurryCCPA.h new file mode 100644 index 0000000..245f570 --- /dev/null +++ b/Pods/Flurry-iOS-SDK/Flurry/FlurryCCPA.h @@ -0,0 +1,29 @@ +// +// FlurryCCPA.h +// Flurry +// +// Created by Hunter Hays on 9/5/19. +// Copyright © 2019 Oath Inc. All rights reserved. +// + +#import + +@interface FlurryCCPA : NSObject + +/*! +*@brief An api to send ccpa compliance data to Flurry on the user's choice to opt out or opt in to data sale to third parties. +* @since 10.1.0 +* +* +* @param isOptOut boolean true if the user wants to opt out of data sale, the default value is false +*/ ++(void) setDataSaleOptOut: (BOOL) isOptOut; + +/*! +*@brief An api to allow the user to request Flurry delete their collected data from this app. +* @since 10.1.0 +* +*/ ++(void) setDelete; + +@end diff --git a/Pods/Flurry-iOS-SDK/Flurry/FlurryConsent.h b/Pods/Flurry-iOS-SDK/Flurry/FlurryConsent.h new file mode 100644 index 0000000..282725f --- /dev/null +++ b/Pods/Flurry-iOS-SDK/Flurry/FlurryConsent.h @@ -0,0 +1,60 @@ +// +// FlurryConsent.h +// Flurry +// +// Created by Ishwarya Iyer on 4/2/18. +// Copyright © 2018 Flurry Inc. All rights reserved. +// + +#import + +@interface FlurryConsent : NSObject + +@property (nonatomic, assign, readonly) BOOL isGDPRScope; +@property (nonatomic, strong, readonly) NSDictionary* consentStrings; + +/*! + * @brief Use this api to initialize the FlurryConsent object. + * @since 8.5.0 + * + * This api initializes the consent object. This object needs to be registered with the SDK. + * + * @param isGDPRScope @c YES states that GDPR laws apply + * The default value is @c NO + * + * @param consentStrings NSDictionary* => . + * + * @note The values for ConsentStrings should be of correct base64url-encoded representation. + * @note ConsentStrings must be provided if "isGDPRScope" is set to YES for the consent information to be valid + * + */ +- (FlurryConsent*) initWithGDPRScope:(BOOL)isGDPRScope andConsentStrings:(NSDictionary*)consentStrings; + + +/*! + * @brief Use this api to register/update the consent information with the SDK. + * @since 8.5.0 + * + * This api can be called anytime to pass the consent information to the SDK. + * + * @see FlurrySessionBuilder#withConsent: to register the consent before starting Flurry. \n + * FlurryConsent#initWithGDPRScope:andConsentStrings to create the FlurryConsent object + * + * @param consent The FlurryConsent object which contains the GDPR scope flag and the consent strings + * + * @return indicates if the consent information provided is valid or not + * + */ ++ (BOOL) updateConsentInformation:(FlurryConsent*)consent; + +/*! + * @brief Use this api to get the consent information registered with the SDK. + * @since 8.5.0 + * + * This object is immutable. To update the consent a new FlurryConsent object must be created and passed on to the SDK + * + */ ++ (FlurryConsent*) getConsent; + +@end + diff --git a/Pods/Flurry-iOS-SDK/Flurry/FlurryEmpty.m b/Pods/Flurry-iOS-SDK/Flurry/FlurryEmpty.m new file mode 100644 index 0000000..f38647f --- /dev/null +++ b/Pods/Flurry-iOS-SDK/Flurry/FlurryEmpty.m @@ -0,0 +1,6 @@ + +#import "Flurry.h" + +@implementation Flurry (ForceLoad) + +@end \ No newline at end of file diff --git a/Pods/Flurry-iOS-SDK/Flurry/FlurrySKAdNetwork.h b/Pods/Flurry-iOS-SDK/Flurry/FlurrySKAdNetwork.h new file mode 100644 index 0000000..32e1cb3 --- /dev/null +++ b/Pods/Flurry-iOS-SDK/Flurry/FlurrySKAdNetwork.h @@ -0,0 +1,50 @@ +// +// FlurrySKAdNetwork.h +// SingularAdvertiserSampleApp +// +// Created by Hunter Hays on 7/22/20. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface FlurrySKAdNetwork : NSObject + +typedef NS_ENUM(NSUInteger, FlurryConversionValueEventType) { +NoEvent = 0, //0000 +Registration = 1, //0001 +Login, //0010 +Subscription, //0100 +InAppPurchase // 1000 + +}; + +/*! + *@brief Call this api to allow Flurry to set your conversion value. + * The final conversion value is a decimal number between 0-63. + * The conversion value is calculated from a 6 bit binary number. + * The first two bits represent days of user retention from 0-3 days + * The last four bits represent a true false state indicating if the user has completed the post install event. + * @since 11.0.0 + * + * + * @param event Event name using the FlurryConversionValueEventType defined above. + * + */ + ++ (void) flurryUpdateConversionValueWithEvent: (FlurryConversionValueEventType) event API_AVAILABLE(ios(14.0)); + +/*! + *@brief Call this api to send your conversion value to Flurry. You must calculate the conversion value yourself. + * + * @since 11.0.0 + * + * + * @param conversionValue The conversion value is a decimal number between 0-63. + */ + ++ (void) flurryUpdateConversionValue: (NSInteger) conversionValue API_AVAILABLE(ios(14.0)); +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/Flurry-iOS-SDK/Flurry/FlurrySessionBuilder.h b/Pods/Flurry-iOS-SDK/Flurry/FlurrySessionBuilder.h new file mode 100644 index 0000000..a169b42 --- /dev/null +++ b/Pods/Flurry-iOS-SDK/Flurry/FlurrySessionBuilder.h @@ -0,0 +1,240 @@ +// +// FlurrySessionBuilder.h +// Flurry +// +// Created by Akshay Bhandary on 7/14/16. +// Copyright © 2016 Flurry Inc. All rights reserved. +// + +#import +#import "FlurryConsent.h" +#import "FlurryCCPA.h" + + +/*! + * @brief Enum for setting up log output level. + * @since 4.2.0 + * + */ +typedef enum { + FlurryLogLevelNone = 0, //No output + FlurryLogLevelCriticalOnly, //Default, outputs only critical log events + FlurryLogLevelDebug, //Debug level, outputs critical and main log events + FlurryLogLevelAll //Highest level, outputs all log events +} FlurryLogLevel; + + +#if !TARGET_OS_WATCH + + +@interface FlurrySessionBuilder : NSObject + +/*! +*@brief An api to send ccpa compliance data to Flurry on the user's choice to opt out or opt in to data sale to third parties. +* @since 10.1.0 +* +* +* @param value boolean true if the user wants to opt out of data sale, the default value is false +*/ + +- (FlurrySessionBuilder*) withDataSaleOptOut:(BOOL)value; + + +/*! + * @brief Explicitly specifies the App Version that Flurry will use to group Analytics data. + * @since 7.7.0 + * + * This is an optional method that overrides the App Version Flurry uses for reporting. Flurry will + * use the CFBundleVersion in your info.plist file when this method is not invoked. + * + * @note There is a maximum of 605 versions allowed for a single app. + * + * @param value The custom version name. + */ +- (FlurrySessionBuilder*) withAppVersion:(NSString *)value; + + +/*! + * @brief Set the timeout for expiring a Flurry session. + * @since 7.7.0 + * + * This is an optional method that sets the time the app may be in the background before + * starting a new session upon resume. The default value for the session timeout is 10 + * seconds in the background. + * + * @param value The time in seconds to set the session timeout to. + */ +- (FlurrySessionBuilder*) withSessionContinueSeconds:(NSInteger)value; + + +/*! + * @brief Enable automatic collection of crash reports. + * @since 7.7.0 + * + * This is an optional method that collects crash reports when enabled. The + * default value is @c NO. + * + * @param value @c YES to enable collection of crash reports. + */ +- (FlurrySessionBuilder*) withCrashReporting:(BOOL)value; + +/*! + * @brief Generates debug logs to console. + * @since 7.7.0 + * + * This is an optional method that displays debug information related to the Flurry SDK. + * display information to the console. The default setting for this method is @c FlurryLogLevelCriticalOnly. + * + * @note The log level can be changed at any point in the execution of your application using the setLogLevel API defined in + * Flurry.h, see #setLogLevel for more info. + * + * @param value Log level + * + */ +- (FlurrySessionBuilder*) withLogLevel:(FlurryLogLevel) value; + + + +/*! + * @brief Displays an exception in the debug log if thrown during a Session. + * @since 7.7.0 + * + * This is an optional method that augments the debug logs with exceptions that occur during the session. + * You must both capture exceptions to Flurry and set the log level to Debug or All for this method to + * display information to the console. The default setting for this method is @c NO. + * + * @note This method can be called at any point in the execution of your application and + * the setting will take effect for SDK activity after this call. + * + * @see #setLogLevel: for information on how to view debugging information on your console. \n + * #logError:message:exception: for details on logging exceptions. \n + * #logError:message:error: for details on logging errors. + * + * @param value @c YES to show errors in debug logs, @c NO to omit errors in debug logs. + */ +- (FlurrySessionBuilder*) withShowErrorInLog:(BOOL) value; + + +/*! + * @brief Registers the consent information with the SDK. Consent information is used to determine if the gdpr laws are applicable + * @since 8.5.0 + * + * Use this method to pass the consent information to the SDK + * + * @note This method must be called prior to invoking #startSession: + * + * @param consent The consent information. + * @see (FlurryConsent#initWithGDPRScope:andConsentStrings:) + */ + +- (FlurrySessionBuilder*) withConsent:(FlurryConsent*)consent; + + +/*! + * @brief Enables implicit recording of Apple Store transactions. + * @since 7.9.0 + * + * @note This method needs to be called before any transaction is finialized. + * + * @param value @c YES to enable transaction logging with the default being @c NO. + * + */ + +- (FlurrySessionBuilder*) withIAPReportingEnabled:(BOOL) value; + +/*! + * @brief Enables opting out of background sessions being counted towards total sessions. + * @since 8.1.0-rc.1 + * + * @note This method must be called prior to invoking #startSession:. + * + * @param value @c NO to opt out of counting background sessions towards total sessions. + * The default value for the session is @c YES + * + */ + +- (FlurrySessionBuilder*) withIncludeBackgroundSessionsInMetrics:(BOOL) value; + +/*! + * @brief Set the Session Origin for the Flurry session. + * @since 10.0.0 + * + * This is an optional method that sets the session origin + * + * @param origin The session origin value. + */ +- (FlurrySessionBuilder*) withSessionOrigin:(NSString*) origin; + +/*! + * @brief Set the Session Origin Version for the Flurry session. + * @since 10.0.0 + * + * This is an optional method that sets the session origin version + * + * @param version The session origin version value. + */ +- (FlurrySessionBuilder*) withSessionOriginVerion:(NSString*) version; + +/*! + * @brief Set the Session OriginSets Paramters for the Flurry session. + * @since 10.0.0 + * + * This is an optional method that sets the session origin parameters for origin sets (max key value pairs = 10) + * + * @param parameters The session origin parameters. + */ +- (FlurrySessionBuilder*) withSessionOriginParameters:(NSDictionary*) parameters; + +/*! + * @brief Set the Deeplink for the Flurry session. + * @since 10.0.0 + * + * This is an optional method that sets the deeplink which started the app and Flurry Session + * + * @param deeplink The session deeplink value. + */ +- (FlurrySessionBuilder*) withSessionDeeplink:(NSString*) deeplink; + +/*! + * @brief Set the Session properties for the Flurry session. + * @since 10.0.0 + * + * This is an optional method that sets the session properties + * + * @param properties The session paramaters. + */ +- (FlurrySessionBuilder*) withSessionProperties:(NSDictionary*) properties; + + +#if TARGET_OS_TV + +/*! + * @brief Sets the minimum duration (in minutes) before a partial session report is sent to Flurry. + * @since 7.7.0 + * + * This is an optional method that sets the minimum duration (in minutes) before a partial session report is sent to Flurry. + * The acceptable values are between 5 and 60 minutes. + * + * @note This method must be called prior to invoking #startSession:. + * + * @param value The period after which a partial session report is sent to Flurry. + */ +- (FlurrySessionBuilder*) withTVSessionReportingInterval:(NSInteger) value; + +/*! + * @brief Sets the minimum number of events before a partial session report is sent to Flurry. + * @since 7.7.0 + * + * This is an optional method that sets the minimum number of events before a partial session report is sent to Flurry. + * The acceptable values are between 5 and 50. + * + * @note This method must be called prior to invoking #startSession:. + * + * @param value The number of events after which partial session report is sent to Flurry. + */ +- (FlurrySessionBuilder*) withTVEventCountThreshold:(NSInteger) value; +#endif + +@end + +#endif diff --git a/Pods/Flurry-iOS-SDK/Flurry/FlurryUserProperties.h b/Pods/Flurry-iOS-SDK/Flurry/FlurryUserProperties.h new file mode 100644 index 0000000..2203370 --- /dev/null +++ b/Pods/Flurry-iOS-SDK/Flurry/FlurryUserProperties.h @@ -0,0 +1,125 @@ +// +// FlurryUserProperties.h +// Flurry +// +// Created by Hunter Hays on 4/11/19. +// Copyright © 2019 Oath Inc. All rights reserved. +// + +/* + * Standard User Property: Preferred Currency. + * Standard User Property: Currency Preference. + * Follow ISO 4217: https://en.wikipedia.org/wiki/ISO_4217 + * E.g., "USD", "EUR", "JPY", "CNY", ... + */ + +extern NSString * _Nonnull const FlurryPropertyCurrencyPreference; + +/* + * Standard User Property: Purchaser. + * E.g., "true" or "false" + */ +extern NSString * _Nonnull const FlurryPropertyPurchaser; + +/* + * Standard User Property: Registered user. + * E.g., "true" or "false" + */ +extern NSString * _Nonnull const FlurryPropertyRegisteredUser; + +/* + * Standard User Property: Subscriber. + * E.g., "true" or "false" + */ +extern NSString * _Nonnull const FlurryPropertySubscriber; + + +@interface FlurryUserProperties : NSObject + +/*! + *@brief Exactly set or replace any state for the property. + * An empty NSArray clears the property state. + * @since 10.0.0 + * + * + * @param propertyName property name + * @param propertyValues list of property values + */ + ++ (void) set:(nonnull NSString*) propertyName values:(nonnull NSArray*) propertyValues; + +/*! + *@brief Exactly set or replace any state for the property. + * This api allows passing in a single NSString value. + * @since 10.0.0 + * + * + * @param propertyName property name + * @param propertyValue single property value + */ ++ (void) set:(nonnull NSString*) propertyName value:(nonnull NSString*) propertyValue; + +/*! + * @brief Extend or create a property + * Adding values already included in the state has no effect and does not error. + * @since 10.0.0 + * + * + * @param propertyName property name + * @param propertyValues list of property values + */ ++ (void) add:(nonnull NSString*) propertyName values:(nonnull NSArray*) propertyValues; + +/*! + * @brief Extend or create a property + * Adding values already included in the state has no effect and does not error. + * @since 10.0.0 + * + * + * @param propertyName property name + * @param propertyValue single property value + */ ++ (void) add:(nonnull NSString*) propertyName value:(nonnull NSString*) propertyValue; + +/*! + * @brief Reduce any property. + * Removing values not already included in the state has no effect and does not error + * @since 10.0.0 + * + * + * @param propertyName property name + * @param propertyValues list of property values + */ ++ (void) remove:(nonnull NSString*) propertyName values:(nonnull NSArray*) propertyValues; + +/*! + * @brief Reduce any property. + * Removing values not already included in the state has no effect and does not error + * @since 10.0.0 + * + * + * @param propertyName property name + * @param propertyValue single property value + */ ++ (void) remove:(nonnull NSString*) propertyName value:(nonnull NSString*) propertyValue; + +/*! + * @brief Removes all property values for the property + * @since 10.0.0 + * + * + * @param propertyName property name + */ ++ (void) remove:(nonnull NSString*) propertyName; + +/*! + * @brief Exactly set, or replace if any previously exists, any state for the property to a single true state. + * Implies that value is boolean and should only be flagged or removed. + * @since 10.0.0 + * + * + * @param propertyName property name + */ ++ (void) flag:(nonnull NSString*) propertyName; + +@end diff --git a/Pods/Flurry-iOS-SDK/Flurry/libFlurry_11.3.0.a b/Pods/Flurry-iOS-SDK/Flurry/libFlurry_11.3.0.a new file mode 100644 index 0000000..a1775c0 Binary files /dev/null and b/Pods/Flurry-iOS-SDK/Flurry/libFlurry_11.3.0.a differ diff --git a/Pods/Flurry-iOS-SDK/LICENSE b/Pods/Flurry-iOS-SDK/LICENSE new file mode 100644 index 0000000..f433b1a --- /dev/null +++ b/Pods/Flurry-iOS-SDK/LICENSE @@ -0,0 +1,177 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS diff --git a/Pods/Flurry-iOS-SDK/Licenses/Flurry-LICENSE.txt b/Pods/Flurry-iOS-SDK/Licenses/Flurry-LICENSE.txt new file mode 100755 index 0000000..1a47761 --- /dev/null +++ b/Pods/Flurry-iOS-SDK/Licenses/Flurry-LICENSE.txt @@ -0,0 +1 @@ +Developer's use of the SDK is governed by the license in the applicable Flurry Terms of Service. Some components of the SDK are governed by open source software licenses. In the event of any conflict between the license in the applicable Flurry Terms of Service and the applicable open source license, the terms of the open source license shall prevail with respect to those components. diff --git a/Pods/Flurry-iOS-SDK/README.md b/Pods/Flurry-iOS-SDK/README.md new file mode 100644 index 0000000..1ab82c8 --- /dev/null +++ b/Pods/Flurry-iOS-SDK/README.md @@ -0,0 +1,178 @@ +# Flurry SDK + +[![pod](https://img.shields.io/cocoapods/v/Flurry-iOS-SDK)](https://cocoapods.org/pods/Flurry-iOS-SDK) +[![platform](https://img.shields.io/cocoapods/p/Flurry-iOS-SDK)](https://cocoapods.org/pods/Flurry-iOS-SDK) +[![license](https://img.shields.io/github/license/flurry/flurry-ios-sdk)](https://github.com/flurry/Flurry-iOS-SDK) + +## Table of Contents + +- [Installation](#installation) + - [iOS](#ios) + - [watchOS](#watchos) + - [tvOS](#tvos) +- [Requirements](#requirements) +- [Examples](#examples) +- [Suppport](#support) +- [License](#license) + +## Installation + +To install FlurrySDK from CocoaPods, please follow the instructions below. Remember to include `use_frameworks!` if your app target is in Swift. + +### iOS + +To enable Flurry Analytics: + +```ruby +pod 'Flurry-iOS-SDK/FlurrySDK' +``` + +To enable Flurry Ad serving: + +```ruby +pod 'Flurry-iOS-SDK/FlurrySDK' +pod 'Flurry-iOS-SDK/FlurryAds' +``` + +To enable Flurry Config: + +```ruby +pod 'Flurry-iOS-SDK/FlurryConfig' +``` + +To enable Flurry Messaging: + +```ruby +pod 'Flurry-iOS-SDK/FlurryMessaging' +``` + +### watchOS + +To use FlurrySDK for Apple Watch 1.x Extension: + +```ruby +target 'Your Apple Watch 1.x Extension Target' do + pod 'Flurry-iOS-SDK/FlurryWatchSDK' +end +``` + +To use FlurrySDK for Apple Watch 2.x Extension: + +```ruby +target 'Your Apple Watch 2.x Extension Target' do + platform :watchos, '2.0' + pod 'Flurry-iOS-SDK/FlurrySDK' +end +``` + +### tvOS + +To use FlurrySDK for tvOS apps: + +```ruby +target 'Your tvOS Application' do + platform :tvos, '9.0' + pod 'Flurry-iOS-SDK/FlurrySDK' +end +``` + +To enable Flurry Messaging for tvOS: + +```ruby +pod 'Flurry-iOS-SDK/FlurryMessaging' +``` + +## Requirements + +* iOS 8.0+ +* tvOS 9.0+ +* watchOS 1.0+ + +## Examples + +Listed below are brief examples of initializing and using Flurry in your project. For detailed instructions, please [check our documentation](https://developer.yahoo.com/flurry/docs/). + +### Initialize Flurry + +* iOS/tvOS + + To initialize Flurry, please import Flurry in your Application Delegate and start a Flurry session inside `applicationDidFinishLaunching`, as described below. + + ```swift + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { + let sessionBuilder = FlurrySessionBuilder() + .withLogLevel(FlurryLogLevelAll) + .withCrashReporting(true) + .withAppVersion("1.0") + .withIAPReportingEnabled(true) + Flurry.startSession("Your API Key", with: sessionBuilder) + return true + } + ``` + +* watchOS + + Please follow [our instructions here](https://developer.yahoo.com/flurry/docs/integrateflurry/watchos/). + +### Log Events + +Use this to log normal events and timed events in your app. + +* iOS/tvOS + + ```swift + // Normal events + Flurry.logEvent("Event", withParameters: ["Key": "Value"]) + + // Timed events + Flurry.logEvent("Event", withParameters: ["Key": "Value"], timed: true) + Flurry.endTimedEvent("Event", withParameters: ["Key": "Value"]) + ``` + +* watchOS + + ```swift + FlurryWatch.logWatchEvent("Event", withParameters: ["Key": "Value"]) + ``` + +### Log Error (iOS/tvOS) + +Use this to log exceptions and/or errors that occur in your app. Flurry will report the first 10 errors that occur in each session. + +```swift +Flurry.logError("ERROR_NAME", message: "ERROR_MESSAGE", exception: e) +``` + +### Track User Demographics (iOS/tvOS) + +After identifying the user, use this to log the user’s assigned ID, username, age and gender in your system. + +```swift +Flurry.setUserID("USER_ID") +Flurry.setAge(20) +Flurry.setGender("f") // "f" for female and "m" for male +``` + +### Session Origins and Attributes (iOS/tvOS) + +This allows you to specify session origin and deep link attached to each session, or add a custom parameterized session parameters. You can also add an SDK origin specified by origin name and origin version. + +```swift +Flurry.addSessionOrigin("SESSION_ORIGIN") +Flurry.addSessionOrigin("SESSION_ORIGIN", withDeepLink: "DEEPLINK") +Flurry.sessionProperties(["key": "value"]) +Flurry.addOrigin("ORIGIN_NAME", withVersion: "ORIGIN_VERSION") +Flurry.addOrigin("ORIGIN_NAME", withVersion: "ORIGIN_VERSION", withParameters: ["key": "value"]) +``` + +## Support + +* [Flurry Documentation](https://developer.yahoo.com/flurry/docs/) +* [FAQs for Flurry](https://developer.yahoo.com/flurry/docs/faq/) +* [Flurry Support](https://developer.yahoo.com/support/flurry/) + +## License + +Copyright 2019 Flurry by Verizon Media + +This project is licensed under the terms of the [Apache 2.0](http://www.apache.org/licenses/LICENSE-2.0) open source license. Please refer to [LICENSE](LICENSE) for the full terms. Your use of Flurry is governed by [Flurry Terms of Service](https://developer.yahoo.com/flurry/legal-privacy/terms-service/). diff --git a/Pods/Manifest.lock b/Pods/Manifest.lock new file mode 100644 index 0000000..09bcb58 --- /dev/null +++ b/Pods/Manifest.lock @@ -0,0 +1,16 @@ +PODS: + - Flurry-iOS-SDK/FlurrySDK (11.3.0) + +DEPENDENCIES: + - Flurry-iOS-SDK/FlurrySDK + +SPEC REPOS: + trunk: + - Flurry-iOS-SDK + +SPEC CHECKSUMS: + Flurry-iOS-SDK: 494e340b623f1413711603dc0184f1fd4183e0d3 + +PODFILE CHECKSUM: 7c460dae566a634109421748e50fc6739b373d70 + +COCOAPODS: 1.9.1 diff --git a/Pods/Pods.xcodeproj/project.pbxproj b/Pods/Pods.xcodeproj/project.pbxproj new file mode 100644 index 0000000..67bbaa8 --- /dev/null +++ b/Pods/Pods.xcodeproj/project.pbxproj @@ -0,0 +1,826 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 05E83562A32ED35306E5A74B5BBA1E1C /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4D0EBBE5E51F42671CE581DC45E796B1 /* SystemConfiguration.framework */; }; + 08E5F1393ED8FE168C825891B6A20D9D /* FlurryEmpty.m in Sources */ = {isa = PBXBuildFile; fileRef = 0D28C1EFB005CCD51C2DC2238551F980 /* FlurryEmpty.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 12174A4EBDF1DE76BAAE3DA37A089176 /* Flurry-iOS-SDK-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = B8724971C711435317BA5C0574BB4191 /* Flurry-iOS-SDK-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27672F459D03DCCB10819359C92597FB /* Flurry+Event.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A5A15171E8BA3D2061C0804E3D4DE4F /* Flurry+Event.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 445EC4ED43DE711749E4EAEFA8E20DA5 /* Flurry-iOS-SDK-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 825892AA1F33EED0BA6E797ED41DA6F9 /* Flurry-iOS-SDK-dummy.m */; }; + 67A1BED8F53003503AECB8C919ED1BC6 /* FlurrySKAdNetwork.h in Headers */ = {isa = PBXBuildFile; fileRef = FC424D310BFE1B2F93D512AB7E9823E3 /* FlurrySKAdNetwork.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6DA80F4F0EA92CC797527453A1A74C1E /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C013DF0307B42F1AEAC7370C12FBB0DA /* UIKit.framework */; }; + 6E62DEF901B7A10BBD7E0D39974BF1B7 /* Pods-DateDotsTests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = AC62E91DC08C55DA3C7D66B3F704F94C /* Pods-DateDotsTests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6FDE2A80BE8226A678CD4E82D7EB3F8D /* Pods-DateDots-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = CFD1BDE282A03DAA294050D153EA1D2E /* Pods-DateDots-dummy.m */; }; + 7EB6FCDCAE606F00D00029B4FFE2C48E /* FlurrySessionBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = CB765F78874648F44351BFEBB59E5344 /* FlurrySessionBuilder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8B35ABDAA5BEE08707AD7461EAF8EAF9 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F11EE921EB38EB97FE821039F441AF5F /* Security.framework */; }; + 92F1B921741D2E5396E8D8D67F68E072 /* Pods-DateDotsTests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 1C530630C7AB4C352B5E03286A72C6BA /* Pods-DateDotsTests-dummy.m */; }; + 9ABB259CB536D367090402E6D176D5D5 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A034214A1D3B6ACDB39B10255074AD25 /* Foundation.framework */; }; + C3B2C53D3B815993C0503691674EFEA7 /* Flurry.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CAC0C3C1948CEE5493138C690D934B9 /* Flurry.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C48FFE6C63C010A14FE8B3C841EC6808 /* Pods-DateDots-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = F177415FE818C3D337608DC194A9B6BE /* Pods-DateDots-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D533BDB4CD4CAD93D4A9B88539436059 /* FlurryUserProperties.h in Headers */ = {isa = PBXBuildFile; fileRef = D62689A29E00B0AAB2D8709B95E9A848 /* FlurryUserProperties.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D8486B60164C90DDAAB7185F44F7E1B3 /* FlurryConsent.h in Headers */ = {isa = PBXBuildFile; fileRef = D5A8A7F49799DA84D7498D155BBE0323 /* FlurryConsent.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E1FC8A02C710550A9BBD342E3E4967B0 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A034214A1D3B6ACDB39B10255074AD25 /* Foundation.framework */; }; + E42EC28B0256C2F800F031FE5F3D9FCA /* FlurryCCPA.h in Headers */ = {isa = PBXBuildFile; fileRef = 5285EACC4FAF27DAFBF494C120B78A92 /* FlurryCCPA.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F43F5815CE2911F082A6FA6C904C7A25 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A034214A1D3B6ACDB39B10255074AD25 /* Foundation.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 8A07372146CC93A8B07A039BEAC97E24 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 23EE62D8F7B4475F49FFAC72AEF81FAF; + remoteInfo = "Flurry-iOS-SDK"; + }; + B017B13BB60EAB7A8F9D5A62F9D8B63C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = DEAD551A9D09D4320AEAE1AD32430E18; + remoteInfo = "Pods-DateDots"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 0D28C1EFB005CCD51C2DC2238551F980 /* FlurryEmpty.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FlurryEmpty.m; path = Flurry/FlurryEmpty.m; sourceTree = ""; }; + 1A5A15171E8BA3D2061C0804E3D4DE4F /* Flurry+Event.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "Flurry+Event.h"; path = "Flurry/Flurry+Event.h"; sourceTree = ""; }; + 1C530630C7AB4C352B5E03286A72C6BA /* Pods-DateDotsTests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-DateDotsTests-dummy.m"; sourceTree = ""; }; + 20AE3C0CEE201923F51B86DFE84DD5D4 /* Flurry-iOS-SDK.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Flurry-iOS-SDK.release.xcconfig"; sourceTree = ""; }; + 26E76A2E6A26338B760012DB6BDB3847 /* libFlurry_11.3.0.a */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = archive.ar; name = libFlurry_11.3.0.a; path = Flurry/libFlurry_11.3.0.a; sourceTree = ""; }; + 3BA327FF11771032F8CFD7E11DC7CE99 /* Pods-DateDotsTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-DateDotsTests.debug.xcconfig"; sourceTree = ""; }; + 40F694279899D5DE08A1D633DAFE496B /* Flurry_iOS_SDK.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Flurry_iOS_SDK.framework; path = "Flurry-iOS-SDK.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + 4D0EBBE5E51F42671CE581DC45E796B1 /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/SystemConfiguration.framework; sourceTree = DEVELOPER_DIR; }; + 5285EACC4FAF27DAFBF494C120B78A92 /* FlurryCCPA.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FlurryCCPA.h; path = Flurry/FlurryCCPA.h; sourceTree = ""; }; + 538C27BC539AAB759E661E83F539A211 /* Flurry-iOS-SDK-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Flurry-iOS-SDK-prefix.pch"; sourceTree = ""; }; + 546AE4E84827B08F9A0A823359594262 /* Pods-DateDots-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-DateDots-acknowledgements.plist"; sourceTree = ""; }; + 5707978992F540EAB7BC17076D9E4B11 /* Flurry-iOS-SDK-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Flurry-iOS-SDK-Info.plist"; sourceTree = ""; }; + 5CAC0C3C1948CEE5493138C690D934B9 /* Flurry.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Flurry.h; path = Flurry/Flurry.h; sourceTree = ""; }; + 75EB77C081A7806AFFD2562782EE751C /* Pods-DateDots.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-DateDots.release.xcconfig"; sourceTree = ""; }; + 77BF9D987CD5475B7831A913D826566D /* Pods-DateDotsTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-DateDotsTests.release.xcconfig"; sourceTree = ""; }; + 789A898FD28434CD478AC969DD4567ED /* Pods-DateDotsTests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-DateDotsTests.modulemap"; sourceTree = ""; }; + 825892AA1F33EED0BA6E797ED41DA6F9 /* Flurry-iOS-SDK-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Flurry-iOS-SDK-dummy.m"; sourceTree = ""; }; + 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + 9FB5651FA09435DEEB1F763A2EEB5F60 /* Pods_DateDotsTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_DateDotsTests.framework; path = "Pods-DateDotsTests.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + A034214A1D3B6ACDB39B10255074AD25 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + A33D135D7F5413518F3B37AE181FB273 /* Pods-DateDots.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-DateDots.debug.xcconfig"; sourceTree = ""; }; + AC62E91DC08C55DA3C7D66B3F704F94C /* Pods-DateDotsTests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-DateDotsTests-umbrella.h"; sourceTree = ""; }; + B13E9FF316316871BF0311CC482EF481 /* Pods_DateDots.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_DateDots.framework; path = "Pods-DateDots.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + B8724971C711435317BA5C0574BB4191 /* Flurry-iOS-SDK-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Flurry-iOS-SDK-umbrella.h"; sourceTree = ""; }; + BC33E911DA875BDDE9AC0B06665B4FF9 /* Flurry-iOS-SDK.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Flurry-iOS-SDK.debug.xcconfig"; sourceTree = ""; }; + C013DF0307B42F1AEAC7370C12FBB0DA /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; + CB765F78874648F44351BFEBB59E5344 /* FlurrySessionBuilder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FlurrySessionBuilder.h; path = Flurry/FlurrySessionBuilder.h; sourceTree = ""; }; + CD7C9CD8E0E8474B27B0BF3A567F14D6 /* Pods-DateDots-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-DateDots-Info.plist"; sourceTree = ""; }; + CFD1BDE282A03DAA294050D153EA1D2E /* Pods-DateDots-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-DateDots-dummy.m"; sourceTree = ""; }; + D5A8A7F49799DA84D7498D155BBE0323 /* FlurryConsent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FlurryConsent.h; path = Flurry/FlurryConsent.h; sourceTree = ""; }; + D62689A29E00B0AAB2D8709B95E9A848 /* FlurryUserProperties.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FlurryUserProperties.h; path = Flurry/FlurryUserProperties.h; sourceTree = ""; }; + DA51E61ADCF9C414F05047FCA69F5C67 /* Pods-DateDotsTests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-DateDotsTests-acknowledgements.markdown"; sourceTree = ""; }; + DB63A9BCFE96FD87F0718BC507340A22 /* Pods-DateDotsTests-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-DateDotsTests-Info.plist"; sourceTree = ""; }; + E27C352C0349FC6F477606C2F766434C /* Pods-DateDots-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-DateDots-acknowledgements.markdown"; sourceTree = ""; }; + E380824A0A85DB4A83F81E34C2286AD4 /* Pods-DateDots-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-DateDots-frameworks.sh"; sourceTree = ""; }; + E9B5A360AB9100FD29BD458B1208BAE1 /* Pods-DateDotsTests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-DateDotsTests-acknowledgements.plist"; sourceTree = ""; }; + EA7E8CC786CBEC6BAA937AB6D9F066D2 /* Flurry-iOS-SDK.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Flurry-iOS-SDK.modulemap"; sourceTree = ""; }; + F11EE921EB38EB97FE821039F441AF5F /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Security.framework; sourceTree = DEVELOPER_DIR; }; + F177415FE818C3D337608DC194A9B6BE /* Pods-DateDots-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-DateDots-umbrella.h"; sourceTree = ""; }; + F9A89F3677FE12479FB6DF0D45D503B7 /* Pods-DateDots.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-DateDots.modulemap"; sourceTree = ""; }; + FC424D310BFE1B2F93D512AB7E9823E3 /* FlurrySKAdNetwork.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FlurrySKAdNetwork.h; path = Flurry/FlurrySKAdNetwork.h; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 776902128C393F753D2E8B9A4C2647A7 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + E1FC8A02C710550A9BBD342E3E4967B0 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9076B0C5F7BED5FCAA2612BF42B21E12 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + F43F5815CE2911F082A6FA6C904C7A25 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + E06B35D182FDA6D6C4475C88F4248F15 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 9ABB259CB536D367090402E6D176D5D5 /* Foundation.framework in Frameworks */, + 8B35ABDAA5BEE08707AD7461EAF8EAF9 /* Security.framework in Frameworks */, + 05E83562A32ED35306E5A74B5BBA1E1C /* SystemConfiguration.framework in Frameworks */, + 6DA80F4F0EA92CC797527453A1A74C1E /* UIKit.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 3D2BF974E16132BFB24E4E3E0B9E6DFC /* Pods-DateDotsTests */ = { + isa = PBXGroup; + children = ( + 789A898FD28434CD478AC969DD4567ED /* Pods-DateDotsTests.modulemap */, + DA51E61ADCF9C414F05047FCA69F5C67 /* Pods-DateDotsTests-acknowledgements.markdown */, + E9B5A360AB9100FD29BD458B1208BAE1 /* Pods-DateDotsTests-acknowledgements.plist */, + 1C530630C7AB4C352B5E03286A72C6BA /* Pods-DateDotsTests-dummy.m */, + DB63A9BCFE96FD87F0718BC507340A22 /* Pods-DateDotsTests-Info.plist */, + AC62E91DC08C55DA3C7D66B3F704F94C /* Pods-DateDotsTests-umbrella.h */, + 3BA327FF11771032F8CFD7E11DC7CE99 /* Pods-DateDotsTests.debug.xcconfig */, + 77BF9D987CD5475B7831A913D826566D /* Pods-DateDotsTests.release.xcconfig */, + ); + name = "Pods-DateDotsTests"; + path = "Target Support Files/Pods-DateDotsTests"; + sourceTree = ""; + }; + 3DC40C57873505D22AF7CDFFAA057A76 /* Targets Support Files */ = { + isa = PBXGroup; + children = ( + CE1F1CEF97429B1C27F318A10A60E38D /* Pods-DateDots */, + 3D2BF974E16132BFB24E4E3E0B9E6DFC /* Pods-DateDotsTests */, + ); + name = "Targets Support Files"; + sourceTree = ""; + }; + 608DF61505D300EABBB5DBD7762D9D19 /* Flurry-iOS-SDK */ = { + isa = PBXGroup; + children = ( + B5A3EFA95A8EAC367D06A3323B1FE9E8 /* FlurrySDK */, + B0551719D4C4C78E237DEE2AB7D842C0 /* Support Files */, + ); + name = "Flurry-iOS-SDK"; + path = "Flurry-iOS-SDK"; + sourceTree = ""; + }; + 858946F8202315180531C91677D43A26 /* Pods */ = { + isa = PBXGroup; + children = ( + 608DF61505D300EABBB5DBD7762D9D19 /* Flurry-iOS-SDK */, + ); + name = Pods; + sourceTree = ""; + }; + B0551719D4C4C78E237DEE2AB7D842C0 /* Support Files */ = { + isa = PBXGroup; + children = ( + EA7E8CC786CBEC6BAA937AB6D9F066D2 /* Flurry-iOS-SDK.modulemap */, + 825892AA1F33EED0BA6E797ED41DA6F9 /* Flurry-iOS-SDK-dummy.m */, + 5707978992F540EAB7BC17076D9E4B11 /* Flurry-iOS-SDK-Info.plist */, + 538C27BC539AAB759E661E83F539A211 /* Flurry-iOS-SDK-prefix.pch */, + B8724971C711435317BA5C0574BB4191 /* Flurry-iOS-SDK-umbrella.h */, + BC33E911DA875BDDE9AC0B06665B4FF9 /* Flurry-iOS-SDK.debug.xcconfig */, + 20AE3C0CEE201923F51B86DFE84DD5D4 /* Flurry-iOS-SDK.release.xcconfig */, + ); + name = "Support Files"; + path = "../Target Support Files/Flurry-iOS-SDK"; + sourceTree = ""; + }; + B5A3EFA95A8EAC367D06A3323B1FE9E8 /* FlurrySDK */ = { + isa = PBXGroup; + children = ( + 5CAC0C3C1948CEE5493138C690D934B9 /* Flurry.h */, + 1A5A15171E8BA3D2061C0804E3D4DE4F /* Flurry+Event.h */, + 5285EACC4FAF27DAFBF494C120B78A92 /* FlurryCCPA.h */, + D5A8A7F49799DA84D7498D155BBE0323 /* FlurryConsent.h */, + 0D28C1EFB005CCD51C2DC2238551F980 /* FlurryEmpty.m */, + CB765F78874648F44351BFEBB59E5344 /* FlurrySessionBuilder.h */, + FC424D310BFE1B2F93D512AB7E9823E3 /* FlurrySKAdNetwork.h */, + D62689A29E00B0AAB2D8709B95E9A848 /* FlurryUserProperties.h */, + E9ACE1014F2689185EA96067BCC4DDD1 /* Frameworks */, + ); + name = FlurrySDK; + sourceTree = ""; + }; + BA4F31F07263C99FC76E66D632A59F09 /* Frameworks */ = { + isa = PBXGroup; + children = ( + F496AC5556B365A573FBC47844CEB986 /* iOS */, + ); + name = Frameworks; + sourceTree = ""; + }; + CE1F1CEF97429B1C27F318A10A60E38D /* Pods-DateDots */ = { + isa = PBXGroup; + children = ( + F9A89F3677FE12479FB6DF0D45D503B7 /* Pods-DateDots.modulemap */, + E27C352C0349FC6F477606C2F766434C /* Pods-DateDots-acknowledgements.markdown */, + 546AE4E84827B08F9A0A823359594262 /* Pods-DateDots-acknowledgements.plist */, + CFD1BDE282A03DAA294050D153EA1D2E /* Pods-DateDots-dummy.m */, + E380824A0A85DB4A83F81E34C2286AD4 /* Pods-DateDots-frameworks.sh */, + CD7C9CD8E0E8474B27B0BF3A567F14D6 /* Pods-DateDots-Info.plist */, + F177415FE818C3D337608DC194A9B6BE /* Pods-DateDots-umbrella.h */, + A33D135D7F5413518F3B37AE181FB273 /* Pods-DateDots.debug.xcconfig */, + 75EB77C081A7806AFFD2562782EE751C /* Pods-DateDots.release.xcconfig */, + ); + name = "Pods-DateDots"; + path = "Target Support Files/Pods-DateDots"; + sourceTree = ""; + }; + CF1408CF629C7361332E53B88F7BD30C = { + isa = PBXGroup; + children = ( + 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, + BA4F31F07263C99FC76E66D632A59F09 /* Frameworks */, + 858946F8202315180531C91677D43A26 /* Pods */, + FFA556ACF4E9745E67A03435C241C5C5 /* Products */, + 3DC40C57873505D22AF7CDFFAA057A76 /* Targets Support Files */, + ); + sourceTree = ""; + }; + E9ACE1014F2689185EA96067BCC4DDD1 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 26E76A2E6A26338B760012DB6BDB3847 /* libFlurry_11.3.0.a */, + ); + name = Frameworks; + sourceTree = ""; + }; + F496AC5556B365A573FBC47844CEB986 /* iOS */ = { + isa = PBXGroup; + children = ( + A034214A1D3B6ACDB39B10255074AD25 /* Foundation.framework */, + F11EE921EB38EB97FE821039F441AF5F /* Security.framework */, + 4D0EBBE5E51F42671CE581DC45E796B1 /* SystemConfiguration.framework */, + C013DF0307B42F1AEAC7370C12FBB0DA /* UIKit.framework */, + ); + name = iOS; + sourceTree = ""; + }; + FFA556ACF4E9745E67A03435C241C5C5 /* Products */ = { + isa = PBXGroup; + children = ( + 40F694279899D5DE08A1D633DAFE496B /* Flurry_iOS_SDK.framework */, + B13E9FF316316871BF0311CC482EF481 /* Pods_DateDots.framework */, + 9FB5651FA09435DEEB1F763A2EEB5F60 /* Pods_DateDotsTests.framework */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 40203A2DEB935AC7AD87EECE759E7EC6 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 6E62DEF901B7A10BBD7E0D39974BF1B7 /* Pods-DateDotsTests-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 4EEC60753CDCD0F750965106A8934A65 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + C48FFE6C63C010A14FE8B3C841EC6808 /* Pods-DateDots-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 5F8E84C74E38854DFA35460627324AB0 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 27672F459D03DCCB10819359C92597FB /* Flurry+Event.h in Headers */, + 12174A4EBDF1DE76BAAE3DA37A089176 /* Flurry-iOS-SDK-umbrella.h in Headers */, + C3B2C53D3B815993C0503691674EFEA7 /* Flurry.h in Headers */, + E42EC28B0256C2F800F031FE5F3D9FCA /* FlurryCCPA.h in Headers */, + D8486B60164C90DDAAB7185F44F7E1B3 /* FlurryConsent.h in Headers */, + 7EB6FCDCAE606F00D00029B4FFE2C48E /* FlurrySessionBuilder.h in Headers */, + 67A1BED8F53003503AECB8C919ED1BC6 /* FlurrySKAdNetwork.h in Headers */, + D533BDB4CD4CAD93D4A9B88539436059 /* FlurryUserProperties.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 23EE62D8F7B4475F49FFAC72AEF81FAF /* Flurry-iOS-SDK */ = { + isa = PBXNativeTarget; + buildConfigurationList = F5AEA3F19837506524CB69EC4E4C4C5F /* Build configuration list for PBXNativeTarget "Flurry-iOS-SDK" */; + buildPhases = ( + 5F8E84C74E38854DFA35460627324AB0 /* Headers */, + 0D4471BAFF3B18F9F4B361CB8234A6BE /* Sources */, + E06B35D182FDA6D6C4475C88F4248F15 /* Frameworks */, + 70F7123486CBC4C6838D055FA1D37867 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "Flurry-iOS-SDK"; + productName = "Flurry-iOS-SDK"; + productReference = 40F694279899D5DE08A1D633DAFE496B /* Flurry_iOS_SDK.framework */; + productType = "com.apple.product-type.framework"; + }; + AC4421D89057420DCF713655E1F3175F /* Pods-DateDotsTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 636C2F7C2FAEBA119B978772DF0C555B /* Build configuration list for PBXNativeTarget "Pods-DateDotsTests" */; + buildPhases = ( + 40203A2DEB935AC7AD87EECE759E7EC6 /* Headers */, + F63FBBF01A7DC8C7EB6EBA7661A054D3 /* Sources */, + 9076B0C5F7BED5FCAA2612BF42B21E12 /* Frameworks */, + A5EDB9C6308353884E50FB508C199CD3 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 85075B39F4F99DB35DD7EFFA02527512 /* PBXTargetDependency */, + ); + name = "Pods-DateDotsTests"; + productName = "Pods-DateDotsTests"; + productReference = 9FB5651FA09435DEEB1F763A2EEB5F60 /* Pods_DateDotsTests.framework */; + productType = "com.apple.product-type.framework"; + }; + DEAD551A9D09D4320AEAE1AD32430E18 /* Pods-DateDots */ = { + isa = PBXNativeTarget; + buildConfigurationList = 23C02E4919ED9CB099F3C263E897980B /* Build configuration list for PBXNativeTarget "Pods-DateDots" */; + buildPhases = ( + 4EEC60753CDCD0F750965106A8934A65 /* Headers */, + 364CCB0FAC18A3F727243C1199B0AF64 /* Sources */, + 776902128C393F753D2E8B9A4C2647A7 /* Frameworks */, + 0E1678B67B8A1FE8C039066C4E235FB0 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 45A73FEED1E63D2E32B7A19764CE479D /* PBXTargetDependency */, + ); + name = "Pods-DateDots"; + productName = "Pods-DateDots"; + productReference = B13E9FF316316871BF0311CC482EF481 /* Pods_DateDots.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + BFDFE7DC352907FC980B868725387E98 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1100; + LastUpgradeCheck = 1100; + }; + buildConfigurationList = 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = CF1408CF629C7361332E53B88F7BD30C; + productRefGroup = FFA556ACF4E9745E67A03435C241C5C5 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 23EE62D8F7B4475F49FFAC72AEF81FAF /* Flurry-iOS-SDK */, + DEAD551A9D09D4320AEAE1AD32430E18 /* Pods-DateDots */, + AC4421D89057420DCF713655E1F3175F /* Pods-DateDotsTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 0E1678B67B8A1FE8C039066C4E235FB0 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 70F7123486CBC4C6838D055FA1D37867 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + A5EDB9C6308353884E50FB508C199CD3 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 0D4471BAFF3B18F9F4B361CB8234A6BE /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 445EC4ED43DE711749E4EAEFA8E20DA5 /* Flurry-iOS-SDK-dummy.m in Sources */, + 08E5F1393ED8FE168C825891B6A20D9D /* FlurryEmpty.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 364CCB0FAC18A3F727243C1199B0AF64 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 6FDE2A80BE8226A678CD4E82D7EB3F8D /* Pods-DateDots-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + F63FBBF01A7DC8C7EB6EBA7661A054D3 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 92F1B921741D2E5396E8D8D67F68E072 /* Pods-DateDotsTests-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 45A73FEED1E63D2E32B7A19764CE479D /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "Flurry-iOS-SDK"; + target = 23EE62D8F7B4475F49FFAC72AEF81FAF /* Flurry-iOS-SDK */; + targetProxy = 8A07372146CC93A8B07A039BEAC97E24 /* PBXContainerItemProxy */; + }; + 85075B39F4F99DB35DD7EFFA02527512 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "Pods-DateDots"; + target = DEAD551A9D09D4320AEAE1AD32430E18 /* Pods-DateDots */; + targetProxy = B017B13BB60EAB7A8F9D5A62F9D8B63C /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 1422B121EAEAEA11307496903FA623C6 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + "POD_CONFIGURATION_RELEASE=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + STRIP_INSTALLED_PRODUCT = NO; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + SWIFT_VERSION = 5.0; + SYMROOT = "${SRCROOT}/../build"; + }; + name = Release; + }; + 21C0CCB4F565E8F5DD9F5666D5B199E0 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = BC33E911DA875BDDE9AC0B06665B4FF9 /* Flurry-iOS-SDK.debug.xcconfig */; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_PREFIX_HEADER = "Target Support Files/Flurry-iOS-SDK/Flurry-iOS-SDK-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Flurry-iOS-SDK/Flurry-iOS-SDK-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/Flurry-iOS-SDK/Flurry-iOS-SDK.modulemap"; + PRODUCT_MODULE_NAME = Flurry_iOS_SDK; + PRODUCT_NAME = Flurry_iOS_SDK; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 38BD3CCB49C1944152F2E10DF67EF64F /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 77BF9D987CD5475B7831A913D826566D /* Pods-DateDotsTests.release.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_ENABLE_OBJC_WEAK = NO; + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "Target Support Files/Pods-DateDotsTests/Pods-DateDotsTests-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-DateDotsTests/Pods-DateDotsTests.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 546A160F9AD9E31512F340B55102C107 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 20AE3C0CEE201923F51B86DFE84DD5D4 /* Flurry-iOS-SDK.release.xcconfig */; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_PREFIX_HEADER = "Target Support Files/Flurry-iOS-SDK/Flurry-iOS-SDK-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Flurry-iOS-SDK/Flurry-iOS-SDK-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/Flurry-iOS-SDK/Flurry-iOS-SDK.modulemap"; + PRODUCT_MODULE_NAME = Flurry_iOS_SDK; + PRODUCT_NAME = Flurry_iOS_SDK; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 56DA0085E2656A30762C4DEBFC3F3E18 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 3BA327FF11771032F8CFD7E11DC7CE99 /* Pods-DateDotsTests.debug.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_ENABLE_OBJC_WEAK = NO; + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "Target Support Files/Pods-DateDotsTests/Pods-DateDotsTests-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-DateDotsTests/Pods-DateDotsTests.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + BBBBB95C228F546255D803524C2454EE /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = A33D135D7F5413518F3B37AE181FB273 /* Pods-DateDots.debug.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_ENABLE_OBJC_WEAK = NO; + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "Target Support Files/Pods-DateDots/Pods-DateDots-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-DateDots/Pods-DateDots.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + ED7888FA6713EABBF66D26A8003AD1CA /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "POD_CONFIGURATION_DEBUG=1", + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + STRIP_INSTALLED_PRODUCT = NO; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + SYMROOT = "${SRCROOT}/../build"; + }; + name = Debug; + }; + EFF46415FBBE588D7BF3AA5A03479360 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 75EB77C081A7806AFFD2562782EE751C /* Pods-DateDots.release.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_ENABLE_OBJC_WEAK = NO; + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "Target Support Files/Pods-DateDots/Pods-DateDots-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-DateDots/Pods-DateDots.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 23C02E4919ED9CB099F3C263E897980B /* Build configuration list for PBXNativeTarget "Pods-DateDots" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + BBBBB95C228F546255D803524C2454EE /* Debug */, + EFF46415FBBE588D7BF3AA5A03479360 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + ED7888FA6713EABBF66D26A8003AD1CA /* Debug */, + 1422B121EAEAEA11307496903FA623C6 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 636C2F7C2FAEBA119B978772DF0C555B /* Build configuration list for PBXNativeTarget "Pods-DateDotsTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 56DA0085E2656A30762C4DEBFC3F3E18 /* Debug */, + 38BD3CCB49C1944152F2E10DF67EF64F /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + F5AEA3F19837506524CB69EC4E4C4C5F /* Build configuration list for PBXNativeTarget "Flurry-iOS-SDK" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 21C0CCB4F565E8F5DD9F5666D5B199E0 /* Debug */, + 546A160F9AD9E31512F340B55102C107 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = BFDFE7DC352907FC980B868725387E98 /* Project object */; +} diff --git a/Pods/Target Support Files/Flurry-iOS-SDK/Flurry-iOS-SDK-Info.plist b/Pods/Target Support Files/Flurry-iOS-SDK/Flurry-iOS-SDK-Info.plist new file mode 100644 index 0000000..9a85396 --- /dev/null +++ b/Pods/Target Support Files/Flurry-iOS-SDK/Flurry-iOS-SDK-Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 11.3.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Pods/Target Support Files/Flurry-iOS-SDK/Flurry-iOS-SDK-dummy.m b/Pods/Target Support Files/Flurry-iOS-SDK/Flurry-iOS-SDK-dummy.m new file mode 100644 index 0000000..49a63b9 --- /dev/null +++ b/Pods/Target Support Files/Flurry-iOS-SDK/Flurry-iOS-SDK-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_Flurry_iOS_SDK : NSObject +@end +@implementation PodsDummy_Flurry_iOS_SDK +@end diff --git a/Pods/Target Support Files/Flurry-iOS-SDK/Flurry-iOS-SDK-prefix.pch b/Pods/Target Support Files/Flurry-iOS-SDK/Flurry-iOS-SDK-prefix.pch new file mode 100644 index 0000000..beb2a24 --- /dev/null +++ b/Pods/Target Support Files/Flurry-iOS-SDK/Flurry-iOS-SDK-prefix.pch @@ -0,0 +1,12 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + diff --git a/Pods/Target Support Files/Flurry-iOS-SDK/Flurry-iOS-SDK-umbrella.h b/Pods/Target Support Files/Flurry-iOS-SDK/Flurry-iOS-SDK-umbrella.h new file mode 100644 index 0000000..c7e09a0 --- /dev/null +++ b/Pods/Target Support Files/Flurry-iOS-SDK/Flurry-iOS-SDK-umbrella.h @@ -0,0 +1,23 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + +#import "Flurry.h" +#import "Flurry+Event.h" +#import "FlurrySessionBuilder.h" +#import "FlurryConsent.h" +#import "FlurryUserProperties.h" +#import "FlurryCCPA.h" +#import "FlurrySKAdNetwork.h" + +FOUNDATION_EXPORT double Flurry_iOS_SDKVersionNumber; +FOUNDATION_EXPORT const unsigned char Flurry_iOS_SDKVersionString[]; + diff --git a/Pods/Target Support Files/Flurry-iOS-SDK/Flurry-iOS-SDK.debug.xcconfig b/Pods/Target Support Files/Flurry-iOS-SDK/Flurry-iOS-SDK.debug.xcconfig new file mode 100644 index 0000000..4cc1121 --- /dev/null +++ b/Pods/Target Support Files/Flurry-iOS-SDK/Flurry-iOS-SDK.debug.xcconfig @@ -0,0 +1,14 @@ +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Flurry-iOS-SDK +EXCLUDED_ARCHS[sdk=appletvsimulator*] = arm64 +EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64 +EXCLUDED_ARCHS[sdk=watchsimulator*] = arm64 +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Flurry-iOS-SDK/Flurry" +OTHER_LDFLAGS = $(inherited) -l"Flurry_11.3.0" -framework "Foundation" -framework "Security" -framework "SystemConfiguration" -framework "UIKit" +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_ROOT = ${SRCROOT} +PODS_TARGET_SRCROOT = ${PODS_ROOT}/Flurry-iOS-SDK +PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} +SKIP_INSTALL = YES +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/Flurry-iOS-SDK/Flurry-iOS-SDK.modulemap b/Pods/Target Support Files/Flurry-iOS-SDK/Flurry-iOS-SDK.modulemap new file mode 100644 index 0000000..da85c68 --- /dev/null +++ b/Pods/Target Support Files/Flurry-iOS-SDK/Flurry-iOS-SDK.modulemap @@ -0,0 +1,6 @@ +framework module Flurry_iOS_SDK { + umbrella header "Flurry-iOS-SDK-umbrella.h" + + export * + module * { export * } +} diff --git a/Pods/Target Support Files/Flurry-iOS-SDK/Flurry-iOS-SDK.release.xcconfig b/Pods/Target Support Files/Flurry-iOS-SDK/Flurry-iOS-SDK.release.xcconfig new file mode 100644 index 0000000..4cc1121 --- /dev/null +++ b/Pods/Target Support Files/Flurry-iOS-SDK/Flurry-iOS-SDK.release.xcconfig @@ -0,0 +1,14 @@ +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Flurry-iOS-SDK +EXCLUDED_ARCHS[sdk=appletvsimulator*] = arm64 +EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64 +EXCLUDED_ARCHS[sdk=watchsimulator*] = arm64 +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Flurry-iOS-SDK/Flurry" +OTHER_LDFLAGS = $(inherited) -l"Flurry_11.3.0" -framework "Foundation" -framework "Security" -framework "SystemConfiguration" -framework "UIKit" +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_ROOT = ${SRCROOT} +PODS_TARGET_SRCROOT = ${PODS_ROOT}/Flurry-iOS-SDK +PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} +SKIP_INSTALL = YES +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/Pods-DateDots/Pods-DateDots-Info.plist b/Pods/Target Support Files/Pods-DateDots/Pods-DateDots-Info.plist new file mode 100644 index 0000000..2243fe6 --- /dev/null +++ b/Pods/Target Support Files/Pods-DateDots/Pods-DateDots-Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Pods/Target Support Files/Pods-DateDots/Pods-DateDots-acknowledgements.markdown b/Pods/Target Support Files/Pods-DateDots/Pods-DateDots-acknowledgements.markdown new file mode 100644 index 0000000..c0c96ca --- /dev/null +++ b/Pods/Target Support Files/Pods-DateDots/Pods-DateDots-acknowledgements.markdown @@ -0,0 +1,8 @@ +# Acknowledgements +This application makes use of the following third party libraries: + +## Flurry-iOS-SDK + +Developer's use of the SDK is governed by the license in the applicable Flurry Terms of Service. Some components of the SDK are governed by open source software licenses. In the event of any conflict between the license in the applicable Flurry Terms of Service and the applicable open source license, the terms of the open source license shall prevail with respect to those components. + +Generated by CocoaPods - https://cocoapods.org diff --git a/Pods/Target Support Files/Pods-DateDots/Pods-DateDots-acknowledgements.plist b/Pods/Target Support Files/Pods-DateDots/Pods-DateDots-acknowledgements.plist new file mode 100644 index 0000000..9316ca7 --- /dev/null +++ b/Pods/Target Support Files/Pods-DateDots/Pods-DateDots-acknowledgements.plist @@ -0,0 +1,40 @@ + + + + + PreferenceSpecifiers + + + FooterText + This application makes use of the following third party libraries: + Title + Acknowledgements + Type + PSGroupSpecifier + + + FooterText + Developer's use of the SDK is governed by the license in the applicable Flurry Terms of Service. Some components of the SDK are governed by open source software licenses. In the event of any conflict between the license in the applicable Flurry Terms of Service and the applicable open source license, the terms of the open source license shall prevail with respect to those components. + + License + Commercial + Title + Flurry-iOS-SDK + Type + PSGroupSpecifier + + + FooterText + Generated by CocoaPods - https://cocoapods.org + Title + + Type + PSGroupSpecifier + + + StringsTable + Acknowledgements + Title + Acknowledgements + + diff --git a/Pods/Target Support Files/Pods-DateDots/Pods-DateDots-dummy.m b/Pods/Target Support Files/Pods-DateDots/Pods-DateDots-dummy.m new file mode 100644 index 0000000..4cf2b1a --- /dev/null +++ b/Pods/Target Support Files/Pods-DateDots/Pods-DateDots-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_Pods_DateDots : NSObject +@end +@implementation PodsDummy_Pods_DateDots +@end diff --git a/Pods/Target Support Files/Pods-DateDots/Pods-DateDots-frameworks.sh b/Pods/Target Support Files/Pods-DateDots/Pods-DateDots-frameworks.sh new file mode 100755 index 0000000..d725b6e --- /dev/null +++ b/Pods/Target Support Files/Pods-DateDots/Pods-DateDots-frameworks.sh @@ -0,0 +1,207 @@ +#!/bin/sh +set -e +set -u +set -o pipefail + +function on_error { + echo "$(realpath -mq "${0}"):$1: error: Unexpected failure" +} +trap 'on_error $LINENO' ERR + +if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then + # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy + # frameworks to, so exit 0 (signalling the script phase was successful). + exit 0 +fi + +echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" +mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + +COCOAPODS_PARALLEL_CODE_SIGN="${COCOAPODS_PARALLEL_CODE_SIGN:-false}" +SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" + +# Used as a return value for each invocation of `strip_invalid_archs` function. +STRIP_BINARY_RETVAL=0 + +# This protects against multiple targets copying the same framework dependency at the same time. The solution +# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html +RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") + +# Copies and strips a vendored framework +install_framework() +{ + if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then + local source="${BUILT_PRODUCTS_DIR}/$1" + elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then + local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")" + elif [ -r "$1" ]; then + local source="$1" + fi + + local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + + if [ -L "${source}" ]; then + echo "Symlinked..." + source="$(readlink "${source}")" + fi + + # Use filter instead of exclude so missing patterns don't throw errors. + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" + + local basename + basename="$(basename -s .framework "$1")" + binary="${destination}/${basename}.framework/${basename}" + + if ! [ -r "$binary" ]; then + binary="${destination}/${basename}" + elif [ -L "${binary}" ]; then + echo "Destination binary is symlinked..." + dirname="$(dirname "${binary}")" + binary="${dirname}/$(readlink "${binary}")" + fi + + # Strip invalid architectures so "fat" simulator / device frameworks work on device + if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then + strip_invalid_archs "$binary" + fi + + # Resign the code if required by the build settings to avoid unstable apps + code_sign_if_enabled "${destination}/$(basename "$1")" + + # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7. + if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then + local swift_runtime_libs + swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u) + for lib in $swift_runtime_libs; do + echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" + rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" + code_sign_if_enabled "${destination}/${lib}" + done + fi +} + +# Copies and strips a vendored dSYM +install_dsym() { + local source="$1" + warn_missing_arch=${2:-true} + if [ -r "$source" ]; then + # Copy the dSYM into the targets temp dir. + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}" + + local basename + basename="$(basename -s .dSYM "$source")" + binary_name="$(ls "$source/Contents/Resources/DWARF")" + binary="${DERIVED_FILES_DIR}/${basename}.dSYM/Contents/Resources/DWARF/${binary_name}" + + # Strip invalid architectures so "fat" simulator / device frameworks work on device + if [[ "$(file "$binary")" == *"Mach-O "*"dSYM companion"* ]]; then + strip_invalid_archs "$binary" "$warn_missing_arch" + fi + + if [[ $STRIP_BINARY_RETVAL == 1 ]]; then + # Move the stripped file into its final destination. + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.dSYM" "${DWARF_DSYM_FOLDER_PATH}" + else + # The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing. + touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.dSYM" + fi + fi +} + +# Copies the bcsymbolmap files of a vendored framework +install_bcsymbolmap() { + local bcsymbolmap_path="$1" + local destination="${BUILT_PRODUCTS_DIR}" + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}" +} + +# Signs a framework with the provided identity +code_sign_if_enabled() { + if [ -n "${EXPANDED_CODE_SIGN_IDENTITY:-}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then + # Use the current code_sign_identity + echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" + local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'" + + if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then + code_sign_cmd="$code_sign_cmd &" + fi + echo "$code_sign_cmd" + eval "$code_sign_cmd" + fi +} + +# Strip invalid architectures +strip_invalid_archs() { + binary="$1" + warn_missing_arch=${2:-true} + # Get architectures for current target binary + binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)" + # Intersect them with the architectures we are building for + intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)" + # If there are no archs supported by this binary then warn the user + if [[ -z "$intersected_archs" ]]; then + if [[ "$warn_missing_arch" == "true" ]]; then + echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)." + fi + STRIP_BINARY_RETVAL=0 + return + fi + stripped="" + for arch in $binary_archs; do + if ! [[ "${ARCHS}" == *"$arch"* ]]; then + # Strip non-valid architectures in-place + lipo -remove "$arch" -output "$binary" "$binary" + stripped="$stripped $arch" + fi + done + if [[ "$stripped" ]]; then + echo "Stripped $binary of architectures:$stripped" + fi + STRIP_BINARY_RETVAL=1 +} + +install_artifact() { + artifact="$1" + base="$(basename "$artifact")" + case $base in + *.framework) + install_framework "$artifact" + ;; + *.dSYM) + # Suppress arch warnings since XCFrameworks will include many dSYM files + install_dsym "$artifact" "false" + ;; + *.bcsymbolmap) + install_bcsymbolmap "$artifact" + ;; + *) + echo "error: Unrecognized artifact "$artifact"" + ;; + esac +} + +copy_artifacts() { + file_list="$1" + while read artifact; do + install_artifact "$artifact" + done <$file_list +} + +ARTIFACT_LIST_FILE="${BUILT_PRODUCTS_DIR}/cocoapods-artifacts-${CONFIGURATION}.txt" +if [ -r "${ARTIFACT_LIST_FILE}" ]; then + copy_artifacts "${ARTIFACT_LIST_FILE}" +fi + +if [[ "$CONFIGURATION" == "Debug" ]]; then + install_framework "${BUILT_PRODUCTS_DIR}/Flurry-iOS-SDK/Flurry_iOS_SDK.framework" +fi +if [[ "$CONFIGURATION" == "Release" ]]; then + install_framework "${BUILT_PRODUCTS_DIR}/Flurry-iOS-SDK/Flurry_iOS_SDK.framework" +fi +if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then + wait +fi diff --git a/Pods/Target Support Files/Pods-DateDots/Pods-DateDots-umbrella.h b/Pods/Target Support Files/Pods-DateDots/Pods-DateDots-umbrella.h new file mode 100644 index 0000000..4d0a77e --- /dev/null +++ b/Pods/Target Support Files/Pods-DateDots/Pods-DateDots-umbrella.h @@ -0,0 +1,16 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + + +FOUNDATION_EXPORT double Pods_DateDotsVersionNumber; +FOUNDATION_EXPORT const unsigned char Pods_DateDotsVersionString[]; + diff --git a/Pods/Target Support Files/Pods-DateDots/Pods-DateDots.debug.xcconfig b/Pods/Target Support Files/Pods-DateDots/Pods-DateDots.debug.xcconfig new file mode 100644 index 0000000..f35042a --- /dev/null +++ b/Pods/Target Support Files/Pods-DateDots/Pods-DateDots.debug.xcconfig @@ -0,0 +1,14 @@ +EXCLUDED_ARCHS[sdk=appletvsimulator*] = arm64 +EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64 +EXCLUDED_ARCHS[sdk=watchsimulator*] = arm64 +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Flurry-iOS-SDK" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Flurry-iOS-SDK/Flurry_iOS_SDK.framework/Headers" +LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' +LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Flurry-iOS-SDK/Flurry" +OTHER_LDFLAGS = $(inherited) -ObjC -framework "Flurry_iOS_SDK" -framework "Foundation" -framework "Security" -framework "SystemConfiguration" -framework "UIKit" +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_PODFILE_DIR_PATH = ${SRCROOT}/. +PODS_ROOT = ${SRCROOT}/Pods +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/Pods-DateDots/Pods-DateDots.modulemap b/Pods/Target Support Files/Pods-DateDots/Pods-DateDots.modulemap new file mode 100644 index 0000000..e065b3a --- /dev/null +++ b/Pods/Target Support Files/Pods-DateDots/Pods-DateDots.modulemap @@ -0,0 +1,6 @@ +framework module Pods_DateDots { + umbrella header "Pods-DateDots-umbrella.h" + + export * + module * { export * } +} diff --git a/Pods/Target Support Files/Pods-DateDots/Pods-DateDots.release.xcconfig b/Pods/Target Support Files/Pods-DateDots/Pods-DateDots.release.xcconfig new file mode 100644 index 0000000..f35042a --- /dev/null +++ b/Pods/Target Support Files/Pods-DateDots/Pods-DateDots.release.xcconfig @@ -0,0 +1,14 @@ +EXCLUDED_ARCHS[sdk=appletvsimulator*] = arm64 +EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64 +EXCLUDED_ARCHS[sdk=watchsimulator*] = arm64 +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Flurry-iOS-SDK" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Flurry-iOS-SDK/Flurry_iOS_SDK.framework/Headers" +LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' +LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Flurry-iOS-SDK/Flurry" +OTHER_LDFLAGS = $(inherited) -ObjC -framework "Flurry_iOS_SDK" -framework "Foundation" -framework "Security" -framework "SystemConfiguration" -framework "UIKit" +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_PODFILE_DIR_PATH = ${SRCROOT}/. +PODS_ROOT = ${SRCROOT}/Pods +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/Pods-DateDotsTests/Pods-DateDotsTests-Info.plist b/Pods/Target Support Files/Pods-DateDotsTests/Pods-DateDotsTests-Info.plist new file mode 100644 index 0000000..2243fe6 --- /dev/null +++ b/Pods/Target Support Files/Pods-DateDotsTests/Pods-DateDotsTests-Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Pods/Target Support Files/Pods-DateDotsTests/Pods-DateDotsTests-acknowledgements.markdown b/Pods/Target Support Files/Pods-DateDotsTests/Pods-DateDotsTests-acknowledgements.markdown new file mode 100644 index 0000000..102af75 --- /dev/null +++ b/Pods/Target Support Files/Pods-DateDotsTests/Pods-DateDotsTests-acknowledgements.markdown @@ -0,0 +1,3 @@ +# Acknowledgements +This application makes use of the following third party libraries: +Generated by CocoaPods - https://cocoapods.org diff --git a/Pods/Target Support Files/Pods-DateDotsTests/Pods-DateDotsTests-acknowledgements.plist b/Pods/Target Support Files/Pods-DateDotsTests/Pods-DateDotsTests-acknowledgements.plist new file mode 100644 index 0000000..7acbad1 --- /dev/null +++ b/Pods/Target Support Files/Pods-DateDotsTests/Pods-DateDotsTests-acknowledgements.plist @@ -0,0 +1,29 @@ + + + + + PreferenceSpecifiers + + + FooterText + This application makes use of the following third party libraries: + Title + Acknowledgements + Type + PSGroupSpecifier + + + FooterText + Generated by CocoaPods - https://cocoapods.org + Title + + Type + PSGroupSpecifier + + + StringsTable + Acknowledgements + Title + Acknowledgements + + diff --git a/Pods/Target Support Files/Pods-DateDotsTests/Pods-DateDotsTests-dummy.m b/Pods/Target Support Files/Pods-DateDotsTests/Pods-DateDotsTests-dummy.m new file mode 100644 index 0000000..391d1b2 --- /dev/null +++ b/Pods/Target Support Files/Pods-DateDotsTests/Pods-DateDotsTests-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_Pods_DateDotsTests : NSObject +@end +@implementation PodsDummy_Pods_DateDotsTests +@end diff --git a/Pods/Target Support Files/Pods-DateDotsTests/Pods-DateDotsTests-umbrella.h b/Pods/Target Support Files/Pods-DateDotsTests/Pods-DateDotsTests-umbrella.h new file mode 100644 index 0000000..b57f151 --- /dev/null +++ b/Pods/Target Support Files/Pods-DateDotsTests/Pods-DateDotsTests-umbrella.h @@ -0,0 +1,16 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + + +FOUNDATION_EXPORT double Pods_DateDotsTestsVersionNumber; +FOUNDATION_EXPORT const unsigned char Pods_DateDotsTestsVersionString[]; + diff --git a/Pods/Target Support Files/Pods-DateDotsTests/Pods-DateDotsTests.debug.xcconfig b/Pods/Target Support Files/Pods-DateDotsTests/Pods-DateDotsTests.debug.xcconfig new file mode 100644 index 0000000..c36b5f1 --- /dev/null +++ b/Pods/Target Support Files/Pods-DateDotsTests/Pods-DateDotsTests.debug.xcconfig @@ -0,0 +1,12 @@ +EXCLUDED_ARCHS[sdk=appletvsimulator*] = arm64 +EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64 +EXCLUDED_ARCHS[sdk=watchsimulator*] = arm64 +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Flurry-iOS-SDK" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Flurry-iOS-SDK/Flurry_iOS_SDK.framework/Headers" +OTHER_LDFLAGS = $(inherited) -framework "Flurry_iOS_SDK" -framework "Foundation" -framework "Security" -framework "SystemConfiguration" -framework "UIKit" +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_PODFILE_DIR_PATH = ${SRCROOT}/. +PODS_ROOT = ${SRCROOT}/Pods +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/Pods-DateDotsTests/Pods-DateDotsTests.modulemap b/Pods/Target Support Files/Pods-DateDotsTests/Pods-DateDotsTests.modulemap new file mode 100644 index 0000000..4e27afa --- /dev/null +++ b/Pods/Target Support Files/Pods-DateDotsTests/Pods-DateDotsTests.modulemap @@ -0,0 +1,6 @@ +framework module Pods_DateDotsTests { + umbrella header "Pods-DateDotsTests-umbrella.h" + + export * + module * { export * } +} diff --git a/Pods/Target Support Files/Pods-DateDotsTests/Pods-DateDotsTests.release.xcconfig b/Pods/Target Support Files/Pods-DateDotsTests/Pods-DateDotsTests.release.xcconfig new file mode 100644 index 0000000..c36b5f1 --- /dev/null +++ b/Pods/Target Support Files/Pods-DateDotsTests/Pods-DateDotsTests.release.xcconfig @@ -0,0 +1,12 @@ +EXCLUDED_ARCHS[sdk=appletvsimulator*] = arm64 +EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64 +EXCLUDED_ARCHS[sdk=watchsimulator*] = arm64 +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Flurry-iOS-SDK" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Flurry-iOS-SDK/Flurry_iOS_SDK.framework/Headers" +OTHER_LDFLAGS = $(inherited) -framework "Flurry_iOS_SDK" -framework "Foundation" -framework "Security" -framework "SystemConfiguration" -framework "UIKit" +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_PODFILE_DIR_PATH = ${SRCROOT}/. +PODS_ROOT = ${SRCROOT}/Pods +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES