Full Code of onmyway133/SwiftHash for AI

master d2a4a25c9d78 cached
45 files
121.4 KB
44.8k tokens
1 requests
Download .txt
Repository: onmyway133/SwiftHash
Branch: master
Commit: d2a4a25c9d78
Files: 45
Total size: 121.4 KB

Directory structure:
gitextract_0ksah8ot/

├── .github/
│   └── FUNDING.yml
├── .gitignore
├── .slather.yml
├── .swift-version
├── .travis.yml
├── CONTRIBUTING.md
├── Example/
│   └── SwiftHashDemo/
│       ├── Podfile
│       ├── SwiftHashDemo/
│       │   ├── Base.lproj/
│       │   │   └── LaunchScreen.storyboard
│       │   ├── Info.plist
│       │   ├── Resources/
│       │   │   └── Assets.xcassets/
│       │   │       └── AppIcon.appiconset/
│       │   │           └── Contents.json
│       │   └── Sources/
│       │       ├── AppDelegate.swift
│       │       └── ViewController.swift
│       └── SwiftHashDemo.xcodeproj/
│           ├── project.pbxproj
│           ├── project.xcworkspace/
│           │   └── contents.xcworkspacedata
│           └── xcshareddata/
│               └── xcschemes/
│                   └── SwiftHashDemo.xcscheme
├── LICENSE.md
├── Package.swift
├── Package@swift-4.swift
├── Playground-Mac.playground/
│   ├── Contents.swift
│   ├── contents.xcplayground
│   └── timeline.xctimeline
├── Playground-iOS.playground/
│   ├── Contents.swift
│   ├── contents.xcplayground
│   └── timeline.xctimeline
├── README.md
├── Sources/
│   ├── MD5.swift
│   └── SHA1.swift
├── SwiftHash/
│   ├── Info-Mac.plist
│   ├── Info-iOS.plist
│   ├── Info-tvOS.plist
│   └── Info-watchOS.plist
├── SwiftHash.podspec
├── SwiftHash.xcodeproj/
│   ├── project.pbxproj
│   ├── project.xcworkspace/
│   │   ├── contents.xcworkspacedata
│   │   └── xcshareddata/
│   │       └── IDEWorkspaceChecks.plist
│   └── xcshareddata/
│       └── xcschemes/
│           ├── SwiftHash-Mac.xcscheme
│           ├── SwiftHash-iOS.xcscheme
│           ├── SwiftHash-tvOS.xcscheme
│           └── SwiftHash-watchOS.xcscheme
├── SwiftHashTests/
│   ├── Fixture/
│   │   └── naughty_strings.txt
│   ├── Info-Mac.plist
│   ├── Info-iOS.plist
│   ├── Info-tvOS.plist
│   └── Tests.swift
└── script.sh

================================================
FILE CONTENTS
================================================

================================================
FILE: .github/FUNDING.yml
================================================
# These are supported funding model platforms

github: onmyway133
patreon: # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']


================================================
FILE: .gitignore
================================================
# OS X
.DS_Store
.AppleDouble
.LSOverride
Icon
._*
.Spotlight-V100
.Trashes

# Xcode
#
build/
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata
*.xccheckout
*.moved-aside
DerivedData
*.hmap
*.ipa
*.xcuserstate

# CocoaPods
Pods

# Carthage
Carthage

# SPM
.build/


================================================
FILE: .slather.yml
================================================
ci_service: travis_ci
coverage_service: coveralls
xcodeproj: SwiftHash.xcodeproj
source_directory: Sources


================================================
FILE: .swift-version
================================================
4.1


================================================
FILE: .travis.yml
================================================
osx_image: xcode7.3
language: objective-c

before_install:
- brew update
- if brew outdated | grep -qx carthage; then brew upgrade carthage; fi
- travis_wait 35 carthage bootstrap --platform iOS,Mac

script:
- xcodebuild clean build -project SwiftHash.xcodeproj -scheme SwiftHash-iOS -sdk iphonesimulator
- xcodebuild test -project SwiftHash.xcodeproj -scheme SwiftHash-iOS -sdk iphonesimulator
- xcodebuild clean build -project SwiftHash.xcodeproj -scheme SwiftHash-Mac -sdk macosx
- xcodebuild test -project SwiftHash.xcodeproj -scheme SwiftHash-Mac -sdk macosx


================================================
FILE: CONTRIBUTING.md
================================================
GitHub Issues is for reporting bugs, discussing features and general feedback in **SwiftHash**. Be sure to check our [documentation](http://cocoadocs.org/docsets/SwiftHash), [FAQ](https://github.com/onmyway133/SwiftHash/wiki/FAQ) and [past issues](https://github.com/onmyway133/SwiftHash/issues?state=closed) before opening any new issues.

If you are posting about a crash in your application, a stack trace is helpful, but additional context, in the form of code and explanation, is necessary to be of any use.


================================================
FILE: Example/SwiftHashDemo/Podfile
================================================
use_frameworks!

platform :ios, '8.0'

target 'SwiftHashDemo' do
 pod 'SwiftHash', path: '../../'
end



================================================
FILE: Example/SwiftHashDemo/SwiftHashDemo/Base.lproj/LaunchScreen.storyboard
================================================
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="9531" systemVersion="15C50" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" initialViewController="01J-lp-oVM">
    <dependencies>
        <deployment identifier="iOS"/>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="9529"/>
    </dependencies>
    <scenes>
        <!--View Controller-->
        <scene sceneID="EHf-IW-A2E">
            <objects>
                <viewController id="01J-lp-oVM" sceneMemberID="viewController">
                    <layoutGuides>
                        <viewControllerLayoutGuide type="top" id="Llm-lL-Icb"/>
                        <viewControllerLayoutGuide type="bottom" id="xb3-aO-Qok"/>
                    </layoutGuides>
                    <view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
                        <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                        <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
                    </view>
                </viewController>
                <placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
            </objects>
            <point key="canvasLocation" x="53" y="375"/>
        </scene>
    </scenes>
</document>


================================================
FILE: Example/SwiftHashDemo/SwiftHashDemo/Info.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>CFBundleDevelopmentRegion</key>
	<string>en</string>
	<key>CFBundleExecutable</key>
	<string>$(EXECUTABLE_NAME)</string>
	<key>CFBundleIdentifier</key>
	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
	<key>CFBundleInfoDictionaryVersion</key>
	<string>6.0</string>
	<key>CFBundleName</key>
	<string>$(PRODUCT_NAME)</string>
	<key>CFBundlePackageType</key>
	<string>APPL</string>
	<key>CFBundleShortVersionString</key>
	<string>1.0</string>
	<key>CFBundleSignature</key>
	<string>????</string>
	<key>CFBundleVersion</key>
	<string>1</string>
	<key>LSRequiresIPhoneOS</key>
	<true/>
	<key>UILaunchStoryboardName</key>
	<string>LaunchScreen</string>
	<key>UIRequiredDeviceCapabilities</key>
	<array>
		<string>armv7</string>
	</array>
	<key>UISupportedInterfaceOrientations</key>
	<array>
		<string>UIInterfaceOrientationPortrait</string>
	</array>
</dict>
</plist>


================================================
FILE: Example/SwiftHashDemo/SwiftHashDemo/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json
================================================
{
  "images" : [
    {
      "idiom" : "iphone",
      "size" : "29x29",
      "scale" : "2x"
    },
    {
      "idiom" : "iphone",
      "size" : "29x29",
      "scale" : "3x"
    },
    {
      "idiom" : "iphone",
      "size" : "40x40",
      "scale" : "2x"
    },
    {
      "idiom" : "iphone",
      "size" : "40x40",
      "scale" : "3x"
    },
    {
      "idiom" : "iphone",
      "size" : "60x60",
      "scale" : "2x"
    },
    {
      "idiom" : "iphone",
      "size" : "60x60",
      "scale" : "3x"
    }
  ],
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}


================================================
FILE: Example/SwiftHashDemo/SwiftHashDemo/Sources/AppDelegate.swift
================================================
import UIKit
import SwiftHash

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

  var window: UIWindow?

  lazy var navigationController: UINavigationController = { [unowned self] in
    let controller = UINavigationController(rootViewController: self.viewController)
    return controller
    }()

  lazy var viewController: ViewController = {
    let controller = ViewController()
    return controller
    }()

  func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    window = UIWindow(frame: UIScreen.mainScreen().bounds)
    window?.rootViewController = navigationController
    window?.makeKeyAndVisible()

    return true
  }
}


================================================
FILE: Example/SwiftHashDemo/SwiftHashDemo/Sources/ViewController.swift
================================================
import UIKit
import SwiftHash

class ViewController: UIViewController {

  override func viewDidLoad() {
    super.viewDidLoad()
    view.backgroundColor = UIColor.whiteColor()
  }
}



================================================
FILE: Example/SwiftHashDemo/SwiftHashDemo.xcodeproj/project.pbxproj
================================================
// !$*UTF8*$!
{
	archiveVersion = 1;
	classes = {
	};
	objectVersion = 46;
	objects = {

/* Begin PBXBuildFile section */
		D5C7F74E1C3BC9CE008CDDBA /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = D5C7F74C1C3BC9CE008CDDBA /* LaunchScreen.storyboard */; };
		D5C7F75B1C3BCA1E008CDDBA /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = D5C7F7571C3BCA1E008CDDBA /* Assets.xcassets */; };
		D5C7F75C1C3BCA1E008CDDBA /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5C7F7591C3BCA1E008CDDBA /* AppDelegate.swift */; };
		D5C7F75D1C3BCA1E008CDDBA /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5C7F75A1C3BCA1E008CDDBA /* ViewController.swift */; };
/* End PBXBuildFile section */

/* Begin PBXFileReference section */
		D5C7F7401C3BC9CE008CDDBA /* SwiftHashDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SwiftHashDemo.app; sourceTree = BUILT_PRODUCTS_DIR; };
		D5C7F74D1C3BC9CE008CDDBA /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
		D5C7F74F1C3BC9CE008CDDBA /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
		D5C7F7571C3BCA1E008CDDBA /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
		D5C7F7591C3BCA1E008CDDBA /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
		D5C7F75A1C3BCA1E008CDDBA /* ViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = "<group>"; };
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
		D5C7F73D1C3BC9CE008CDDBA /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXFrameworksBuildPhase section */

/* Begin PBXGroup section */
		D5C7F7371C3BC9CE008CDDBA = {
			isa = PBXGroup;
			children = (
				D5C7F7421C3BC9CE008CDDBA /* SwiftHashDemo */,
				D5C7F7411C3BC9CE008CDDBA /* Products */,
			);
			sourceTree = "<group>";
		};
		D5C7F7411C3BC9CE008CDDBA /* Products */ = {
			isa = PBXGroup;
			children = (
				D5C7F7401C3BC9CE008CDDBA /* SwiftHashDemo.app */,
			);
			name = Products;
			sourceTree = "<group>";
		};
		D5C7F7421C3BC9CE008CDDBA /* SwiftHashDemo */ = {
			isa = PBXGroup;
			children = (
				D5C7F7561C3BCA1E008CDDBA /* Resources */,
				D5C7F7581C3BCA1E008CDDBA /* Sources */,
				D5C7F7551C3BC9EA008CDDBA /* Supporting Files */,
			);
			path = SwiftHashDemo;
			sourceTree = "<group>";
		};
		D5C7F7551C3BC9EA008CDDBA /* Supporting Files */ = {
			isa = PBXGroup;
			children = (
				D5C7F74C1C3BC9CE008CDDBA /* LaunchScreen.storyboard */,
				D5C7F74F1C3BC9CE008CDDBA /* Info.plist */,
			);
			name = "Supporting Files";
			sourceTree = "<group>";
		};
		D5C7F7561C3BCA1E008CDDBA /* Resources */ = {
			isa = PBXGroup;
			children = (
				D5C7F7571C3BCA1E008CDDBA /* Assets.xcassets */,
			);
			path = Resources;
			sourceTree = "<group>";
		};
		D5C7F7581C3BCA1E008CDDBA /* Sources */ = {
			isa = PBXGroup;
			children = (
				D5C7F7591C3BCA1E008CDDBA /* AppDelegate.swift */,
				D5C7F75A1C3BCA1E008CDDBA /* ViewController.swift */,
			);
			path = Sources;
			sourceTree = "<group>";
		};
/* End PBXGroup section */

/* Begin PBXNativeTarget section */
		D5C7F73F1C3BC9CE008CDDBA /* SwiftHashDemo */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = D5C7F7521C3BC9CE008CDDBA /* Build configuration list for PBXNativeTarget "SwiftHashDemo" */;
			buildPhases = (
				D5C7F73C1C3BC9CE008CDDBA /* Sources */,
				D5C7F73D1C3BC9CE008CDDBA /* Frameworks */,
				D5C7F73E1C3BC9CE008CDDBA /* Resources */,
			);
			buildRules = (
			);
			dependencies = (
			);
			name = SwiftHashDemo;
			productName = SwiftHashDemo;
			productReference = D5C7F7401C3BC9CE008CDDBA /* SwiftHashDemo.app */;
			productType = "com.apple.product-type.application";
		};
/* End PBXNativeTarget section */

/* Begin PBXProject section */
		D5C7F7381C3BC9CE008CDDBA /* Project object */ = {
			isa = PBXProject;
			attributes = {
				LastSwiftUpdateCheck = 0720;
				LastUpgradeCheck = 1020;
				ORGANIZATIONNAME = "Hyper Interaktiv AS";
				TargetAttributes = {
					D5C7F73F1C3BC9CE008CDDBA = {
						CreatedOnToolsVersion = 7.2;
					};
				};
			};
			buildConfigurationList = D5C7F73B1C3BC9CE008CDDBA /* Build configuration list for PBXProject "SwiftHashDemo" */;
			compatibilityVersion = "Xcode 3.2";
			developmentRegion = en;
			hasScannedForEncodings = 0;
			knownRegions = (
				en,
				Base,
			);
			mainGroup = D5C7F7371C3BC9CE008CDDBA;
			productRefGroup = D5C7F7411C3BC9CE008CDDBA /* Products */;
			projectDirPath = "";
			projectRoot = "";
			targets = (
				D5C7F73F1C3BC9CE008CDDBA /* SwiftHashDemo */,
			);
		};
/* End PBXProject section */

/* Begin PBXResourcesBuildPhase section */
		D5C7F73E1C3BC9CE008CDDBA /* Resources */ = {
			isa = PBXResourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				D5C7F75B1C3BCA1E008CDDBA /* Assets.xcassets in Resources */,
				D5C7F74E1C3BC9CE008CDDBA /* LaunchScreen.storyboard in Resources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXResourcesBuildPhase section */

/* Begin PBXSourcesBuildPhase section */
		D5C7F73C1C3BC9CE008CDDBA /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				D5C7F75D1C3BCA1E008CDDBA /* ViewController.swift in Sources */,
				D5C7F75C1C3BCA1E008CDDBA /* AppDelegate.swift in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXSourcesBuildPhase section */

/* Begin PBXVariantGroup section */
		D5C7F74C1C3BC9CE008CDDBA /* LaunchScreen.storyboard */ = {
			isa = PBXVariantGroup;
			children = (
				D5C7F74D1C3BC9CE008CDDBA /* Base */,
			);
			name = LaunchScreen.storyboard;
			sourceTree = "<group>";
		};
/* End PBXVariantGroup section */

/* Begin XCBuildConfiguration section */
		D5C7F7501C3BC9CE008CDDBA /* Debug */ = {
			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;
				CLANG_ENABLE_OBJC_ARC = YES;
				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
				CLANG_WARN_BOOL_CONVERSION = YES;
				CLANG_WARN_COMMA = YES;
				CLANG_WARN_CONSTANT_CONVERSION = YES;
				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
				CLANG_WARN_EMPTY_BODY = YES;
				CLANG_WARN_ENUM_CONVERSION = YES;
				CLANG_WARN_INFINITE_RECURSION = YES;
				CLANG_WARN_INT_CONVERSION = YES;
				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
				CLANG_WARN_STRICT_PROTOTYPES = YES;
				CLANG_WARN_SUSPICIOUS_MOVE = YES;
				CLANG_WARN_UNREACHABLE_CODE = YES;
				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
				COPY_PHASE_STRIP = NO;
				DEBUG_INFORMATION_FORMAT = dwarf;
				ENABLE_STRICT_OBJC_MSGSEND = YES;
				ENABLE_TESTABILITY = YES;
				GCC_C_LANGUAGE_STANDARD = gnu99;
				GCC_DYNAMIC_NO_PIC = NO;
				GCC_NO_COMMON_BLOCKS = YES;
				GCC_OPTIMIZATION_LEVEL = 0;
				GCC_PREPROCESSOR_DEFINITIONS = (
					"DEBUG=1",
					"$(inherited)",
				);
				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
				GCC_WARN_UNDECLARED_SELECTOR = YES;
				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
				GCC_WARN_UNUSED_FUNCTION = YES;
				GCC_WARN_UNUSED_VARIABLE = YES;
				IPHONEOS_DEPLOYMENT_TARGET = 9.2;
				MTL_ENABLE_DEBUG_INFO = YES;
				ONLY_ACTIVE_ARCH = YES;
				SDKROOT = iphoneos;
				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
			};
			name = Debug;
		};
		D5C7F7511C3BC9CE008CDDBA /* Release */ = {
			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;
				CLANG_ENABLE_OBJC_ARC = YES;
				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
				CLANG_WARN_BOOL_CONVERSION = YES;
				CLANG_WARN_COMMA = YES;
				CLANG_WARN_CONSTANT_CONVERSION = YES;
				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
				CLANG_WARN_EMPTY_BODY = YES;
				CLANG_WARN_ENUM_CONVERSION = YES;
				CLANG_WARN_INFINITE_RECURSION = YES;
				CLANG_WARN_INT_CONVERSION = YES;
				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
				CLANG_WARN_STRICT_PROTOTYPES = YES;
				CLANG_WARN_SUSPICIOUS_MOVE = YES;
				CLANG_WARN_UNREACHABLE_CODE = YES;
				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
				COPY_PHASE_STRIP = NO;
				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
				ENABLE_NS_ASSERTIONS = NO;
				ENABLE_STRICT_OBJC_MSGSEND = YES;
				GCC_C_LANGUAGE_STANDARD = gnu99;
				GCC_NO_COMMON_BLOCKS = YES;
				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
				GCC_WARN_UNDECLARED_SELECTOR = YES;
				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
				GCC_WARN_UNUSED_FUNCTION = YES;
				GCC_WARN_UNUSED_VARIABLE = YES;
				IPHONEOS_DEPLOYMENT_TARGET = 9.2;
				MTL_ENABLE_DEBUG_INFO = NO;
				SDKROOT = iphoneos;
				SWIFT_COMPILATION_MODE = wholemodule;
				VALIDATE_PRODUCT = YES;
			};
			name = Release;
		};
		D5C7F7531C3BC9CE008CDDBA /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
				INFOPLIST_FILE = SwiftHashDemo/Info.plist;
				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
				PRODUCT_BUNDLE_IDENTIFIER = com.fantageek.SwiftHash.SwiftHashDemo;
				PRODUCT_NAME = "$(TARGET_NAME)";
			};
			name = Debug;
		};
		D5C7F7541C3BC9CE008CDDBA /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
				INFOPLIST_FILE = SwiftHashDemo/Info.plist;
				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
				PRODUCT_BUNDLE_IDENTIFIER = com.fantageek.SwiftHash.SwiftHashDemo;
				PRODUCT_NAME = "$(TARGET_NAME)";
			};
			name = Release;
		};
