diff --git a/Example/NSFWDetector.xcodeproj/project.pbxproj b/Example/NSFWDetector.xcodeproj/project.pbxproj index 1410b8c..acedba0 100644 --- a/Example/NSFWDetector.xcodeproj/project.pbxproj +++ b/Example/NSFWDetector.xcodeproj/project.pbxproj @@ -216,7 +216,7 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0830; - LastUpgradeCheck = 1010; + LastUpgradeCheck = 1300; ORGANIZATIONNAME = LOVOO; TargetAttributes = { 607FACCF1AFB9204008FA782 = { @@ -235,6 +235,7 @@ developmentRegion = English; hasScannedForEncodings = 0; knownRegions = ( + English, en, Base, ); @@ -313,7 +314,7 @@ files = ( ); inputPaths = ( - "${SRCROOT}/Pods/Target Support Files/Pods-NSFWDetector_Example/Pods-NSFWDetector_Example-frameworks.sh", + "${PODS_ROOT}/Target Support Files/Pods-NSFWDetector_Example/Pods-NSFWDetector_Example-frameworks.sh", "${BUILT_PRODUCTS_DIR}/NSFWDetector/NSFWDetector.framework", ); name = "[CP] Embed Pods Frameworks"; @@ -322,7 +323,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-NSFWDetector_Example/Pods-NSFWDetector_Example-frameworks.sh\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-NSFWDetector_Example/Pods-NSFWDetector_Example-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; /* End PBXShellScriptBuildPhase section */ @@ -381,6 +382,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; @@ -399,6 +401,7 @@ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; @@ -424,7 +427,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.3; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -437,6 +440,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; @@ -455,6 +459,7 @@ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; @@ -473,7 +478,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.3; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; diff --git a/Example/NSFWDetector.xcodeproj/xcshareddata/xcschemes/NSFWDetector-Example.xcscheme b/Example/NSFWDetector.xcodeproj/xcshareddata/xcschemes/NSFWDetector-Example.xcscheme index a06b810..f0204fb 100644 --- a/Example/NSFWDetector.xcodeproj/xcshareddata/xcschemes/NSFWDetector-Example.xcscheme +++ b/Example/NSFWDetector.xcodeproj/xcshareddata/xcschemes/NSFWDetector-Example.xcscheme @@ -1,6 +1,6 @@ + + + + @@ -53,17 +62,6 @@ - - - - - - - - 0.8 { + if confidence > 0.9 { self.subsequentPositiveDetections += 1 guard self.subsequentPositiveDetections > 3 else { diff --git a/Example/NSFWDetector/ImageViewController.swift b/Example/NSFWDetector/ImageViewController.swift index 98f383f..a1c19f1 100644 --- a/Example/NSFWDetector/ImageViewController.swift +++ b/Example/NSFWDetector/ImageViewController.swift @@ -24,14 +24,14 @@ class ImageViewController: UIViewController { self.blurView.layer.cornerRadius = 10.0 self.blurView.clipsToBounds = true - guard let image = self.image else { + guard let image = self.image, let cgImage = image.cgImage else { self.nsfwLabel.text = "No Image selected." return } self.imageView.image = image - NSFWDetector.shared.check(image: image) { result in + NSFWDetector.shared.check(cgImage: cgImage) { result in switch result { case .error: self.nsfwLabel.text = "Detection failed" diff --git a/Example/Podfile.lock b/Example/Podfile.lock index dd4e2f8..725cacf 100644 --- a/Example/Podfile.lock +++ b/Example/Podfile.lock @@ -1,5 +1,5 @@ PODS: - - NSFWDetector (1.1.0) + - NSFWDetector (2.0.0) DEPENDENCIES: - NSFWDetector (from `../`) @@ -9,8 +9,8 @@ EXTERNAL SOURCES: :path: "../" SPEC CHECKSUMS: - NSFWDetector: 5158164f5e716652aa61cfa92dc7b252a6883415 + NSFWDetector: 6847237b1f515548fce78027274d85ee37fa390a PODFILE CHECKSUM: f9a9c6821210dfbaf2efbedd233ddc769e77db55 -COCOAPODS: 1.5.3 +COCOAPODS: 1.10.2 diff --git a/Example/Pods/Local Podspecs/NSFWDetector.podspec.json b/Example/Pods/Local Podspecs/NSFWDetector.podspec.json index 21be8fe..f0f4278 100644 --- a/Example/Pods/Local Podspecs/NSFWDetector.podspec.json +++ b/Example/Pods/Local Podspecs/NSFWDetector.podspec.json @@ -1,8 +1,8 @@ { "name": "NSFWDetector", - "version": "1.1.0", + "version": "2.0.0", "summary": "NSFW Content Detection aká porn detection with CoreML.", - "swift_version": "4.0", + "swift_versions": "5.0", "description": "Lightweight Library for scanning images for NSFW (Not Safe For Work) content.", "homepage": "https://github.com/lovoo/NSFWDetector", "license": { @@ -14,13 +14,15 @@ }, "source": { "git": "https://github.com/lovoo/NSFWDetector.git", - "tag": "1.1.0" + "tag": "2.0.0" }, "platforms": { - "ios": "8.0" + "ios": "12.0", + "osx": "10.14" }, "pod_target_xcconfig": { "COREML_CODEGEN_LANGUAGE": "Swift" }, - "source_files": "NSFWDetector/Classes/**/*" + "source_files": "NSFWDetector/Classes/**/*", + "swift_version": "5.0" } diff --git a/Example/Pods/Manifest.lock b/Example/Pods/Manifest.lock index dd4e2f8..725cacf 100644 --- a/Example/Pods/Manifest.lock +++ b/Example/Pods/Manifest.lock @@ -1,5 +1,5 @@ PODS: - - NSFWDetector (1.1.0) + - NSFWDetector (2.0.0) DEPENDENCIES: - NSFWDetector (from `../`) @@ -9,8 +9,8 @@ EXTERNAL SOURCES: :path: "../" SPEC CHECKSUMS: - NSFWDetector: 5158164f5e716652aa61cfa92dc7b252a6883415 + NSFWDetector: 6847237b1f515548fce78027274d85ee37fa390a PODFILE CHECKSUM: f9a9c6821210dfbaf2efbedd233ddc769e77db55 -COCOAPODS: 1.5.3 +COCOAPODS: 1.10.2 diff --git a/Example/Pods/Pods.xcodeproj/project.pbxproj b/Example/Pods/Pods.xcodeproj/project.pbxproj index 07d10d0..be0d0c6 100644 --- a/Example/Pods/Pods.xcodeproj/project.pbxproj +++ b/Example/Pods/Pods.xcodeproj/project.pbxproj @@ -7,359 +7,356 @@ objects = { /* Begin PBXBuildFile section */ - 058DA4F164365B0F9E9AEE04DDB5B784 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D6DFF15000AFE2A371BF499E7AFDA808 /* Foundation.framework */; }; - 1C9B832CAA1A122C1406698A4108CF2C /* NSFWDetector-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = F9EAC2B72D7E6900B6E05AA073BD8546 /* NSFWDetector-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 447F9E6D28B90CEBB3A345BBDD347794 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D6DFF15000AFE2A371BF499E7AFDA808 /* Foundation.framework */; }; - 48CBEDC485DC41F18136676740383A9D /* Pods-NSFWDetector_Example-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 4476FBE390D23171F8E45109291DACA3 /* Pods-NSFWDetector_Example-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4996BADF92A43AA6744573D6192C21C0 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D6DFF15000AFE2A371BF499E7AFDA808 /* Foundation.framework */; }; - 4B56C07A94AE579E5E37768CA42110A7 /* Pods-NSFWDetector_Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = AA8C8A2B70F578E9C6A8FFE4213AA7A4 /* Pods-NSFWDetector_Tests-dummy.m */; }; - 5D8D2FF54D91A7A1C8DC8148C94B5E18 /* NSFW.mlmodel in Sources */ = {isa = PBXBuildFile; fileRef = 0FDCA508C5276F0D6F37E469361D7954 /* NSFW.mlmodel */; }; - 753BF02173B78BCD20FDB46BF569DA92 /* NSFWDetector-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E6377FE43EBEE064F1155E628FD8EC5 /* NSFWDetector-dummy.m */; }; - A88F3068E4D9A55B8654589F2CFC2763 /* NSFWDetector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F0145ACD138AF7AF970470504934DCC /* NSFWDetector.swift */; }; - D6F636C9B6DE5CA559693A05F6654E9F /* Pods-NSFWDetector_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F020C598E66719881DD23E7C4B80E85E /* Pods-NSFWDetector_Example-dummy.m */; }; - F754DD38791AA3C60AAE90400FEA392C /* Pods-NSFWDetector_Tests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 93C1AAB7CE3EB9AAE770F71C92CCEDDD /* Pods-NSFWDetector_Tests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1C701FF725A25622F0F1110870547EF9 /* NSFWDetector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6B1BA8B166CD9D109E4642B8850D243F /* NSFWDetector.swift */; }; + 2E7C7ED70BF3063282E7B76CD314A37F /* Pods-NSFWDetector_Example-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = B4C7BDD8324334891F4947F134A2FDE2 /* Pods-NSFWDetector_Example-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4C60C89568429EB430F940764E586D11 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 73010CC983E3809BECEE5348DA1BB8C6 /* Foundation.framework */; }; + 9AFB92DBF760B7095F404A7FD7A50E9E /* Pods-NSFWDetector_Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 73F3DAD0F5C2675E3D3C53B7BAFD2266 /* Pods-NSFWDetector_Tests-dummy.m */; }; + 9C90840EA99F7B7E7EA53F9C28B04CD5 /* NSFWDetector-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 59AB63F0F71AD6A4B42E71F42FB80E11 /* NSFWDetector-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + ACD74F723E233D815F954DFD4D64AA89 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 73010CC983E3809BECEE5348DA1BB8C6 /* Foundation.framework */; }; + B6C3389218BDC95BD48758DE655A6075 /* NSFWDetector-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D8367FFBFB06AEB54033F85C689FC320 /* NSFWDetector-dummy.m */; }; + CF468C03E00CE2C5132F173391093034 /* Pods-NSFWDetector_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 900FCDD4414AF9A4775D36B00138A5B9 /* Pods-NSFWDetector_Example-dummy.m */; }; + D6D6261467FF1CB65817ACEB9221DD14 /* Pods-NSFWDetector_Tests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 1BE64A8CEE45A32ACE0C7335717BAFDC /* Pods-NSFWDetector_Tests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E081FFE5A3DE0B4A3C83E6394945FA7C /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 73010CC983E3809BECEE5348DA1BB8C6 /* Foundation.framework */; }; + EBC1508FA940DE15BCD7C1E3E3F4EC9E /* NSFW.mlmodel in Sources */ = {isa = PBXBuildFile; fileRef = 04A123090715C4A7674D964724C2E117 /* NSFW.mlmodel */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 8B5CF2DD7891413F51523A60DBD658F3 /* PBXContainerItemProxy */ = { + 592746A4790EA2917B935A4075EBDE24 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = CCB01C32DA2F6F5A5909511EF5102C35; - remoteInfo = "Pods-NSFWDetector_Example"; + remoteGlobalIDString = E548F4EE14CE8824EEE4D804A2E44F76; + remoteInfo = NSFWDetector; }; - ECBDF2E4306AE5316AE4566289C35DA5 /* PBXContainerItemProxy */ = { + 9737AC41C2E3D3183F38DA60E773B99C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 31483F0FD303E196812D264EB6E24D35; - remoteInfo = NSFWDetector; + remoteGlobalIDString = 4C8A20B0C86D06C23D019236AD933367; + remoteInfo = "Pods-NSFWDetector_Example"; }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 0E6377FE43EBEE064F1155E628FD8EC5 /* NSFWDetector-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "NSFWDetector-dummy.m"; sourceTree = ""; }; - 0FDCA508C5276F0D6F37E469361D7954 /* NSFW.mlmodel */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = file.mlmodel; name = NSFW.mlmodel; path = NSFWDetector/Classes/NSFW.mlmodel; sourceTree = ""; }; - 20FA1DBEE5C0884926A3ECE2ED7AE45A /* Pods-NSFWDetector_Tests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-NSFWDetector_Tests-frameworks.sh"; sourceTree = ""; }; - 21C268F6CF5F76DFA73799FA11DBB542 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 2F0145ACD138AF7AF970470504934DCC /* NSFWDetector.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NSFWDetector.swift; path = NSFWDetector/Classes/NSFWDetector.swift; sourceTree = ""; }; - 3BD6B71BD5B8F921E8FDAF97D98E2B7C /* Pods-NSFWDetector_Tests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-NSFWDetector_Tests.modulemap"; sourceTree = ""; }; - 4476FBE390D23171F8E45109291DACA3 /* Pods-NSFWDetector_Example-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-NSFWDetector_Example-umbrella.h"; sourceTree = ""; }; - 4B2818E3E6F16E11A70A4D4DDC26059B /* Pods-NSFWDetector_Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-NSFWDetector_Tests-acknowledgements.markdown"; sourceTree = ""; }; - 5DF00F5E7DBCC533E3523FEA6DF6A99C /* Pods-NSFWDetector_Example-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-NSFWDetector_Example-resources.sh"; sourceTree = ""; }; - 826E9CFC27A4EF86FB8C893D1706E9FF /* NSFWDetector.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = NSFWDetector.modulemap; sourceTree = ""; }; - 869A6A380E055C3841ECAF8A28C80836 /* Pods_NSFWDetector_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_NSFWDetector_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 8BAAF73172BD7D5E9D5D18FBBD4640AC /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 91A362C3ED42F5A100854E8A10D75ED6 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; - 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 93C1AAB7CE3EB9AAE770F71C92CCEDDD /* Pods-NSFWDetector_Tests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-NSFWDetector_Tests-umbrella.h"; sourceTree = ""; }; - A00602ADBA0723ED3C1DF11E74EBD21D /* Pods-NSFWDetector_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-NSFWDetector_Tests.release.xcconfig"; sourceTree = ""; }; - A12FB21A4788E71F807148DE20A5B73F /* Pods-NSFWDetector_Example.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-NSFWDetector_Example.modulemap"; sourceTree = ""; }; - A4B86905320947DD288F3B825F23E43E /* Pods-NSFWDetector_Tests-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-NSFWDetector_Tests-resources.sh"; sourceTree = ""; }; - A65B30A8AC831DC07EFD8EF9E23AEF22 /* NSFWDetector.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; path = NSFWDetector.podspec; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - AA8C8A2B70F578E9C6A8FFE4213AA7A4 /* Pods-NSFWDetector_Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-NSFWDetector_Tests-dummy.m"; sourceTree = ""; }; - AE5ED4392211E6EEA88D73F9F07631B6 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - B5F592582751720B5A41E8B1F3B4D050 /* Pods-NSFWDetector_Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-NSFWDetector_Example-acknowledgements.markdown"; sourceTree = ""; }; - B69884811402406E84C0ED2644B6C2EA /* Pods-NSFWDetector_Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-NSFWDetector_Tests-acknowledgements.plist"; sourceTree = ""; }; - BDBAFDBA2EF0D83A177D050B45E73260 /* NSFWDetector.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = NSFWDetector.xcconfig; sourceTree = ""; }; - BDD8805BA71D6D3B2B8F2A9E1B77D491 /* Pods-NSFWDetector_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-NSFWDetector_Tests.debug.xcconfig"; sourceTree = ""; }; - C9DCA20FC4D25826D43F045E791ED7E0 /* NSFWDetector.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = NSFWDetector.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - D01FF1DD663A1BC147F9995E4C6B7630 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; - D1BD50EA8994D4C7E15DC855D3772E61 /* NSFWDetector-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NSFWDetector-prefix.pch"; sourceTree = ""; }; - D6DFF15000AFE2A371BF499E7AFDA808 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - DAF5CCBC36B94DCADC848EAC7BC1B5E8 /* Pods-NSFWDetector_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-NSFWDetector_Example.release.xcconfig"; sourceTree = ""; }; - E6D48D7DD019B5FE8DE66C480742BDF4 /* Pods-NSFWDetector_Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-NSFWDetector_Example-acknowledgements.plist"; sourceTree = ""; }; - EEF25B843A87922F30AE1D08D800A60C /* Pods-NSFWDetector_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-NSFWDetector_Example.debug.xcconfig"; sourceTree = ""; }; - F020C598E66719881DD23E7C4B80E85E /* Pods-NSFWDetector_Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-NSFWDetector_Example-dummy.m"; sourceTree = ""; }; - F24A8389209A90173F4DE430A9432A91 /* Pods_NSFWDetector_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_NSFWDetector_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - F9EAC2B72D7E6900B6E05AA073BD8546 /* NSFWDetector-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NSFWDetector-umbrella.h"; sourceTree = ""; }; - FAA74F891B26FB51AA20A73177812646 /* Pods-NSFWDetector_Example-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-NSFWDetector_Example-frameworks.sh"; sourceTree = ""; }; + 01D2C7795E5315323E0CE4BB182E4A8F /* NSFWDetector.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = NSFWDetector.release.xcconfig; sourceTree = ""; }; + 04A123090715C4A7674D964724C2E117 /* NSFW.mlmodel */ = {isa = PBXFileReference; includeInIndex = 1; name = NSFW.mlmodel; path = NSFWDetector/Classes/NSFW.mlmodel; sourceTree = ""; }; + 09C0B57ACE3F7CB2B126814F90CE9451 /* Pods-NSFWDetector_Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-NSFWDetector_Example-acknowledgements.markdown"; sourceTree = ""; }; + 159FFAD0CCFDFC8038694148BA3249BE /* NSFWDetector.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = NSFWDetector.debug.xcconfig; sourceTree = ""; }; + 1BE64A8CEE45A32ACE0C7335717BAFDC /* Pods-NSFWDetector_Tests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-NSFWDetector_Tests-umbrella.h"; sourceTree = ""; }; + 22A40A5A84AAA975C7024E663311FDBE /* Pods-NSFWDetector_Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-NSFWDetector_Tests-acknowledgements.markdown"; sourceTree = ""; }; + 44737A8AE31AE8963A977C6507989ED1 /* NSFWDetector-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NSFWDetector-prefix.pch"; sourceTree = ""; }; + 4B64CE8111C38C521A760232A4A4C447 /* Pods-NSFWDetector_Example-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-NSFWDetector_Example-Info.plist"; sourceTree = ""; }; + 4F8236CE8ACB7F21E2F1C5148E89DEDE /* Pods-NSFWDetector_Example-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-NSFWDetector_Example-frameworks.sh"; sourceTree = ""; }; + 59AB63F0F71AD6A4B42E71F42FB80E11 /* NSFWDetector-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NSFWDetector-umbrella.h"; sourceTree = ""; }; + 6A251108BA542D63E954AAE5AC437E39 /* Pods-NSFWDetector_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-NSFWDetector_Tests.release.xcconfig"; sourceTree = ""; }; + 6B1BA8B166CD9D109E4642B8850D243F /* NSFWDetector.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NSFWDetector.swift; path = NSFWDetector/Classes/NSFWDetector.swift; sourceTree = ""; }; + 73010CC983E3809BECEE5348DA1BB8C6 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + 73F3DAD0F5C2675E3D3C53B7BAFD2266 /* Pods-NSFWDetector_Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-NSFWDetector_Tests-dummy.m"; sourceTree = ""; }; + 742E73A9A3A2AE5DAE1C23ACFA3FFDD4 /* Pods-NSFWDetector_Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-NSFWDetector_Example-acknowledgements.plist"; sourceTree = ""; }; + 78416EDD74BAF43F5ABA0F8D204878B6 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = ""; }; + 88F3AF50B0BCBB734BE899F239D55664 /* Pods-NSFWDetector_Tests-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-NSFWDetector_Tests-Info.plist"; sourceTree = ""; }; + 8D33AAD466E1FC6D5110E6F7E215C46F /* Pods-NSFWDetector_Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-NSFWDetector_Tests-acknowledgements.plist"; sourceTree = ""; }; + 900FCDD4414AF9A4775D36B00138A5B9 /* Pods-NSFWDetector_Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-NSFWDetector_Example-dummy.m"; sourceTree = ""; }; + 98CB33317F43BA3BE4F9561718828D13 /* NSFWDetector-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "NSFWDetector-Info.plist"; 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; }; + A3BE7B2FFFBA8185335980541CF17CD8 /* Pods-NSFWDetector_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-NSFWDetector_Example.debug.xcconfig"; sourceTree = ""; }; + A728F6D770ECDC513BE37774BE96BDEC /* Pods-NSFWDetector_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-NSFWDetector_Tests.debug.xcconfig"; sourceTree = ""; }; + AC8A798A13D10710D7B07E24F8D03F2C /* NSFWDetector.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = NSFWDetector.modulemap; sourceTree = ""; }; + B4C7BDD8324334891F4947F134A2FDE2 /* Pods-NSFWDetector_Example-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-NSFWDetector_Example-umbrella.h"; sourceTree = ""; }; + B728A55AA7AE77563F85FBFD5AF7AD1E /* NSFWDetector.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = NSFWDetector.framework; path = NSFWDetector.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + BEE070E1ACADE3B4E66F15B7B24F03E6 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = ""; }; + C3481A79D0A707B02905D56920039064 /* NSFWDetector.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = NSFWDetector.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + C86E7761A7937A252BE3D3C3B757F610 /* Pods-NSFWDetector_Example.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-NSFWDetector_Example.modulemap"; sourceTree = ""; }; + CD405DB6BD029D343FB9E74620C73A6A /* Pods-NSFWDetector_Tests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-NSFWDetector_Tests.modulemap"; sourceTree = ""; }; + D8367FFBFB06AEB54033F85C689FC320 /* NSFWDetector-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "NSFWDetector-dummy.m"; sourceTree = ""; }; + D8C08DE9574B897C23DDF4749FA721F8 /* Pods-NSFWDetector_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-NSFWDetector_Example.release.xcconfig"; sourceTree = ""; }; + F0CA9AA0CF65A2DDE32ED5C51EB39F32 /* Pods_NSFWDetector_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_NSFWDetector_Tests.framework; path = "Pods-NSFWDetector_Tests.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + F557A677B79BF82DFAE8C38F524EE26F /* Pods_NSFWDetector_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_NSFWDetector_Example.framework; path = "Pods-NSFWDetector_Example.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 856FB259F564B47E504DA8ACCB3237C7 /* Frameworks */ = { + 3E3866AD08C757961F66E1A31FFEDCCC /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 4996BADF92A43AA6744573D6192C21C0 /* Foundation.framework in Frameworks */, + E081FFE5A3DE0B4A3C83E6394945FA7C /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - A3F08E91F5AE6F6307DD8F10F20B034B /* Frameworks */ = { + 6ECB9006F81DAF5DDBF991634B648EBC /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 058DA4F164365B0F9E9AEE04DDB5B784 /* Foundation.framework in Frameworks */, + 4C60C89568429EB430F940764E586D11 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - FFCA68AA6DF9D7D5FB1069D2031852E8 /* Frameworks */ = { + FA3CDD4F053C737B12575625C1FCF782 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 447F9E6D28B90CEBB3A345BBDD347794 /* Foundation.framework in Frameworks */, + ACD74F723E233D815F954DFD4D64AA89 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 01DCF8239E9E04F3A3443D44173F1A21 /* Pods-NSFWDetector_Example */ = { + 2AF7EF366850253EFBCB10FDBAC302D6 /* NSFWDetector */ = { isa = PBXGroup; children = ( - 8BAAF73172BD7D5E9D5D18FBBD4640AC /* Info.plist */, - A12FB21A4788E71F807148DE20A5B73F /* Pods-NSFWDetector_Example.modulemap */, - B5F592582751720B5A41E8B1F3B4D050 /* Pods-NSFWDetector_Example-acknowledgements.markdown */, - E6D48D7DD019B5FE8DE66C480742BDF4 /* Pods-NSFWDetector_Example-acknowledgements.plist */, - F020C598E66719881DD23E7C4B80E85E /* Pods-NSFWDetector_Example-dummy.m */, - FAA74F891B26FB51AA20A73177812646 /* Pods-NSFWDetector_Example-frameworks.sh */, - 5DF00F5E7DBCC533E3523FEA6DF6A99C /* Pods-NSFWDetector_Example-resources.sh */, - 4476FBE390D23171F8E45109291DACA3 /* Pods-NSFWDetector_Example-umbrella.h */, - EEF25B843A87922F30AE1D08D800A60C /* Pods-NSFWDetector_Example.debug.xcconfig */, - DAF5CCBC36B94DCADC848EAC7BC1B5E8 /* Pods-NSFWDetector_Example.release.xcconfig */, + 04A123090715C4A7674D964724C2E117 /* NSFW.mlmodel */, + 6B1BA8B166CD9D109E4642B8850D243F /* NSFWDetector.swift */, + F5B97D70A78F4DB73036AD6FD923DE03 /* Pod */, + ADEACDEC8AAD3A0F4A2B1AC49087902F /* Support Files */, ); - name = "Pods-NSFWDetector_Example"; - path = "Target Support Files/Pods-NSFWDetector_Example"; + name = NSFWDetector; + path = ../..; sourceTree = ""; }; - 1CC669A6D22A7B1D6CBA4745E444B354 /* Targets Support Files */ = { + 37E5A4DB5AE7E7648D9181ABFBD655E6 /* Products */ = { isa = PBXGroup; children = ( - 01DCF8239E9E04F3A3443D44173F1A21 /* Pods-NSFWDetector_Example */, - 31BE8575FA4F1D42901711493FBFA871 /* Pods-NSFWDetector_Tests */, + B728A55AA7AE77563F85FBFD5AF7AD1E /* NSFWDetector.framework */, + F557A677B79BF82DFAE8C38F524EE26F /* Pods_NSFWDetector_Example.framework */, + F0CA9AA0CF65A2DDE32ED5C51EB39F32 /* Pods_NSFWDetector_Tests.framework */, ); - name = "Targets Support Files"; + name = Products; sourceTree = ""; }; - 31BE8575FA4F1D42901711493FBFA871 /* Pods-NSFWDetector_Tests */ = { + 55BFF53C73B9FB54ADF351C2AB6F0F39 /* Pods-NSFWDetector_Example */ = { isa = PBXGroup; children = ( - AE5ED4392211E6EEA88D73F9F07631B6 /* Info.plist */, - 3BD6B71BD5B8F921E8FDAF97D98E2B7C /* Pods-NSFWDetector_Tests.modulemap */, - 4B2818E3E6F16E11A70A4D4DDC26059B /* Pods-NSFWDetector_Tests-acknowledgements.markdown */, - B69884811402406E84C0ED2644B6C2EA /* Pods-NSFWDetector_Tests-acknowledgements.plist */, - AA8C8A2B70F578E9C6A8FFE4213AA7A4 /* Pods-NSFWDetector_Tests-dummy.m */, - 20FA1DBEE5C0884926A3ECE2ED7AE45A /* Pods-NSFWDetector_Tests-frameworks.sh */, - A4B86905320947DD288F3B825F23E43E /* Pods-NSFWDetector_Tests-resources.sh */, - 93C1AAB7CE3EB9AAE770F71C92CCEDDD /* Pods-NSFWDetector_Tests-umbrella.h */, - BDD8805BA71D6D3B2B8F2A9E1B77D491 /* Pods-NSFWDetector_Tests.debug.xcconfig */, - A00602ADBA0723ED3C1DF11E74EBD21D /* Pods-NSFWDetector_Tests.release.xcconfig */, + C86E7761A7937A252BE3D3C3B757F610 /* Pods-NSFWDetector_Example.modulemap */, + 09C0B57ACE3F7CB2B126814F90CE9451 /* Pods-NSFWDetector_Example-acknowledgements.markdown */, + 742E73A9A3A2AE5DAE1C23ACFA3FFDD4 /* Pods-NSFWDetector_Example-acknowledgements.plist */, + 900FCDD4414AF9A4775D36B00138A5B9 /* Pods-NSFWDetector_Example-dummy.m */, + 4F8236CE8ACB7F21E2F1C5148E89DEDE /* Pods-NSFWDetector_Example-frameworks.sh */, + 4B64CE8111C38C521A760232A4A4C447 /* Pods-NSFWDetector_Example-Info.plist */, + B4C7BDD8324334891F4947F134A2FDE2 /* Pods-NSFWDetector_Example-umbrella.h */, + A3BE7B2FFFBA8185335980541CF17CD8 /* Pods-NSFWDetector_Example.debug.xcconfig */, + D8C08DE9574B897C23DDF4749FA721F8 /* Pods-NSFWDetector_Example.release.xcconfig */, ); - name = "Pods-NSFWDetector_Tests"; - path = "Target Support Files/Pods-NSFWDetector_Tests"; + name = "Pods-NSFWDetector_Example"; + path = "Target Support Files/Pods-NSFWDetector_Example"; sourceTree = ""; }; - 44D5347904CF754D6785B84253F2574A /* iOS */ = { + 578452D2E740E91742655AC8F1636D1F /* iOS */ = { isa = PBXGroup; children = ( - D6DFF15000AFE2A371BF499E7AFDA808 /* Foundation.framework */, + 73010CC983E3809BECEE5348DA1BB8C6 /* Foundation.framework */, ); name = iOS; sourceTree = ""; }; - 5CEE786571BD8C7295C308C43B534A1A /* Pod */ = { + 6B104EF24181A3F8284B2F4EEB41B683 /* Pods-NSFWDetector_Tests */ = { isa = PBXGroup; children = ( - D01FF1DD663A1BC147F9995E4C6B7630 /* LICENSE */, - A65B30A8AC831DC07EFD8EF9E23AEF22 /* NSFWDetector.podspec */, - 91A362C3ED42F5A100854E8A10D75ED6 /* README.md */, + CD405DB6BD029D343FB9E74620C73A6A /* Pods-NSFWDetector_Tests.modulemap */, + 22A40A5A84AAA975C7024E663311FDBE /* Pods-NSFWDetector_Tests-acknowledgements.markdown */, + 8D33AAD466E1FC6D5110E6F7E215C46F /* Pods-NSFWDetector_Tests-acknowledgements.plist */, + 73F3DAD0F5C2675E3D3C53B7BAFD2266 /* Pods-NSFWDetector_Tests-dummy.m */, + 88F3AF50B0BCBB734BE899F239D55664 /* Pods-NSFWDetector_Tests-Info.plist */, + 1BE64A8CEE45A32ACE0C7335717BAFDC /* Pods-NSFWDetector_Tests-umbrella.h */, + A728F6D770ECDC513BE37774BE96BDEC /* Pods-NSFWDetector_Tests.debug.xcconfig */, + 6A251108BA542D63E954AAE5AC437E39 /* Pods-NSFWDetector_Tests.release.xcconfig */, ); - name = Pod; + name = "Pods-NSFWDetector_Tests"; + path = "Target Support Files/Pods-NSFWDetector_Tests"; sourceTree = ""; }; - 7DB346D0F39D3F0E887471402A8071AB = { + ADEACDEC8AAD3A0F4A2B1AC49087902F /* Support Files */ = { isa = PBXGroup; children = ( - 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */, - C71DDE4E755043D990595D63404E1D31 /* Development Pods */, - BC3CA7F9E30CC8F7E2DD044DD34432FC /* Frameworks */, - A400141913355D29ABED4E13A384A9BC /* Products */, - 1CC669A6D22A7B1D6CBA4745E444B354 /* Targets Support Files */, + AC8A798A13D10710D7B07E24F8D03F2C /* NSFWDetector.modulemap */, + D8367FFBFB06AEB54033F85C689FC320 /* NSFWDetector-dummy.m */, + 98CB33317F43BA3BE4F9561718828D13 /* NSFWDetector-Info.plist */, + 44737A8AE31AE8963A977C6507989ED1 /* NSFWDetector-prefix.pch */, + 59AB63F0F71AD6A4B42E71F42FB80E11 /* NSFWDetector-umbrella.h */, + 159FFAD0CCFDFC8038694148BA3249BE /* NSFWDetector.debug.xcconfig */, + 01D2C7795E5315323E0CE4BB182E4A8F /* NSFWDetector.release.xcconfig */, ); + name = "Support Files"; + path = "Example/Pods/Target Support Files/NSFWDetector"; sourceTree = ""; }; - A400141913355D29ABED4E13A384A9BC /* Products */ = { + CF1408CF629C7361332E53B88F7BD30C = { isa = PBXGroup; children = ( - C9DCA20FC4D25826D43F045E791ED7E0 /* NSFWDetector.framework */, - 869A6A380E055C3841ECAF8A28C80836 /* Pods_NSFWDetector_Example.framework */, - F24A8389209A90173F4DE430A9432A91 /* Pods_NSFWDetector_Tests.framework */, + 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, + E36AC80A37674A2F7B15507A7764A7C1 /* Development Pods */, + D210D550F4EA176C3123ED886F8F87F5 /* Frameworks */, + 37E5A4DB5AE7E7648D9181ABFBD655E6 /* Products */, + F34A877F6C4A8821CBDD2527B769FBE8 /* Targets Support Files */, ); - name = Products; sourceTree = ""; }; - A631FC73CE61BF517225576FFB5E2684 /* Support Files */ = { + D210D550F4EA176C3123ED886F8F87F5 /* Frameworks */ = { isa = PBXGroup; children = ( - 21C268F6CF5F76DFA73799FA11DBB542 /* Info.plist */, - 826E9CFC27A4EF86FB8C893D1706E9FF /* NSFWDetector.modulemap */, - BDBAFDBA2EF0D83A177D050B45E73260 /* NSFWDetector.xcconfig */, - 0E6377FE43EBEE064F1155E628FD8EC5 /* NSFWDetector-dummy.m */, - D1BD50EA8994D4C7E15DC855D3772E61 /* NSFWDetector-prefix.pch */, - F9EAC2B72D7E6900B6E05AA073BD8546 /* NSFWDetector-umbrella.h */, + 578452D2E740E91742655AC8F1636D1F /* iOS */, ); - name = "Support Files"; - path = "Example/Pods/Target Support Files/NSFWDetector"; + name = Frameworks; sourceTree = ""; }; - BC3CA7F9E30CC8F7E2DD044DD34432FC /* Frameworks */ = { + E36AC80A37674A2F7B15507A7764A7C1 /* Development Pods */ = { isa = PBXGroup; children = ( - 44D5347904CF754D6785B84253F2574A /* iOS */, + 2AF7EF366850253EFBCB10FDBAC302D6 /* NSFWDetector */, ); - name = Frameworks; + name = "Development Pods"; sourceTree = ""; }; - BC755FEA600C69E85B3AAD7C88D9B58F /* NSFWDetector */ = { + F34A877F6C4A8821CBDD2527B769FBE8 /* Targets Support Files */ = { isa = PBXGroup; children = ( - 0FDCA508C5276F0D6F37E469361D7954 /* NSFW.mlmodel */, - 2F0145ACD138AF7AF970470504934DCC /* NSFWDetector.swift */, - 5CEE786571BD8C7295C308C43B534A1A /* Pod */, - A631FC73CE61BF517225576FFB5E2684 /* Support Files */, + 55BFF53C73B9FB54ADF351C2AB6F0F39 /* Pods-NSFWDetector_Example */, + 6B104EF24181A3F8284B2F4EEB41B683 /* Pods-NSFWDetector_Tests */, ); - name = NSFWDetector; - path = ../..; + name = "Targets Support Files"; sourceTree = ""; }; - C71DDE4E755043D990595D63404E1D31 /* Development Pods */ = { + F5B97D70A78F4DB73036AD6FD923DE03 /* Pod */ = { isa = PBXGroup; children = ( - BC755FEA600C69E85B3AAD7C88D9B58F /* NSFWDetector */, + 78416EDD74BAF43F5ABA0F8D204878B6 /* LICENSE */, + C3481A79D0A707B02905D56920039064 /* NSFWDetector.podspec */, + BEE070E1ACADE3B4E66F15B7B24F03E6 /* README.md */, ); - name = "Development Pods"; + name = Pod; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ - 9571647B8A307C081F7D8E8C69C1B86D /* Headers */ = { + C847C4DB051C2E2D6859F60C2D982F5A /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 48CBEDC485DC41F18136676740383A9D /* Pods-NSFWDetector_Example-umbrella.h in Headers */, + 9C90840EA99F7B7E7EA53F9C28B04CD5 /* NSFWDetector-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - B096D1923AAC5AB660F638E364BEE299 /* Headers */ = { + C87453EBE5F278D573DF7477A596949B /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - F754DD38791AA3C60AAE90400FEA392C /* Pods-NSFWDetector_Tests-umbrella.h in Headers */, + D6D6261467FF1CB65817ACEB9221DD14 /* Pods-NSFWDetector_Tests-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - BBFC2EF26945CA6FB094E3B131C13852 /* Headers */ = { + FF2EBF8C885D84C9CD8B18F34199193A /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 1C9B832CAA1A122C1406698A4108CF2C /* NSFWDetector-umbrella.h in Headers */, + 2E7C7ED70BF3063282E7B76CD314A37F /* Pods-NSFWDetector_Example-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 31483F0FD303E196812D264EB6E24D35 /* NSFWDetector */ = { + 4B6DA2BD2BC39A514468830D2001A456 /* Pods-NSFWDetector_Tests */ = { isa = PBXNativeTarget; - buildConfigurationList = 33A53F18C01F4767CB35015A1FD26D13 /* Build configuration list for PBXNativeTarget "NSFWDetector" */; + buildConfigurationList = 673C97030A99074313AE71A8BB1C2121 /* Build configuration list for PBXNativeTarget "Pods-NSFWDetector_Tests" */; buildPhases = ( - BBFC2EF26945CA6FB094E3B131C13852 /* Headers */, - 85ABB991A6B412E19CAE851E7175C7D2 /* Sources */, - FFCA68AA6DF9D7D5FB1069D2031852E8 /* Frameworks */, - 16DEC2259C752EF38588AA30A3D59CA0 /* Resources */, + C87453EBE5F278D573DF7477A596949B /* Headers */, + 232D3593045684FEDA7160F9436F6F17 /* Sources */, + 3E3866AD08C757961F66E1A31FFEDCCC /* Frameworks */, + C25D4CDB3ED640737AF8E45A7EFE12E6 /* Resources */, ); buildRules = ( ); dependencies = ( + 19BC0E1F6A249A76B289831B46B3F13F /* PBXTargetDependency */, ); - name = NSFWDetector; - productName = NSFWDetector; - productReference = C9DCA20FC4D25826D43F045E791ED7E0 /* NSFWDetector.framework */; + name = "Pods-NSFWDetector_Tests"; + productName = "Pods-NSFWDetector_Tests"; + productReference = F0CA9AA0CF65A2DDE32ED5C51EB39F32 /* Pods_NSFWDetector_Tests.framework */; productType = "com.apple.product-type.framework"; }; - 68FF7D8D768DA03F68A18B594B4E4800 /* Pods-NSFWDetector_Tests */ = { + 4C8A20B0C86D06C23D019236AD933367 /* Pods-NSFWDetector_Example */ = { isa = PBXNativeTarget; - buildConfigurationList = DB550EF442FE9CB2EE30647921C990E4 /* Build configuration list for PBXNativeTarget "Pods-NSFWDetector_Tests" */; + buildConfigurationList = 3026556A5843A415D727BB17F2056E45 /* Build configuration list for PBXNativeTarget "Pods-NSFWDetector_Example" */; buildPhases = ( - B096D1923AAC5AB660F638E364BEE299 /* Headers */, - ED7BF75FF233987D7A4FDA922BED4A57 /* Sources */, - A3F08E91F5AE6F6307DD8F10F20B034B /* Frameworks */, - 2E6714C817C75F6ED54A86078C5444A4 /* Resources */, + FF2EBF8C885D84C9CD8B18F34199193A /* Headers */, + F10B7B4BAB764C6004BFC4E9A81D1DB1 /* Sources */, + FA3CDD4F053C737B12575625C1FCF782 /* Frameworks */, + 25ADB5BFD225C954B466C046CFFE857F /* Resources */, ); buildRules = ( ); dependencies = ( - EBB6E45D8256920C22C60DFB3209FFD3 /* PBXTargetDependency */, + BE46972E2769DBB47B473F3379A7D664 /* PBXTargetDependency */, ); - name = "Pods-NSFWDetector_Tests"; - productName = "Pods-NSFWDetector_Tests"; - productReference = F24A8389209A90173F4DE430A9432A91 /* Pods_NSFWDetector_Tests.framework */; + name = "Pods-NSFWDetector_Example"; + productName = "Pods-NSFWDetector_Example"; + productReference = F557A677B79BF82DFAE8C38F524EE26F /* Pods_NSFWDetector_Example.framework */; productType = "com.apple.product-type.framework"; }; - CCB01C32DA2F6F5A5909511EF5102C35 /* Pods-NSFWDetector_Example */ = { + E548F4EE14CE8824EEE4D804A2E44F76 /* NSFWDetector */ = { isa = PBXNativeTarget; - buildConfigurationList = CB441AC04107E381509202E7782137EB /* Build configuration list for PBXNativeTarget "Pods-NSFWDetector_Example" */; + buildConfigurationList = 96B3A03FB6E418FFCD301C1A63FCC89D /* Build configuration list for PBXNativeTarget "NSFWDetector" */; buildPhases = ( - 9571647B8A307C081F7D8E8C69C1B86D /* Headers */, - CA33093B868ED13E4F0B55A3388A4E3E /* Sources */, - 856FB259F564B47E504DA8ACCB3237C7 /* Frameworks */, - 79341239CF632D1AB0081B983256D86F /* Resources */, + C847C4DB051C2E2D6859F60C2D982F5A /* Headers */, + DFA816146B35D385DB1CF5369497D3F0 /* Sources */, + 6ECB9006F81DAF5DDBF991634B648EBC /* Frameworks */, + DA46BC068F8BA4C5B1CCA5806550A3BB /* Resources */, ); buildRules = ( ); dependencies = ( - 7C8E10FCF63AE2C5C29AF1A7F06D3009 /* PBXTargetDependency */, ); - name = "Pods-NSFWDetector_Example"; - productName = "Pods-NSFWDetector_Example"; - productReference = 869A6A380E055C3841ECAF8A28C80836 /* Pods_NSFWDetector_Example.framework */; + name = NSFWDetector; + productName = NSFWDetector; + productReference = B728A55AA7AE77563F85FBFD5AF7AD1E /* NSFWDetector.framework */; productType = "com.apple.product-type.framework"; }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ - D41D8CD98F00B204E9800998ECF8427E /* Project object */ = { + BFDFE7DC352907FC980B868725387E98 /* Project object */ = { isa = PBXProject; attributes = { - LastSwiftUpdateCheck = 0930; - LastUpgradeCheck = 0930; + LastSwiftUpdateCheck = 1240; + LastUpgradeCheck = 1240; }; - buildConfigurationList = 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */; + buildConfigurationList = 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */; compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; + developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( en, + Base, ); - mainGroup = 7DB346D0F39D3F0E887471402A8071AB; - productRefGroup = A400141913355D29ABED4E13A384A9BC /* Products */; + mainGroup = CF1408CF629C7361332E53B88F7BD30C; + productRefGroup = 37E5A4DB5AE7E7648D9181ABFBD655E6 /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( - 31483F0FD303E196812D264EB6E24D35 /* NSFWDetector */, - CCB01C32DA2F6F5A5909511EF5102C35 /* Pods-NSFWDetector_Example */, - 68FF7D8D768DA03F68A18B594B4E4800 /* Pods-NSFWDetector_Tests */, + E548F4EE14CE8824EEE4D804A2E44F76 /* NSFWDetector */, + 4C8A20B0C86D06C23D019236AD933367 /* Pods-NSFWDetector_Example */, + 4B6DA2BD2BC39A514468830D2001A456 /* Pods-NSFWDetector_Tests */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ - 16DEC2259C752EF38588AA30A3D59CA0 /* Resources */ = { + 25ADB5BFD225C954B466C046CFFE857F /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 2E6714C817C75F6ED54A86078C5444A4 /* Resources */ = { + C25D4CDB3ED640737AF8E45A7EFE12E6 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 79341239CF632D1AB0081B983256D86F /* Resources */ = { + DA46BC068F8BA4C5B1CCA5806550A3BB /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( @@ -369,55 +366,56 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ - 85ABB991A6B412E19CAE851E7175C7D2 /* Sources */ = { + 232D3593045684FEDA7160F9436F6F17 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 5D8D2FF54D91A7A1C8DC8148C94B5E18 /* NSFW.mlmodel in Sources */, - 753BF02173B78BCD20FDB46BF569DA92 /* NSFWDetector-dummy.m in Sources */, - A88F3068E4D9A55B8654589F2CFC2763 /* NSFWDetector.swift in Sources */, + 9AFB92DBF760B7095F404A7FD7A50E9E /* Pods-NSFWDetector_Tests-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - CA33093B868ED13E4F0B55A3388A4E3E /* Sources */ = { + DFA816146B35D385DB1CF5369497D3F0 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - D6F636C9B6DE5CA559693A05F6654E9F /* Pods-NSFWDetector_Example-dummy.m in Sources */, + EBC1508FA940DE15BCD7C1E3E3F4EC9E /* NSFW.mlmodel in Sources */, + B6C3389218BDC95BD48758DE655A6075 /* NSFWDetector-dummy.m in Sources */, + 1C701FF725A25622F0F1110870547EF9 /* NSFWDetector.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - ED7BF75FF233987D7A4FDA922BED4A57 /* Sources */ = { + F10B7B4BAB764C6004BFC4E9A81D1DB1 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 4B56C07A94AE579E5E37768CA42110A7 /* Pods-NSFWDetector_Tests-dummy.m in Sources */, + CF468C03E00CE2C5132F173391093034 /* Pods-NSFWDetector_Example-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 7C8E10FCF63AE2C5C29AF1A7F06D3009 /* PBXTargetDependency */ = { + 19BC0E1F6A249A76B289831B46B3F13F /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = NSFWDetector; - target = 31483F0FD303E196812D264EB6E24D35 /* NSFWDetector */; - targetProxy = ECBDF2E4306AE5316AE4566289C35DA5 /* PBXContainerItemProxy */; + name = "Pods-NSFWDetector_Example"; + target = 4C8A20B0C86D06C23D019236AD933367 /* Pods-NSFWDetector_Example */; + targetProxy = 9737AC41C2E3D3183F38DA60E773B99C /* PBXContainerItemProxy */; }; - EBB6E45D8256920C22C60DFB3209FFD3 /* PBXTargetDependency */ = { + BE46972E2769DBB47B473F3379A7D664 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "Pods-NSFWDetector_Example"; - target = CCB01C32DA2F6F5A5909511EF5102C35 /* Pods-NSFWDetector_Example */; - targetProxy = 8B5CF2DD7891413F51523A60DBD658F3 /* PBXContainerItemProxy */; + name = NSFWDetector; + target = E548F4EE14CE8824EEE4D804A2E44F76 /* NSFWDetector */; + targetProxy = 592746A4790EA2917B935A4075EBDE24 /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - 124D7E180F2D932C981E24123FC7B0EF /* Debug */ = { + 28FF8E343FB8CA9DBD274208E7146781 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = BDBAFDBA2EF0D83A177D050B45E73260 /* NSFWDetector.xcconfig */; + baseConfigurationReference = 01D2C7795E5315323E0CE4BB182E4A8F /* NSFWDetector.release.xcconfig */; buildSettings = { - CODE_SIGN_IDENTITY = ""; + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; @@ -427,9 +425,9 @@ DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; GCC_PREFIX_HEADER = "Target Support Files/NSFWDetector/NSFWDetector-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/NSFWDetector/Info.plist"; + INFOPLIST_FILE = "Target Support Files/NSFWDetector/NSFWDetector-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MODULEMAP_FILE = "Target Support Files/NSFWDetector/NSFWDetector.modulemap"; PRODUCT_MODULE_NAME = NSFWDetector; @@ -437,41 +435,7 @@ SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.2; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 1640CBE5E2E7A6BBD7198C689E2463EF /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = A00602ADBA0723ED3C1DF11E74EBD21D /* Pods-NSFWDetector_Tests.release.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - 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-NSFWDetector_Tests/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-NSFWDetector_Tests/Pods-NSFWDetector_Tests.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; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; @@ -479,13 +443,12 @@ }; name = Release; }; - 3954258C436B697C6BCC8024D283D267 /* Debug */ = { + 296DB86BF93A0786AC8789AC496ADBD6 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = EEF25B843A87922F30AE1D08D800A60C /* Pods-NSFWDetector_Example.debug.xcconfig */; + baseConfigurationReference = 159FFAD0CCFDFC8038694148BA3249BE /* NSFWDetector.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*]" = ""; @@ -494,29 +457,29 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-NSFWDetector_Example/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/NSFWDetector/NSFWDetector-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/NSFWDetector/NSFWDetector-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-NSFWDetector_Example/Pods-NSFWDetector_Example.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + MODULEMAP_FILE = "Target Support Files/NSFWDetector/NSFWDetector.modulemap"; + PRODUCT_MODULE_NAME = NSFWDetector; + PRODUCT_NAME = NSFWDetector; 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; }; - 98E98810EEEB96C99CB95CB91F4ADE0A /* Debug */ = { + 2B9E26EAE2CD392AD762421F663075A1 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; @@ -539,14 +502,13 @@ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; 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; - CODE_SIGNING_ALLOWED = NO; - CODE_SIGNING_REQUIRED = NO; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = dwarf; ENABLE_STRICT_OBJC_MSGSEND = YES; @@ -574,18 +536,18 @@ STRIP_INSTALLED_PRODUCT = NO; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 5.0; SYMROOT = "${SRCROOT}/../build"; }; name = Debug; }; - A4060EB25D43CABD610B9ACD159C8B0B /* Release */ = { + 43584E24B671AE71187D067B94C494D1 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = DAF5CCBC36B94DCADC848EAC7BC1B5E8 /* Pods-NSFWDetector_Example.release.xcconfig */; + baseConfigurationReference = D8C08DE9574B897C23DDF4749FA721F8 /* Pods-NSFWDetector_Example.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*]" = ""; @@ -594,7 +556,7 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-NSFWDetector_Example/Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-NSFWDetector_Example/Pods-NSFWDetector_Example-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; @@ -614,44 +576,11 @@ }; name = Release; }; - B6A6E76DBE541A734C39CE77A84B0971 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = BDD8805BA71D6D3B2B8F2A9E1B77D491 /* Pods-NSFWDetector_Tests.debug.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - 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-NSFWDetector_Tests/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-NSFWDetector_Tests/Pods-NSFWDetector_Tests.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; - }; - B97A7F6ACE1216BB5A2307CA83FC93C5 /* Release */ = { + 63FAF33E1C55B71A5F5A8B3CC8749F99 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; @@ -674,14 +603,13 @@ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; 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; - CODE_SIGNING_ALLOWED = NO; - CODE_SIGNING_REQUIRED = NO; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_NS_ASSERTIONS = NO; @@ -703,17 +631,20 @@ MTL_FAST_MATH = YES; PRODUCT_NAME = "$(TARGET_NAME)"; STRIP_INSTALLED_PRODUCT = NO; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 4.2; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + SWIFT_VERSION = 5.0; SYMROOT = "${SRCROOT}/../build"; }; name = Release; }; - EE7D73C4A3BA68935ED530869DA2D203 /* Release */ = { + 73ED3EB49722624F1228738A87043F7F /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = BDBAFDBA2EF0D83A177D050B45E73260 /* NSFWDetector.xcconfig */; + baseConfigurationReference = 6A251108BA542D63E954AAE5AC437E39 /* Pods-NSFWDetector_Tests.release.xcconfig */; buildSettings = { - CODE_SIGN_IDENTITY = ""; + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; @@ -722,18 +653,19 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/NSFWDetector/NSFWDetector-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/NSFWDetector/Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-NSFWDetector_Tests/Pods-NSFWDetector_Tests-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/NSFWDetector/NSFWDetector.modulemap"; - PRODUCT_MODULE_NAME = NSFWDetector; - PRODUCT_NAME = NSFWDetector; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-NSFWDetector_Tests/Pods-NSFWDetector_Tests.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; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; @@ -741,46 +673,114 @@ }; name = Release; }; + 7EFE9FAED682A7D94CEAD1E5ABE95846 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = A728F6D770ECDC513BE37774BE96BDEC /* Pods-NSFWDetector_Tests.debug.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_ENABLE_OBJC_WEAK = NO; + "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-NSFWDetector_Tests/Pods-NSFWDetector_Tests-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-NSFWDetector_Tests/Pods-NSFWDetector_Tests.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; + }; + C5E05E75EF05D00213409D17935D129F /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = A3BE7B2FFFBA8185335980541CF17CD8 /* Pods-NSFWDetector_Example.debug.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_ENABLE_OBJC_WEAK = NO; + "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-NSFWDetector_Example/Pods-NSFWDetector_Example-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-NSFWDetector_Example/Pods-NSFWDetector_Example.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; + }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { + 3026556A5843A415D727BB17F2056E45 /* Build configuration list for PBXNativeTarget "Pods-NSFWDetector_Example" */ = { isa = XCConfigurationList; buildConfigurations = ( - 98E98810EEEB96C99CB95CB91F4ADE0A /* Debug */, - B97A7F6ACE1216BB5A2307CA83FC93C5 /* Release */, + C5E05E75EF05D00213409D17935D129F /* Debug */, + 43584E24B671AE71187D067B94C494D1 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 33A53F18C01F4767CB35015A1FD26D13 /* Build configuration list for PBXNativeTarget "NSFWDetector" */ = { + 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = { isa = XCConfigurationList; buildConfigurations = ( - 124D7E180F2D932C981E24123FC7B0EF /* Debug */, - EE7D73C4A3BA68935ED530869DA2D203 /* Release */, + 2B9E26EAE2CD392AD762421F663075A1 /* Debug */, + 63FAF33E1C55B71A5F5A8B3CC8749F99 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - CB441AC04107E381509202E7782137EB /* Build configuration list for PBXNativeTarget "Pods-NSFWDetector_Example" */ = { + 673C97030A99074313AE71A8BB1C2121 /* Build configuration list for PBXNativeTarget "Pods-NSFWDetector_Tests" */ = { isa = XCConfigurationList; buildConfigurations = ( - 3954258C436B697C6BCC8024D283D267 /* Debug */, - A4060EB25D43CABD610B9ACD159C8B0B /* Release */, + 7EFE9FAED682A7D94CEAD1E5ABE95846 /* Debug */, + 73ED3EB49722624F1228738A87043F7F /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - DB550EF442FE9CB2EE30647921C990E4 /* Build configuration list for PBXNativeTarget "Pods-NSFWDetector_Tests" */ = { + 96B3A03FB6E418FFCD301C1A63FCC89D /* Build configuration list for PBXNativeTarget "NSFWDetector" */ = { isa = XCConfigurationList; buildConfigurations = ( - B6A6E76DBE541A734C39CE77A84B0971 /* Debug */, - 1640CBE5E2E7A6BBD7198C689E2463EF /* Release */, + 296DB86BF93A0786AC8789AC496ADBD6 /* Debug */, + 28FF8E343FB8CA9DBD274208E7146781 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; /* End XCConfigurationList section */ }; - rootObject = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + rootObject = BFDFE7DC352907FC980B868725387E98 /* Project object */; } diff --git a/Example/Pods/Pods.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Example/Pods/Pods.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/Example/Pods/Pods.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Example/Pods/Pods.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Example/Pods/Pods.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/Example/Pods/Pods.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Example/Pods/Pods.xcodeproj/xcuserdata/Michael.Berg.xcuserdatad/xcschemes/NSFWDetector.xcscheme b/Example/Pods/Pods.xcodeproj/xcuserdata/Michael.Berg.xcuserdatad/xcschemes/NSFWDetector.xcscheme index 6d84a1d..03514e4 100644 --- a/Example/Pods/Pods.xcodeproj/xcuserdata/Michael.Berg.xcuserdatad/xcschemes/NSFWDetector.xcscheme +++ b/Example/Pods/Pods.xcodeproj/xcuserdata/Michael.Berg.xcuserdatad/xcschemes/NSFWDetector.xcscheme @@ -1,36 +1,37 @@ + buildForArchiving = "YES" + buildForAnalyzing = "YES"> + ReferencedContainer = "container:Pods.xcodeproj"> - - + shouldUseLaunchSchemeArgsEnv = "YES"> + + - - + debugDocumentVersioning = "YES"> diff --git a/Example/Pods/Pods.xcodeproj/xcuserdata/Michael.Berg.xcuserdatad/xcschemes/Pods-NSFWDetector_Example.xcscheme b/Example/Pods/Pods.xcodeproj/xcuserdata/Michael.Berg.xcuserdatad/xcschemes/Pods-NSFWDetector_Example.xcscheme index 21a651b..05432a2 100644 --- a/Example/Pods/Pods.xcodeproj/xcuserdata/Michael.Berg.xcuserdatad/xcschemes/Pods-NSFWDetector_Example.xcscheme +++ b/Example/Pods/Pods.xcodeproj/xcuserdata/Michael.Berg.xcuserdatad/xcschemes/Pods-NSFWDetector_Example.xcscheme @@ -1,6 +1,6 @@ @@ -29,8 +29,6 @@ shouldUseLaunchSchemeArgsEnv = "YES"> - - - - - - - - @@ -29,8 +29,6 @@ shouldUseLaunchSchemeArgsEnv = "YES"> - - - - - - - - + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 2.0.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Example/Pods/Target Support Files/NSFWDetector/NSFWDetector.debug.xcconfig b/Example/Pods/Target Support Files/NSFWDetector/NSFWDetector.debug.xcconfig new file mode 100644 index 0000000..66bd337 --- /dev/null +++ b/Example/Pods/Target Support Files/NSFWDetector/NSFWDetector.debug.xcconfig @@ -0,0 +1,13 @@ +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/NSFWDetector +COREML_CODEGEN_LANGUAGE = Swift +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_ROOT = ${SRCROOT} +PODS_TARGET_SRCROOT = ${PODS_ROOT}/../.. +PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates +PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} +SKIP_INSTALL = YES +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Example/Pods/Target Support Files/NSFWDetector/NSFWDetector.release.xcconfig b/Example/Pods/Target Support Files/NSFWDetector/NSFWDetector.release.xcconfig new file mode 100644 index 0000000..66bd337 --- /dev/null +++ b/Example/Pods/Target Support Files/NSFWDetector/NSFWDetector.release.xcconfig @@ -0,0 +1,13 @@ +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/NSFWDetector +COREML_CODEGEN_LANGUAGE = Swift +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_ROOT = ${SRCROOT} +PODS_TARGET_SRCROOT = ${PODS_ROOT}/../.. +PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates +PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} +SKIP_INSTALL = YES +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Example/Pods/Target Support Files/Pods-NSFWDetector_Example/Pods-NSFWDetector_Example-Info.plist b/Example/Pods/Target Support Files/Pods-NSFWDetector_Example/Pods-NSFWDetector_Example-Info.plist new file mode 100644 index 0000000..2243fe6 --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-NSFWDetector_Example/Pods-NSFWDetector_Example-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/Example/Pods/Target Support Files/Pods-NSFWDetector_Example/Pods-NSFWDetector_Example-frameworks.sh b/Example/Pods/Target Support Files/Pods-NSFWDetector_Example/Pods-NSFWDetector_Example-frameworks.sh index d45d140..fa14684 100755 --- a/Example/Pods/Target Support Files/Pods-NSFWDetector_Example/Pods-NSFWDetector_Example-frameworks.sh +++ b/Example/Pods/Target Support Files/Pods-NSFWDetector_Example/Pods-NSFWDetector_Example-frameworks.sh @@ -3,10 +3,15 @@ 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 + # 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}" @@ -14,9 +19,8 @@ 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}" +BCSYMBOLMAP_DIR="BCSymbolMaps" -# 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 @@ -36,19 +40,34 @@ install_framework() local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" if [ -L "${source}" ]; then - echo "Symlinked..." - source="$(readlink "${source}")" + echo "Symlinked..." + source="$(readlink "${source}")" + fi + + if [ -d "${source}/${BCSYMBOLMAP_DIR}" ]; then + # Locate and install any .bcsymbolmaps if present, and remove them from the .framework before the framework is copied + find "${source}/${BCSYMBOLMAP_DIR}" -name "*.bcsymbolmap"|while read f; do + echo "Installing $f" + install_bcsymbolmap "$f" "$destination" + rm "$f" + done + rmdir "${source}/${BCSYMBOLMAP_DIR}" fi # Use filter instead of exclude so missing patterns don't throw errors. - echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" - rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" + 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 @@ -62,7 +81,7 @@ install_framework() # 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 && exit ${PIPESTATUS[0]}) + 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}" @@ -70,77 +89,90 @@ install_framework() 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 a the targets temp dir. + # 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 .framework.dSYM "$source")" - binary="${DERIVED_FILES_DIR}/${basename}.framework.dSYM/Contents/Resources/DWARF/${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" + # Strip invalid architectures from the dSYM. + if [[ "$(file "$binary")" == *"Mach-O "*"dSYM companion"* ]]; then + strip_invalid_archs "$binary" "$warn_missing_arch" fi - - if [[ $STRIP_BINARY_RETVAL == 1 ]]; then + if [[ $STRIP_BINARY_RETVAL == 0 ]]; then # Move the stripped file into its final destination. - echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --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[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.framework.dSYM" "${DWARF_DSYM_FOLDER_PATH}" + 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}.framework.dSYM" + touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.dSYM" fi fi } -# 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_identitiy - 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 -} +# Used as a return value for each invocation of `strip_invalid_archs` function. +STRIP_BINARY_RETVAL=0 # 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 - echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)." - STRIP_BINARY_RETVAL=0 + 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=1 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" || exit 1 + 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 + STRIP_BINARY_RETVAL=0 } +# 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 +} if [[ "$CONFIGURATION" == "Debug" ]]; then install_framework "${BUILT_PRODUCTS_DIR}/NSFWDetector/NSFWDetector.framework" diff --git a/Example/Pods/Target Support Files/Pods-NSFWDetector_Example/Pods-NSFWDetector_Example.debug.xcconfig b/Example/Pods/Target Support Files/Pods-NSFWDetector_Example/Pods-NSFWDetector_Example.debug.xcconfig index 621c724..d4c5a7b 100644 --- a/Example/Pods/Target Support Files/Pods-NSFWDetector_Example/Pods-NSFWDetector_Example.debug.xcconfig +++ b/Example/Pods/Target Support Files/Pods-NSFWDetector_Example/Pods-NSFWDetector_Example.debug.xcconfig @@ -1,11 +1,14 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/NSFWDetector" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/NSFWDetector/NSFWDetector.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/NSFWDetector/NSFWDetector.framework/Headers" OTHER_LDFLAGS = $(inherited) -framework "NSFWDetector" -OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS 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 +PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Example/Pods/Target Support Files/Pods-NSFWDetector_Example/Pods-NSFWDetector_Example.release.xcconfig b/Example/Pods/Target Support Files/Pods-NSFWDetector_Example/Pods-NSFWDetector_Example.release.xcconfig index 621c724..d4c5a7b 100644 --- a/Example/Pods/Target Support Files/Pods-NSFWDetector_Example/Pods-NSFWDetector_Example.release.xcconfig +++ b/Example/Pods/Target Support Files/Pods-NSFWDetector_Example/Pods-NSFWDetector_Example.release.xcconfig @@ -1,11 +1,14 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/NSFWDetector" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/NSFWDetector/NSFWDetector.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/NSFWDetector/NSFWDetector.framework/Headers" OTHER_LDFLAGS = $(inherited) -framework "NSFWDetector" -OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS 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 +PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Example/Pods/Target Support Files/Pods-NSFWDetector_Tests/Pods-NSFWDetector_Tests-Info.plist b/Example/Pods/Target Support Files/Pods-NSFWDetector_Tests/Pods-NSFWDetector_Tests-Info.plist new file mode 100644 index 0000000..2243fe6 --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-NSFWDetector_Tests/Pods-NSFWDetector_Tests-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/Example/Pods/Target Support Files/Pods-NSFWDetector_Tests/Pods-NSFWDetector_Tests.debug.xcconfig b/Example/Pods/Target Support Files/Pods-NSFWDetector_Tests/Pods-NSFWDetector_Tests.debug.xcconfig index 78bf404..9c59f90 100644 --- a/Example/Pods/Target Support Files/Pods-NSFWDetector_Tests/Pods-NSFWDetector_Tests.debug.xcconfig +++ b/Example/Pods/Target Support Files/Pods-NSFWDetector_Tests/Pods-NSFWDetector_Tests.debug.xcconfig @@ -1,8 +1,11 @@ +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/NSFWDetector" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/NSFWDetector/NSFWDetector.framework/Headers" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/NSFWDetector/NSFWDetector.framework/Headers" +OTHER_LDFLAGS = $(inherited) -framework "NSFWDetector" 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 +PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Example/Pods/Target Support Files/Pods-NSFWDetector_Tests/Pods-NSFWDetector_Tests.release.xcconfig b/Example/Pods/Target Support Files/Pods-NSFWDetector_Tests/Pods-NSFWDetector_Tests.release.xcconfig index 78bf404..9c59f90 100644 --- a/Example/Pods/Target Support Files/Pods-NSFWDetector_Tests/Pods-NSFWDetector_Tests.release.xcconfig +++ b/Example/Pods/Target Support Files/Pods-NSFWDetector_Tests/Pods-NSFWDetector_Tests.release.xcconfig @@ -1,8 +1,11 @@ +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/NSFWDetector" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/NSFWDetector/NSFWDetector.framework/Headers" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/NSFWDetector/NSFWDetector.framework/Headers" +OTHER_LDFLAGS = $(inherited) -framework "NSFWDetector" 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 +PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/NSFWDetector.podspec b/NSFWDetector.podspec index f53db12..eab57e7 100644 --- a/NSFWDetector.podspec +++ b/NSFWDetector.podspec @@ -1,8 +1,8 @@ Pod::Spec.new do |s| s.name = 'NSFWDetector' - s.version = '1.1.1' + s.version = '2.0.0' s.summary = 'NSFW Content Detection aká porn detection with CoreML.' - s.swift_version = '4.2' + s.swift_version = '5.0' s.description = <<-DESC Lightweight Library for scanning images for NSFW (Not Safe For Work) content. @@ -13,7 +13,8 @@ Lightweight Library for scanning images for NSFW (Not Safe For Work) content. s.author = { 'Michael Berg' => 'michael.berg@lovoo.com' } s.source = { :git => 'https://github.com/lovoo/NSFWDetector.git', :tag => s.version.to_s } - s.ios.deployment_target = '8.0' + s.ios.deployment_target = '12.0' + s.osx.deployment_target = '10.14' s.pod_target_xcconfig = { 'COREML_CODEGEN_LANGUAGE' => 'Swift' } diff --git a/NSFWDetector/Classes/NSFW.mlmodel b/NSFWDetector/Classes/NSFW.mlmodel index 75d1d7a..9e3f932 100644 Binary files a/NSFWDetector/Classes/NSFW.mlmodel and b/NSFWDetector/Classes/NSFW.mlmodel differ diff --git a/NSFWDetector/Classes/NSFWDetector.swift b/NSFWDetector/Classes/NSFWDetector.swift index 2ed79e9..1ab4bfc 100644 --- a/NSFWDetector/Classes/NSFWDetector.swift +++ b/NSFWDetector/Classes/NSFWDetector.swift @@ -9,7 +9,6 @@ import Foundation import CoreML import Vision -@available(iOS 12.0, *) public class NSFWDetector { public static let shared = NSFWDetector() @@ -17,7 +16,7 @@ public class NSFWDetector { private let model: VNCoreMLModel public required init() { - guard let model = try? VNCoreMLModel(for: NSFW().model) else { + guard let model = try? VNCoreMLModel(for: NSFW(configuration: MLModelConfiguration()).model) else { fatalError("NSFW should always be a valid model") } self.model = model @@ -32,38 +31,28 @@ public class NSFWDetector { case success(nsfwConfidence: Float) } - public func check(image: UIImage, completion: @escaping (_ result: DetectionResult) -> Void) { - - // Create a requestHandler for the image - let requestHandler: VNImageRequestHandler? - if let cgImage = image.cgImage { - requestHandler = VNImageRequestHandler(cgImage: cgImage, options: [:]) - } else if let ciImage = image.ciImage { - requestHandler = VNImageRequestHandler(ciImage: ciImage, options: [:]) - } else { - requestHandler = nil - } + public func check(cgImage: CGImage, completion: @escaping (_ result: DetectionResult) -> Void) { + let requestHandler = VNImageRequestHandler(cgImage: cgImage, options: [:]) self.check(requestHandler, completion: completion) } public func check(cvPixelbuffer: CVPixelBuffer, completion: @escaping (_ result: DetectionResult) -> Void) { let requestHandler = VNImageRequestHandler(cvPixelBuffer: cvPixelbuffer, options: [:]) + self.check(requestHandler, completion: completion) + } + public func check(ciImage: CIImage, completion: @escaping (_ result: DetectionResult) -> Void) { + + let requestHandler = VNImageRequestHandler(ciImage: ciImage, options: [:]) self.check(requestHandler, completion: completion) } } -@available(iOS 12.0, *) private extension NSFWDetector { - func check(_ requestHandler: VNImageRequestHandler?, completion: @escaping (_ result: DetectionResult) -> Void) { - - guard let requestHandler = requestHandler else { - completion(.error(NSError(domain: "either cgImage or ciImage must be set inside of UIImage", code: 0, userInfo: nil))) - return - } + func check(_ requestHandler: VNImageRequestHandler, completion: @escaping (_ result: DetectionResult) -> Void) { /// The request that handles the detection completion let request = VNCoreMLRequest(model: self.model, completionHandler: { (request, error) in diff --git a/README.md b/README.md index 75f6647..017d9d5 100644 --- a/README.md +++ b/README.md @@ -9,11 +9,11 @@ NSFWDetector is a small (**17 kB**) CoreML Model to scan images for nudity. It w ## Usage ```swift -guard #available(iOS 12.0, *), let detector = NSFWDetector.shared else { +guard let detector = NSFWDetector.shared else { return } -detector.check(image: image, completion: { result in +detector.check(cgImage: image, completion: { result in switch result { case let .success(nsfwConfidence: confidence): if confidence > 0.9 { @@ -38,8 +38,6 @@ it, simply add the following line to your Podfile: pod 'NSFWDetector' ``` -⚠️ Because the model was trained with CreateML, you need **Xcode 10** and above to compile the project. - ## App Size The Machine Learning Model is only **17 kB** in size, so App size won't be affected compared to other libraries using the [yahoo model](https://github.com/yahoo/open_nsfw). @@ -48,6 +46,10 @@ The Machine Learning Model is only **17 kB** in size, so App size won't be affec If you don't want to use the Detection Code, you can also just download the MLModel file directly from the latest [Release](https://github.com/lovoo/NSFWDetector/releases). +## Training Data + +V2 uses data out of [NudeNet_v1](https://archive.org/details/NudeNet_classifier_dataset_v1) + ## Feedback If you recognize issues with certain kind of pictures, feel free to reach out via [Mail](mailto:michael.berg@lovoo.com) or [Twitter](https://twitter.com/LOVOOEng).