/* End XCBuildConfiguration section */

/* Begin XCConfigurationList section */
		D5C7F73B1C3BC9CE008CDDBA /* Build configuration list for PBXProject "SwiftHashDemo" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				D5C7F7501C3BC9CE008CDDBA /* Debug */,
				D5C7F7511C3BC9CE008CDDBA /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		D5C7F7521C3BC9CE008CDDBA /* Build configuration list for PBXNativeTarget "SwiftHashDemo" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				D5C7F7531C3BC9CE008CDDBA /* Debug */,
				D5C7F7541C3BC9CE008CDDBA /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
/* End XCConfigurationList section */
	};
	rootObject = D5C7F7381C3BC9CE008CDDBA /* Project object */;
}


================================================
FILE: Example/SwiftHashDemo/SwiftHashDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
   version = "1.0">
   <FileRef
      location = "self:SwiftHashDemo.xcodeproj">
   </FileRef>
</Workspace>


================================================
FILE: Example/SwiftHashDemo/SwiftHashDemo.xcodeproj/xcshareddata/xcschemes/SwiftHashDemo.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
   LastUpgradeVersion = "1020"
   version = "1.3">
   <BuildAction
      parallelizeBuildables = "YES"
      buildImplicitDependencies = "YES">
      <BuildActionEntries>
         <BuildActionEntry
            buildForTesting = "YES"
            buildForRunning = "YES"
            buildForProfiling = "YES"
            buildForArchiving = "YES"
            buildForAnalyzing = "YES">
            <BuildableReference
               BuildableIdentifier = "primary"
               BlueprintIdentifier = "D5C7F73F1C3BC9CE008CDDBA"
               BuildableName = "SwiftHashDemo.app"
               BlueprintName = "SwiftHashDemo"
               ReferencedContainer = "container:SwiftHashDemo.xcodeproj">
            </BuildableReference>
         </BuildActionEntry>
      </BuildActionEntries>
   </BuildAction>
   <TestAction
      buildConfiguration = "Debug"
      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
      shouldUseLaunchSchemeArgsEnv = "YES">
      <Testables>
      </Testables>
      <MacroExpansion>
         <BuildableReference
            BuildableIdentifier = "primary"
            BlueprintIdentifier = "D5C7F73F1C3BC9CE008CDDBA"
            BuildableName = "SwiftHashDemo.app"
            BlueprintName = "SwiftHashDemo"
            ReferencedContainer = "container:SwiftHashDemo.xcodeproj">
         </BuildableReference>
      </MacroExpansion>
      <AdditionalOptions>
      </AdditionalOptions>
   </TestAction>
   <LaunchAction
      buildConfiguration = "Debug"
      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
      launchStyle = "0"
      useCustomWorkingDirectory = "NO"
      ignoresPersistentStateOnLaunch = "NO"
      debugDocumentVersioning = "YES"
      debugServiceExtension = "internal"
      allowLocationSimulation = "YES">
      <BuildableProductRunnable
         runnableDebuggingMode = "0">
         <BuildableReference
            BuildableIdentifier = "primary"
            BlueprintIdentifier = "D5C7F73F1C3BC9CE008CDDBA"
            BuildableName = "SwiftHashDemo.app"
            BlueprintName = "SwiftHashDemo"
            ReferencedContainer = "container:SwiftHashDemo.xcodeproj">
         </BuildableReference>
      </BuildableProductRunnable>
      <AdditionalOptions>
      </AdditionalOptions>
   </LaunchAction>
   <ProfileAction
      buildConfiguration = "Release"
      shouldUseLaunchSchemeArgsEnv = "YES"
      savedToolIdentifier = ""
      useCustomWorkingDirectory = "NO"
      debugDocumentVersioning = "YES">
      <BuildableProductRunnable
         runnableDebuggingMode = "0">
         <BuildableReference
            BuildableIdentifier = "primary"
            BlueprintIdentifier = "D5C7F73F1C3BC9CE008CDDBA"
            BuildableName = "SwiftHashDemo.app"
            BlueprintName = "SwiftHashDemo"
            ReferencedContainer = "container:SwiftHashDemo.xcodeproj">
         </BuildableReference>
      </BuildableProductRunnable>
   </ProfileAction>
   <AnalyzeAction
      buildConfiguration = "Debug">
   </AnalyzeAction>
   <ArchiveAction
      buildConfiguration = "Release"
      revealArchiveInOrganizer = "YES">
   </ArchiveAction>
</Scheme>


================================================
FILE: LICENSE.md
================================================
Licensed under the **MIT** license

> Copyright (c) 2015 Khoa Pham
>
> Permission is hereby granted, free of charge, to any person obtaining
> a copy of this software and associated documentation files (the
> "Software"), to deal in the Software without restriction, including
> without limitation the rights to use, copy, modify, merge, publish,
> distribute, sublicense, and/or sell copies of the Software, and to
> permit persons to whom the Software is furnished to do so, subject to
> the following conditions:
>
> The above copyright notice and this permission notice shall be
> included in all copies or substantial portions of the Software.
>
> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
> EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
> MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
> IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
> CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
> TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
> SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


================================================
FILE: Package.swift
================================================
import PackageDescription
let package = Package(
  name: "SwiftHash"
)


================================================
FILE: Package@swift-4.swift
================================================
// swift-tools-version:4.0
import PackageDescription

let package = Package(
  name: "SwiftHash",
  products: [
    .library(name: "SwiftHash", targets: ["SwiftHash"])
  ],
  dependencies: [],
  targets: [ .target(name: "SwiftHash", path: "Sources") ]
)


================================================
FILE: Playground-Mac.playground/Contents.swift
================================================
// SwiftHash Mac Playground

import Cocoa
import SwiftHash

var str = "Hello, playground"


================================================
FILE: Playground-Mac.playground/contents.xcplayground
================================================
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<playground version='5.0' target-platform='osx'>
    <timeline fileName='timeline.xctimeline'/>
</playground>


================================================
FILE: Playground-Mac.playground/timeline.xctimeline
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Timeline
   version = "3.0">
   <TimelineItems>
   </TimelineItems>
</Timeline>


================================================
FILE: Playground-iOS.playground/Contents.swift
================================================
// SwiftHash iOS Playground

import UIKit
import SwiftHash

var str = "Hello, playground"


================================================
FILE: Playground-iOS.playground/contents.xcplayground
================================================
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<playground version='5.0' target-platform='ios'>
    <timeline fileName='timeline.xctimeline'/>
</playground>


================================================
FILE: Playground-iOS.playground/timeline.xctimeline
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Timeline
   version = "3.0">
   <TimelineItems>
   </TimelineItems>
</Timeline>


================================================
FILE: README.md
================================================
# SwiftHash

Checkout https://indiegoodies.com/

Hash in Swift

[![CI Status](http://img.shields.io/travis/onmyway133/SwiftHash.svg?style=flat)](https://travis-ci.org/onmyway133/SwiftHash)
[![Version](https://img.shields.io/cocoapods/v/SwiftHash.svg?style=flat)](http://cocoadocs.org/docsets/SwiftHash)
[![Carthage Compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage)
[![License](https://img.shields.io/cocoapods/l/SwiftHash.svg?style=flat)](http://cocoadocs.org/docsets/SwiftHash)
[![Platform](https://img.shields.io/cocoapods/p/SwiftHash.svg?style=flat)](http://cocoadocs.org/docsets/SwiftHash)
<img src="https://img.shields.io/badge/%20in-swift%204.0-orange.svg">

![](Screenshots/Banner.png)

## MD5

```swift
MD5("https://www.google.com") // 8FFDEFBDEC956B595D257F0AAEEFD623
MD5("https://unsplash.it/600/300/?image=1") // D59E956EBB1BE415970F04EC77F4C875
```

## Installation

#### CocoaPods
**SwiftHash** is available through [CocoaPods](http://cocoapods.org). To install
it, simply add the following line to your Podfile:

```ruby
pod 'SwiftHash'
```

#### Carthage
**SwiftHash** is also available through [Carthage](https://github.com/Carthage/Carthage).
To install just write into your Cartfile:

```ruby
github "onmyway133/SwiftHash"
```

#### Manually
1. Download and drop ```/Sources``` folder in your project.  
2. Congratulations!  

#### Import on your swift file
```
import SwiftHash 
```

## Author

Khoa Pham, onmyway133@gmail.com

## Credit

- MD5 based on http://pajhome.org.uk/crypt/md5/md5.html

## Contributing

We would love you to contribute to **SwiftHash**, check the [CONTRIBUTING](https://github.com/onmyway133/SwiftHash/blob/master/CONTRIBUTING.md) file for more info.

## License

**SwiftHash** is available under the MIT license. See the [LICENSE](https://github.com/onmyway133/SwiftHash/blob/master/LICENSE.md) file for more info.


================================================
FILE: Sources/MD5.swift
================================================
/*
 * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
 * Digest Algorithm, as defined in RFC 1321.
 * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009
 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
 * Distributed under the BSD License
 * See http://pajhome.org.uk/crypt/md5 for more info.
 */

/**
 *  SwiftHash
 *  Copyright (c) Khoa Pham 2017
 *  Licensed under the MIT license. See LICENSE file.
 */

import Foundation

// MARK: - Public

public func MD5(_ input: String) -> String {
  return hex_md5(input)
}

// MARK: - Functions

func hex_md5(_ input: String) -> String {
  return rstr2hex(rstr_md5(str2rstr_utf8(input)))
}

func str2rstr_utf8(_ input: String) -> [CUnsignedChar] {
  return Array(input.utf8)
}

func rstr2tr(_ input: [CUnsignedChar]) -> String {
  var output: String = ""

  input.forEach {
    output.append(String(UnicodeScalar($0)))
  }

  return output
}

/*
 * Convert a raw string to a hex string
 */
func rstr2hex(_ input: [CUnsignedChar]) -> String {
  let hexTab: [Character] = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"]
  var output: [Character] = []

  for i in 0..<input.count {
    let x = input[i]
    let value1 = hexTab[Int((x >> 4) & 0x0F)]
    let value2 = hexTab[Int(Int32(x) & 0x0F)]

    output.append(value1)
    output.append(value2)
  }

  return String(output)
}

/*
 * Convert a raw string to an array of little-endian words
 * Characters >255 have their high-byte silently ignored.
 */
func rstr2binl(_ input: [CUnsignedChar]) -> [Int32] {
  var output: [Int: Int32] = [:]

  for i in stride(from: 0, to: input.count * 8, by: 8) {
    let value: Int32 = (Int32(input[i/8]) & 0xFF) << (Int32(i) % 32)

    output[i >> 5] = unwrap(output[i >> 5]) | value
  }

  return dictionary2array(output)
}

/*
 * Convert an array of little-endian words to a string
 */
func binl2rstr(_ input: [Int32]) -> [CUnsignedChar] {
  var output: [CUnsignedChar] = []

  for i in stride(from: 0, to: input.count * 32, by: 8) {
    // [i>>5] >>>
    let value: Int32 = zeroFillRightShift(input[i>>5], Int32(i % 32)) & 0xFF
    output.append(CUnsignedChar(value))
  }

  return output
}

/*
 * Calculate the MD5 of a raw string
 */
func rstr_md5(_ input: [CUnsignedChar]) -> [CUnsignedChar] {
  return binl2rstr(binl_md5(rstr2binl(input), input.count * 8))
}

/*
 * Add integers, wrapping at 2^32.
 */
func safe_add(_ x: Int32, _ y: Int32) -> Int32 {
  return x &+ y
}

/*
 * Bitwise rotate a 32-bit number to the left.
 */
func bit_rol(_ num: Int32, _ cnt: Int32) -> Int32 {
  // num >>>
  return (num << cnt) | zeroFillRightShift(num, (32 - cnt))
}


/*
 * These funcs implement the four basic operations the algorithm uses.
 */
func md5_cmn(_ q: Int32, _ a: Int32, _ b: Int32, _ x: Int32, _ s: Int32, _ t: Int32) -> Int32 {
  return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s), b)
}

func md5_ff(_ a: Int32, _ b: Int32, _ c: Int32, _ d: Int32, _ x: Int32, _ s: Int32, _ t: Int32) -> Int32 {
  return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t)
}

func md5_gg(_ a: Int32, _ b: Int32, _ c: Int32, _ d: Int32, _ x: Int32, _ s: Int32, _ t: Int32) -> Int32 {
  return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t)
}

func md5_hh(_ a: Int32, _ b: Int32, _ c: Int32, _ d: Int32, _ x: Int32, _ s: Int32, _ t: Int32) -> Int32 {
  return md5_cmn(b ^ c ^ d, a, b, x, s, t)
}

func md5_ii(_ a: Int32, _ b: Int32, _ c: Int32, _ d: Int32, _ x: Int32, _ s: Int32, _ t: Int32) -> Int32 {
  return md5_cmn(c ^ (b | (~d)), a, b, x, s, t)
}


/*
 * Calculate the MD5 of an array of little-endian words, and a bit length.
 */
func binl_md5(_ input: [Int32], _ len: Int) -> [Int32] {
  /* append padding */

  var x: [Int: Int32] = [:]
  for (index, value) in input.enumerated() {
    x[index] = value
  }

  let value: Int32 = 0x80 << Int32((len) % 32)
  x[len >> 5] = unwrap(x[len >> 5]) | value

  // >>> 9
  let index = (((len + 64) >> 9) << 4) + 14
  x[index] = unwrap(x[index]) | Int32(len)

  var a: Int32 =  1732584193
  var b: Int32 = -271733879
  var c: Int32 = -1732584194
  var d: Int32 =  271733878

  for i in stride(from: 0, to: length(x), by: 16) {
    let olda: Int32 = a
    let oldb: Int32 = b
    let oldc: Int32 = c
    let oldd: Int32 = d

    a = md5_ff(a, b, c, d, unwrap(x[i + 0]), 7 , -680876936)
    d = md5_ff(d, a, b, c, unwrap(x[i + 1]), 12, -389564586)
    c = md5_ff(c, d, a, b, unwrap(x[i + 2]), 17,  606105819)
    b = md5_ff(b, c, d, a, unwrap(x[i + 3]), 22, -1044525330)
    a = md5_ff(a, b, c, d, unwrap(x[i + 4]), 7 , -176418897)
    d = md5_ff(d, a, b, c, unwrap(x[i + 5]), 12,  1200080426)
    c = md5_ff(c, d, a, b, unwrap(x[i + 6]), 17, -1473231341)
    b = md5_ff(b, c, d, a, unwrap(x[i + 7]), 22, -45705983)
    a = md5_ff(a, b, c, d, unwrap(x[i + 8]), 7 ,  1770035416)
    d = md5_ff(d, a, b, c, unwrap(x[i + 9]), 12, -1958414417)
    c = md5_ff(c, d, a, b, unwrap(x[i + 10]), 17, -42063)
    b = md5_ff(b, c, d, a, unwrap(x[i + 11]), 22, -1990404162)
    a = md5_ff(a, b, c, d, unwrap(x[i + 12]), 7 ,  1804603682)
    d = md5_ff(d, a, b, c, unwrap(x[i + 13]), 12, -40341101)
    c = md5_ff(c, d, a, b, unwrap(x[i + 14]), 17, -1502002290)
    b = md5_ff(b, c, d, a, unwrap(x[i + 15]), 22,  1236535329)

    a = md5_gg(a, b, c, d, unwrap(x[i + 1]), 5 , -165796510)
    d = md5_gg(d, a, b, c, unwrap(x[i + 6]), 9 , -1069501632)
    c = md5_gg(c, d, a, b, unwrap(x[i + 11]), 14,  643717713)
    b = md5_gg(b, c, d, a, unwrap(x[i + 0]), 20, -373897302)
    a = md5_gg(a, b, c, d, unwrap(x[i + 5]), 5 , -701558691)
    d = md5_gg(d, a, b, c, unwrap(x[i + 10]), 9 ,  38016083)
    c = md5_gg(c, d, a, b, unwrap(x[i + 15]), 14, -660478335)
    b = md5_gg(b, c, d, a, unwrap(x[i + 4]), 20, -405537848)
    a = md5_gg(a, b, c, d, unwrap(x[i + 9]), 5 ,  568446438)
    d = md5_gg(d, a, b, c, unwrap(x[i + 14]), 9 , -1019803690)
    c = md5_gg(c, d, a, b, unwrap(x[i + 3]), 14, -187363961)
    b = md5_gg(b, c, d, a, unwrap(x[i + 8]), 20,  1163531501)
    a = md5_gg(a, b, c, d, unwrap(x[i + 13]), 5 , -1444681467)
    d = md5_gg(d, a, b, c, unwrap(x[i + 2]), 9 , -51403784)
    c = md5_gg(c, d, a, b, unwrap(x[i + 7]), 14,  1735328473)
    b = md5_gg(b, c, d, a, unwrap(x[i + 12]), 20, -1926607734)

    a = md5_hh(a, b, c, d, unwrap(x[i + 5]), 4 , -378558)
    d = md5_hh(d, a, b, c, unwrap(x[i + 8]), 11, -2022574463)
    c = md5_hh(c, d, a, b, unwrap(x[i + 11]), 16,  1839030562)
    b = md5_hh(b, c, d, a, unwrap(x[i + 14]), 23, -35309556)
    a = md5_hh(a, b, c, d, unwrap(x[i + 1]), 4 , -1530992060)
    d = md5_hh(d, a, b, c, unwrap(x[i + 4]), 11,  1272893353)
    c = md5_hh(c, d, a, b, unwrap(x[i + 7]), 16, -155497632)
    b = md5_hh(b, c, d, a, unwrap(x[i + 10]), 23, -1094730640)
    a = md5_hh(a, b, c, d, unwrap(x[i + 13]), 4 ,  681279174)
    d = md5_hh(d, a, b, c, unwrap(x[i + 0]), 11, -358537222)
    c = md5_hh(c, d, a, b, unwrap(x[i + 3]), 16, -722521979)
    b = md5_hh(b, c, d, a, unwrap(x[i + 6]), 23,  76029189)
    a = md5_hh(a, b, c, d, unwrap(x[i + 9]), 4 , -640364487)
    d = md5_hh(d, a, b, c, unwrap(x[i + 12]), 11, -421815835)
    c = md5_hh(c, d, a, b, unwrap(x[i + 15]), 16,  530742520)
    b = md5_hh(b, c, d, a, unwrap(x[i + 2]), 23, -995338651)

    a = md5_ii(a, b, c, d, unwrap(x[i + 0]), 6 , -198630844)
    d = md5_ii(d, a, b, c, unwrap(x[i + 7]), 10,  1126891415)
    c = md5_ii(c, d, a, b, unwrap(x[i + 14]), 15, -1416354905)
    b = md5_ii(b, c, d, a, unwrap(x[i + 5]), 21, -57434055)
    a = md5_ii(a, b, c, d, unwrap(x[i + 12]), 6 ,  1700485571)
    d = md5_ii(d, a, b, c, unwrap(x[i + 3]), 10, -1894986606)
    c = md5_ii(c, d, a, b, unwrap(x[i + 10]), 15, -1051523)
    b = md5_ii(b, c, d, a, unwrap(x[i + 1]), 21, -2054922799)
    a = md5_ii(a, b, c, d, unwrap(x[i + 8]), 6 ,  1873313359)
    d = md5_ii(d, a, b, c, unwrap(x[i + 15]), 10, -30611744)
    c = md5_ii(c, d, a, b, unwrap(x[i + 6]), 15, -1560198380)
    b = md5_ii(b, c, d, a, unwrap(x[i + 13]), 21,  1309151649)
    a = md5_ii(a, b, c, d, unwrap(x[i + 4]), 6 , -145523070)
    d = md5_ii(d, a, b, c, unwrap(x[i + 11]), 10, -1120210379)
    c = md5_ii(c, d, a, b, unwrap(x[i + 2]), 15,  718787259)
    b = md5_ii(b, c, d, a, unwrap(x[i + 9]), 21, -343485551)

    a = safe_add(a, olda)
    b = safe_add(b, oldb)
    c = safe_add(c, oldc)
    d = safe_add(d, oldd)
  }

  return [a, b, c, d]
}

// MARK: - Helper

func length(_ dictionary: [Int: Int32]) -> Int {
  return (dictionary.keys.max() ?? 0) + 1
}

func dictionary2array(_ dictionary: [Int: Int32]) -> [Int32] {
  var array = Array<Int32>(repeating: 0, count: dictionary.keys.count)

  for i in Array(dictionary.keys).sorted() {
    array[i] = unwrap(dictionary[i])
  }

  return array
}

func unwrap(_ value: Int32?, _ fallback: Int32 = 0) -> Int32 {
  if let value = value {
    return value
  }

  return fallback
}

func zeroFillRightShift(_ num: Int32, _ count: Int32) -> Int32 {
  let value = UInt32(bitPattern: num) >> UInt32(bitPattern: count)
  return Int32(bitPattern: value)
}


================================================
FILE: Sources/SHA1.swift
================================================
//
//  SHA1.swift
//  SwiftHash
//
//  Created by Khoa Pham on 02/07/16.
//  Copyright © 2016 Fantageek. All rights reserved.
//

import Foundation

// MARK: - Public

func SHA1(_ input: String) -> String {
  return input
}


================================================
FILE: SwiftHash/Info-Mac.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>CFBundleDevelopmentRegion</key>
	<string>en</string>
	<key>CFBundleExecutable</key>
	<string>$(EXECUTABLE_NAME)</string>
	<key>CFBundleIdentifier</key>
	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
	<key>CFBundleInfoDictionaryVersion</key>
	<string>6.0</string>
	<key>CFBundleName</key>
	<string>$(PRODUCT_NAME)</string>
	<key>CFBundlePackageType</key>
	<string>FMWK</string>
	<key>CFBundleShortVersionString</key>
	<string>1.0</string>
	<key>CFBundleSignature</key>
	<string>????</string>
	<key>CFBundleVersion</key>
	<string>$(CURRENT_PROJECT_VERSION)</string>
	<key>NSHumanReadableCopyright</key>
	<string>Copyright © 2016 Hyper Interaktiv AS. All rights reserved.</string>
	<key>NSPrincipalClass</key>
	<string></string>
</dict>
</plist>


================================================
FILE: SwiftHash/Info-iOS.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>CFBundleDevelopmentRegion</key>
	<string>en</string>
	<key>CFBundleExecutable</key>
	<string>$(EXECUTABLE_NAME)</string>
	<key>CFBundleIdentifier</key>
	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
	<key>CFBundleInfoDictionaryVersion</key>
	<string>6.0</string>
	<key>CFBundleName</key>
	<string>$(PRODUCT_NAME)</string>
	<key>CFBundlePackageType</key>
	<string>FMWK</string>
	<key>CFBundleShortVersionString</key>
	<string>1.0</string>
	<key>CFBundleSignature</key>
	<string>????</string>
	<key>CFBundleVersion</key>
	<string>$(CURRENT_PROJECT_VERSION)</string>
	<key>NSPrincipalClass</key>
	<string></string>
</dict>
</plist>


================================================
FILE: SwiftHash/Info-tvOS.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>CFBundleDevelopmentRegion</key>
	<string>en</string>
	<key>CFBundleExecutable</key>
	<string>$(EXECUTABLE_NAME)</string>
	<key>CFBundleIdentifier</key>
	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
	<key>CFBundleInfoDictionaryVersion</key>
	<string>6.0</string>
	<key>CFBundleName</key>
	<string>$(PRODUCT_NAME)</string>
	<key>CFBundlePackageType</key>
	<string>FMWK</string>
	<key>CFBundleShortVersionString</key>
	<string>1.0</string>
	<key>CFBundleVersion</key>
	<string>$(CURRENT_PROJECT_VERSION)</string>
	<key>NSPrincipalClass</key>
	<string></string>
</dict>
</plist>


================================================
FILE: SwiftHash/Info-watchOS.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>CFBundleDevelopmentRegion</key>
	<string>en</string>
	<key>CFBundleExecutable</key>
	<string>$(EXECUTABLE_NAME)</string>
	<key>CFBundleIdentifier</key>
	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
	<key>CFBundleInfoDictionaryVersion</key>
	<string>6.0</string>
	<key>CFBundleName</key>
	<string>$(PRODUCT_NAME)</string>
	<key>CFBundlePackageType</key>
	<string>FMWK</string>
	<key>CFBundleShortVersionString</key>
	<string>1.0</string>
	<key>CFBundleVersion</key>
	<string>$(CURRENT_PROJECT_VERSION)</string>
	<key>NSPrincipalClass</key>
	<string></string>
</dict>
</plist>


================================================
FILE: SwiftHash.podspec
================================================
Pod::Spec.new do |s|
  s.name             = "SwiftHash"
  s.summary          = "Hash in Swift"
  s.version          = "2.0.2"
  s.homepage         = "https://github.com/onmyway133/SwiftHash"
  s.license          = 'MIT'
  s.author           = { "Khoa Pham" => "onmyway133@gmail.com" }
  s.source           = {
    :git => "https://github.com/onmyway133/SwiftHash.git",
    :tag => s.version.to_s
  }
  s.social_media_url = 'https://twitter.com/onmyway133'

  s.ios.deployment_target = '8.0'
  s.osx.deployment_target = '10.9'
  s.tvos.deployment_target = '9.2'
  s.watchos.deployment_target = '2.0'

  s.requires_arc = true
  s.source_files = 'Sources/**/*'

  s.pod_target_xcconfig = { 'SWIFT_VERSION' => '4.1' }
end


================================================
FILE: SwiftHash.xcodeproj/project.pbxproj
================================================
// !$*UTF8*$!
{
	archiveVersion = 1;
	classes = {
	};
	objectVersion = 46;
	objects = {

/* Begin PBXBuildFile section */
		D215F0181D27A96200575970 /* MD5.swift in Sources */ = {isa = PBXBuildFile; fileRef = D215F0171D27A96200575970 /* MD5.swift */; };
		D215F0191D27A96200575970 /* MD5.swift in Sources */ = {isa = PBXBuildFile; fileRef = D215F0171D27A96200575970 /* MD5.swift */; };
		D215F01B1D27A97B00575970 /* Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D215F01A1D27A97B00575970 /* Tests.swift */; };
		D215F01C1D27A97B00575970 /* Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D215F01A1D27A97B00575970 /* Tests.swift */; };
		D215F01E1D27CCE800575970 /* SHA1.swift in Sources */ = {isa = PBXBuildFile; fileRef = D215F01D1D27CCE800575970 /* SHA1.swift */; };
		D215F01F1D27CCE800575970 /* SHA1.swift in Sources */ = {isa = PBXBuildFile; fileRef = D215F01D1D27CCE800575970 /* SHA1.swift */; };
		D2B260D21EB35CD800F56C26 /* naughty_strings.txt in Resources */ = {isa = PBXBuildFile; fileRef = D2B260D11EB35CD800F56C26 /* naughty_strings.txt */; };
		D2B260D31EB35CD800F56C26 /* naughty_strings.txt in Resources */ = {isa = PBXBuildFile; fileRef = D2B260D11EB35CD800F56C26 /* naughty_strings.txt */; };
		D2CF52F21EE15A33001B09FC /* SwiftHash.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D2CF52E91EE15A33001B09FC /* SwiftHash.framework */; };
		D2CF53001EE15AA6001B09FC /* Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D215F01A1D27A97B00575970 /* Tests.swift */; };
		D2CF53051EE15CE3001B09FC /* MD5.swift in Sources */ = {isa = PBXBuildFile; fileRef = D215F0171D27A96200575970 /* MD5.swift */; };
		D2CF53061EE15CE6001B09FC /* SHA1.swift in Sources */ = {isa = PBXBuildFile; fileRef = D215F01D1D27CCE800575970 /* SHA1.swift */; };
		D2CF53071EE15D2E001B09FC /* naughty_strings.txt in Resources */ = {isa = PBXBuildFile; fileRef = D2B260D11EB35CD800F56C26 /* naughty_strings.txt */; };
		D5B2E8AA1C3A780C00C0327D /* SwiftHash.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D5B2E89F1C3A780C00C0327D /* SwiftHash.framework */; };
		D5C6294A1C3A7FAA007F7B7C /* SwiftHash.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D5C629401C3A7FAA007F7B7C /* SwiftHash.framework */; };
/* End PBXBuildFile section */

/* Begin PBXContainerItemProxy section */
		D2CF52F31EE15A33001B09FC /* PBXContainerItemProxy */ = {
			isa = PBXContainerItemProxy;
			containerPortal = D5B2E8961C3A780C00C0327D /* Project object */;
			proxyType = 1;
			remoteGlobalIDString = D2CF52E81EE15A33001B09FC;
			remoteInfo = "SwiftHash-tvOS";
		};
		D5B2E8AB1C3A780C00C0327D /* PBXContainerItemProxy */ = {
			isa = PBXContainerItemProxy;
			containerPortal = D5B2E8961C3A780C00C0327D /* Project object */;
			proxyType = 1;
			remoteGlobalIDString = D5B2E89E1C3A780C00C0327D;
			remoteInfo = SwiftHash;
		};
		D5C6294B1C3A7FAA007F7B7C /* PBXContainerItemProxy */ = {
			isa = PBXContainerItemProxy;
			containerPortal = D5B2E8961C3A780C00C0327D /* Project object */;
			proxyType = 1;
			remoteGlobalIDString = D5C6293F1C3A7FAA007F7B7C;
			remoteInfo = "SwiftHash-Mac";
		};
/* End PBXContainerItemProxy section */

/* Begin PBXFileReference section */
		D215F0171D27A96200575970 /* MD5.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MD5.swift; sourceTree = "<group>"; };
		D215F01A1D27A97B00575970 /* Tests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Tests.swift; sourceTree = "<group>"; };
		D215F01D1D27CCE800575970 /* SHA1.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SHA1.swift; sourceTree = "<group>"; };
		D2B260D11EB35CD800F56C26 /* naughty_strings.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = naughty_strings.txt; sourceTree = "<group>"; };
		D2C719161EE95B9800866E5B /* SwiftHash.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SwiftHash.framework; sourceTree = BUILT_PRODUCTS_DIR; };
		D2CF52E91EE15A33001B09FC /* SwiftHash.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SwiftHash.framework; sourceTree = BUILT_PRODUCTS_DIR; };
		D2CF52F11EE15A33001B09FC /* SwiftHash-tvOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "SwiftHash-tvOSTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
		D2CF53011EE15BCE001B09FC /* Info-tvOS.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "Info-tvOS.plist"; sourceTree = "<group>"; };
		D2CF53031EE15BD6001B09FC /* Info-tvOS.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "Info-tvOS.plist"; sourceTree = "<group>"; };
		D500FD111C3AABED00782D78 /* Playground-iOS.playground */ = {isa = PBXFileReference; lastKnownFileType = file.playground; path = "Playground-iOS.playground"; sourceTree = "<group>"; };
		D500FD121C3AAC8E00782D78 /* Playground-Mac.playground */ = {isa = PBXFileReference; lastKnownFileType = file.playground; path = "Playground-Mac.playground"; sourceTree = "<group>"; };
		D5B2E89F1C3A780C00C0327D /* SwiftHash.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SwiftHash.framework; sourceTree = BUILT_PRODUCTS_DIR; };
		D5B2E8A91C3A780C00C0327D /* SwiftHash-iOS-Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "SwiftHash-iOS-Tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
		D5C629401C3A7FAA007F7B7C /* SwiftHash.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SwiftHash.framework; sourceTree = BUILT_PRODUCTS_DIR; };
		D5C629491C3A7FAA007F7B7C /* SwiftHash-Mac-Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "SwiftHash-Mac-Tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
		D5C6298B1C3A8BBD007F7B7C /* Info-iOS.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "Info-iOS.plist"; sourceTree = "<group>"; };
		D5C6298C1C3A8BBD007F7B7C /* Info-Mac.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "Info-Mac.plist"; sourceTree = "<group>"; };
		D5C629901C3A8BDA007F7B7C /* Info-iOS.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "Info-iOS.plist"; sourceTree = "<group>"; };
		D5C629911C3A8BDA007F7B7C /* Info-Mac.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "Info-Mac.plist"; sourceTree = "<group>"; };
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
		D2C719121EE95B9800866E5B /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		D2CF52E51EE15A33001B09FC /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		D2CF52EE1EE15A33001B09FC /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
				D2CF52F21EE15A33001B09FC /* SwiftHash.framework in Frameworks */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		D5B2E89B1C3A780C00C0327D /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		D5B2E8A61C3A780C00C0327D /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
				D5B2E8AA1C3A780C00C0327D /* SwiftHash.framework in Frameworks */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		D5C6293C1C3A7FAA007F7B7C /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		D5C629461C3A7FAA007F7B7C /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
				D5C6294A1C3A7FAA007F7B7C /* SwiftHash.framework in Frameworks */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXFrameworksBuildPhase section */

/* Begin PBXGroup section */
		D2B260D01EB35CD800F56C26 /* Fixture */ = {
			isa = PBXGroup;
			children = (
				D2B260D11EB35CD800F56C26 /* naughty_strings.txt */,
			);
			path = Fixture;
			sourceTree = "<group>";
		};
		D5B2E8951C3A780C00C0327D = {
			isa = PBXGroup;
			children = (
				D500FD111C3AABED00782D78 /* Playground-iOS.playground */,
				D500FD121C3AAC8E00782D78 /* Playground-Mac.playground */,
				D5C629691C3A809D007F7B7C /* Sources */,
				D5C6295C1C3A800E007F7B7C /* SwiftHash */,
				D5C6298F1C3A8BDA007F7B7C /* SwiftHashTests */,
				D5B2E8A01C3A780C00C0327D /* Products */,
			);
			sourceTree = "<group>";
		};
		D5B2E8A01C3A780C00C0327D /* Products */ = {
			isa = PBXGroup;
			children = (
				D5B2E89F1C3A780C00C0327D /* SwiftHash.framework */,
				D5B2E8A91C3A780C00C0327D /* SwiftHash-iOS-Tests.xctest */,
				D5C629401C3A7FAA007F7B7C /* SwiftHash.framework */,
				D5C629491C3A7FAA007F7B7C /* SwiftHash-Mac-Tests.xctest */,
				D2CF52E91EE15A33001B09FC /* SwiftHash.framework */,
				D2CF52F11EE15A33001B09FC /* SwiftHash-tvOSTests.xctest */,
				D2C719161EE95B9800866E5B /* SwiftHash.framework */,
			);
			name = Products;
			sourceTree = "<group>";
		};
		D5C6295C1C3A800E007F7B7C /* SwiftHash */ = {
			isa = PBXGroup;
			children = (
				D2CF53031EE15BD6001B09FC /* Info-tvOS.plist */,
				D5C6298B1C3A8BBD007F7B7C /* Info-iOS.plist */,
				D5C6298C1C3A8BBD007F7B7C /* Info-Mac.plist */,
			);
			path = SwiftHash;
			sourceTree = "<group>";
		};
		D5C629691C3A809D007F7B7C /* Sources */ = {
			isa = PBXGroup;
			children = (
				D215F0171D27A96200575970 /* MD5.swift */,
				D215F01D1D27CCE800575970 /* SHA1.swift */,
			);
			path = Sources;
			sourceTree = "<group>";
		};
		D5C6298F1C3A8BDA007F7B7C /* SwiftHashTests */ = {
			isa = PBXGroup;
			children = (
				D2CF53011EE15BCE001B09FC /* Info-tvOS.plist */,
				D2B260D01EB35CD800F56C26 /* Fixture */,
				D5C629901C3A8BDA007F7B7C /* Info-iOS.plist */,
				D5C629911C3A8BDA007F7B7C /* Info-Mac.plist */,
				D215F01A1D27A97B00575970 /* Tests.swift */,
			);
			path = SwiftHashTests;
			sourceTree = "<group>";
		};
/* End PBXGroup section */

/* Begin PBXHeadersBuildPhase section */
		D2C719131EE95B9800866E5B /* Headers */ = {
			isa = PBXHeadersBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		D2CF52E61EE15A33001B09FC /* Headers */ = {
			isa = PBXHeadersBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		D5B2E89C1C3A780C00C0327D /* Headers */ = {
			isa = PBXHeadersBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		D5C6293D1C3A7FAA007F7B7C /* Headers */ = {
			isa = PBXHeadersBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXHeadersBuildPhase section */

/* Begin PBXNativeTarget section */
		D2C719151EE95B9800866E5B /* SwiftHash-watchOS */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = D2C7191D1EE95B9800866E5B /* Build configuration list for PBXNativeTarget "SwiftHash-watchOS" */;
			buildPhases = (
				D2C719111EE95B9800866E5B /* Sources */,
				D2C719121EE95B9800866E5B /* Frameworks */,
				D2C719131EE95B9800866E5B /* Headers */,
				D2C719141EE95B9800866E5B /* Resources */,
			);
			buildRules = (
			);
			dependencies = (
			);
			name = "SwiftHash-watchOS";
			productName = "SwiftHash-watchOS";
			productReference = D2C719161EE95B9800866E5B /* SwiftHash.framework */;
			productType = "com.apple.product-type.framework";
		};
		D2CF52E81EE15A33001B09FC /* SwiftHash-tvOS */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = D2CF52FA1EE15A33001B09FC /* Build configuration list for PBXNativeTarget "SwiftHash-tvOS" */;
			buildPhases = (
				D2CF52E41EE15A33001B09FC /* Sources */,
				D2CF52E51EE15A33001B09FC /* Frameworks */,
				D2CF52E61EE15A33001B09FC /* Headers */,
				D2CF52E71EE15A33001B09FC /* Resources */,
			);
			buildRules = (
			);
			dependencies = (
			);
			name = "SwiftHash-tvOS";
			productName = "SwiftHash-tvOS";
			productReference = D2CF52E91EE15A33001B09FC /* SwiftHash.framework */;
			productType = "com.apple.product-type.framework";
		};
		D2CF52F01EE15A33001B09FC /* SwiftHash-tvOSTests */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = D2CF52FD1EE15A33001B09FC /* Build configuration list for PBXNativeTarget "SwiftHash-tvOSTests" */;
			buildPhases = (
				D2CF52ED1EE15A33001B09FC /* Sources */,
				D2CF52EE1EE15A33001B09FC /* Frameworks */,
				D2CF52EF1EE15A33001B09FC /* Resources */,
			);
			buildRules = (
			);
			dependencies = (
				D2CF52F41EE15A33001B09FC /* PBXTargetDependency */,
			);
			name = "SwiftHash-tvOSTests";
			productName = "SwiftHash-tvOSTests";
			productReference = D2CF52F11EE15A33001B09FC /* SwiftHash-tvOSTests.xctest */;
			productType = "com.apple.product-type.bundle.unit-test";
		};
		D5B2E89E1C3A780C00C0327D /* SwiftHash-iOS */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = D5B2E8B31C3A780C00C0327D /* Build configuration list for PBXNativeTarget "SwiftHash-iOS" */;
			buildPhases = (
				D5B2E89A1C3A780C00C0327D /* Sources */,
				D5B2E89B1C3A780C00C0327D /* Frameworks */,
				D5B2E89C1C3A780C00C0327D /* Headers */,
				D5B2E89D1C3A780C00C0327D /* Resources */,
			);
			buildRules = (
			);
			dependencies = (
			);
			name = "SwiftHash-iOS";
			productName = SwiftHash;
			productReference = D5B2E89F1C3A780C00C0327D /* SwiftHash.framework */;
			productType = "com.apple.product-type.framework";
		};
		D5B2E8A81C3A780C00C0327D /* SwiftHash-iOS-Tests */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = D5B2E8B61C3A780C00C0327D /* Build configuration list for PBXNativeTarget "SwiftHash-iOS-Tests" */;
			buildPhases = (
				D5B2E8A51C3A780C00C0327D /* Sources */,
				D5B2E8A61C3A780C00C0327D /* Frameworks */,
				D5B2E8A71C3A780C00C0327D /* Resources */,
			);
			buildRules = (
			);
			dependencies = (
				D5B2E8AC1C3A780C00C0327D /* PBXTargetDependency */,
			);
			name = "SwiftHash-iOS-Tests";
			productName = SwiftHashTests;
			productReference = D5B2E8A91C3A780C00C0327D /* SwiftHash-iOS-Tests.xctest */;
			productType = "com.apple.product-type.bundle.unit-test";
		};
		D5C6293F1C3A7FAA007F7B7C /* SwiftHash-Mac */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = D5C629511C3A7FAA007F7B7C /* Build configuration list for PBXNativeTarget "SwiftHash-Mac" */;
			buildPhases = (
				D5C6293B1C3A7FAA007F7B7C /* Sources */,
				D5C6293C1C3A7FAA007F7B7C /* Frameworks */,
				D5C6293D1C3A7FAA007F7B7C /* Headers */,
				D5C6293E1C3A7FAA007F7B7C /* Resources */,
			);
			buildRules = (
			);
			dependencies = (
			);
			name = "SwiftHash-Mac";
			productName = "SwiftHash-Mac";
			productReference = D5C629401C3A7FAA007F7B7C /* SwiftHash.framework */;
			productType = "com.apple.product-type.framework";
		};
		D5C629481C3A7FAA007F7B7C /* SwiftHash-Mac-Tests */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = D5C629541C3A7FAA007F7B7C /* Build configuration list for PBXNativeTarget "SwiftHash-Mac-Tests" */;
			buildPhases = (
				D5C629451C3A7FAA007F7B7C /* Sources */,
				D5C629461C3A7FAA007F7B7C /* Frameworks */,
				D5C629471C3A7FAA007F7B7C /* Resources */,
			);
			buildRules = (
			);
			dependencies = (
				D5C6294C1C3A7FAA007F7B7C /* PBXTargetDependency */,
			);
			name = "SwiftHash-Mac-Tests";
			productName = "SwiftHash-MacTests";
			productReference = D5C629491C3A7FAA007F7B7C /* SwiftHash-Mac-Tests.xctest */;
			productType = "com.apple.product-type.bundle.unit-test";
		};
/* End PBXNativeTarget section */

/* Begin PBXProject section */
		D5B2E8961C3A780C00C0327D /* Project object */ = {
			isa = PBXProject;
			attributes = {
				LastSwiftUpdateCheck = 0830;
				LastUpgradeCheck = 1020;
				ORGANIZATIONNAME = Fantageek;
				TargetAttributes = {
					D2C719151EE95B9800866E5B = {
						CreatedOnToolsVersion = 8.3.2;
						ProvisioningStyle = Automatic;
					};
					D2CF52E81EE15A33001B09FC = {
						CreatedOnToolsVersion = 8.3.2;
						ProvisioningStyle = Automatic;
					};
					D2CF52F01EE15A33001B09FC = {
						CreatedOnToolsVersion = 8.3.2;
						ProvisioningStyle = Automatic;
					};
					D5B2E89E1C3A780C00C0327D = {
						CreatedOnToolsVersion = 7.2;
						LastSwiftMigration = 1010;
					};
					D5B2E8A81C3A780C00C0327D = {
						CreatedOnToolsVersion = 7.2;
						LastSwiftMigration = 1010;
					};
					D5C6293F1C3A7FAA007F7B7C = {
						CreatedOnToolsVersion = 7.2;
						LastSwiftMigration = 1020;
					};
					D5C629481C3A7FAA007F7B7C = {
						CreatedOnToolsVersion = 7.2;
					};
				};
			};
			buildConfigurationList = D5B2E8991C3A780C00C0327D /* Build configuration list for PBXProject "SwiftHash" */;
			compatibilityVersion = "Xcode 3.2";
			developmentRegion = en;
			hasScannedForEncodings = 0;
			knownRegions = (
				en,
				Base,
			);
			mainGroup = D5B2E8951C3A780C00C0327D;
			productRefGroup = D5B2E8A01C3A780C00C0327D /* Products */;
			projectDirPath = "";
			projectRoot = "";
			targets = (
				D5B2E89E1C3A780C00C0327D /* SwiftHash-iOS */,
				D5C6293F1C3A7FAA007F7B7C /* SwiftHash-Mac */,
				D5B2E8A81C3A780C00C0327D /* SwiftHash-iOS-Tests */,
				D5C629481C3A7FAA007F7B7C /* SwiftHash-Mac-Tests */,
				D2CF52E81EE15A33001B09FC /* SwiftHash-tvOS */,
				D2CF52F01EE15A33001B09FC /* SwiftHash-tvOSTests */,
				D2C719151EE95B9800866E5B /* SwiftHash-watchOS */,
			);
		};
/* End PBXProject section */

/* Begin PBXResourcesBuildPhase section */
		D2C719141EE95B9800866E5B /* Resources */ = {
			isa = PBXResourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		D2CF52E71EE15A33001B09FC /* Resources */ = {
			isa = PBXResourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		D2CF52EF1EE15A33001B09FC /* Resources */ = {
			isa = PBXResourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				D2CF53071EE15D2E001B09FC /* naughty_strings.txt in Resources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		D5B2E89D1C3A780C00C0327D /* Resources */ = {
			isa = PBXResourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		D5B2E8A71C3A780C00C0327D /* Resources */ = {
			isa = PBXResourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				D2B260D21EB35CD800F56C26 /* naughty_strings.txt in Resources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		D5C6293E1C3A7FAA007F7B7C /* Resources */ = {
			isa = PBXResourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		D5C629471C3A7FAA007F7B7C /* Resources */ = {
			isa = PBXResourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				D2B260D31EB35CD800F56C26 /* naughty_strings.txt in Resources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXResourcesBuildPhase section */

/* Begin PBXSourcesBuildPhase section */
		D2C719111EE95B9800866E5B /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		D2CF52E41EE15A33001B09FC /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				D2CF53061EE15CE6001B09FC /* SHA1.swift in Sources */,
				D2CF53051EE15CE3001B09FC /* MD5.swift in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		D2CF52ED1EE15A33001B09FC /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				D2CF53001EE15AA6001B09FC /* Tests.swift in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		D5B2E89A1C3A780C00C0327D /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				D215F01E1D27CCE800575970 /* SHA1.swift in Sources */,
				D215F0181D27A96200575970 /* MD5.swift in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		D5B2E8A51C3A780C00C0327D /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				D215F01B1D27A97B00575970 /* Tests.swift in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		D5C6293B1C3A7FAA007F7B7C /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				D215F01F1D27CCE800575970 /* SHA1.swift in Sources */,
				D215F0191D27A96200575970 /* MD5.swift in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		D5C629451C3A7FAA007F7B7C /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				D215F01C1D27A97B00575970 /* Tests.swift in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXSourcesBuildPhase section */

/* Begin PBXTargetDependency section */
		D2CF52F41EE15A33001B09FC /* PBXTargetDependency */ = {
			isa = PBXTargetDependency;
			target = D2CF52E81EE15A33001B09FC /* SwiftHash-tvOS */;
			targetProxy = D2CF52F31EE15A33001B09FC /* PBXContainerItemProxy */;
		};
		D5B2E8AC1C3A780C00C0327D /* PBXTargetDependency */ = {
			isa = PBXTargetDependency;
			target = D5B2E89E1C3A780C00C0327D /* SwiftHash-iOS */;
			targetProxy = D5B2E8AB1C3A780C00C0327D /* PBXContainerItemProxy */;
		};
		D5C6294C1C3A7FAA007F7B7C /* PBXTargetDependency */ = {
			isa = PBXTargetDependency;
			target = D5C6293F1C3A7FAA007F7B7C /* SwiftHash-Mac */;
			targetProxy = D5C6294B1C3A7FAA007F7B7C /* PBXContainerItemProxy */;
		};
/* End PBXTargetDependency section */

/* Begin XCBuildConfiguration section */
		D2C7191B1EE95B9800866E5B /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				APPLICATION_EXTENSION_API_ONLY = YES;
				CLANG_ANALYZER_NONNULL = YES;
				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
				CLANG_WARN_INFINITE_RECURSION = YES;
				CLANG_WARN_SUSPICIOUS_MOVE = YES;
				CODE_SIGN_IDENTITY = "";
				DEFINES_MODULE = YES;
				DYLIB_COMPATIBILITY_VERSION = 1;
				DYLIB_CURRENT_VERSION = 1;
				DYLIB_INSTALL_NAME_BASE = "@rpath";
				INFOPLIST_FILE = "SwiftHash/Info-watchOS.plist";
				INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
				PRODUCT_BUNDLE_IDENTIFIER = "com.fantageek.SwiftHash-watchOS";
				PRODUCT_NAME = SwiftHash;
				SDKROOT = watchos;
				SKIP_INSTALL = YES;
				SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
				TARGETED_DEVICE_FAMILY = 4;
				WATCHOS_DEPLOYMENT_TARGET = 3.2;
			};
			name = Debug;
		};
		D2C7191C1EE95B9800866E5B /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				APPLICATION_EXTENSION_API_ONLY = YES;
				CLANG_ANALYZER_NONNULL = YES;
				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
				CLANG_WARN_INFINITE_RECURSION = YES;
				CLANG_WARN_SUSPICIOUS_MOVE = YES;
				CODE_SIGN_IDENTITY = "";
				DEFINES_MODULE = YES;
				DYLIB_COMPATIBILITY_VERSION = 1;
				DYLIB_CURRENT_VERSION = 1;
				DYLIB_INSTALL_NAME_BASE = "@rpath";
				INFOPLIST_FILE = "SwiftHash/Info-watchOS.plist";
				INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
				PRODUCT_BUNDLE_IDENTIFIER = "com.fantageek.SwiftHash-watchOS";
				PRODUCT_NAME = SwiftHash;
				SDKROOT = watchos;
				SKIP_INSTALL = YES;
				SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
				TARGETED_DEVICE_FAMILY = 4;
				WATCHOS_DEPLOYMENT_TARGET = 3.2;
			};
			name = Release;
		};
		D2CF52FB1EE15A33001B09FC /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				CLANG_ANALYZER_NONNULL = YES;
				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
				CLANG_WARN_INFINITE_RECURSION = YES;
				CLANG_WARN_SUSPICIOUS_MOVE = YES;
				CODE_SIGN_IDENTITY = "";
				DEFINES_MODULE = YES;
				DYLIB_COMPATIBILITY_VERSION = 1;
				DYLIB_CURRENT_VERSION = 1;
				DYLIB_INSTALL_NAME_BASE = "@rpath";
				INFOPLIST_FILE = "SwiftHash/Info-tvOS.plist";
				INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
				PRODUCT_BUNDLE_IDENTIFIER = "com.fantageek.SwiftHash-tvOS";
				PRODUCT_NAME = SwiftHash;
				SDKROOT = appletvos;
				SKIP_INSTALL = YES;
				SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
				TARGETED_DEVICE_FAMILY = 3;
				TVOS_DEPLOYMENT_TARGET = 9.2;
			};
			name = Debug;
		};
		D2CF52FC1EE15A33001B09FC /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				CLANG_ANALYZER_NONNULL = YES;
				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
				CLANG_WARN_INFINITE_RECURSION = YES;
				CLANG_WARN_SUSPICIOUS_MOVE = YES;
				CODE_SIGN_IDENTITY = "";
				DEFINES_MODULE = YES;
				DYLIB_COMPATIBILITY_VERSION = 1;
				DYLIB_CURRENT_VERSION = 1;
				DYLIB_INSTALL_NAME_BASE = "@rpath";
				INFOPLIST_FILE = "SwiftHash/Info-tvOS.plist";
				INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
				PRODUCT_BUNDLE_IDENTIFIER = "com.fantageek.SwiftHash-tvOS";
				PRODUCT_NAME = SwiftHash;
				SDKROOT = appletvos;
				SKIP_INSTALL = YES;
				SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
				TARGETED_DEVICE_FAMILY = 3;
				TVOS_DEPLOYMENT_TARGET = 9.2;
			};
			name = Release;
		};
		D2CF52FE1EE15A33001B09FC /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
				CLANG_ANALYZER_NONNULL = YES;
				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
				CLANG_WARN_INFINITE_RECURSION = YES;
				CLANG_WARN_SUSPICIOUS_MOVE = YES;
				INFOPLIST_FILE = "SwiftHashTests/Info-tvOS.plist";
				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
				PRODUCT_BUNDLE_IDENTIFIER = "com.fantageek.SwiftHash-tvOSTests";
				PRODUCT_NAME = "$(TARGET_NAME)";
				SDKROOT = appletvos;
				SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
				SWIFT_VERSION = 3.0;
				TVOS_DEPLOYMENT_TARGET = 10.2;
			};
			name = Debug;
		};
		D2CF52FF1EE15A33001B09FC /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
				CLANG_ANALYZER_NONNULL = YES;
				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
				CLANG_WARN_INFINITE_RECURSION = YES;
				CLANG_WARN_SUSPICIOUS_MOVE = YES;
				INFOPLIST_FILE = "SwiftHashTests/Info-tvOS.plist";
				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
				PRODUCT_BUNDLE_IDENTIFIER = "com.fantageek.SwiftHash-tvOSTests";
				PRODUCT_NAME = "$(TARGET_NAME)";
				SDKROOT = appletvos;
				SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
				SWIFT_VERSION = 3.0;
				TVOS_DEPLOYMENT_TARGET = 10.2;
			};
			name = Release;
		};
		D5B2E8B11C3A780C00C0327D /* Debug */ = {
			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;
				CLANG_ENABLE_OBJC_ARC = YES;
				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
				CLANG_WARN_BOOL_CONVERSION = YES;
				CLANG_WARN_COMMA = YES;
				CLANG_WARN_CONSTANT_CONVERSION = YES;
				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
				CLANG_WARN_EMPTY_BODY = YES;
				CLANG_WARN_ENUM_CONVERSION = YES;
				CLANG_WARN_INFINITE_RECURSION = YES;
				CLANG_WARN_INT_CONVERSION = YES;
				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
				CLANG_WARN_STRICT_PROTOTYPES = YES;
				CLANG_WARN_SUSPICIOUS_MOVE = YES;
				CLANG_WARN_UNREACHABLE_CODE = YES;
				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
				COPY_PHASE_STRIP = NO;
				CURRENT_PROJECT_VERSION = 1;
				DEBUG_INFORMATION_FORMAT = dwarf;
				ENABLE_STRICT_OBJC_MSGSEND = YES;
				ENABLE_TESTABILITY = YES;
				GCC_C_LANGUAGE_STANDARD = gnu99;
				GCC_DYNAMIC_NO_PIC = NO;
				GCC_NO_COMMON_BLOCKS = YES;
				GCC_OPTIMIZATION_LEVEL = 0;
				GCC_PREPROCESSOR_DEFINITIONS = (
					"DEBUG=1",
					"$(inherited)",
				);
				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
				GCC_WARN_UNDECLARED_SELECTOR = YES;
				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
				GCC_WARN_UNUSED_FUNCTION = YES;
				GCC_WARN_UNUSED_VARIABLE = YES;
				IPHONEOS_DEPLOYMENT_TARGET = 9.2;
				MTL_ENABLE_DEBUG_INFO = YES;
				ONLY_ACTIVE_ARCH = YES;
				SDKROOT = iphoneos;
				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
				SWIFT_VERSION = 4.0;
				TARGETED_DEVICE_FAMILY = "1,2";
				VERSIONING_SYSTEM = "apple-generic";
				VERSION_INFO_PREFIX = "";
			};
			name = Debug;
		};
		D5B2E8B21C3A780C00C0327D /* Release */ = {
			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;
				CLANG_ENABLE_OBJC_ARC = YES;
				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
				CLANG_WARN_BOOL_CONVERSION = YES;
				CLANG_WARN_COMMA = YES;
				CLANG_WARN_CONSTANT_CONVERSION = YES;
				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
				CLANG_WARN_EMPTY_BODY = YES;
				CLANG_WARN_ENUM_CONVERSION = YES;
				CLANG_WARN_INFINITE_RECURSION = YES;
				CLANG_WARN_INT_CONVERSION = YES;
				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
				CLANG_WARN_STRICT_PROTOTYPES = YES;
				CLANG_WARN_SUSPICIOUS_MOVE = YES;
				CLANG_WARN_UNREACHABLE_CODE = YES;
				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
				COPY_PHASE_STRIP = NO;
				CURRENT_PROJECT_VERSION = 1;
				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
				ENABLE_NS_ASSERTIONS = NO;
				ENABLE_STRICT_OBJC_MSGSEND = YES;
				GCC_C_LANGUAGE_STANDARD = gnu99;
				GCC_NO_COMMON_BLOCKS = YES;
				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
				GCC_WARN_UNDECLARED_SELECTOR = YES;
				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
				GCC_WARN_UNUSED_FUNCTION = YES;
				GCC_WARN_UNUSED_VARIABLE = YES;
				IPHONEOS_DEPLOYMENT_TARGET = 9.2;
				MTL_ENABLE_DEBUG_INFO = NO;
				SDKROOT = iphoneos;
				SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
				SWIFT_VERSION = 4.0;
				TARGETED_DEVICE_FAMILY = "1,2";
				VALIDATE_PRODUCT = YES;
				VERSIONING_SYSTEM = "apple-generic";
				VERSION_INFO_PREFIX = "";
			};
			name = Release;
		};
		D5B2E8B41C3A780C00C0327D /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				CLANG_ENABLE_MODULES = YES;
				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
				DEFINES_MODULE = YES;
				DYLIB_COMPATIBILITY_VERSION = 1;
				DYLIB_CURRENT_VERSION = 1;
				DYLIB_INSTALL_NAME_BASE = "@rpath";
				INFOPLIST_FILE = "$(SRCROOT)/SwiftHash/Info-iOS.plist";
				INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
				PRODUCT_BUNDLE_IDENTIFIER = "com.fantageek.SwiftHash.SwiftHash-iOS";
				PRODUCT_NAME = SwiftHash;
				SKIP_INSTALL = YES;
				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
				SWIFT_SWIFT3_OBJC_INFERENCE = Default;
				SWIFT_VERSION = 4.2;
			};
			name = Debug;
		};
		D5B2E8B51C3A780C00C0327D /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				CLANG_ENABLE_MODULES = YES;
				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
				DEFINES_MODULE = YES;
				DYLIB_COMPATIBILITY_VERSION = 1;
				DYLIB_CURRENT_VERSION = 1;
				DYLIB_INSTALL_NAME_BASE = "@rpath";
				INFOPLIST_FILE = "$(SRCROOT)/SwiftHash/Info-iOS.plist";
				INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
				PRODUCT_BUNDLE_IDENTIFIER = "com.fantageek.SwiftHash.SwiftHash-iOS";
				PRODUCT_NAME = SwiftHash;
				SKIP_INSTALL = YES;
				SWIFT_SWIFT3_OBJC_INFERENCE = Default;
				SWIFT_VERSION = 4.2;
			};
			name = Release;
		};
		D5B2E8B71C3A780C00C0327D /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				CLANG_ENABLE_MODULES = YES;
				FRAMEWORK_SEARCH_PATHS = (
					"$(inherited)",
					"$(PROJECT_DIR)/Carthage/Build/iOS",
				);
				INFOPLIST_FILE = "$(SRCROOT)/SwiftHashTests/Info-iOS.plist";
				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
				PRODUCT_BUNDLE_IDENTIFIER = no.hyper.SwiftHashTests;
				PRODUCT_NAME = "$(TARGET_NAME)";
				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
				SWIFT_SWIFT3_OBJC_INFERENCE = On;
				SWIFT_VERSION = 4.2;
			};
			name = Debug;
		};
		D5B2E8B81C3A780C00C0327D /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				CLANG_ENABLE_MODULES = YES;
				FRAMEWORK_SEARCH_PATHS = (
					"$(inherited)",
					"$(PROJECT_DIR)/Carthage/Build/iOS",
				);
				INFOPLIST_FILE = "$(SRCROOT)/SwiftHashTests/Info-iOS.plist";
				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
				PRODUCT_BUNDLE_IDENTIFIER = no.hyper.SwiftHashTests;
				PRODUCT_NAME = "$(TARGET_NAME)";
				SWIFT_SWIFT3_OBJC_INFERENCE = On;
				SWIFT_VERSION = 4.2;
			};
			name = Release;
		};
		D5C629521C3A7FAA007F7B7C /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				CLANG_ENABLE_MODULES = YES;
				CODE_SIGN_IDENTITY = "-";
				COMBINE_HIDPI_IMAGES = YES;
				DEFINES_MODULE = YES;
				DYLIB_COMPATIBILITY_VERSION = 1;
				DYLIB_CURRENT_VERSION = 1;
				DYLIB_INSTALL_NAME_BASE = "@rpath";
				FRAMEWORK_VERSION = A;
				INFOPLIST_FILE = "$(SRCROOT)/SwiftHash/Info-Mac.plist";
				INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks";
				MACOSX_DEPLOYMENT_TARGET = 10.9;
				PRODUCT_BUNDLE_IDENTIFIER = "com.fantageek.SwiftHash.SwiftHash-Mac";
				PRODUCT_NAME = SwiftHash;
				SDKROOT = macosx;
				SKIP_INSTALL = YES;
				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
				SWIFT_VERSION = 5.0;
			};
			name = Debug;
		};
		D5C629531C3A7FAA007F7B7C /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				CLANG_ENABLE_MODULES = YES;
				CODE_SIGN_IDENTITY = "-";
				COMBINE_HIDPI_IMAGES = YES;
				DEFINES_MODULE = YES;
				DYLIB_COMPATIBILITY_VERSION = 1;
				DYLIB_CURRENT_VERSION = 1;
				DYLIB_INSTALL_NAME_BASE = "@rpath";
				FRAMEWORK_VERSION = A;
				INFOPLIST_FILE = "$(SRCROOT)/SwiftHash/Info-Mac.plist";
				INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks";
				MACOSX_DEPLOYMENT_TARGET = 10.9;
				PRODUCT_BUNDLE_IDENTIFIER = "com.fantageek.SwiftHash.SwiftHash-Mac";
				PRODUCT_NAME = SwiftHash;
				SDKROOT = macosx;
				SKIP_INSTALL = YES;
				SWIFT_VERSION = 5.0;
			};
			name = Release;
		};
		D5C629551C3A7FAA007F7B7C /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				CLANG_ENABLE_MODULES = YES;
				CODE_SIGN_IDENTITY = "-";
				COMBINE_HIDPI_IMAGES = YES;
				INFOPLIST_FILE = "$(SRCROOT)/SwiftHashTests/Info-Mac.plist";
				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks";
				MACOSX_DEPLOYMENT_TARGET = 10.11;
				PRODUCT_BUNDLE_IDENTIFIER = "no.hyper.SwiftHash-MacTests";
				PRODUCT_NAME = "$(TARGET_NAME)";
				SDKROOT = macosx;
				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
			};
			name = Debug;
		};
		D5C629561C3A7FAA007F7B7C /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				CLANG_ENABLE_MODULES = YES;
				CODE_SIGN_IDENTITY = "-";
				COMBINE_HIDPI_IMAGES = YES;
				INFOPLIST_FILE = "$(SRCROOT)/SwiftHashTests/Info-Mac.plist";
				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks";
				MACOSX_DEPLOYMENT_TARGET = 10.11;
				PRODUCT_BUNDLE_IDENTIFIER = "no.hyper.SwiftHash-MacTests";
				PRODUCT_NAME = "$(TARGET_NAME)";
				SDKROOT = macosx;
			};
			name = Release;
		};
/* End XCBuildConfiguration section */

/* Begin XCConfigurationList section */
		D2C7191D1EE95B9800866E5B /* Build configuration list for PBXNativeTarget "SwiftHash-watchOS" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				D2C7191B1EE95B9800866E5B /* Debug */,
				D2C7191C1EE95B9800866E5B /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		D2CF52FA1EE15A33001B09FC /* Build configuration list for PBXNativeTarget "SwiftHash-tvOS" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				D2CF52FB1EE15A33001B09FC /* Debug */,
				D2CF52FC1EE15A33001B09FC /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		D2CF52FD1EE15A33001B09FC /* Build configuration list for PBXNativeTarget "SwiftHash-tvOSTests" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				D2CF52FE1EE15A33001B09FC /* Debug */,
				D2CF52FF1EE15A33001B09FC /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		D5B2E8991C3A780C00C0327D /* Build configuration list for PBXProject "SwiftHash" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				D5B2E8B11C3A780C00C0327D /* Debug */,
				D5B2E8B21C3A780C00C0327D /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		D5B2E8B31C3A780C00C0327D /* Build configuration list for PBXNativeTarget "SwiftHash-iOS" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				D5B2E8B41C3A780C00C0327D /* Debug */,
				D5B2E8B51C3A780C00C0327D /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		D5B2E8B61C3A780C00C0327D /* Build configuration list for PBXNativeTarget "SwiftHash-iOS-Tests" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				D5B2E8B71C3A780C00C0327D /* Debug */,
				D5B2E8B81C3A780C00C0327D /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		D5C629511C3A7FAA007F7B7C /* Build configuration list for PBXNativeTarget "SwiftHash-Mac" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				D5C629521C3A7FAA007F7B7C /* Debug */,
				D5C629531C3A7FAA007F7B7C /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		D5C629541C3A7FAA007F7B7C /* Build configuration list for PBXNativeTarget "SwiftHash-Mac-Tests" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				D5C629551C3A7FAA007F7B7C /* Debug */,
				D5C629561C3A7FAA007F7B7C /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
/* End XCConfigurationList section */
	};
	rootObject = D5B2E8961C3A780C00C0327D /* Project object */;
}


================================================
FILE: SwiftHash.xcodeproj/project.xcworkspace/contents.xcworkspacedata
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
   version = "1.0">
   <FileRef
      location = "self:SwiftHash.xcodeproj">
   </FileRef>
</Workspace>


================================================
FILE: SwiftHash.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>IDEDidComputeMac32BitWarning</key>
	<true/>
</dict>
</plist>


================================================
FILE: SwiftHash.xcodeproj/xcshareddata/xcschemes/SwiftHash-Mac.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
   LastUpgradeVersion = "1020"
   version = "1.3">
   <BuildAction
      parallelizeBuildables = "YES"
      buildImplicitDependencies = "YES">
      <BuildActionEntries>
         <BuildActionEntry
            buildForTesting = "YES"
            buildForRunning = "YES"
            buildForProfiling = "YES"
            buildForArchiving = "YES"
            buildForAnalyzing = "YES">
            <BuildableReference
               BuildableIdentifier = "primary"
               BlueprintIdentifier = "D5C6293F1C3A7FAA007F7B7C"
               BuildableName = "SwiftHash.framework"
               BlueprintName = "SwiftHash-Mac"
               ReferencedContainer = "container:SwiftHash.xcodeproj">
            </BuildableReference>
         </BuildActionEntry>
      </BuildActionEntries>
   </BuildAction>
   <TestAction
      buildConfiguration = "Debug"
      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
      shouldUseLaunchSchemeArgsEnv = "YES">
      <Testables>
         <TestableReference
            skipped = "NO">
            <BuildableReference
               BuildableIdentifier = "primary"
               BlueprintIdentifier = "D5C629481C3A7FAA007F7B7C"
               BuildableName = "SwiftHash-Mac-Tests.xctest"
               BlueprintName = "SwiftHash-Mac-Tests"
               ReferencedContainer = "container:SwiftHash.xcodeproj">
            </BuildableReference>
         </TestableReference>
      </Testables>
      <MacroExpansion>
         <BuildableReference
            BuildableIdentifier = "primary"
            BlueprintIdentifier = "D5C6293F1C3A7FAA007F7B7C"
            BuildableName = "SwiftHash.framework"
            BlueprintName = "SwiftHash-Mac"
            ReferencedContainer = "container:SwiftHash.xcodeproj">
         </BuildableReference>
      </MacroExpansion>
      <AdditionalOptions>
      </AdditionalOptions>
   </TestAction>
   <LaunchAction
      buildConfiguration = "Debug"
      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
      launchStyle = "0"
      useCustomWorkingDirectory = "NO"
      ignoresPersistentStateOnLaunch = "NO"
      debugDocumentVersioning = "YES"
      debugServiceExtension = "internal"
      allowLocationSimulation = "YES">
      <MacroExpansion>
         <BuildableReference
            BuildableIdentifier = "primary"
            BlueprintIdentifier = "D5C6293F1C3A7FAA007F7B7C"
            BuildableName = "SwiftHash.framework"
            BlueprintName = "SwiftHash-Mac"
            ReferencedContainer = "container:SwiftHash.xcodeproj">
         </BuildableReference>
      </MacroExpansion>
      <AdditionalOptions>
      </AdditionalOptions>
   </LaunchAction>
   <ProfileAction
      buildConfiguration = "Release"
      shouldUseLaunchSchemeArgsEnv = "YES"
      savedToolIdentifier = ""
      useCustomWorkingDirectory = "NO"
      debugDocumentVersioning = "YES">
      <MacroExpansion>
         <BuildableReference
            BuildableIdentifier = "primary"
            BlueprintIdentifier = "D5C6293F1C3A7FAA007F7B7C"
            BuildableName = "SwiftHash.framework"
            BlueprintName = "SwiftHash-Mac"
            ReferencedContainer = "container:SwiftHash.xcodeproj">
         </BuildableReference>
      </MacroExpansion>
   </ProfileAction>
   <AnalyzeAction
      buildConfiguration = "Debug">
   </AnalyzeAction>
   <ArchiveAction
      buildConfiguration = "Release"
      revealArchiveInOrganizer = "YES">
   </ArchiveAction>
</Scheme>


================================================
FILE: SwiftHash.xcodeproj/xcshareddata/xcschemes/SwiftHash-iOS.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
   LastUpgradeVersion = "1020"
   version = "1.3">
   <BuildAction
      parallelizeBuildables = "YES"
      buildImplicitDependencies = "YES">
      <BuildActionEntries>
         <BuildActionEntry
            buildForTesting = "YES"
            buildForRunning = "YES"
            buildForProfiling = "YES"
            buildForArchiving = "YES"
            buildForAnalyzing = "YES">
            <BuildableReference
               BuildableIdentifier = "primary"
               BlueprintIdentifier = "D5B2E89E1C3A780C00C0327D"
               BuildableName = "SwiftHash.framework"
               BlueprintName = "SwiftHash-iOS"
               ReferencedContainer = "container:SwiftHash.xcodeproj">
            </BuildableReference>
         </BuildActionEntry>
      </BuildActionEntries>
   </BuildAction>
   <TestAction
      buildConfiguration = "Debug"
      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
      shouldUseLaunchSchemeArgsEnv = "YES">
      <Testables>
         <TestableReference
            skipped = "NO">
            <BuildableReference
               BuildableIdentifier = "primary"
               BlueprintIdentifier = "D5B2E8A81C3A780C00C0327D"
               BuildableName = "SwiftHash-iOS-Tests.xctest"
               BlueprintName = "SwiftHash-iOS-Tests"
               ReferencedContainer = "container:SwiftHash.xcodeproj">
            </BuildableReference>
         </TestableReference>
      </Testables>
      <MacroExpansion>
         <BuildableReference
            BuildableIdentifier = "primary"
            BlueprintIdentifier = "D5B2E89E1C3A780C00C0327D"
            BuildableName = "SwiftHash.framework"
            BlueprintName = "SwiftHash-iOS"
            ReferencedContainer = "container:SwiftHash.xcodeproj">
         </BuildableReference>
      </MacroExpansion>
      <AdditionalOptions>
      </AdditionalOptions>
   </TestAction>
   <LaunchAction
      buildConfiguration = "Debug"
      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
      launchStyle = "0"
      useCustomWorkingDirectory = "NO"
      ignoresPersistentStateOnLaunch = "NO"
      debugDocumentVersioning = "YES"
      debugServiceExtension = "internal"
      allowLocationSimulation = "YES">
      <MacroExpansion>
         <BuildableReference
            BuildableIdentifier = "primary"
            BlueprintIdentifier = "D5B2E89E1C3A780C00C0327D"
            BuildableName = "SwiftHash.framework"
            BlueprintName = "SwiftHash-iOS"
            ReferencedContainer = "container:SwiftHash.xcodeproj">
         </BuildableReference>
      </MacroExpansion>
      <AdditionalOptions>
      </AdditionalOptions>
   </LaunchAction>
   <ProfileAction
      buildConfiguration = "Release"
      shouldUseLaunchSchemeArgsEnv = "YES"
      savedToolIdentifier = ""
      useCustomWorkingDirectory = "NO"
      debugDocumentVersioning = "YES">
      <MacroExpansion>
         <BuildableReference
            BuildableIdentifier = "primary"
            BlueprintIdentifier = "D5B2E89E1C3A780C00C0327D"
            BuildableName = "SwiftHash.framework"
            BlueprintName = "SwiftHash-iOS"
            ReferencedContainer = "container:SwiftHash.xcodeproj">
         </BuildableReference>
      </MacroExpansion>
   </ProfileAction>
   <AnalyzeAction
      buildConfiguration = "Debug">
   </AnalyzeAction>
   <ArchiveAction
      buildConfiguration = "Release"
      revealArchiveInOrganizer = "YES">
   </ArchiveAction>
</Scheme>


================================================
FILE: SwiftHash.xcodeproj/xcshareddata/xcschemes/SwiftHash-tvOS.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
   LastUpgradeVersion = "1020"
   version = "1.3">
   <BuildAction
      parallelizeBuildables = "YES"
      buildImplicitDependencies = "YES">
      <BuildActionEntries>
         <BuildActionEntry
            buildForTesting = "YES"
            buildForRunning = "YES"
            buildForProfiling = "YES"
            buildForArchiving = "YES"
            buildForAnalyzing = "YES">
            <BuildableReference
               BuildableIdentifier = "primary"
               BlueprintIdentifier = "D2CF52E81EE15A33001B09FC"
               BuildableName = "SwiftHash.framework"
               BlueprintName = "SwiftHash-tvOS"
               ReferencedContainer = "container:SwiftHash.xcodeproj">
            </BuildableReference>
         </BuildActionEntry>
      </BuildActionEntries>
   </BuildAction>
   <TestAction
      buildConfiguration = "Debug"
      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
      shouldUseLaunchSchemeArgsEnv = "YES">
      <Testables>
         <TestableReference
            skipped = "NO">
            <BuildableReference
               BuildableIdentifier = "primary"
               BlueprintIdentifier = "D2CF52F01EE15A33001B09FC"
               BuildableName = "SwiftHash-tvOSTests.xctest"
               BlueprintName = "SwiftHash-tvOSTests"
               ReferencedContainer = "container:SwiftHash.xcodeproj">
            </BuildableReference>
         </TestableReference>
      </Testables>
      <MacroExpansion>
         <BuildableReference
            BuildableIdentifier = "primary"
            BlueprintIdentifier = "D2CF52E81EE15A33001B09FC"
            BuildableName = "SwiftHash.framework"
            BlueprintName = "SwiftHash-tvOS"
            ReferencedContainer = "container:SwiftHash.xcodeproj">
         </BuildableReference>
      </MacroExpansion>
      <AdditionalOptions>
      </AdditionalOptions>
   </TestAction>
   <LaunchAction
      buildConfiguration = "Debug"
      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
      launchStyle = "0"
      useCustomWorkingDirectory = "NO"
      ignoresPersistentStateOnLaunch = "NO"
      debugDocumentVersioning = "YES"
      debugServiceExtension = "internal"
      allowLocationSimulation = "YES">
      <MacroExpansion>
         <BuildableReference
            BuildableIdentifier = "primary"
            BlueprintIdentifier = "D2CF52E81EE15A33001B09FC"
            BuildableName = "SwiftHash.framework"
            BlueprintName = "SwiftHash-tvOS"
            ReferencedContainer = "container:SwiftHash.xcodeproj">
         </BuildableReference>
      </MacroExpansion>
      <AdditionalOptions>
      </AdditionalOptions>
   </LaunchAction>
   <ProfileAction
      buildConfiguration = "Release"
      shouldUseLaunchSchemeArgsEnv = "YES"
      savedToolIdentifier = ""
      useCustomWorkingDirectory = "NO"
      debugDocumentVersioning = "YES">
      <MacroExpansion>
         <BuildableReference
            BuildableIdentifier = "primary"
            BlueprintIdentifier = "D2CF52E81EE15A33001B09FC"
            BuildableName = "SwiftHash.framework"
            BlueprintName = "SwiftHash-tvOS"
            ReferencedContainer = "container:SwiftHash.xcodeproj">
         </BuildableReference>
      </MacroExpansion>
   </ProfileAction>
   <AnalyzeAction
      buildConfiguration = "Debug">
   </AnalyzeAction>
   <ArchiveAction
      buildConfiguration = "Release"
      revealArchiveInOrganizer = "YES">
   </ArchiveAction>
</Scheme>


================================================
FILE: SwiftHash.xcodeproj/xcshareddata/xcschemes/SwiftHash-watchOS.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
   LastUpgradeVersion = "1020"
   version = "1.3">
   <BuildAction
      parallelizeBuildables = "YES"
      buildImplicitDependencies = "YES">
      <BuildActionEntries>
         <BuildActionEntry
            buildForTesting = "YES"
            buildForRunning = "YES"
            buildForProfiling = "YES"
            buildForArchiving = "YES"
            buildForAnalyzing = "YES">
            <BuildableReference
               BuildableIdentifier = "primary"
               BlueprintIdentifier = "D2C719151EE95B9800866E5B"
               BuildableName = "SwiftHash.framework"
               BlueprintName = "SwiftHash-watchOS"
               ReferencedContainer = "container:SwiftHash.xcodeproj">
            </BuildableReference>
         </BuildActionEntry>
      </BuildActionEntries>
   </BuildAction>
   <TestAction
      buildConfiguration = "Debug"
      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
      shouldUseLaunchSchemeArgsEnv = "YES">
      <Testables>
      </Testables>
      <AdditionalOptions>
      </AdditionalOptions>
   </TestAction>
   <LaunchAction
      buildConfiguration = "Debug"
      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
      launchStyle = "0"
      useCustomWorkingDirectory = "NO"
      ignoresPersistentStateOnLaunch = "NO"
      debugDocumentVersioning = "YES"
      debugServiceExtension = "internal"
      allowLocationSimulation = "YES">
      <MacroExpansion>
         <BuildableReference
            BuildableIdentifier = "primary"
            BlueprintIdentifier = "D2C719151EE95B9800866E5B"
            BuildableName = "SwiftHash.framework"
            BlueprintName = "SwiftHash-watchOS"
            ReferencedContainer = "container:SwiftHash.xcodeproj">
         </BuildableReference>
      </MacroExpansion>
      <AdditionalOptions>
      </AdditionalOptions>
   </LaunchAction>
   <ProfileAction
      buildConfiguration = "Release"
      shouldUseLaunchSchemeArgsEnv = "YES"
      savedToolIdentifier = ""
      useCustomWorkingDirectory = "NO"
      debugDocumentVersioning = "YES">
      <MacroExpansion>
         <BuildableReference
            BuildableIdentifier = "primary"
            BlueprintIdentifier = "D2C719151EE95B9800866E5B"
            BuildableName = "SwiftHash.framework"
            BlueprintName = "SwiftHash-watchOS"
            ReferencedContainer = "container:SwiftHash.xcodeproj">
         </BuildableReference>
      </MacroExpansion>
   </ProfileAction>
   <AnalyzeAction
      buildConfiguration = "Debug">
   </AnalyzeAction>
   <ArchiveAction
      buildConfiguration = "Release"
      revealArchiveInOrganizer = "YES">
   </ArchiveAction>
</Scheme>


================================================
FILE: SwiftHashTests/Fixture/naughty_strings.txt
================================================
#	Reserved Strings
#
#	Strings which may be used elsewhere in code

undefined
undef
null
NULL
(null)
nil
NIL
true
false
True
False
TRUE
FALSE
None
hasOwnProperty
\
\\

#	Numeric Strings
#
#	Strings which can be interpreted as numeric

0
1
1.00
$1.00
1/2
1E2
1E02
1E+02
-1
-1.00
-$1.00
-1/2
-1E2
-1E02
-1E+02
1/0
0/0
-2147483648/-1
-9223372036854775808/-1
-0
-0.0
+0
+0.0
0.00
0..0
.
0.0.0
0,00
0,,0
,
0,0,0
0.0/0
1.0/0.0
0.0/0.0
1,0/0,0
0,0/0,0
--1
-
-.
-,
999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
NaN
Infinity
-Infinity
INF
1#INF
-1#IND
1#QNAN
1#SNAN
1#IND
0x0
0xffffffff
0xffffffffffffffff
0xabad1dea
123456789012345678901234567890123456789
1,000.00
1 000.00
1'000.00
1,000,000.00
1 000 000.00
1'000'000.00
1.000,00
1 000,00
1'000,00
1.000.000,00
1 000 000,00
1'000'000,00
01000
08
09
2.2250738585072011e-308

#	Special Characters
#
# ASCII punctuation.  All of these characters may need to be escaped in some
# contexts.  Divided into three groups based on (US-layout) keyboard position.

,./;'[]\-=
<>?:"{}|_+
!@#$%^&*()`~

# Non-whitespace C0 controls: U+0001 through U+0008, U+000E through U+001F,
# and U+007F (DEL)
# Often forbidden to appear in various text-based file formats (e.g. XML),
# or reused for internal delimiters on the theory that they should never
# appear in input.
# The next line may appear to be blank or mojibake in some viewers.


# Non-whitespace C1 controls: U+0080 through U+0084 and U+0086 through U+009F.
# Commonly misinterpreted as additional graphic characters.
# The next line may appear to be blank, mojibake, or dingbats in some viewers.
€‚ƒ„†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ

# Whitespace: all of the characters with category Zs, Zl, or Zp (in Unicode
# version 8.0.0), plus U+0009 (HT), U+000B (VT), U+000C (FF), U+0085 (NEL),
# and U+200B (ZERO WIDTH SPACE), which are in the C categories but are often
# treated as whitespace in some contexts.
# This file unfortunately cannot express strings containing
# U+0000, U+000A, or U+000D (NUL, LF, CR).
# The next line may appear to be blank or mojibake in some viewers.
# The next line may be flagged for "trailing whitespace" in some viewers.
	 …             ​

   

# Unicode additional control characters: all of the characters with
# general category Cf (in Unicode 8.0.0).
# The next line may appear to be blank or mojibake in some viewers.
­؀؁؂؃؄؅؜۝܏᠎​‌‍‎‏‪‫‬‭‮⁠⁡⁢⁣⁤⁦⁧⁨⁩𑂽𛲠𛲡𛲢𛲣𝅳𝅴𝅵𝅶𝅷𝅸𝅹𝅺󠀁󠀠󠀡󠀢󠀣󠀤󠀥󠀦󠀧󠀨󠀩󠀪󠀫󠀬󠀭󠀮󠀯󠀰󠀱󠀲󠀳󠀴󠀵󠀶󠀷󠀸󠀹󠀺󠀻󠀼󠀽󠀾󠀿󠁀󠁁󠁂󠁃󠁄󠁅󠁆󠁇󠁈󠁉󠁊󠁋󠁌󠁍󠁎󠁏󠁐󠁑󠁒󠁓󠁔󠁕󠁖󠁗󠁘󠁙󠁚󠁛󠁜󠁝󠁞󠁟󠁠󠁡󠁢󠁣󠁤󠁥󠁦󠁧󠁨󠁩󠁪󠁫󠁬󠁭󠁮󠁯󠁰󠁱󠁲󠁳󠁴󠁵󠁶󠁷󠁸󠁹󠁺󠁻󠁼󠁽󠁾󠁿

# "Byte order marks", U+FEFF and U+FFFE, each on its own line.
# The next two lines may appear to be blank or mojibake in some viewers.

￾

#	Unicode Symbols
#
#	Strings which contain common unicode symbols (e.g. smart quotes)

Ω≈ç√∫˜µ≤≥÷
åß∂ƒ©˙∆˚¬…æ
œ∑´®†¥¨ˆøπ“‘
¡™£¢∞§¶•ªº–≠
¸˛Ç◊ı˜Â¯˘¿
ÅÍÎÏ˝ÓÔÒÚÆ☃
Œ„´‰ˇÁ¨ˆØ∏”’
`⁄€‹›fifl‡°·‚—±
⅛⅜⅝⅞
ЁЂЃЄЅІЇЈЉЊЋЌЍЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя
٠١٢٣٤٥٦٧٨٩

#	Unicode Subscript/Superscript/Accents
#
#	Strings which contain unicode subscripts/superscripts; can cause rendering issues

⁰⁴⁵
₀₁₂
⁰⁴⁵₀₁₂
ด้้้้้็็็็็้้้้้็็็็็้้้้้้้้็็็็็้้้้้็็็็็้้้้้้้้็็็็็้้้้้็็็็็้้้้้้้้็็็็็้้้้้็็็็ ด้้้้้็็็็็้้้้้็็็็็้้้้้้้้็็็็็้้้้้็็็็็้้้้้้้้็็็็็้้้้้็็็็็้้้้้้้้็็็็็้้้้้็็็็ ด้้้้้็็็็็้้้้้็็็็็้้้้้้้้็็็็็้้้้้็็็็็้้้้้้้้็็็็็้้้้้็็็็็้้้้้้้้็็็็็้้้้้็็็็

#	Quotation Marks
#
#	Strings which contain misplaced quotation marks; can cause encoding errors

'
"
''
""
'"'
"''''"'"
"'"'"''''"
<foo val=“bar” />
<foo val=“bar” />
<foo val=”bar“ />
<foo val=`bar' />

#	Two-Byte Characters
#
#	Strings which contain two-byte characters: can cause rendering issues or character-length issues

田中さんにあげて下さい
パーティーへ行かないか
和製漢語
部落格
사회과학원 어학연구소
찦차를 타고 온 펲시맨과 쑛다리 똠방각하
社會科學院語學研究所
울란바토르
𠜎𠜱𠝹𠱓𠱸𠲖𠳏

#	Changing length when lowercased
#
#	Characters which increase in length (2 to 3 bytes) when lowercased
#	Credit: https://twitter.com/jifa/status/625776454479970304

Ⱥ
Ⱦ

#	Japanese Emoticons
#
#	Strings which consists of Japanese-style emoticons which are popular on the web

ヽ༼ຈل͜ຈ༽ノ ヽ༼ຈل͜ຈ༽ノ
(。◕ ∀ ◕。)
`ィ(´∀`∩
__ロ(,_,*)
・( ̄∀ ̄)・:*:
゚・✿ヾ╲(。◕‿◕。)╱✿・゚
,。・:*:・゜’( ☻ ω ☻ )。・:*:・゜’
(╯°□°)╯︵ ┻━┻)
(ノಥ益ಥ)ノ ┻━┻
┬─┬ノ( º _ ºノ)
( ͡° ͜ʖ ͡°)

#	Emoji
#
#	Strings which contain Emoji; should be the same behavior as two-byte characters, but not always

😍
👩🏽
👾 🙇 💁 🙅 🙆 🙋 🙎 🙍
🐵 🙈 🙉 🙊
❤️ 💔 💌 💕 💞 💓 💗 💖 💘 💝 💟 💜 💛 💚 💙
✋🏿 💪🏿 👐🏿 🙌🏿 👏🏿 🙏🏿
🚾 🆒 🆓 🆕 🆖 🆗 🆙 🏧
0️⃣ 1️⃣ 2️⃣ 3️⃣ 4️⃣ 5️⃣ 6️⃣ 7️⃣ 8️⃣ 9️⃣ 🔟

#       Regional Indicator Symbols
#
#       Regional Indicator Symbols can be displayed differently across
#       fonts, and have a number of special behaviors

🇺🇸🇷🇺🇸 🇦🇫🇦🇲🇸
🇺🇸🇷🇺🇸🇦🇫🇦🇲
🇺🇸🇷🇺🇸🇦

#	Unicode Numbers
#
#	Strings which contain unicode numbers; if the code is localized, it should see the input as numeric

123
١٢٣

#	Right-To-Left Strings
#
#	Strings which contain text that should be rendered RTL if possible (e.g. Arabic, Hebrew)

ثم نفس سقطت وبالتحديد،, جزيرتي باستخدام أن دنو. إذ هنا؟ الستار وتنصيب كان. أهّل ايطاليا، بريطانيا-فرنسا قد أخذ. سليمان، إتفاقية بين ما, يذكر الحدود أي بعد, معاملة بولندا، الإطلاق عل إيو.
בְּרֵאשִׁית, בָּרָא אֱלֹהִים, אֵת הַשָּׁמַיִם, וְאֵת הָאָרֶץ
הָיְתָהtestالصفحات التّحول
﷽
ﷺ
مُنَاقَشَةُ سُبُلِ اِسْتِخْدَامِ اللُّغَةِ فِي النُّظُمِ الْقَائِمَةِ وَفِيم يَخُصَّ التَّطْبِيقَاتُ الْحاسُوبِيَّةُ، 

#	Trick Unicode
#
#	Strings which contain unicode with unusual properties (e.g. Right-to-left override) (c.f. http://www.unicode.org/charts/PDF/U2000.pdf)

‪‪test‪
‫test‫

test

test⁠test‫
⁦test⁧

#	Zalgo Text
#
#	Strings which contain "corrupted" text. The corruption will not appear in non-HTML text, however. (via http://www.eeemo.net)

Ṱ̺̺̕o͞ ̷i̲̬͇̪͙n̝̗͕v̟̜̘̦͟o̶̙̰̠kè͚̮̺̪̹̱̤ ̖t̝͕̳̣̻̪͞h̼͓̲̦̳̘̲e͇̣̰̦̬͎ ̢̼̻̱̘h͚͎͙̜̣̲ͅi̦̲̣̰̤v̻͍e̺̭̳̪̰-m̢iͅn̖̺̞̲̯̰d̵̼̟͙̩̼̘̳ ̞̥̱̳̭r̛̗̘e͙p͠r̼̞̻̭̗e̺̠̣͟s̘͇̳͍̝͉e͉̥̯̞̲͚̬͜ǹ̬͎͎̟̖͇̤t͍̬̤͓̼̭͘ͅi̪̱n͠g̴͉ ͏͉ͅc̬̟h͡a̫̻̯͘o̫̟̖͍̙̝͉s̗̦̲.̨̹͈̣
̡͓̞ͅI̗̘̦͝n͇͇͙v̮̫ok̲̫̙͈i̖͙̭̹̠̞n̡̻̮̣̺g̲͈͙̭͙̬͎ ̰t͔̦h̞̲e̢̤ ͍̬̲͖f̴̘͕̣è͖ẹ̥̩l͖͔͚i͓͚̦͠n͖͍̗͓̳̮g͍ ̨o͚̪͡f̘̣̬ ̖̘͖̟͙̮c҉͔̫͖͓͇͖ͅh̵̤̣͚͔á̗̼͕ͅo̼̣̥s̱͈̺̖̦̻͢.̛̖̞̠̫̰
̗̺͖̹̯͓Ṯ̤͍̥͇͈h̲́e͏͓̼̗̙̼̣͔ ͇̜̱̠͓͍ͅN͕͠e̗̱z̘̝̜̺͙p̤̺̹͍̯͚e̠̻̠͜r̨̤͍̺̖͔̖̖d̠̟̭̬̝͟i̦͖̩͓͔̤a̠̗̬͉̙n͚͜ ̻̞̰͚ͅh̵͉i̳̞v̢͇ḙ͎͟-҉̭̩̼͔m̤̭̫i͕͇̝̦n̗͙ḍ̟ ̯̲͕͞ǫ̟̯̰̲͙̻̝f ̪̰̰̗̖̭̘͘c̦͍̲̞͍̩̙ḥ͚a̮͎̟̙͜ơ̩̹͎s̤.̝̝ ҉Z̡̖̜͖̰̣͉̜a͖̰͙̬͡l̲̫̳͍̩g̡̟̼̱͚̞̬ͅo̗͜.̟
̦H̬̤̗̤͝e͜ ̜̥̝̻͍̟́w̕h̖̯͓o̝͙̖͎̱̮ ҉̺̙̞̟͈W̷̼̭a̺̪͍į͈͕̭͙̯̜t̶̼̮s̘͙͖̕ ̠̫̠B̻͍͙͉̳ͅe̵h̵̬͇̫͙i̹͓̳̳̮͎̫̕n͟d̴̪̜̖ ̰͉̩͇͙̲͞ͅT͖̼͓̪͢h͏͓̮̻e̬̝̟ͅ ̤̹̝W͙̞̝͔͇͝ͅa͏͓͔̹̼̣l̴͔̰̤̟͔ḽ̫.͕
Z̮̞̠͙͔ͅḀ̗̞͈̻̗Ḷ͙͎̯̹̞͓G̻O̭̗̮

#	Unicode Upsidedown
#
#	Strings which contain unicode with an "upsidedown" effect (via http://www.upsidedowntext.com)

˙ɐnbᴉlɐ ɐuƃɐɯ ǝɹolop ʇǝ ǝɹoqɐl ʇn ʇunpᴉpᴉɔuᴉ ɹodɯǝʇ poɯsnᴉǝ op pǝs 'ʇᴉlǝ ƃuᴉɔsᴉdᴉpɐ ɹnʇǝʇɔǝsuoɔ 'ʇǝɯɐ ʇᴉs ɹolop ɯnsdᴉ ɯǝɹo˥
00˙Ɩ$-

#	Unicode font
#
#	Strings which contain bold/italic/etc. versions of normal characters

The quick brown fox jumps over the lazy dog
𝐓𝐡𝐞 𝐪𝐮𝐢𝐜𝐤 𝐛𝐫𝐨𝐰𝐧 𝐟𝐨𝐱 𝐣𝐮𝐦𝐩𝐬 𝐨𝐯𝐞𝐫 𝐭𝐡𝐞 𝐥𝐚𝐳𝐲 𝐝𝐨𝐠
𝕿𝖍𝖊 𝖖𝖚𝖎𝖈𝖐 𝖇𝖗𝖔𝖜𝖓 𝖋𝖔𝖝 𝖏𝖚𝖒𝖕𝖘 𝖔𝖛𝖊𝖗 𝖙𝖍𝖊 𝖑𝖆𝖟𝖞 𝖉𝖔𝖌
𝑻𝒉𝒆 𝒒𝒖𝒊𝒄𝒌 𝒃𝒓𝒐𝒘𝒏 𝒇𝒐𝒙 𝒋𝒖𝒎𝒑𝒔 𝒐𝒗𝒆𝒓 𝒕𝒉𝒆 𝒍𝒂𝒛𝒚 𝒅𝒐𝒈
𝓣𝓱𝓮 𝓺𝓾𝓲𝓬𝓴 𝓫𝓻𝓸𝔀𝓷 𝓯𝓸𝔁 𝓳𝓾𝓶𝓹𝓼 𝓸𝓿𝓮𝓻 𝓽𝓱𝓮 𝓵𝓪𝔃𝔂 𝓭𝓸𝓰
𝕋𝕙𝕖 𝕢𝕦𝕚𝕔𝕜 𝕓𝕣𝕠𝕨𝕟 𝕗𝕠𝕩 𝕛𝕦𝕞𝕡𝕤 𝕠𝕧𝕖𝕣 𝕥𝕙𝕖 𝕝𝕒𝕫𝕪 𝕕𝕠𝕘
𝚃𝚑𝚎 𝚚𝚞𝚒𝚌𝚔 𝚋𝚛𝚘𝚠𝚗 𝚏𝚘𝚡 𝚓𝚞𝚖𝚙𝚜 𝚘𝚟𝚎𝚛 𝚝𝚑𝚎 𝚕𝚊𝚣𝚢 𝚍𝚘𝚐
⒯⒣⒠ ⒬⒰⒤⒞⒦ ⒝⒭⒪⒲⒩ ⒡⒪⒳ ⒥⒰⒨⒫⒮ ⒪⒱⒠⒭ ⒯⒣⒠ ⒧⒜⒵⒴ ⒟⒪⒢

#	Script Injection
#
#	Strings which attempt to invoke a benign script injection; shows vulnerability to XSS

<script>alert(123)</script>
&lt;script&gt;alert(&#39;123&#39;);&lt;/script&gt;
<img src=x onerror=alert(123) />
<svg><script>123<1>alert(123)</script>
"><script>alert(123)</script>
'><script>alert(123)</script>
><script>alert(123)</script>
</script><script>alert(123)</script>
< / script >< script >alert(123)< / script >
 onfocus=JaVaSCript:alert(123) autofocus
" onfocus=JaVaSCript:alert(123) autofocus
' onfocus=JaVaSCript:alert(123) autofocus
<script>alert(123)</script>
<sc<script>ript>alert(123)</sc</script>ript>
--><script>alert(123)</script>
";alert(123);t="
';alert(123);t='
JavaSCript:alert(123)
;alert(123);
src=JaVaSCript:prompt(132)
"><script>alert(123);</script x="
'><script>alert(123);</script x='
><script>alert(123);</script x=
" autofocus onkeyup="javascript:alert(123)
' autofocus onkeyup='javascript:alert(123)
<script\x20type="text/javascript">javascript:alert(1);</script>
<script\x3Etype="text/javascript">javascript:alert(1);</script>
<script\x0Dtype="text/javascript">javascript:alert(1);</script>
<script\x09type="text/javascript">javascript:alert(1);</script>
<script\x0Ctype="text/javascript">javascript:alert(1);</script>
<script\x2Ftype="text/javascript">javascript:alert(1);</script>
<script\x0Atype="text/javascript">javascript:alert(1);</script>
'`"><\x3Cscript>javascript:alert(1)</script>
'`"><\x00script>javascript:alert(1)</script>
ABC<div style="x\x3Aexpression(javascript:alert(1)">DEF
ABC<div style="x:expression\x5C(javascript:alert(1)">DEF
ABC<div style="x:expression\x00(javascript:alert(1)">DEF
ABC<div style="x:exp\x00ression(javascript:alert(1)">DEF
ABC<div style="x:exp\x5Cression(javascript:alert(1)">DEF
ABC<div style="x:\x0Aexpression(javascript:alert(1)">DEF
ABC<div style="x:\x09expression(javascript:alert(1)">DEF
ABC<div style="x:\xE3\x80\x80expression(javascript:alert(1)">DEF
ABC<div style="x:\xE2\x80\x84expression(javascript:alert(1)">DEF
ABC<div style="x:\xC2\xA0expression(javascript:alert(1)">DEF
ABC<div style="x:\xE2\x80\x80expression(javascript:alert(1)">DEF
ABC<div style="x:\xE2\x80\x8Aexpression(javascript:alert(1)">DEF
ABC<div style="x:\x0Dexpression(javascript:alert(1)">DEF
ABC<div style="x:\x0Cexpression(javascript:alert(1)">DEF
ABC<div style="x:\xE2\x80\x87expression(javascript:alert(1)">DEF
ABC<div style="x:\xEF\xBB\xBFexpression(javascript:alert(1)">DEF
ABC<div style="x:\x20expression(javascript:alert(1)">DEF
ABC<div style="x:\xE2\x80\x88expression(javascript:alert(1)">DEF
ABC<div style="x:\x00expression(javascript:alert(1)">DEF
ABC<div style="x:\xE2\x80\x8Bexpression(javascript:alert(1)">DEF
ABC<div style="x:\xE2\x80\x86expression(javascript:alert(1)">DEF
ABC<div style="x:\xE2\x80\x85expression(javascript:alert(1)">DEF
ABC<div style="x:\xE2\x80\x82expression(javascript:alert(1)">DEF
ABC<div style="x:\x0Bexpression(javascript:alert(1)">DEF
ABC<div style="x:\xE2\x80\x81expression(javascript:alert(1)">DEF
ABC<div style="x:\xE2\x80\x83expression(javascript:alert(1)">DEF
ABC<div style="x:\xE2\x80\x89expression(javascript:alert(1)">DEF
<a href="\x0Bjavascript:javascript:alert(1)" id="fuzzelement1">test</a>
<a href="\x0Fjavascript:javascript:alert(1)" id="fuzzelement1">test</a>
<a href="\xC2\xA0javascript:javascript:alert(1)" id="fuzzelement1">test</a>
<a href="\x05javascript:javascript:alert(1)" id="fuzzelement1">test</a>
<a href="\xE1\xA0\x8Ejavascript:javascript:alert(1)" id="fuzzelement1">test</a>
<a href="\x18javascript:javascript:alert(1)" id="fuzzelement1">test</a>
<a href="\x11javascript:javascript:alert(1)" id="fuzzelement1">test</a>
<a href="\xE2\x80\x88javascript:javascript:alert(1)" id="fuzzelement1">test</a>
<a href="\xE2\x80\x89javascript:javascript:alert(1)" id="fuzzelement1">test</a>
<a href="\xE2\x80\x80javascript:javascript:alert(1)" id="fuzzelement1">test</a>
<a href="\x17javascript:javascript:alert(1)" id="fuzzelement1">test</a>
<a href="\x03javascript:javascript:alert(1)" id="fuzzelement1">test</a>
<a href="\x0Ejavascript:javascript:alert(1)" id="fuzzelement1">test</a>
<a href="\x1Ajavascript:javascript:alert(1)" id="fuzzelement1">test</a>
<a href="\x00javascript:javascript:alert(1)" id="fuzzelement1">test</a>
<a href="\x10javascript:javascript:alert(1)" id="fuzzelement1">test</a>
<a href="\xE2\x80\x82javascript:javascript:alert(1)" id="fuzzelement1">test</a>
<a href="\x20javascript:javascript:alert(1)" id="fuzzelement1">test</a>
<a href="\x13javascript:javascript:alert(1)" id="fuzzelement1">test</a>
<a href="\x09javascript:javascript:alert(1)" id="fuzzelement1">test</a>
<a href="\xE2\x80\x8Ajavascript:javascript:alert(1)" id="fuzzelement1">test</a>
<a href="\x14javascript:javascript:alert(1)" id="fuzzelement1">test</a>
<a href="\x19javascript:javascript:alert(1)" id="fuzzelement1">test</a>
<a href="\xE2\x80\xAFjavascript:javascript:alert(1)" id="fuzzelement1">test</a>
<a href="\x1Fjavascript:javascript:alert(1)" id="fuzzelement1">test</a>
<a href="\xE2\x80\x81javascript:javascript:alert(1)" id="fuzzelement1">test</a>
<a href="\x1Djavascript:javascript:alert(1)" id="fuzzelement1">test</a>
<a href="\xE2\x80\x87javascript:javascript:alert(1)" id="fuzzelement1">test</a>
<a href="\x07javascript:javascript:alert(1)" id="fuzzelement1">test</a>
<a href="\xE1\x9A\x80javascript:javascript:alert(1)" id="fuzzelement1">test</a>
<a href="\xE2\x80\x83javascript:javascript:alert(1)" id="fuzzelement1">test</a>
<a href="\x04javascript:javascript:alert(1)" id="fuzzelement1">test</a>
<a href="\x01javascript:javascript:alert(1)" id="fuzzelement1">test</a>
<a href="\x08javascript:javascript:alert(1)" id="fuzzelement1">test</a>
<a href="\xE2\x80\x84javascript:javascript:alert(1)" id="fuzzelement1">test</a>
<a href="\xE2\x80\x86javascript:javascript:alert(1)" id="fuzzelement1">test</a>
<a href="\xE3\x80\x80javascript:javascript:alert(1)" id="fuzzelement1">test</a>
<a href="\x12javascript:javascript:alert(1)" id="fuzzelement1">test</a>
<a href="\x0Djavascript:javascript:alert(1)" id="fuzzelement1">test</a>
<a href="\x0Ajavascript:javascript:alert(1)" id="fuzzelement1">test</a>
<a href="\x0Cjavascript:javascript:alert(1)" id="fuzzelement1">test</a>
<a href="\x15javascript:javascript:alert(1)" id="fuzzelement1">test</a>
<a href="\xE2\x80\xA8javascript:javascript:alert(1)" id="fuzzelement1">test</a>
<a href="\x16javascript:javascript:alert(1)" id="fuzzelement1">test</a>
<a href="\x02javascript:javascript:alert(1)" id="fuzzelement1">test</a>
<a href="\x1Bjavascript:javascript:alert(1)" id="fuzzelement1">test</a>
<a href="\x06javascript:javascript:alert(1)" id="fuzzelement1">test</a>
<a href="\xE2\x80\xA9javascript:javascript:alert(1)" id="fuzzelement1">test</a>
<a href="\xE2\x80\x85javascript:javascript:alert(1)" id="fuzzelement1">test</a>
<a href="\x1Ejavascript:javascript:alert(1)" id="fuzzelement1">test</a>
<a href="\xE2\x81\x9Fjavascript:javascript:alert(1)" id="fuzzelement1">test</a>
<a href="\x1Cjavascript:javascript:alert(1)" id="fuzzelement1">test</a>
<a href="javascript\x00:javascript:alert(1)" id="fuzzelement1">test</a>
<a href="javascript\x3A:javascript:alert(1)" id="fuzzelement1">test</a>
<a href="javascript\x09:javascript:alert(1)" id="fuzzelement1">test</a>
<a href="javascript\x0D:javascript:alert(1)" id="fuzzelement1">test</a>
<a href="javascript\x0A:javascript:alert(1)" id="fuzzelement1">test</a>
`"'><img src=xxx:x \x0Aonerror=javascript:alert(1)>
`"'><img src=xxx:x \x22onerror=javascript:alert(1)>
`"'><img src=xxx:x \x0Bonerror=javascript:alert(1)>
`"'><img src=xxx:x \x0Donerror=javascript:alert(1)>
`"'><img src=xxx:x \x2Fonerror=javascript:alert(1)>
`"'><img src=xxx:x \x09onerror=javascript:alert(1)>
`"'><img src=xxx:x \x0Conerror=javascript:alert(1)>
`"'><img src=xxx:x \x00onerror=javascript:alert(1)>
`"'><img src=xxx:x \x27onerror=javascript:alert(1)>
`"'><img src=xxx:x \x20onerror=javascript:alert(1)>
"`'><script>\x3Bjavascript:alert(1)</script>
"`'><script>\x0Djavascript:alert(1)</script>
"`'><script>\xEF\xBB\xBFjavascript:alert(1)</script>
"`'><script>\xE2\x80\x81javascript:alert(1)</script>
"`'><script>\xE2\x80\x84javascript:alert(1)</script>
"`'><script>\xE3\x80\x80javascript:alert(1)</script>
"`'><script>\x09javascript:alert(1)</script>
"`'><script>\xE2\x80\x89javascript:alert(1)</script>
"`'><script>\xE2\x80\x85javascript:alert(1)</script>
"`'><script>\xE2\x80\x88javascript:alert(1)</script>
"`'><script>\x00javascript:alert(1)</script>
"`'><script>\xE2\x80\xA8javascript:alert(1)</script>
"`'><script>\xE2\x80\x8Ajavascript:alert(1)</script>
"`'><script>\xE1\x9A\x80javascript:alert(1)</script>
"`'><script>\x0Cjavascript:alert(1)</script>
"`'><script>\x2Bjavascript:alert(1)</script>
"`'><script>\xF0\x90\x96\x9Ajavascript:alert(1)</script>
"`'><script>-javascript:alert(1)</script>
"`'><script>\x0Ajavascript:alert(1)</script>
"`'><script>\xE2\x80\xAFjavascript:alert(1)</script>
"`'><script>\x7Ejavascript:alert(1)</script>
"`'><script>\xE2\x80\x87javascript:alert(1)</script>
"`'><script>\xE2\x81\x9Fjavascript:alert(1)</script>
"`'><script>\xE2\x80\xA9javascript:alert(1)</script>
"`'><script>\xC2\x85javascript:alert(1)</script>
"`'><script>\xEF\xBF\xAEjavascript:alert(1)</script>
"`'><script>\xE2\x80\x83javascript:alert(1)</script>
"`'><script>\xE2\x80\x8Bjavascript:alert(1)</script>
"`'><script>\xEF\xBF\xBEjavascript:alert(1)</script>
"`'><script>\xE2\x80\x80javascript:alert(1)</script>
"`'><script>\x21javascript:alert(1)</script>
"`'><script>\xE2\x80\x82javascript:alert(1)</script>
"`'><script>\xE2\x80\x86javascript:alert(1)</script>
"`'><script>\xE1\xA0\x8Ejavascript:alert(1)</script>
"`'><script>\x0Bjavascript:alert(1)</script>
"`'><script>\x20javascript:alert(1)</script>
"`'><script>\xC2\xA0javascript:alert(1)</script>
<img \x00src=x onerror="alert(1)">
<img \x47src=x onerror="javascript:alert(1)">
<img \x11src=x onerror="javascript:alert(1)">
<img \x12src=x onerror="javascript:alert(1)">
<img\x47src=x onerror="javascript:alert(1)">
<img\x10src=x onerror="javascript:alert(1)">
<img\x13src=x onerror="javascript:alert(1)">
<img\x32src=x onerror="javascript:alert(1)">
<img\x47src=x onerror="javascript:alert(1)">
<img\x11src=x onerror="javascript:alert(1)">
<img \x47src=x onerror="javascript:alert(1)">
<img \x34src=x onerror="javascript:alert(1)">
<img \x39src=x onerror="javascript:alert(1)">
<img \x00src=x onerror="javascript:alert(1)">
<img src\x09=x onerror="javascript:alert(1)">
<img src\x10=x onerror="javascript:alert(1)">
<img src\x13=x onerror="javascript:alert(1)">
<img src\x32=x onerror="javascript:alert(1)">
<img src\x12=x onerror="javascript:alert(1)">
<img src\x11=x onerror="javascript:alert(1)">
<img src\x00=x onerror="javascript:alert(1)">
<img src\x47=x onerror="javascript:alert(1)">
<img src=x\x09onerror="javascript:alert(1)">
<img src=x\x10onerror="javascript:alert(1)">
<img src=x\x11onerror="javascript:alert(1)">
<img src=x\x12onerror="javascript:alert(1)">
<img src=x\x13onerror="javascript:alert(1)">
<img[a][b][c]src[d]=x[e]onerror=[f]"alert(1)">
<img src=x onerror=\x09"javascript:alert(1)">
<img src=x onerror=\x10"javascript:alert(1)">
<img src=x onerror=\x11"javascript:alert(1)">
<img src=x onerror=\x12"javascript:alert(1)">
<img src=x onerror=\x32"javascript:alert(1)">
<img src=x onerror=\x00"javascript:alert(1)">
<a href=java&#1&#2&#3&#4&#5&#6&#7&#8&#11&#12script:javascript:alert(1)>XXX</a>
<img src="x` `<script>javascript:alert(1)</script>"` `>
<img src onerror /" '"= alt=javascript:alert(1)//">
<title onpropertychange=javascript:alert(1)></title><title title=>
<a href=http://foo.bar/#x=`y></a><img alt="`><img src=x:x onerror=javascript:alert(1)></a>">
<!--[if]><script>javascript:alert(1)</script -->
<!--[if<img src=x onerror=javascript:alert(1)//]> -->
<script src="/\%(jscript)s"></script>
<script src="\\%(jscript)s"></script>
<IMG """><SCRIPT>alert("XSS")</SCRIPT>">
<IMG SRC=javascript:alert(String.fromCharCode(88,83,83))>
<IMG SRC=# onmouseover="alert('xxs')">
<IMG SRC= onmouseover="alert('xxs')">
<IMG onmouseover="alert('xxs')">
<IMG SRC=&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#39;&#88;&#83;&#83;&#39;&#41;>
<IMG SRC=&#0000106&#0000097&#0000118&#0000097&#0000115&#0000099&#0000114&#0000105&#0000112&#0000116&#0000058&#0000097&#0000108&#0000101&#0000114&#0000116&#0000040&#0000039&#0000088&#0000083&#0000083&#0000039&#0000041>
<IMG SRC=&#x6A&#x61&#x76&#x61&#x73&#x63&#x72&#x69&#x70&#x74&#x3A&#x61&#x6C&#x65&#x72&#x74&#x28&#x27&#x58&#x53&#x53&#x27&#x29>
<IMG SRC="jav   ascript:alert('XSS');">
<IMG SRC="jav&#x09;ascript:alert('XSS');">
<IMG SRC="jav&#x0A;ascript:alert('XSS');">
<IMG SRC="jav&#x0D;ascript:alert('XSS');">
perl -e 'print "<IMG SRC=java\0script:alert(\"XSS\")>";' > out
<IMG SRC=" &#14;  javascript:alert('XSS');">
<SCRIPT/XSS SRC="http://ha.ckers.org/xss.js"></SCRIPT>
<BODY onload!#$%&()*~+-_.,:;?@[/|\]^`=alert("XSS")>
<SCRIPT/SRC="http://ha.ckers.org/xss.js"></SCRIPT>
<<SCRIPT>alert("XSS");//<</SCRIPT>
<SCRIPT SRC=http://ha.ckers.org/xss.js?< B >
<SCRIPT SRC=//ha.ckers.org/.j>
<IMG SRC="javascript:alert('XSS')"
<iframe src=http://ha.ckers.org/scriptlet.html <
\";alert('XSS');//
<u oncopy=alert()> Copy me</u>
<i onwheel=alert(1)> Scroll over me </i>
<plaintext>
http://a/%%30%30
</textarea><script>alert(123)</script>

#	SQL Injection
#
#	Strings which can cause a SQL injection if inputs are not sanitized

1;DROP TABLE users
1'; DROP TABLE users-- 1
' OR 1=1 -- 1
' OR '1'='1
 
%
_

#	Server Code Injection
#
#	Strings which can cause user to run code on server as a privileged user (c.f. https://news.ycombinator.com/item?id=7665153)

-
--
--version
--help
$USER
/dev/null; touch /tmp/blns.fail ; echo
`touch /tmp/blns.fail`
$(touch /tmp/blns.fail)
@{[system "touch /tmp/blns.fail"]}

#	Command Injection (Ruby)
#
#	Strings which can call system commands within Ruby/Rails applications

eval("puts 'hello world'")
System("ls -al /")
`ls -al /`
Kernel.exec("ls -al /")
Kernel.exit(1)
%x('ls -al /')

#      XXE Injection (XML)
#
#	String which can reveal system files when parsed by a badly configured XML parser

<?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPE foo [ <!ELEMENT foo ANY ><!ENTITY xxe SYSTEM "file:///etc/passwd" >]><foo>&xxe;</foo>

#	Unwanted Interpolation
#
#	Strings which can be accidentally expanded into different strings if evaluated in the wrong context, e.g. used as a printf format string or via Perl or shell eval. Might expose sensitive data from the program doing the interpolation, or might just represent the wrong string.

$HOME
$ENV{'HOME'}
%d
%s
{0}
%*.*s
File:///

#	File Inclusion
#
#	Strings which can cause user to pull in files that should not be a part of a web server

../../../../../../../../../../../etc/passwd%00
../../../../../../../../../../../etc/hosts

#	Known CVEs and Vulnerabilities
#
#	Strings that test for known vulnerabilities

() { 0; }; touch /tmp/blns.shellshock1.fail;
() { _; } >_[$($())] { touch /tmp/blns.shellshock2.fail; }
<<< %s(un='%s') = %u
+++ATH0

#	MSDOS/Windows Special Filenames
#
#	Strings which are reserved characters in MSDOS/Windows

CON
PRN
AUX
CLOCK$
NUL
A:
ZZ:
COM1
LPT1
LPT2
LPT3
COM2
COM3
COM4

#   IRC specific strings
#
#   Strings that may occur on IRC clients that make security products freak out

DCC SEND STARTKEYLOGGER 0 0 0

#	Scunthorpe Problem
#
#	Innocuous strings which may be blocked by profanity filters (https://en.wikipedia.org/wiki/Scunthorpe_problem)

Scunthorpe General Hospital
Penistone Community Church
Lightwater Country Park
Jimmy Clitheroe
Horniman Museum
shitake mushrooms
RomansInSussex.co.uk
http://www.cum.qc.ca/
Craig Cockburn, Software Specialist
Linda Callahan
Dr. Herman I. Libshitz
magna cum laude
Super Bowl XXX
medieval erection of parapets
evaluate
mocha
expression
Arsenal canal
classic
Tyson Gay
Dick Van Dyke
basement

#	Human injection
#
#	Strings which may cause human to reinterpret worldview

If you're reading this, you've been in a coma for almost 20 years now. We're trying a new technique. We don't know where this message will end up in your dream, but we hope it works. Please wake up, we miss you.

#	Terminal escape codes
#
#	Strings which punish the fools who use cat/type on this file

Roses are red, violets are blue. Hope you enjoy terminal hue
But now...for my greatest trick...
The quick brown fox... [Beeeep]

#	iOS Vulnerabilities
#
#	Strings which crashed iMessage in various versions of iOS

Powerلُلُصّبُلُلصّبُررً ॣ ॣh ॣ ॣ冗
🏳0🌈️


================================================
FILE: SwiftHashTests/Info-Mac.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>CFBundleDevelopmentRegion</key>
	<string>en</string>
	<key>CFBundleExecutable</key>
	<string>$(EXECUTABLE_NAME)</string>
	<key>CFBundleIdentifier</key>
	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
	<key>CFBundleInfoDictionaryVersion</key>
	<string>6.0</string>
	<key>CFBundleName</key>
	<string>$(PRODUCT_NAME)</string>
	<key>CFBundlePackageType</key>
	<string>BNDL</string>
	<key>CFBundleShortVersionString</key>
	<string>1.0</string>
	<key>CFBundleSignature</key>
	<string>????</string>
	<key>CFBundleVersion</key>
	<string>1</string>
</dict>
</plist>


================================================
FILE: SwiftHashTests/Info-iOS.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>CFBundleDevelopmentRegion</key>
	<string>en</string>
	<key>CFBundleExecutable</key>
	<string>$(EXECUTABLE_NAME)</string>
	<key>CFBundleIdentifier</key>
	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
	<key>CFBundleInfoDictionaryVersion</key>
	<string>6.0</string>
	<key>CFBundleName</key>
	<string>$(PRODUCT_NAME)</string>
	<key>CFBundlePackageType</key>
	<string>BNDL</string>
	<key>CFBundleShortVersionString</key>
	<string>1.0</string>
	<key>CFBundleSignature</key>
	<string>????</string>
	<key>CFBundleVersion</key>
	<string>1</string>
</dict>
</plist>


================================================
FILE: SwiftHashTests/Info-tvOS.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>CFBundleDevelopmentRegion</key>
	<string>en</string>
	<key>CFBundleExecutable</key>
	<string>$(EXECUTABLE_NAME)</string>
	<key>CFBundleIdentifier</key>
	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
	<key>CFBundleInfoDictionaryVersion</key>
	<string>6.0</string>
	<key>CFBundleName</key>
	<string>$(PRODUCT_NAME)</string>
	<key>CFBundlePackageType</key>
	<string>BNDL</string>
	<key>CFBundleShortVersionString</key>
	<string>1.0</string>
	<key>CFBundleVersion</key>
	<string>1</string>
</dict>
</plist>


================================================
FILE: SwiftHashTests/Tests.swift
================================================
import XCTest
@testable import SwiftHash

class Tests: XCTestCase {

  func testHelper() {
    XCTAssertEqual(str2rstr_utf8("hello"), [104, 101, 108, 108, 111])

    let hello = str2rstr_utf8("hello")
    let world = str2rstr_utf8("world")
    let google = str2rstr_utf8("https://www.google.com")

    XCTAssertEqual(rstr2tr(hello), "hello")
    XCTAssertEqual(rstr2tr(world), "world")
    XCTAssertEqual(rstr2tr(google), "https://www.google.com")

    XCTAssertEqual(rstr2binl(hello), [1819043176, 111])
    XCTAssertEqual(rstr2binl(world), [1819438967, 100])
    XCTAssertEqual(rstr2binl(google), [1886680168, 791624307, 779581303, 1735356263, 1663985004, 28015])

    XCTAssertEqual(rstr2hex(hello), "68656C6C6F")
    XCTAssertEqual(rstr2hex(world), "776F726C64")
    XCTAssertEqual(rstr2hex(google), "68747470733A2F2F7777772E676F6F676C652E636F6D")

    XCTAssertEqual(Int32(-991732713) << Int32(12), 901869568)
    XCTAssertEqual(Int32(991732713) << Int32(12), -901869568)
    XCTAssertEqual(zeroFillRightShift(-991732713, (32 - 12)), 3150)

    XCTAssertEqual(bit_rol(1589092186, 17), 1052032367)
    XCTAssertEqual(bit_rol(-991732713, 12), 901872718)

    XCTAssertEqual(md5_cmn(-617265063, -615378706, -617265106, 0, 17, -1473231341), 434767261)

    XCTAssertEqual(md5_ff(271733878, -615343318, -271733879, -1732584194, 32879, 12, -389564586), 286529400)

    XCTAssertEqual(binl_md5(rstr2binl(hello), hello.count * 8), [708854109, 1982483388, -1851952711, -1832577264])
    XCTAssertEqual(binl_md5(rstr2binl(world), world.count * 8), [925923709, -2046724448, -2113778857, -415894286])
  }

  func testMD5() {
    XCTAssertEqual(MD5("hello"),
                   "5D41402ABC4B2A76B9719D911017C592")
    XCTAssertEqual(MD5("world"),
                   "7D793037A0760186574B0282F2F435E7")
    XCTAssertEqual(MD5("https://www.google.com"),
                   "8FFDEFBDEC956B595D257F0AAEEFD623")
    XCTAssertEqual(MD5("https://www.google.com/logos/doodles/2016/parents-day-in-korea-5757703554072576-hp2x.jpg"),
                   "0DFB10E8D2AE771B3B3ED4544139644E")
    XCTAssertEqual(MD5("https://unsplash.it/600/300/?image=1"),
                   "D59E956EBB1BE415970F04EC77F4C875")
    XCTAssertEqual(MD5(""),
                   "D41D8CD98F00B204E9800998ECF8427E")
    XCTAssertEqual(MD5("ABCDEFGHIJKLMNOPQRSTWXYZ1234567890"),
                   "B8F4F38629EC4F4A23F5DCC6086F8035")
    XCTAssertEqual(MD5("abcdefghijklmnopqrstwxyz1234567890"),
                   "B2E875F4D53CCF6CEFB5CDA3F86FC542")
    XCTAssertEqual(MD5("0123456789"),
                   "781E5E245D69B566979B86E28D23F2C7")
    XCTAssertEqual(MD5("0"),
                   "CFCD208495D565EF66E7DFF9F98764DA")
    XCTAssertEqual(MD5("https://twitter.com/_HairForceOne/status/745235759460810752"),
                   "40C2BFA3D7BFC7A453013ECD54022255")
    XCTAssertEqual(MD5("Det er et velkjent faktum at lesere distraheres av lesbart innhold på en side når man ser på dens layout. Poenget med å bruke Lorem Ipsum er at det har en mer eller mindre normal fordeling av bokstaver i ord, i motsetning til 'Innhold her, innhold her', og gir inntrykk av å være lesbar tekst. Mange webside- og sideombrekkingsprogrammer bruker nå Lorem Ipsum som sin standard for provisorisk tekst"),
                   "6B2880BCC7554CF07E72DB9C99BF3284")
    XCTAssertEqual(MD5("\\"),
                   "28D397E87306B8631F3ED80D858D35F0")
    XCTAssertEqual(MD5("http://res.cloudinary.com/demo/image/upload/w_300,h_200,c_crop/sample.jpg"),
                   "6E30D9CC4C08BE4EEA49076328D4C1F0")
    XCTAssertEqual(MD5("http://res.cloudinary.com/demo/image/upload/x_355,y_410,w_300,h_200,c_crop/brown_sheep.jpg"),
                   "019E9D72B5AF84EF114868875C1597ED")
    XCTAssertEqual(MD5("http://www.w3schools.com/tags/html_form_submit.asp?text=Hello+G%C3%BCnter"),
                   "C89A2146CD3DF34ECDA86B6E0709B3FD")
    XCTAssertEqual(MD5("!%40%23%24%25%5E%26*()%2C.%3C%3E%5C'1234567890-%3D"),
                   "09A1790760693160E74B9D6FCEC7EF64")
  }

  func testMD5_Data() {
    let data = "https://www.google.com".data(using: String.Encoding.utf8)
    XCTAssertEqual(MD5(String(data: data!, encoding: String.Encoding.utf8)!),
                   "8FFDEFBDEC956B595D257F0AAEEFD623")
  }

  func testNaughtyStrings() {
    let path = Bundle(for: Tests.self).path(forResource: "naughty_strings", ofType: "txt")!
    let content = try! String(contentsOfFile: path, encoding: .utf8)
    let lines = content.components(separatedBy: .newlines)

    lines.forEach { line in
      let md5 = MD5(line)
      XCTAssertEqual(md5.count, 32)
    }
  }
}


================================================
FILE: script.sh
================================================
#!/bin/sh

curl -o ./SwiftHashTests/Fixture/naughty_string.txt -k https://raw.githubusercontent.com/minimaxir/big-list-of-naughty-strings/master/blns.txt
Download .txt
gitextract_0ksah8ot/

├── .github/
│   └── FUNDING.yml
├── .gitignore
├── .slather.yml
├── .swift-version
├── .travis.yml
├── CONTRIBUTING.md
├── Example/
│   └── SwiftHashDemo/
│       ├── Podfile
│       ├── SwiftHashDemo/
│       │   ├── Base.lproj/
│       │   │   └── LaunchScreen.storyboard
│       │   ├── Info.plist
│       │   ├── Resources/
│       │   │   └── Assets.xcassets/
│       │   │       └── AppIcon.appiconset/
│       │   │           └── Contents.json
│       │   └── Sources/
│       │       ├── AppDelegate.swift
│       │       └── ViewController.swift
│       └── SwiftHashDemo.xcodeproj/
│           ├── project.pbxproj
│           ├── project.xcworkspace/
│           │   └── contents.xcworkspacedata
│           └── xcshareddata/
│               └── xcschemes/
│                   └── SwiftHashDemo.xcscheme
├── LICENSE.md
├── Package.swift
├── Package@swift-4.swift
├── Playground-Mac.playground/
│   ├── Contents.swift
│   ├── contents.xcplayground
│   └── timeline.xctimeline
├── Playground-iOS.playground/
│   ├── Contents.swift
│   ├── contents.xcplayground
│   └── timeline.xctimeline
├── README.md
├── Sources/
│   ├── MD5.swift
│   └── SHA1.swift
├── SwiftHash/
│   ├── Info-Mac.plist
│   ├── Info-iOS.plist
│   ├── Info-tvOS.plist
│   └── Info-watchOS.plist
├── SwiftHash.podspec
├── SwiftHash.xcodeproj/
│   ├── project.pbxproj
│   ├── project.xcworkspace/
│   │   ├── contents.xcworkspacedata
│   │   └── xcshareddata/
│   │       └── IDEWorkspaceChecks.plist
│   └── xcshareddata/
│       └── xcschemes/
│           ├── SwiftHash-Mac.xcscheme
│           ├── SwiftHash-iOS.xcscheme
│           ├── SwiftHash-tvOS.xcscheme
│           └── SwiftHash-watchOS.xcscheme
├── SwiftHashTests/
│   ├── Fixture/
│   │   └── naughty_strings.txt
│   ├── Info-Mac.plist
│   ├── Info-iOS.plist
│   ├── Info-tvOS.plist
│   └── Tests.swift
└── script.sh
Condensed preview — 45 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (142K chars).
[
  {
    "path": ".github/FUNDING.yml",
    "chars": 644,
    "preview": "# These are supported funding model platforms\n\ngithub: onmyway133\npatreon: # Replace with a single Patreon username\nopen"
  },
  {
    "path": ".gitignore",
    "chars": 345,
    "preview": "# OS X\n.DS_Store\n.AppleDouble\n.LSOverride\nIcon\n._*\n.Spotlight-V100\n.Trashes\n\n# Xcode\n#\nbuild/\n*.pbxuser\n!default.pbxuser"
  },
  {
    "path": ".slather.yml",
    "chars": 107,
    "preview": "ci_service: travis_ci\ncoverage_service: coveralls\nxcodeproj: SwiftHash.xcodeproj\nsource_directory: Sources\n"
  },
  {
    "path": ".swift-version",
    "chars": 4,
    "preview": "4.1\n"
  },
  {
    "path": ".travis.yml",
    "chars": 564,
    "preview": "osx_image: xcode7.3\nlanguage: objective-c\n\nbefore_install:\n- brew update\n- if brew outdated | grep -qx carthage; then br"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 513,
    "preview": "GitHub Issues is for reporting bugs, discussing features and general feedback in **SwiftHash**. Be sure to check our [do"
  },
  {
    "path": "Example/SwiftHashDemo/Podfile",
    "chars": 103,
    "preview": "use_frameworks!\n\nplatform :ios, '8.0'\n\ntarget 'SwiftHashDemo' do\n pod 'SwiftHash', path: '../../'\nend\n\n"
  },
  {
    "path": "Example/SwiftHashDemo/SwiftHashDemo/Base.lproj/LaunchScreen.storyboard",
    "chars": 1663,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard"
  },
  {
    "path": "Example/SwiftHashDemo/SwiftHashDemo/Info.plist",
    "chars": 1038,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "Example/SwiftHashDemo/SwiftHashDemo/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json",
    "chars": 586,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"29x29\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\""
  },
  {
    "path": "Example/SwiftHashDemo/SwiftHashDemo/Sources/AppDelegate.swift",
    "chars": 735,
    "preview": "import UIKit\nimport SwiftHash\n\n@UIApplicationMain\nclass AppDelegate: UIResponder, UIApplicationDelegate {\n\n  var window:"
  },
  {
    "path": "Example/SwiftHashDemo/SwiftHashDemo/Sources/ViewController.swift",
    "chars": 184,
    "preview": "import UIKit\nimport SwiftHash\n\nclass ViewController: UIViewController {\n\n  override func viewDidLoad() {\n    super.viewD"
  },
  {
    "path": "Example/SwiftHashDemo/SwiftHashDemo.xcodeproj/project.pbxproj",
    "chars": 11769,
    "preview": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 46;\n\tobjects = {\n\n/* Begin PBXBuildFile section *"
  },
  {
    "path": "Example/SwiftHashDemo/SwiftHashDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "chars": 158,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:SwiftHashDemo.x"
  },
  {
    "path": "Example/SwiftHashDemo/SwiftHashDemo.xcodeproj/xcshareddata/xcschemes/SwiftHashDemo.xcscheme",
    "chars": 3375,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"1020\"\n   version = \"1.3\">\n   <BuildAction\n      "
  },
  {
    "path": "LICENSE.md",
    "chars": 1126,
    "preview": "Licensed under the **MIT** license\n\n> Copyright (c) 2015 Khoa Pham\n>\n> Permission is hereby granted, free of charge, to "
  },
  {
    "path": "Package.swift",
    "chars": 71,
    "preview": "import PackageDescription\nlet package = Package(\n  name: \"SwiftHash\"\n)\n"
  },
  {
    "path": "Package@swift-4.swift",
    "chars": 254,
    "preview": "// swift-tools-version:4.0\nimport PackageDescription\n\nlet package = Package(\n  name: \"SwiftHash\",\n  products: [\n    .lib"
  },
  {
    "path": "Playground-Mac.playground/Contents.swift",
    "chars": 90,
    "preview": "// SwiftHash Mac Playground\n\nimport Cocoa\nimport SwiftHash\n\nvar str = \"Hello, playground\"\n"
  },
  {
    "path": "Playground-Mac.playground/contents.xcplayground",
    "chars": 166,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<playground version='5.0' target-platform='osx'>\n    <timeline f"
  },
  {
    "path": "Playground-Mac.playground/timeline.xctimeline",
    "chars": 120,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Timeline\n   version = \"3.0\">\n   <TimelineItems>\n   </TimelineItems>\n</Timeline>\n"
  },
  {
    "path": "Playground-iOS.playground/Contents.swift",
    "chars": 90,
    "preview": "// SwiftHash iOS Playground\n\nimport UIKit\nimport SwiftHash\n\nvar str = \"Hello, playground\"\n"
  },
  {
    "path": "Playground-iOS.playground/contents.xcplayground",
    "chars": 166,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<playground version='5.0' target-platform='ios'>\n    <timeline f"
  },
  {
    "path": "Playground-iOS.playground/timeline.xctimeline",
    "chars": 120,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Timeline\n   version = \"3.0\">\n   <TimelineItems>\n   </TimelineItems>\n</Timeline>\n"
  },
  {
    "path": "README.md",
    "chars": 1934,
    "preview": "# SwiftHash\n\nCheckout https://indiegoodies.com/\n\nHash in Swift\n\n[![CI Status](http://img.shields.io/travis/onmyway133/Sw"
  },
  {
    "path": "Sources/MD5.swift",
    "chars": 9000,
    "preview": "/*\n * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n * Digest Algorithm, as defined in RFC 1321"
  },
  {
    "path": "Sources/SHA1.swift",
    "chars": 224,
    "preview": "//\n//  SHA1.swift\n//  SwiftHash\n//\n//  Created by Khoa Pham on 02/07/16.\n//  Copyright © 2016 Fantageek. All rights rese"
  },
  {
    "path": "SwiftHash/Info-Mac.plist",
    "chars": 920,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "SwiftHash/Info-iOS.plist",
    "chars": 806,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "SwiftHash/Info-tvOS.plist",
    "chars": 753,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "SwiftHash/Info-watchOS.plist",
    "chars": 753,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "SwiftHash.podspec",
    "chars": 718,
    "preview": "Pod::Spec.new do |s|\n  s.name             = \"SwiftHash\"\n  s.summary          = \"Hash in Swift\"\n  s.version          = \"2"
  },
  {
    "path": "SwiftHash.xcodeproj/project.pbxproj",
    "chars": 40257,
    "preview": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 46;\n\tobjects = {\n\n/* Begin PBXBuildFile section *"
  },
  {
    "path": "SwiftHash.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "chars": 154,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:SwiftHash.xcode"
  },
  {
    "path": "SwiftHash.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
    "chars": 238,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "SwiftHash.xcodeproj/xcshareddata/xcschemes/SwiftHash-Mac.xcscheme",
    "chars": 3699,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"1020\"\n   version = \"1.3\">\n   <BuildAction\n      "
  },
  {
    "path": "SwiftHash.xcodeproj/xcshareddata/xcschemes/SwiftHash-iOS.xcscheme",
    "chars": 3699,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"1020\"\n   version = \"1.3\">\n   <BuildAction\n      "
  },
  {
    "path": "SwiftHash.xcodeproj/xcshareddata/xcschemes/SwiftHash-tvOS.xcscheme",
    "chars": 3703,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"1020\"\n   version = \"1.3\">\n   <BuildAction\n      "
  },
  {
    "path": "SwiftHash.xcodeproj/xcshareddata/xcschemes/SwiftHash-watchOS.xcscheme",
    "chars": 2892,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"1020\"\n   version = \"1.3\">\n   <BuildAction\n      "
  },
  {
    "path": "SwiftHashTests/Fixture/naughty_strings.txt",
    "chars": 23652,
    "preview": "#\tReserved Strings\n#\n#\tStrings which may be used elsewhere in code\n\nundefined\nundef\nnull\nNULL\n(null)\nnil\nNIL\ntrue\nfalse\n"
  },
  {
    "path": "SwiftHashTests/Info-Mac.plist",
    "chars": 733,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "SwiftHashTests/Info-iOS.plist",
    "chars": 733,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "SwiftHashTests/Info-tvOS.plist",
    "chars": 680,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "SwiftHashTests/Tests.swift",
    "chars": 4603,
    "preview": "import XCTest\n@testable import SwiftHash\n\nclass Tests: XCTestCase {\n\n  func testHelper() {\n    XCTAssertEqual(str2rstr_u"
  },
  {
    "path": "script.sh",
    "chars": 153,
    "preview": "#!/bin/sh\n\ncurl -o ./SwiftHashTests/Fixture/naughty_string.txt -k https://raw.githubusercontent.com/minimaxir/big-list-o"
  }
]

About this extraction

This page contains the full source code of the onmyway133/SwiftHash GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 45 files (121.4 KB), approximately 44.8k tokens. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!