Repository: naoty/SwiftCSV Branch: master Commit: 324d583f2e6e Files: 48 Total size: 403.5 KB Directory structure: gitextract_8pv7pl38/ ├── .github/ │ └── workflows/ │ └── swift.yml ├── .gitignore ├── .spi.yml ├── .travis.yml ├── CHANGELOG.md ├── CONTRIBUTING.md ├── Configuration/ │ └── Project.xcconfig ├── LICENSE ├── Package.swift ├── README.md ├── SwiftCSV/ │ ├── CSV+DelimiterGuessing.swift │ ├── CSV.swift │ ├── CSVDelimiter.swift │ ├── EnumeratedCSVView.swift │ ├── NamedCSVView.swift │ ├── Parser.swift │ ├── ParsingState.swift │ ├── Resources/ │ │ └── PrivacyInfo.xcprivacy │ ├── Serializer.swift │ └── String+Lines.swift ├── SwiftCSV.podspec ├── SwiftCSV.xcodeproj/ │ ├── SwiftCSV-Info.plist │ ├── SwiftCSVTests-Info.plist │ ├── project.pbxproj │ ├── project.xcworkspace/ │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata/ │ │ └── IDEWorkspaceChecks.plist │ └── xcshareddata/ │ ├── xcbaselines/ │ │ └── 3D1E59BE1945FFAD001CF760.xcbaseline/ │ │ ├── 210222BF-FF70-4818-9C2E-20B20A9F7F48.plist │ │ └── Info.plist │ └── xcschemes/ │ ├── SwiftCSV-iOS.xcscheme │ ├── SwiftCSV-macOS.xcscheme │ ├── SwiftCSV-tvOS.xcscheme │ └── SwiftCSV-watchOS.xcscheme └── SwiftCSVTests/ ├── CSVDelimiterGuessingTests.swift ├── CSVDelimiterTests.swift ├── EnumeratedCSVViewTests.swift ├── NamedCSVViewTests.swift ├── NewlineTests.swift ├── ParserTests.swift ├── PerformanceTest.swift ├── QuotedTests.swift ├── ResourceHelper.swift ├── TSVTests.swift ├── TestData/ │ ├── empty_fields.csv │ ├── large.csv │ ├── quotes.csv │ ├── utf8_with_bom.csv │ └── wonderland.csv └── URLTests.swift ================================================ FILE CONTENTS ================================================ ================================================ FILE: .github/workflows/swift.yml ================================================ name: Swift on: push: branches: [ master ] pull_request: branches: [ master ] jobs: build: runs-on: macos-latest steps: - uses: actions/checkout@v2 - name: Build run: swift build -v - name: Run tests run: swift test -v ================================================ FILE: .gitignore ================================================ # Created by http://www.gitignore.io ### Objective-C ### # Xcode # build/ *.pbxuser !default.pbxuser *.mode1v3 !default.mode1v3 *.mode2v3 !default.mode2v3 *.perspectivev3 !default.perspectivev3 xcuserdata *.xccheckout *.moved-aside DerivedData *.hmap *.ipa *.xcuserstate .build/ # CocoaPods # # We recommend against adding the Pods directory to your .gitignore. However # you should judge for yourself, the pros and cons are mentioned at: # http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control # # Pods/ ================================================ FILE: .spi.yml ================================================ version: 1 builder: configs: - documentation_targets: [SwiftCSV] ================================================ FILE: .travis.yml ================================================ language: swift branches: except: - gh-pages install: - gem install cocoapods --pre -N - gem install xcpretty -N env: global: - LC_CTYPE=en_US.UTF-8 - LANG=en_US.UTF-8 - FRAMEWORK_NAME="SwiftCSV" matrix: include: - osx_image: xcode9 env: SCHEME="macOS" SDK="macosx10.13" DESTINATION="arch=x86_64" SWIFT_VERSION="3.2" ACTION="test" - osx_image: xcode9.3 env: SCHEME="macOS" SDK="macosx10.13" DESTINATION="arch=x86_64" SWIFT_VERSION="4.1" ACTION="test" - osx_image: xcode10.1 env: SCHEME="macOS" SDK="macosx10.14" DESTINATION="arch=x86_64" SWIFT_VERSION="4.2" ACTION="test" - osx_image: xcode10.2 env: SCHEME="macOS" SDK="macosx10.14" DESTINATION="arch=x86_64" SWIFT_VERSION="5.0" ACTION="test" - osx_image: xcode10.2 env: SCHEME="iOS" SDK="iphonesimulator" DESTINATION="OS=12.0,name=iPhone 8" SWIFT_VERSION="5.0" ACTION="test" - osx_image: xcode10.2 env: SCHEME="watchOS" SDK="watchsimulator" DESTINATION="OS=4.0,name=Apple Watch - 42mm" SWIFT_VERSION="5.0" ACTION="build" - osx_image: xcode10.2 env: SCHEME="tvOS" SDK="appletvsimulator" DESTINATION="OS=12.0,name=Apple TV 4K" SWIFT_VERSION="5.0" ACTION="test" script: - set -o pipefail - pod --version - xcodebuild -version - xcodebuild -showsdks - xcodebuild "$ACTION" -project "$FRAMEWORK_NAME.xcodeproj" -scheme "$FRAMEWORK_NAME-$SCHEME" -sdk "$SDK" -destination "$DESTINATION" -configuration Debug ONLY_ACTIVE_ARCH=YES GCC_INSTRUMENT_PROGRAM_FLOW_ARCS=YES GCC_GENERATE_TEST_COVERAGE_FILES=YES SWIFT_VERSION=$SWIFT_VERSION - pod lib lint --quick after_success: - bash <(curl -s https://codecov.io/bash) ================================================ FILE: CHANGELOG.md ================================================ ## Unreleased API Changes: - Allow `enumerateAsArray` and `enumerateAsDict` to accept a function that throws. ## 0.10.0 Other: - Add Privacy Manifest files. ## 0.9.1 Other: - Fix project settings. ## 0.9.0 Other: - Fix local testing. ## 0.8.2 Bugfixes: - Strip byte order mark from all input strings, not just when loading files (#128) -- @Diggory ## 0.8.1 Bugfixes: - Strip byte order mark from Strings when importing so they don't become part of imported content's cells. See #97 for discussion. (#103) -- @lardieri - Respect alternate delimiters when serializing the CSV. See #102 for discussion. (#107) -- @lardieri - Escape any double-quotes embedded inside the field values when serializing the CSV. See #111 for discussion. -- @lardieri ## 0.8.0 API Changes: - Replace namedRows/namedColumns and enumeratedRows/enumeratedColumns with CSV and CSV types that both expose a rows/columns property with different types. This way you cannot screw up by trying to access an unpopulated array because the CSV was loaded wrongly. The type knows it all. (#76) -- @DivineDominion - CSV.namedRows/CSV.namedColumns and CSV.enumeratedRows/CSV.enumeratedColumns are removed. - NamedCSV/EnumeratedCSV type aliases are introduced to simplify access. ## 0.7.1 Bugfixes: - Backport of fix from 0.8.1 to 0.7.x: Strip byte order mark from Strings when importing so they don't become part of imported content's cells. See #97 for discussion. (#104) -- @lardieri ## 0.7.0 API Changes: - Introduce delimiter guessing (#100) - @DivineDominion ## 0.6.1 Bugfixes: - Fix enumeration limit being ignored in `Parser` (#98) - @jasonmedeiros ## 0.6.0 API Changes: - Rename `View` to `CSVView` to avoid SwiftUI namespace conflicts (#93) - @campionfellin Other: - Bump iOS Deployment target to 9.0, Xcode 12 recommended changes. (#91) - @DenTelezhkin ================================================ FILE: CONTRIBUTING.md ================================================ # Contributing to SwiftCSV Pull requests are welcome on the [`master`](https://github.com/swiftcsv/SwiftCSV) branch. We know making you first pull request can be scary. If you have trouble with any of the contribution rules, **still make the Pull Request**. We are here to help. We personally think the best way to get started contributing to this library is by using it in one of your projects! ## Swift style guide We follow the [Ray Wenderlich Style Guide](https://github.com/raywenderlich/swift-style-guide) very closely with the following exception: - Use the Xcode default of 4 spaces for indentation. ## SwiftLint [SwiftLint](https://github.com/realm/SwiftLint) will run automatically on all pull requests via [houndci.com](https://houndci.com/). If you have SwiftLint installed, you will receive the same warnings in Xcode at build time, that hound will check for on pull requests. Function body lengths in tests will often cause a SwiftLint warning. These can be handled on a per case bases by prefixing the function with: ```swift // swiftlint:disable function_body_length func someFunctionThatShouldHaveAReallyLongBody() {} ``` Common violations to look out for are trailing white and valid docs. ## Tests All code going into master requires testing. We strive for code coverage of 100% to ensure the best possibility that all edge cases are tested for. It's good practice to test for any variations that can cause nil to be returned. Tests are run in [Travis CI](https://travis-ci.org/swiftcsv/SwiftCSV) automatically on all pull requests, branches and tags. These are the same tests that run in Xcode at development time. ## Comments - **Readable code should be preferred over commented code.** Comments in code are used to document non-obvious use cases. For example, when the use of a piece of code looks unnecessary, and naming alone does not convey why it is required. - **Comments need to be updated or removed if the code changes.** If a comment is included, it is just as important as code and has the same technical debt weight. The only thing worse than a unneeded comment is a comment that is not maintained. ## Code documentation Code documentation is different from comments. Please be liberal with code docs. When writing code docs, remember they are: - Displayed to a user in Xcode quick help - Used to generate API documentation - API documentation also generates Dash docsets In particular paying attention to: - Keeping docs current - Documenting all parameters and return types (SwiftLint helps with warning when they are not valid) - Stating common issues that a user may run into See [NSHipster Swift Documentation](http://nshipster.com/swift-documentation/) for a good reference on writing documentation in Swift. ## Pull Request Technicalities You're always welcome to open Pull Requests, even if the result is not quite finished or you need feedback! Here's a checklist for you about what makes Pull Requests to SwiftCSV shine: * Run [SwiftLint](https://github.com/realm/SwiftLint) locally to ensure your code-style is consistent with the rest of the codebase. * Keep your Pull Requests focused. Rather be opening multiple PRs than making a dozen unrelated but discussion worthy changes in a single PR. * You can propose PRs to merge with the `master` branch directly. We don't use any complex branching strategies. **As a contributor,** choose the "squash & merge" strategy to merge PRs with a single commit, keeping the commit history clean. (That's an upside of focused Pull Requests: you don't lose extra information.) ## Publishing New Releases Members of the [@SwiftCSV/releases](https://github.com/orgs/swiftcsv/teams/releases) team have the necessary permissions to publish a new version to CocoaPods. If you want a new version of SwiftCSV to be published you should ping these folks. To create a new release, create a pull request targeting either `master`, or a separate release branch for hot-fixes, with the following: - [ ] Bump version number in `SwiftCSV.podspec` and `Info.plist` (We follow [semver](https://semver.org/) - most importantly any breaking API change should result in a major API version bump) - [ ] Create a tag off of the relevant branch (`master` for regular release) and add relevant changelog entries to the [release list on GitHub](https://github.com/swiftcsv/SwiftCSV/releases) - [ ] Publish the new version to the CocoaPods trunk via `pod trunk push` ================================================ FILE: Configuration/Project.xcconfig ================================================ MARKETING_VERSION=0.10.0 ================================================ FILE: LICENSE ================================================ The MIT License (MIT) Copyright (c) 2014 Naoto Kaneko. Copyright (c) 2019 SwiftCSV Contributors. 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 ================================================ // swift-tools-version: 5.6 import PackageDescription let package = Package( name: "SwiftCSV", platforms: [ .macOS("10.13"), .iOS("12.0"), .tvOS("12.0"), .watchOS("4.0") ], products: [ .library( name: "SwiftCSV", targets: ["SwiftCSV"]), ], dependencies: [], // No dependencies targets: [ .target( name: "SwiftCSV", dependencies: [], path: "SwiftCSV", resources: [ .process("Resources/PrivacyInfo.xcprivacy"), ]), .testTarget( name: "SwiftCSVTests", dependencies: ["SwiftCSV"], path: "SwiftCSVTests", resources: [ .copy("TestData"), ]), ], swiftLanguageVersions: [.v5, .v4_2] ) ================================================ FILE: README.md ================================================ # SwiftCSV [![Platform support](https://img.shields.io/badge/platform-ios%20%7C%20osx%20%7C%20tvos%20%7C%20watchos-lightgrey.svg?style=flat-square)](https://github.com/swiftcsv/SwiftCSV/blob/master/LICENSE.md) [![Build Status](https://img.shields.io/travis/swiftcsv/SwiftCSV/master.svg?style=flat-square)](https://travis-ci.org/swiftcsv/SwiftCSV) [![Code coverage status](https://codecov.io/gh/swiftcsv/SwiftCSV/branch/master/graph/badge.svg)](https://codecov.io/gh/swiftcsv/SwiftCSV) [![CocoaPods Compatible](https://img.shields.io/cocoapods/v/SwiftCSV.svg?style=flat-square)](https://cocoapods.org/pods/SwiftCSV) [![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) [![License MIT](https://img.shields.io/badge/license-MIT-blue.svg?style=flat-square)](https://github.com/swiftcsv/SwiftCSV/blob/master/LICENSE.md) [![](https://img.shields.io/endpoint?url=https%3A%2F%2Fswiftpackageindex.com%2Fapi%2Fpackages%2Fswiftcsv%2FSwiftCSV%2Fbadge%3Ftype%3Dswift-versions)](https://swiftpackageindex.com/swiftcsv/SwiftCSV) [![](https://img.shields.io/endpoint?url=https%3A%2F%2Fswiftpackageindex.com%2Fapi%2Fpackages%2Fswiftcsv%2FSwiftCSV%2Fbadge%3Ftype%3Dplatforms)](https://swiftpackageindex.com/swiftcsv/SwiftCSV) Simple CSV parsing for macOS, iOS, tvOS, and watchOS. ## Usage CSV content can be loaded using the `CSV` class: ```swift import SwiftCSV do { // As a string, guessing the delimiter let csv: CSV = try CSV(string: "id,name,age\n1,Alice,18") // Specifying a custom delimiter let tsv: CSV = try CSV(string: "id\tname\tage\n1\tAlice\t18", delimiter: .tab) // From a file (propagating error during file loading) let csvFile: CSV = try CSV(url: URL(fileURLWithPath: "path/to/users.csv")) // From a file inside the app bundle, with a custom delimiter, errors, and custom encoding. // Note the result is an optional. let resource: CSV? = try CSV( name: "users", extension: "tsv", bundle: .main, delimiter: .character("🐠"), // Any character works! encoding: .utf8) } catch parseError as CSVParseError { // Catch errors from parsing invalid CSV } catch { // Catch errors from trying to load files } ``` ### File Loading The `CSV` class comes with initializers that are suited for loading files from URLs. ```swift extension CSV { /// Load a CSV file from `url`. /// /// - Parameters: /// - url: URL of the file (will be passed to `String(contentsOfURL:encoding:)` to load) /// - delimiter: Character used to separate separate cells from one another in rows. /// - encoding: Character encoding to read file (default is `.utf8`) /// - loadColumns: Whether to populate the columns dictionary (default is `true`) /// - Throws: `CSVParseError` when parsing the contents of `url` fails, or file loading errors. public convenience init(url: URL, delimiter: CSVDelimiter, encoding: String.Encoding = .utf8, loadColumns: Bool = true) throws /// Load a CSV file from `url` and guess its delimiter from `CSV.recognizedDelimiters`, falling back to `.comma`. /// /// - Parameters: /// - url: URL of the file (will be passed to `String(contentsOfURL:encoding:)` to load) /// - encoding: Character encoding to read file (default is `.utf8`) /// - loadColumns: Whether to populate the columns dictionary (default is `true`) /// - Throws: `CSVParseError` when parsing the contents of `url` fails, or file loading errors. public convenience init(url: URL, encoding: String.Encoding = .utf8, loadColumns: Bool = true) } ``` ### Delimiters Delimiters are strongly typed. The recognized `CSVDelimiter` cases are: `.comma`, `.semicolon`, and `.tab`. You can use convenience initializers that guess the delimiter from the recognized list for you. These initializers are available for loading CSV from URLs and strings. You can also use any other single-character delimiter when loading CSV data. A character literal like `"x"` will produce `CSV.Delimiter.character("x")`, so you don't have to type the whole `.character(_)` case name. There are initializers for each variant that accept explicit delimiter settings. ### Reading Data ```swift // Recognized the comma delimiter automatically: let csv = CSV(string: "id,name,age\n1,Alice,18\n2,Bob,19") csv.header //=> ["id", "name", "age"] csv.rows //=> [["id": "1", "name": "Alice", "age": "18"], ["id": "2", "name": "Bob", "age": "19"]] csv.columns //=> ["id": ["1", "2"], "name": ["Alice", "Bob"], "age": ["18", "19"]] ``` The rows can also be parsed and passed to a block on the fly, reducing the memory needed to store the whole lot in an array: ```swift // Access each row as an array (inner array not guaranteed to always be equal length to the header) csv.enumerateAsArray { array in print(array.first) } // Access them as a dictionary csv.enumerateAsDict { dict in print(dict["name"]) } ``` ### Skip Named Column Access for Large Data Sets Use `CSV` aka `NamedCSV` to access the CSV data on a column-by-column basis with named columns. Think of this like a cross section: ```swift let csv = NamedCSV(string: "id,name,age\n1,Alice,18\n2,Bob,19") csv.rows[0]["name"] //=> "Alice" csv.columns["name"] //=> ["Alice", "Bob"] ``` If you only want to access your data row-by-row, and not by-column, then you can use `CSV` or `EnumeratedCSV`: ```swift let csv = EnumeratedCSV(string: "id,name,age\n1,Alice,18\n2,Bob,19") csv.rows[0][1] //=> "Alice" csv.columns?[0].header //=> "name" csv.columns?[0].rows //=> ["Alice", "Bob"] ``` To speed things up, skip populating by-column access completely by passing `loadColumns: false`. This will prevent the columnar data from being populated. For large data sets, this saves a lot of iterations (at quadratic runtime). ```swift let csv = EnumeratedCSV(string: "id,name,age\n1,Alice,18\n2,Bob,19", loadColumns: false) csv.rows[0][1] //=> "Alice" csv.columns //=> nil ``` ## Installation ### CocoaPods ```ruby pod "SwiftCSV" ``` ### Carthage ``` github "swiftcsv/SwiftCSV" ``` ### SwiftPM ``` .package(url: "https://github.com/swiftcsv/SwiftCSV.git", from: "0.8.0") ``` ## Privacy Manifest The package ships with an empty Privacy Manifest because it doesn't access or track any sensitive data. ================================================ FILE: SwiftCSV/CSV+DelimiterGuessing.swift ================================================ // // CSV+DelimiterGuessing.swift // SwiftCSV // // Created by Christian Tietze on 21.12.21. // Copyright © 2021 SwiftCSV. All rights reserved. // import Foundation extension CSVDelimiter { public static let recognized: [CSVDelimiter] = [.comma, .tab, .semicolon] /// - Returns: Delimiter between cells based on the first line in the CSV. Falls back to `.comma`. public static func guessed(string: String) -> CSVDelimiter { let recognizedDelimiterCharacters = CSVDelimiter.recognized.map(\.rawValue) // Trim newline and spaces, but keep tabs (as delimiters) var trimmedCharacters = CharacterSet.whitespacesAndNewlines trimmedCharacters.remove("\t") let line = string.trimmingCharacters(in: trimmedCharacters).firstLine var index = line.startIndex while index < line.endIndex { let character = line[index] switch character { case "\"": // When encountering an open quote, skip to the closing counterpart. // If none is found, skip to end of line. // 1) Advance one character to skip the quote index = line.index(after: index) // 2) Look for the closing quote and move current position after it if index < line.endIndex, let closingQuoteInddex = line[index...].firstIndex(of: character) { index = line.index(after: closingQuoteInddex) } else { index = line.endIndex } case _ where recognizedDelimiterCharacters.contains(character): return CSVDelimiter(rawValue: character) default: index = line.index(after: index) } } // Fallback value return .comma } } ================================================ FILE: SwiftCSV/CSV.swift ================================================ // // CSV.swift // SwiftCSV // // Created by Naoto Kaneko on 2/18/16. // Copyright © 2016 Naoto Kaneko. All rights reserved. // import Foundation /// Byte Order Mark from the Unicode Standard /// /// Some CSV files encoded in UTF-8, such as those generated by Excel and Airtable, include a BOM to distinguish them from older CSV files written using ASCII or other legacy encodings. This behavior is explicitly permitted, but not required, by the Unicode Standard. /// /// The BOM is not part of the CSV string itself; it is only a header on the file that stores the string. /// /// - Attention: The convenience initializer /// ```String(contentsOf:encoding:)``` /// correctly removes the BOM when decoding `.utf16` or `.utf32` files, /// but incorrectly includes the BOM in the returned string when decoding `.utf8` files. /// This means the caller must look for and strip the BOM explicitly from the returned string. /// /// See also: /// /// [Unicode FAQ](https://unicode.org/faq/utf_bom.html#BOM) /// /// [Unicode Standard, section 2.13](https://www.unicode.org/versions/Unicode14.0.0/ch02.pdf#G9354) /// fileprivate let byteOrderMark = "\u{FEFF}" public protocol CSVView { associatedtype Row associatedtype Columns var rows: [Row] { get } /// Is `nil` if `loadColumns` was set to `false`. var columns: Columns? { get } init(header: [String], text: String, delimiter: CSVDelimiter, loadColumns: Bool, rowLimit: Int?) throws func serialize(header: [String], delimiter: CSVDelimiter) -> String } /// CSV variant for which unique column names are assumed. /// /// Example: /// /// let csv = NamedCSV(...) /// let allIDs = csv.columns["id"] /// let firstEntry = csv.rows[0] /// let fullName = firstEntry["firstName"] + " " + firstEntry["lastName"] /// public typealias NamedCSV = CSV /// CSV variant that exposes columns and rows as arrays. /// Example: /// /// let csv = EnumeratedCSV(...) /// let allIds = csv.columns.filter { $0.header == "id" }.rows /// public typealias EnumeratedCSV = CSV /// For convenience, there's `EnumeratedCSV` to access fields in rows by their column index, /// and `NamedCSV` to access fields by their column names as defined in a header row. open class CSV { public let header: [String] /// Unparsed contents. public let text: String /// Used delimiter to parse `text` and to serialize the data again. public let delimiter: CSVDelimiter /// Underlying data representation of the CSV contents. public let content: DataView public var rows: [DataView.Row] { return content.rows } /// Is `nil` if `loadColumns` was set to `false` during initialization. public var columns: DataView.Columns? { return content.columns } /// Load CSV data from a string. /// /// - Parameters: /// - string: CSV contents to parse. /// - delimiter: Character used to separate cells from one another in rows. /// - loadColumns: Whether to populate the `columns` dictionary (default is `true`) /// - rowLimit: Amount of rows to parse (default is `nil`). /// - Throws: `CSVParseError` when parsing `string` fails. public init(string: String, delimiter: CSVDelimiter, loadColumns: Bool = true, rowLimit: Int? = nil) throws { if string.hasPrefix(byteOrderMark) { let trimmedString = string.dropFirst() self.text = String(trimmedString) } else { self.text = string } self.delimiter = delimiter self.header = try Parser.array(text: self.text, delimiter: delimiter, rowLimit: 1).first ?? [] self.content = try DataView(header: header, text: self.text, delimiter: delimiter, loadColumns: loadColumns, rowLimit: rowLimit) } /// Load CSV data from a string and guess its delimiter from `CSV.recognizedDelimiters`, falling back to `.comma`. /// /// - parameter string: CSV contents to parse. /// - parameter loadColumns: Whether to populate the `columns` dictionary (default is `true`) /// - throws: `CSVParseError` when parsing `string` fails. public convenience init(string: String, loadColumns: Bool = true) throws { let delimiter = CSVDelimiter.guessed(string: string) try self.init(string: string, delimiter: delimiter, loadColumns: loadColumns) } /// Turn the CSV data into NSData using a given encoding open func dataUsingEncoding(_ encoding: String.Encoding) -> Data? { return serialized.data(using: encoding) } /// Serialized form of the CSV data; depending on the View used, this may /// perform additional normalizations. open var serialized: String { return self.content.serialize(header: self.header, delimiter: self.delimiter) } } extension CSV: CustomStringConvertible { public var description: String { return self.serialized } } extension CSV { /// Load a CSV file from `url`. /// /// - Parameters: /// - url: URL of the file (will be passed to `String(contentsOfURL:encoding:)` to load) /// - delimiter: Character used to separate separate cells from one another in rows. /// - encoding: Character encoding to read file (default is `.utf8`) /// - loadColumns: Whether to populate the columns dictionary (default is `true`) /// - Throws: `CSVParseError` when parsing the contents of `url` fails, or file loading errors. public convenience init(url: URL, delimiter: CSVDelimiter, encoding: String.Encoding = .utf8, loadColumns: Bool = true) throws { let contents = try String(contentsOf: url, encoding: encoding) try self.init(string: contents, delimiter: delimiter, loadColumns: loadColumns) } /// Load a CSV file from `url` and guess its delimiter from `CSV.recognizedDelimiters`, falling back to `.comma`. /// /// - Parameters: /// - url: URL of the file (will be passed to `String(contentsOfURL:encoding:)` to load) /// - encoding: Character encoding to read file (default is `.utf8`) /// - loadColumns: Whether to populate the columns dictionary (default is `true`) /// - Throws: `CSVParseError` when parsing the contents of `url` fails, or file loading errors. public convenience init(url: URL, encoding: String.Encoding = .utf8, loadColumns: Bool = true) throws { let contents = try String(contentsOf: url, encoding: encoding) try self.init(string: contents, loadColumns: loadColumns) } } extension CSV { /// Load a CSV file as a named resource from `bundle`. /// /// - Parameters: /// - name: Name of the file resource inside `bundle`. /// - ext: File extension of the resource; use `nil` to load the first file matching the name (default is `nil`) /// - bundle: `Bundle` to use for resource lookup (default is `.main`) /// - delimiter: Character used to separate separate cells from one another in rows. /// - encoding: encoding used to read file (default is `.utf8`) /// - loadColumns: Whether to populate the columns dictionary (default is `true`) /// - Throws: `CSVParseError` when parsing the contents of the resource fails, or file loading errors. /// - Returns: `nil` if the resource could not be found public convenience init?(name: String, extension ext: String? = nil, bundle: Bundle = .main, delimiter: CSVDelimiter, encoding: String.Encoding = .utf8, loadColumns: Bool = true) throws { guard let url = bundle.url(forResource: name, withExtension: ext) else { return nil } try self.init(url: url, delimiter: delimiter, encoding: encoding, loadColumns: loadColumns) } /// Load a CSV file as a named resource from `bundle` and guess its delimiter from `CSV.recognizedDelimiters`, falling back to `.comma`. /// /// - Parameters: /// - name: Name of the file resource inside `bundle`. /// - ext: File extension of the resource; use `nil` to load the first file matching the name (default is `nil`) /// - bundle: `Bundle` to use for resource lookup (default is `.main`) /// - encoding: encoding used to read file (default is `.utf8`) /// - loadColumns: Whether to populate the columns dictionary (default is `true`) /// - Throws: `CSVParseError` when parsing the contents of the resource fails, or file loading errors. /// - Returns: `nil` if the resource could not be found public convenience init?(name: String, extension ext: String? = nil, bundle: Bundle = .main, encoding: String.Encoding = .utf8, loadColumns: Bool = true) throws { guard let url = bundle.url(forResource: name, withExtension: ext) else { return nil } try self.init(url: url, encoding: encoding, loadColumns: loadColumns) } } ================================================ FILE: SwiftCSV/CSVDelimiter.swift ================================================ // // CSVDelimiter.swift // SwiftCSV // // Created by Christian Tietze on 01.07.22. // Copyright © 2022 SwiftCSV. All rights reserved. // public enum CSVDelimiter: Equatable, ExpressibleByUnicodeScalarLiteral { public typealias UnicodeScalarLiteralType = Character case comma, semicolon, tab case character(Character) public init(unicodeScalarLiteral: Character) { self.init(rawValue: unicodeScalarLiteral) } init(rawValue: Character) { switch rawValue { case ",": self = .comma case ";": self = .semicolon case "\t": self = .tab default: self = .character(rawValue) } } public var rawValue: Character { switch self { case .comma: return "," case .semicolon: return ";" case .tab: return "\t" case .character(let character): return character } } } ================================================ FILE: SwiftCSV/EnumeratedCSVView.swift ================================================ // // EnumeratedCSVView.swift // SwiftCSV // // Created by Christian Tietze on 25/10/16. // Copyright © 2016 Naoto Kaneko. All rights reserved. // import Foundation public struct Enumerated: CSVView { public struct Column: Equatable { public let header: String public let rows: [String] } public typealias Row = [String] public typealias Columns = [Column] public private(set) var rows: [Row] public private(set) var columns: Columns? public init(header: [String], text: String, delimiter: CSVDelimiter, loadColumns: Bool = false, rowLimit: Int? = nil) throws { self.rows = try { var rows: [Row] = [] try Parser.enumerateAsArray(text: text, delimiter: delimiter, startAt: 1, rowLimit: rowLimit) { fields in rows.append(fields) } // Fill in gaps at the end of rows that are too short. return makingRectangular(rows: rows) }() self.columns = { guard loadColumns else { return nil } return header.enumerated().map { (index: Int, header: String) -> Column in return Column( header: header, rows: rows.map { $0[safe: index] ?? "" }) } }() } public func serialize(header: [String], delimiter: CSVDelimiter) -> String { return Serializer.serialize(header: header, rows: rows, delimiter: delimiter) } } extension Collection { subscript (safe index: Self.Index) -> Self.Iterator.Element? { return index < endIndex ? self[index] : nil } } fileprivate func makingRectangular(rows: [[String]]) -> [[String]] { let cellsPerRow = rows.map { $0.count }.max() ?? 0 return rows.map { row -> [String] in let missingCellCount = cellsPerRow - row.count let appendix = Array(repeating: "", count: missingCellCount) return row + appendix } } ================================================ FILE: SwiftCSV/NamedCSVView.swift ================================================ // // NamedCSVView.swift // SwiftCSV // // Created by Christian Tietze on 22/10/16. // Copyright © 2016 Naoto Kaneko. All rights reserved. // public struct Named: CSVView { public typealias Row = [String : String] public typealias Columns = [String : [String]] public var rows: [Row] public var columns: Columns? public init(header: [String], text: String, delimiter: CSVDelimiter, loadColumns: Bool = false, rowLimit: Int? = nil) throws { self.rows = try { var rows: [Row] = [] try Parser.enumerateAsDict(header: header, content: text, delimiter: delimiter, rowLimit: rowLimit) { dict in rows.append(dict) } return rows }() self.columns = { guard loadColumns else { return nil } var columns: Columns = [:] for field in header { columns[field] = rows.map { $0[field] ?? "" } } return columns }() } public func serialize(header: [String], delimiter: CSVDelimiter) -> String { let rowsOrderingCellsByHeader = rows.map { row in header.map { cellID in row[cellID]! } } return Serializer.serialize(header: header, rows: rowsOrderingCellsByHeader, delimiter: delimiter) } } ================================================ FILE: SwiftCSV/Parser.swift ================================================ // // Parser.swift // SwiftCSV // // Created by Will Richardson on 13/04/16. // Copyright © 2016 Naoto Kaneko. All rights reserved. // extension CSV { /// Parse the file and call a block on each row, passing it in as a list of fields. /// - Parameters limitTo: Maximum absolute line number in the content, *not* maximum amount of rows. @available(*, deprecated, message: "Use enumerateAsArray(startAt:rowLimit:_:) instead") public func enumerateAsArray(limitTo maxRow: Int? = nil, startAt: Int = 0, _ rowCallback: @escaping ([String]) -> ()) throws { try Parser.enumerateAsArray(text: self.text, delimiter: self.delimiter, startAt: startAt, rowLimit: maxRow.map { $0 - startAt }, rowCallback: rowCallback) } /// Parse the CSV contents row by row from `start` for `rowLimit` amount of rows, or until the end of the input. /// - Parameters: /// - startAt: Skip lines before this. Default value is `0` to start at the beginning. /// - rowLimit: Amount of rows to consume, beginning to count at `startAt`. Default value is `nil` to consume /// the whole input string. /// - rowCallback: Array of each row's columnar values, in order. /// - Throws: `CSVParseError` or any error thrown by `rowCallback` /// public func enumerateAsArray(startAt: Int = 0, rowLimit: Int? = nil, _ rowCallback: @escaping ([String]) throws -> ()) throws { try Parser.enumerateAsArray(text: self.text, delimiter: self.delimiter, startAt: startAt, rowLimit: rowLimit, rowCallback: rowCallback) } public func enumerateAsDict(_ block: @escaping ([String : String]) throws -> ()) throws { try Parser.enumerateAsDict(header: self.header, content: self.text, delimiter: self.delimiter, block: block) } } enum Parser { static func array(text: String, delimiter: CSVDelimiter, startAt offset: Int = 0, rowLimit: Int? = nil) throws -> [[String]] { var rows = [[String]]() try enumerateAsArray(text: text, delimiter: delimiter, startAt: offset, rowLimit: rowLimit) { row in rows.append(row) } return rows } /// Parse `text` and provide each row to `rowCallback` as an array of field values, one for each column per /// line of text, separated by `delimiter`. /// /// - Parameters: /// - text: Text to parse. /// - delimiter: Character to split row and header fields by (default is ',') /// - offset: Skip lines before this. Default value is `0` to start at the beginning. /// - rowLimit: Amount of rows to consume, beginning to count at `startAt`. Default value is `nil` to consume /// the whole input string. /// - rowCallback: Callback invoked for every parsed row between `startAt` and `limitTo` in `text`. /// - Throws: `CSVParseError` or any error thrown by `rowCallback` static func enumerateAsArray(text: String, delimiter: CSVDelimiter, startAt offset: Int = 0, rowLimit: Int? = nil, rowCallback: @escaping ([String]) throws -> ()) throws { let maxRowIndex = rowLimit.flatMap { $0 < 0 ? nil : offset + $0 } var currentIndex = text.startIndex let endIndex = text.endIndex var fields = [String]() let delimiter = delimiter.rawValue var field = "" var rowIndex = 0 func finishRow() throws { defer { rowIndex += 1 fields = [] field = "" } guard rowIndex >= offset else { return } fields.append(String(field)) try rowCallback(fields) } var state: ParsingState = ParsingState( delimiter: delimiter, finishRow: finishRow, appendChar: { guard rowIndex >= offset else { return } field.append($0) }, finishField: { guard rowIndex >= offset else { return } fields.append(field) field = "" }) func limitReached(_ rowNumber: Int) -> Bool { guard let maxRowIndex = maxRowIndex else { return false } return rowNumber >= maxRowIndex } while currentIndex < endIndex, !limitReached(rowIndex) { let char = text[currentIndex] try state.change(char) currentIndex = text.index(after: currentIndex) } // Append remainder of the cache, unless we're past the limit already. if !limitReached(rowIndex) { if !field.isEmpty { fields.append(field) } if !fields.isEmpty { try rowCallback(fields) } } } static func enumerateAsDict(header: [String], content: String, delimiter: CSVDelimiter, rowLimit: Int? = nil, block: @escaping ([String : String]) throws -> ()) throws { let enumeratedHeader = header.enumerated() // Start after the header try enumerateAsArray(text: content, delimiter: delimiter, startAt: 1, rowLimit: rowLimit) { fields in var dict = [String: String]() for (index, head) in enumeratedHeader { dict[head] = index < fields.count ? fields[index] : "" } try block(dict) } } } ================================================ FILE: SwiftCSV/ParsingState.swift ================================================ // // ParsingState.swift // SwiftCSV // // Created by Christian Tietze on 25/10/16. // Copyright © 2016 Naoto Kaneko. All rights reserved. // public enum CSVParseError: Error { case generic(message: String) case quotation(message: String) } /// State machine of parsing CSV contents character by character. struct ParsingState { private(set) var atStart = true private(set) var parsingField = false private(set) var parsingQuotes = false private(set) var innerQuotes = false let delimiter: Character let finishRow: () throws -> Void let appendChar: (Character) throws -> Void let finishField: () throws -> Void init(delimiter: Character, finishRow: @escaping () throws -> Void, appendChar: @escaping (Character) throws -> Void, finishField: @escaping () throws -> Void) { self.delimiter = delimiter self.finishRow = finishRow self.appendChar = appendChar self.finishField = finishField } /// - Throws: `CSVParseError` mutating func change(_ char: Character) throws { if atStart { if char == "\"" { atStart = false parsingQuotes = true } else if char == delimiter { try finishField() } else if char.isNewline { try finishRow() } else if char.isWhitespace { // ignore whitespaces between fields } else { parsingField = true atStart = false try appendChar(char) } } else if parsingField { if innerQuotes { if char == "\"" { try appendChar(char) innerQuotes = false } else { throw CSVParseError.quotation(message: "Can't have non-quote here: \(char)") } } else { if char == "\"" { innerQuotes = true } else if char == delimiter { atStart = true parsingField = false innerQuotes = false try finishField() } else if char.isNewline { atStart = true parsingField = false innerQuotes = false try finishRow() } else { try appendChar(char) } } } else if parsingQuotes { if innerQuotes { if char == "\"" { try appendChar(char) innerQuotes = false } else if char == delimiter { atStart = true parsingField = false innerQuotes = false try finishField() } else if char.isNewline { atStart = true parsingQuotes = false innerQuotes = false try finishRow() } else if char.isWhitespace { // ignore whitespaces between fields } else { throw CSVParseError.quotation(message: "Can't have non-quote here: \(char)") } } else { if char == "\"" { innerQuotes = true } else { try appendChar(char) } } } else { throw CSVParseError.generic(message: "me_irl") } } } ================================================ FILE: SwiftCSV/Resources/PrivacyInfo.xcprivacy ================================================ NSPrivacyTracking NSPrivacyCollectedDataTypes NSPrivacyTrackingDomains NSPrivacyAccessedAPITypes ================================================ FILE: SwiftCSV/Serializer.swift ================================================ // // Serializer.swift // SwiftCSV // import Foundation enum Serializer { static let newline = "\n" static func serialize(header: [String], rows: [[String]], delimiter: CSVDelimiter) -> String { let head = serializeRow(row: header, delimiter: delimiter) + newline let content = rows.map { row in serializeRow(row: row, delimiter: delimiter) }.joined(separator: newline) return head + content } static func serializeRow(row: [String], delimiter: CSVDelimiter) -> String { let separator = String(delimiter.rawValue) let content = row.map { cell in cell.enquoted(whenContaining: separator) }.joined(separator: separator) return content } } fileprivate extension String { static let quote = "\"" func enquoted(whenContaining separator: String) -> String { // If value contains a delimiter or quotes, double any embedded quotes and surround with quotes. // For more information, see https://www.rfc-editor.org/rfc/rfc4180.html if self.contains(separator) || self.contains(Self.quote) { return Self.quote + self.replacingOccurrences(of: Self.quote, with: Self.quote + Self.quote) + Self.quote } else { return self } } } ================================================ FILE: SwiftCSV/String+Lines.swift ================================================ // // String+Lines.swift // SwiftCSV // // Created by Naoto Kaneko on 2/24/16. // Copyright © 2016 Naoto Kaneko. All rights reserved. // extension String { internal var firstLine: String { var current = startIndex while current < endIndex && self[current].isNewline == false { current = self.index(after: current) } return String(self[.. "MIT", :file => "LICENSE" } s.author = { "Naoto Kaneko" => "naoty.k@gmail.com", "Christian Tietze" => "me@christiantietze.de" } s.source = { :git => "https://github.com/swiftcsv/SwiftCSV.git", :tag => s.version } s.swift_versions = [ "5.10", "5.9", "5.8", "5.7", "5.6", "5.5", "5.4", "5.3", "5.2", "5.1", "5.0", "4.2" ] s.ios.deployment_target = "12.0" s.osx.deployment_target = "10.13" s.tvos.deployment_target = "12.0" s.watchos.deployment_target = "4.0" s.source_files = "SwiftCSV/**/*.swift" s.resource_bundles = {'SwiftCSV' => ['SwiftCSV/Resources/*.xcprivacy']} s.requires_arc = true end ================================================ FILE: SwiftCSV.xcodeproj/SwiftCSV-Info.plist ================================================ CFBundleDevelopmentRegion en CFBundleExecutable ${EXECUTABLE_NAME} CFBundleIdentifier $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName ${PRODUCT_NAME} CFBundlePackageType FMWK CFBundleShortVersionString $(MARKETING_VERSION) CFBundleSignature ???? CFBundleVersion ${CURRENT_PROJECT_VERSION} NSPrincipalClass ================================================ FILE: SwiftCSV.xcodeproj/SwiftCSVTests-Info.plist ================================================ CFBundleDevelopmentRegion en CFBundleExecutable ${EXECUTABLE_NAME} CFBundleIdentifier $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName ${PRODUCT_NAME} CFBundlePackageType BNDL CFBundleShortVersionString 1.0 CFBundleSignature ???? CFBundleVersion 1 ================================================ FILE: SwiftCSV.xcodeproj/project.pbxproj ================================================ // !$*UTF8*$! { archiveVersion = 1; classes = { }; objectVersion = 54; objects = { /* Begin PBXBuildFile section */ 3D1E59C01945FFAD001CF760 /* SwiftCSV.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3D1E59B41945FFAC001CF760 /* SwiftCSV.framework */; }; 3D1E59C71945FFAD001CF760 /* NamedCSVViewTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D1E59C61945FFAD001CF760 /* NamedCSVViewTests.swift */; }; 3D3749E3194D6DF7008F262A /* TSVTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D3749E2194D6DF7008F262A /* TSVTests.swift */; }; 3D444BCD1C7D88290001C60C /* String+Lines.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D444BCC1C7D88290001C60C /* String+Lines.swift */; }; 3DAAEE9C1C74C7EC00A933DB /* CSV.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DAAEE9B1C74C7EC00A933DB /* CSV.swift */; }; 5015AD8A274BA20A0050F975 /* ParserTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5015AD89274BA20A0050F975 /* ParserTests.swift */; }; 5015AD8B274BA20A0050F975 /* ParserTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5015AD89274BA20A0050F975 /* ParserTests.swift */; }; 5015AD8C274BA20A0050F975 /* ParserTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5015AD89274BA20A0050F975 /* ParserTests.swift */; }; 502CDAF42AC60ADA00766701 /* ResourceHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 502CDAF32AC60ADA00766701 /* ResourceHelper.swift */; }; 502CDAF52AC60ADA00766701 /* ResourceHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 502CDAF32AC60ADA00766701 /* ResourceHelper.swift */; }; 502CDAF62AC60ADA00766701 /* ResourceHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 502CDAF32AC60ADA00766701 /* ResourceHelper.swift */; }; 508975D21DBB897A006F3DBE /* NamedCSVView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 508975D11DBB897A006F3DBE /* NamedCSVView.swift */; }; 508975D31DBB897A006F3DBE /* NamedCSVView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 508975D11DBB897A006F3DBE /* NamedCSVView.swift */; }; 508975D41DBB897A006F3DBE /* NamedCSVView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 508975D11DBB897A006F3DBE /* NamedCSVView.swift */; }; 508975D51DBB897A006F3DBE /* NamedCSVView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 508975D11DBB897A006F3DBE /* NamedCSVView.swift */; }; 508975D71DBF34CF006F3DBE /* ParsingState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 508975D61DBF34CF006F3DBE /* ParsingState.swift */; }; 508975D81DBF34CF006F3DBE /* ParsingState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 508975D61DBF34CF006F3DBE /* ParsingState.swift */; }; 508975D91DBF34CF006F3DBE /* ParsingState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 508975D61DBF34CF006F3DBE /* ParsingState.swift */; }; 508975DA1DBF34CF006F3DBE /* ParsingState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 508975D61DBF34CF006F3DBE /* ParsingState.swift */; }; 508975DC1DBF3B70006F3DBE /* EnumeratedCSVView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 508975DB1DBF3B70006F3DBE /* EnumeratedCSVView.swift */; }; 508975DD1DBF3B70006F3DBE /* EnumeratedCSVView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 508975DB1DBF3B70006F3DBE /* EnumeratedCSVView.swift */; }; 508975DE1DBF3B70006F3DBE /* EnumeratedCSVView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 508975DB1DBF3B70006F3DBE /* EnumeratedCSVView.swift */; }; 508975DF1DBF3B70006F3DBE /* EnumeratedCSVView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 508975DB1DBF3B70006F3DBE /* EnumeratedCSVView.swift */; }; 508975E11DBF3E51006F3DBE /* EnumeratedCSVViewTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 508975E01DBF3E51006F3DBE /* EnumeratedCSVViewTests.swift */; }; 508975E21DBF3E51006F3DBE /* EnumeratedCSVViewTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 508975E01DBF3E51006F3DBE /* EnumeratedCSVViewTests.swift */; }; 508975E31DBF3E51006F3DBE /* EnumeratedCSVViewTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 508975E01DBF3E51006F3DBE /* EnumeratedCSVViewTests.swift */; }; 508CA0FB2771F2E70084C8E8 /* CSV+DelimiterGuessing.swift in Sources */ = {isa = PBXBuildFile; fileRef = 508CA0FA2771F2E70084C8E8 /* CSV+DelimiterGuessing.swift */; }; 508CA0FD2771F3260084C8E8 /* CSVDelimiterGuessingTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 508CA0FC2771F3260084C8E8 /* CSVDelimiterGuessingTests.swift */; }; 508CA0FE2771F3260084C8E8 /* CSVDelimiterGuessingTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 508CA0FC2771F3260084C8E8 /* CSVDelimiterGuessingTests.swift */; }; 508CA0FF2771F3260084C8E8 /* CSVDelimiterGuessingTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 508CA0FC2771F3260084C8E8 /* CSVDelimiterGuessingTests.swift */; }; 508CA1002771F32C0084C8E8 /* CSV+DelimiterGuessing.swift in Sources */ = {isa = PBXBuildFile; fileRef = 508CA0FA2771F2E70084C8E8 /* CSV+DelimiterGuessing.swift */; }; 508CA1022771F32D0084C8E8 /* CSV+DelimiterGuessing.swift in Sources */ = {isa = PBXBuildFile; fileRef = 508CA0FA2771F2E70084C8E8 /* CSV+DelimiterGuessing.swift */; }; 508CA1032771F32E0084C8E8 /* CSV+DelimiterGuessing.swift in Sources */ = {isa = PBXBuildFile; fileRef = 508CA0FA2771F2E70084C8E8 /* CSV+DelimiterGuessing.swift */; }; 508CA1052772039E0084C8E8 /* CSVDelimiterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 508CA1042772039E0084C8E8 /* CSVDelimiterTests.swift */; }; 508CA1062772039E0084C8E8 /* CSVDelimiterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 508CA1042772039E0084C8E8 /* CSVDelimiterTests.swift */; }; 508CA1072772039E0084C8E8 /* CSVDelimiterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 508CA1042772039E0084C8E8 /* CSVDelimiterTests.swift */; }; 50A2B23424894DC900B168A9 /* NewlineTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50A2B23324894DC900B168A9 /* NewlineTests.swift */; }; 50A2B23524894DC900B168A9 /* NewlineTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50A2B23324894DC900B168A9 /* NewlineTests.swift */; }; 50A2B23624894DC900B168A9 /* NewlineTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50A2B23324894DC900B168A9 /* NewlineTests.swift */; }; 50B3EEA4286F8A84007B3956 /* CSVDelimiter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50B3EEA3286F8A84007B3956 /* CSVDelimiter.swift */; }; 50B3EEA5286F8AA3007B3956 /* CSVDelimiter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50B3EEA3286F8A84007B3956 /* CSVDelimiter.swift */; }; 50B3EEA6286F8AA4007B3956 /* CSVDelimiter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50B3EEA3286F8A84007B3956 /* CSVDelimiter.swift */; }; 50B3EEA7286F8AA5007B3956 /* CSVDelimiter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50B3EEA3286F8A84007B3956 /* CSVDelimiter.swift */; }; 50B575DA2BEE1E2E006C9262 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 50B575D92BEE1E2E006C9262 /* PrivacyInfo.xcprivacy */; }; 50B575DB2BEE1E2E006C9262 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 50B575D92BEE1E2E006C9262 /* PrivacyInfo.xcprivacy */; }; 50B575DC2BEE1E2E006C9262 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 50B575D92BEE1E2E006C9262 /* PrivacyInfo.xcprivacy */; }; 50B575DD2BEE1E2E006C9262 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 50B575D92BEE1E2E006C9262 /* PrivacyInfo.xcprivacy */; }; 5FB74B9B1CCB9274009DDBF1 /* SwiftCSV.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5FB74B911CCB9274009DDBF1 /* SwiftCSV.framework */; }; 5FB74BB71CCB929D009DDBF1 /* SwiftCSV.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5FB74BAD1CCB929D009DDBF1 /* SwiftCSV.framework */; }; 5FB74BD11CCB92E5009DDBF1 /* CSV.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DAAEE9B1C74C7EC00A933DB /* CSV.swift */; }; 5FB74BD21CCB92E5009DDBF1 /* String+Lines.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D444BCC1C7D88290001C60C /* String+Lines.swift */; }; 5FB74BD51CCB92E5009DDBF1 /* Parser.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE9B02D71CBE57B8009FE424 /* Parser.swift */; }; 5FB74BD61CCB92EB009DDBF1 /* CSV.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DAAEE9B1C74C7EC00A933DB /* CSV.swift */; }; 5FB74BD71CCB92EB009DDBF1 /* String+Lines.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D444BCC1C7D88290001C60C /* String+Lines.swift */; }; 5FB74BDA1CCB92EB009DDBF1 /* Parser.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE9B02D71CBE57B8009FE424 /* Parser.swift */; }; 5FB74BDB1CCB92F1009DDBF1 /* CSV.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DAAEE9B1C74C7EC00A933DB /* CSV.swift */; }; 5FB74BDC1CCB92F1009DDBF1 /* String+Lines.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D444BCC1C7D88290001C60C /* String+Lines.swift */; }; 5FB74BDF1CCB92F1009DDBF1 /* Parser.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE9B02D71CBE57B8009FE424 /* Parser.swift */; }; 5FB74BE01CCB9312009DDBF1 /* NamedCSVViewTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D1E59C61945FFAD001CF760 /* NamedCSVViewTests.swift */; }; 5FB74BE11CCB9312009DDBF1 /* QuotedTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE6C86061CB5CE44009A351D /* QuotedTests.swift */; }; 5FB74BE21CCB9312009DDBF1 /* TSVTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D3749E2194D6DF7008F262A /* TSVTests.swift */; }; 5FB74BE31CCB9312009DDBF1 /* URLTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE06B67F1CB726B5009578CC /* URLTests.swift */; }; 5FB74BE41CCB9312009DDBF1 /* PerformanceTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = E46085931CCB1F5C00385286 /* PerformanceTest.swift */; }; 5FB74BE51CCB931F009DDBF1 /* NamedCSVViewTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D1E59C61945FFAD001CF760 /* NamedCSVViewTests.swift */; }; 5FB74BE61CCB931F009DDBF1 /* QuotedTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE6C86061CB5CE44009A351D /* QuotedTests.swift */; }; 5FB74BE71CCB931F009DDBF1 /* TSVTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D3749E2194D6DF7008F262A /* TSVTests.swift */; }; 5FB74BE81CCB931F009DDBF1 /* URLTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE06B67F1CB726B5009578CC /* URLTests.swift */; }; 5FB74BE91CCB931F009DDBF1 /* PerformanceTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = E46085931CCB1F5C00385286 /* PerformanceTest.swift */; }; BE06B6801CB726B5009578CC /* URLTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE06B67F1CB726B5009578CC /* URLTests.swift */; }; BE6C86071CB5CE44009A351D /* QuotedTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE6C86061CB5CE44009A351D /* QuotedTests.swift */; }; BE9B02D81CBE57B8009FE424 /* Parser.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE9B02D71CBE57B8009FE424 /* Parser.swift */; }; DDF4064F2AB83CDE00A2B058 /* wonderland.csv in Resources */ = {isa = PBXBuildFile; fileRef = DDF406472AB83CDE00A2B058 /* wonderland.csv */; }; DDF406502AB83CDE00A2B058 /* wonderland.csv in Resources */ = {isa = PBXBuildFile; fileRef = DDF406472AB83CDE00A2B058 /* wonderland.csv */; }; DDF406512AB83CDE00A2B058 /* wonderland.csv in Resources */ = {isa = PBXBuildFile; fileRef = DDF406472AB83CDE00A2B058 /* wonderland.csv */; }; DDF406522AB83CDE00A2B058 /* large.csv in Resources */ = {isa = PBXBuildFile; fileRef = DDF406482AB83CDE00A2B058 /* large.csv */; }; DDF406532AB83CDE00A2B058 /* large.csv in Resources */ = {isa = PBXBuildFile; fileRef = DDF406482AB83CDE00A2B058 /* large.csv */; }; DDF406542AB83CDE00A2B058 /* large.csv in Resources */ = {isa = PBXBuildFile; fileRef = DDF406482AB83CDE00A2B058 /* large.csv */; }; DDF406552AB83CDE00A2B058 /* utf8_with_bom.csv in Resources */ = {isa = PBXBuildFile; fileRef = DDF406492AB83CDE00A2B058 /* utf8_with_bom.csv */; }; DDF406562AB83CDE00A2B058 /* utf8_with_bom.csv in Resources */ = {isa = PBXBuildFile; fileRef = DDF406492AB83CDE00A2B058 /* utf8_with_bom.csv */; }; DDF406572AB83CDE00A2B058 /* utf8_with_bom.csv in Resources */ = {isa = PBXBuildFile; fileRef = DDF406492AB83CDE00A2B058 /* utf8_with_bom.csv */; }; DDF4065E2AB83CDE00A2B058 /* quotes.csv in Resources */ = {isa = PBXBuildFile; fileRef = DDF4064D2AB83CDE00A2B058 /* quotes.csv */; }; DDF4065F2AB83CDE00A2B058 /* quotes.csv in Resources */ = {isa = PBXBuildFile; fileRef = DDF4064D2AB83CDE00A2B058 /* quotes.csv */; }; DDF406602AB83CDE00A2B058 /* quotes.csv in Resources */ = {isa = PBXBuildFile; fileRef = DDF4064D2AB83CDE00A2B058 /* quotes.csv */; }; DDF406612AB83CDE00A2B058 /* empty_fields.csv in Resources */ = {isa = PBXBuildFile; fileRef = DDF4064E2AB83CDE00A2B058 /* empty_fields.csv */; }; DDF406622AB83CDE00A2B058 /* empty_fields.csv in Resources */ = {isa = PBXBuildFile; fileRef = DDF4064E2AB83CDE00A2B058 /* empty_fields.csv */; }; DDF406632AB83CDE00A2B058 /* empty_fields.csv in Resources */ = {isa = PBXBuildFile; fileRef = DDF4064E2AB83CDE00A2B058 /* empty_fields.csv */; }; DFAD8B7B28B601EB0042BB56 /* Serializer.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFAD8B7A28B601EB0042BB56 /* Serializer.swift */; }; DFAD8B8028BC8B6F0042BB56 /* Serializer.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFAD8B7A28B601EB0042BB56 /* Serializer.swift */; }; DFAD8B8128BC8B700042BB56 /* Serializer.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFAD8B7A28B601EB0042BB56 /* Serializer.swift */; }; DFAD8B8228BC8B710042BB56 /* Serializer.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFAD8B7A28B601EB0042BB56 /* Serializer.swift */; }; E46085941CCB1F5C00385286 /* PerformanceTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = E46085931CCB1F5C00385286 /* PerformanceTest.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ 3D1E59C11945FFAD001CF760 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 3D1E59AB1945FFAC001CF760 /* Project object */; proxyType = 1; remoteGlobalIDString = 3D1E59B31945FFAC001CF760; remoteInfo = SwiftCSV; }; 3D1E59D419460259001CF760 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 3D1E59AB1945FFAC001CF760 /* Project object */; proxyType = 1; remoteGlobalIDString = 3D1E59B31945FFAC001CF760; remoteInfo = SwiftCSV; }; 5FB74B9C1CCB9274009DDBF1 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 3D1E59AB1945FFAC001CF760 /* Project object */; proxyType = 1; remoteGlobalIDString = 5FB74B901CCB9274009DDBF1; remoteInfo = "SwiftCSV OSX"; }; 5FB74BB81CCB929D009DDBF1 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 3D1E59AB1945FFAC001CF760 /* Project object */; proxyType = 1; remoteGlobalIDString = 5FB74BAC1CCB929D009DDBF1; remoteInfo = "SwiftCSV tvOS"; }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ 3D1E59B41945FFAC001CF760 /* SwiftCSV.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SwiftCSV.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 3D1E59BF1945FFAD001CF760 /* SwiftCSVTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SwiftCSVTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 3D1E59C61945FFAD001CF760 /* NamedCSVViewTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NamedCSVViewTests.swift; sourceTree = ""; }; 3D3749E2194D6DF7008F262A /* TSVTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TSVTests.swift; sourceTree = ""; }; 3D444BCC1C7D88290001C60C /* String+Lines.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "String+Lines.swift"; sourceTree = ""; }; 3DAAEE9B1C74C7EC00A933DB /* CSV.swift */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.swift; path = CSV.swift; sourceTree = ""; tabWidth = 4; }; 5015AD89274BA20A0050F975 /* ParserTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ParserTests.swift; sourceTree = ""; }; 502CDAF32AC60ADA00766701 /* ResourceHelper.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ResourceHelper.swift; sourceTree = ""; }; 5034F4712272E0DC001C02D1 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; 5034F4722272E0E4001C02D1 /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; 504F73F02BEF52AA00FF4102 /* Project.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Project.xcconfig; path = Configuration/Project.xcconfig; sourceTree = ""; }; 508975D11DBB897A006F3DBE /* NamedCSVView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NamedCSVView.swift; sourceTree = ""; }; 508975D61DBF34CF006F3DBE /* ParsingState.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ParsingState.swift; sourceTree = ""; }; 508975DB1DBF3B70006F3DBE /* EnumeratedCSVView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EnumeratedCSVView.swift; sourceTree = ""; }; 508975E01DBF3E51006F3DBE /* EnumeratedCSVViewTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EnumeratedCSVViewTests.swift; sourceTree = ""; }; 508CA0FA2771F2E70084C8E8 /* CSV+DelimiterGuessing.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "CSV+DelimiterGuessing.swift"; sourceTree = ""; }; 508CA0FC2771F3260084C8E8 /* CSVDelimiterGuessingTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CSVDelimiterGuessingTests.swift; sourceTree = ""; }; 508CA1042772039E0084C8E8 /* CSVDelimiterTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CSVDelimiterTests.swift; sourceTree = ""; }; 50A2B23324894DC900B168A9 /* NewlineTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NewlineTests.swift; sourceTree = ""; }; 50B3EEA3286F8A84007B3956 /* CSVDelimiter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CSVDelimiter.swift; sourceTree = ""; }; 50B575D92BEE1E2E006C9262 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = PrivacyInfo.xcprivacy; sourceTree = ""; }; 50F241A4274BB8DB00520A69 /* CHANGELOG.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = CHANGELOG.md; sourceTree = ""; }; 50F241A5274BBDF000520A69 /* SwiftCSV.podspec */ = {isa = PBXFileReference; lastKnownFileType = text; path = SwiftCSV.podspec; sourceTree = ""; }; 50F241A6274BBDF000520A69 /* Package.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Package.swift; sourceTree = ""; }; 5FB74B911CCB9274009DDBF1 /* SwiftCSV.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SwiftCSV.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 5FB74B9A1CCB9274009DDBF1 /* SwiftCSVTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SwiftCSVTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 5FB74BAD1CCB929D009DDBF1 /* SwiftCSV.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SwiftCSV.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 5FB74BB61CCB929D009DDBF1 /* SwiftCSVTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SwiftCSVTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 5FB74BC91CCB92BA009DDBF1 /* SwiftCSV.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SwiftCSV.framework; sourceTree = BUILT_PRODUCTS_DIR; }; BE06B67F1CB726B5009578CC /* URLTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = URLTests.swift; sourceTree = ""; }; BE6C86061CB5CE44009A351D /* QuotedTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = QuotedTests.swift; sourceTree = ""; }; BE9B02D71CBE57B8009FE424 /* Parser.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Parser.swift; sourceTree = ""; }; DDF406472AB83CDE00A2B058 /* wonderland.csv */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = wonderland.csv; sourceTree = ""; }; DDF406482AB83CDE00A2B058 /* large.csv */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = large.csv; sourceTree = ""; }; DDF406492AB83CDE00A2B058 /* utf8_with_bom.csv */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = utf8_with_bom.csv; sourceTree = ""; }; DDF4064D2AB83CDE00A2B058 /* quotes.csv */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = quotes.csv; sourceTree = ""; }; DDF4064E2AB83CDE00A2B058 /* empty_fields.csv */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = empty_fields.csv; sourceTree = ""; }; DFAD8B7A28B601EB0042BB56 /* Serializer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Serializer.swift; sourceTree = ""; }; E46085931CCB1F5C00385286 /* PerformanceTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PerformanceTest.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ 3D1E59B01945FFAC001CF760 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 3D1E59BC1945FFAD001CF760 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( 3D1E59C01945FFAD001CF760 /* SwiftCSV.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; 5FB74B8D1CCB9274009DDBF1 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 5FB74B971CCB9274009DDBF1 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( 5FB74B9B1CCB9274009DDBF1 /* SwiftCSV.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; 5FB74BA91CCB929D009DDBF1 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 5FB74BB31CCB929D009DDBF1 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( 5FB74BB71CCB929D009DDBF1 /* SwiftCSV.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; 5FB74BC51CCB92BA009DDBF1 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ 3D1E59AA1945FFAC001CF760 = { isa = PBXGroup; children = ( 5034F4712272E0DC001C02D1 /* README.md */, 5034F4722272E0E4001C02D1 /* LICENSE */, 50F241A4274BB8DB00520A69 /* CHANGELOG.md */, 50F241A6274BBDF000520A69 /* Package.swift */, 50F241A5274BBDF000520A69 /* SwiftCSV.podspec */, 504F73F02BEF52AA00FF4102 /* Project.xcconfig */, 3D1E59B61945FFAC001CF760 /* SwiftCSV */, 3D1E59C31945FFAD001CF760 /* SwiftCSVTests */, 3D1E59B51945FFAC001CF760 /* Products */, ); indentWidth = 4; sourceTree = ""; tabWidth = 4; }; 3D1E59B51945FFAC001CF760 /* Products */ = { isa = PBXGroup; children = ( 3D1E59B41945FFAC001CF760 /* SwiftCSV.framework */, 3D1E59BF1945FFAD001CF760 /* SwiftCSVTests.xctest */, 5FB74B911CCB9274009DDBF1 /* SwiftCSV.framework */, 5FB74B9A1CCB9274009DDBF1 /* SwiftCSVTests.xctest */, 5FB74BAD1CCB929D009DDBF1 /* SwiftCSV.framework */, 5FB74BB61CCB929D009DDBF1 /* SwiftCSVTests.xctest */, 5FB74BC91CCB92BA009DDBF1 /* SwiftCSV.framework */, ); name = Products; sourceTree = ""; }; 3D1E59B61945FFAC001CF760 /* SwiftCSV */ = { isa = PBXGroup; children = ( 3DAAEE9B1C74C7EC00A933DB /* CSV.swift */, 50B3EEA3286F8A84007B3956 /* CSVDelimiter.swift */, 508975D11DBB897A006F3DBE /* NamedCSVView.swift */, 508975DB1DBF3B70006F3DBE /* EnumeratedCSVView.swift */, 508CA0FA2771F2E70084C8E8 /* CSV+DelimiterGuessing.swift */, 3D444BCC1C7D88290001C60C /* String+Lines.swift */, BE9B02D71CBE57B8009FE424 /* Parser.swift */, 508975D61DBF34CF006F3DBE /* ParsingState.swift */, DFAD8B7A28B601EB0042BB56 /* Serializer.swift */, 50B575D82BEE1E2E006C9262 /* Resources */, ); path = SwiftCSV; sourceTree = ""; }; 3D1E59C31945FFAD001CF760 /* SwiftCSVTests */ = { isa = PBXGroup; children = ( 502CDAF32AC60ADA00766701 /* ResourceHelper.swift */, DDF406462AB83CDE00A2B058 /* Resources */, 3D1E59C61945FFAD001CF760 /* NamedCSVViewTests.swift */, 508975E01DBF3E51006F3DBE /* EnumeratedCSVViewTests.swift */, 50A2B23324894DC900B168A9 /* NewlineTests.swift */, 508CA0FC2771F3260084C8E8 /* CSVDelimiterGuessingTests.swift */, 508CA1042772039E0084C8E8 /* CSVDelimiterTests.swift */, BE6C86061CB5CE44009A351D /* QuotedTests.swift */, 3D3749E2194D6DF7008F262A /* TSVTests.swift */, BE06B67F1CB726B5009578CC /* URLTests.swift */, E46085931CCB1F5C00385286 /* PerformanceTest.swift */, 5015AD89274BA20A0050F975 /* ParserTests.swift */, ); path = SwiftCSVTests; sourceTree = ""; }; 50B575D82BEE1E2E006C9262 /* Resources */ = { isa = PBXGroup; children = ( 50B575D92BEE1E2E006C9262 /* PrivacyInfo.xcprivacy */, ); path = Resources; sourceTree = ""; }; DDF406462AB83CDE00A2B058 /* Resources */ = { isa = PBXGroup; children = ( DDF406472AB83CDE00A2B058 /* wonderland.csv */, DDF406482AB83CDE00A2B058 /* large.csv */, DDF406492AB83CDE00A2B058 /* utf8_with_bom.csv */, DDF4064D2AB83CDE00A2B058 /* quotes.csv */, DDF4064E2AB83CDE00A2B058 /* empty_fields.csv */, ); name = Resources; path = SwiftCSVTests/TestData; sourceTree = SOURCE_ROOT; }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ 3D1E59B11945FFAC001CF760 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 5FB74B8E1CCB9274009DDBF1 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 5FB74BAA1CCB929D009DDBF1 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 5FB74BC61CCB92BA009DDBF1 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ 3D1E59B31945FFAC001CF760 /* SwiftCSV */ = { isa = PBXNativeTarget; buildConfigurationList = 3D1E59CA1945FFAD001CF760 /* Build configuration list for PBXNativeTarget "SwiftCSV" */; buildPhases = ( 3D1E59AF1945FFAC001CF760 /* Sources */, 3D1E59B01945FFAC001CF760 /* Frameworks */, 3D1E59B11945FFAC001CF760 /* Headers */, 3D1E59B21945FFAC001CF760 /* Resources */, ); buildRules = ( ); dependencies = ( ); name = SwiftCSV; productName = SwiftCSV; productReference = 3D1E59B41945FFAC001CF760 /* SwiftCSV.framework */; productType = "com.apple.product-type.framework"; }; 3D1E59BE1945FFAD001CF760 /* SwiftCSVTests */ = { isa = PBXNativeTarget; buildConfigurationList = 3D1E59CD1945FFAD001CF760 /* Build configuration list for PBXNativeTarget "SwiftCSVTests" */; buildPhases = ( 3D1E59BB1945FFAD001CF760 /* Sources */, 3D1E59BC1945FFAD001CF760 /* Frameworks */, 3D1E59BD1945FFAD001CF760 /* Resources */, ); buildRules = ( ); dependencies = ( 3D1E59C21945FFAD001CF760 /* PBXTargetDependency */, 3D1E59D519460259001CF760 /* PBXTargetDependency */, ); name = SwiftCSVTests; productName = SwiftCSVTests; productReference = 3D1E59BF1945FFAD001CF760 /* SwiftCSVTests.xctest */; productType = "com.apple.product-type.bundle.unit-test"; }; 5FB74B901CCB9274009DDBF1 /* SwiftCSV OSX */ = { isa = PBXNativeTarget; buildConfigurationList = 5FB74BA61CCB9274009DDBF1 /* Build configuration list for PBXNativeTarget "SwiftCSV OSX" */; buildPhases = ( 5FB74B8C1CCB9274009DDBF1 /* Sources */, 5FB74B8D1CCB9274009DDBF1 /* Frameworks */, 5FB74B8E1CCB9274009DDBF1 /* Headers */, 5FB74B8F1CCB9274009DDBF1 /* Resources */, ); buildRules = ( ); dependencies = ( ); name = "SwiftCSV OSX"; productName = "SwiftCSV OSX"; productReference = 5FB74B911CCB9274009DDBF1 /* SwiftCSV.framework */; productType = "com.apple.product-type.framework"; }; 5FB74B991CCB9274009DDBF1 /* SwiftCSV OSXTests */ = { isa = PBXNativeTarget; buildConfigurationList = 5FB74BA71CCB9274009DDBF1 /* Build configuration list for PBXNativeTarget "SwiftCSV OSXTests" */; buildPhases = ( 5FB74B961CCB9274009DDBF1 /* Sources */, 5FB74B971CCB9274009DDBF1 /* Frameworks */, 5FB74B981CCB9274009DDBF1 /* Resources */, ); buildRules = ( ); dependencies = ( 5FB74B9D1CCB9274009DDBF1 /* PBXTargetDependency */, ); name = "SwiftCSV OSXTests"; productName = "SwiftCSV OSXTests"; productReference = 5FB74B9A1CCB9274009DDBF1 /* SwiftCSVTests.xctest */; productType = "com.apple.product-type.bundle.unit-test"; }; 5FB74BAC1CCB929D009DDBF1 /* SwiftCSV tvOS */ = { isa = PBXNativeTarget; buildConfigurationList = 5FB74BBE1CCB929D009DDBF1 /* Build configuration list for PBXNativeTarget "SwiftCSV tvOS" */; buildPhases = ( 5FB74BA81CCB929D009DDBF1 /* Sources */, 5FB74BA91CCB929D009DDBF1 /* Frameworks */, 5FB74BAA1CCB929D009DDBF1 /* Headers */, 5FB74BAB1CCB929D009DDBF1 /* Resources */, ); buildRules = ( ); dependencies = ( ); name = "SwiftCSV tvOS"; productName = "SwiftCSV tvOS"; productReference = 5FB74BAD1CCB929D009DDBF1 /* SwiftCSV.framework */; productType = "com.apple.product-type.framework"; }; 5FB74BB51CCB929D009DDBF1 /* SwiftCSV tvOSTests */ = { isa = PBXNativeTarget; buildConfigurationList = 5FB74BC11CCB929D009DDBF1 /* Build configuration list for PBXNativeTarget "SwiftCSV tvOSTests" */; buildPhases = ( 5FB74BB21CCB929D009DDBF1 /* Sources */, 5FB74BB31CCB929D009DDBF1 /* Frameworks */, 5FB74BB41CCB929D009DDBF1 /* Resources */, ); buildRules = ( ); dependencies = ( 5FB74BB91CCB929D009DDBF1 /* PBXTargetDependency */, ); name = "SwiftCSV tvOSTests"; productName = "SwiftCSV tvOSTests"; productReference = 5FB74BB61CCB929D009DDBF1 /* SwiftCSVTests.xctest */; productType = "com.apple.product-type.bundle.unit-test"; }; 5FB74BC81CCB92BA009DDBF1 /* SwiftCSV watchOS */ = { isa = PBXNativeTarget; buildConfigurationList = 5FB74BCE1CCB92BA009DDBF1 /* Build configuration list for PBXNativeTarget "SwiftCSV watchOS" */; buildPhases = ( 5FB74BC41CCB92BA009DDBF1 /* Sources */, 5FB74BC51CCB92BA009DDBF1 /* Frameworks */, 5FB74BC61CCB92BA009DDBF1 /* Headers */, 5FB74BC71CCB92BA009DDBF1 /* Resources */, ); buildRules = ( ); dependencies = ( ); name = "SwiftCSV watchOS"; productName = "SwiftCSV watchOS"; productReference = 5FB74BC91CCB92BA009DDBF1 /* SwiftCSV.framework */; productType = "com.apple.product-type.framework"; }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ 3D1E59AB1945FFAC001CF760 /* Project object */ = { isa = PBXProject; attributes = { BuildIndependentTargetsInParallel = YES; LastSwiftMigration = 0700; LastSwiftUpdateCheck = 0730; LastUpgradeCheck = 1500; ORGANIZATIONNAME = SwiftCSV; TargetAttributes = { 3D1E59B31945FFAC001CF760 = { CreatedOnToolsVersion = 6.0; LastSwiftMigration = 1020; }; 3D1E59BE1945FFAD001CF760 = { CreatedOnToolsVersion = 6.0; LastSwiftMigration = 1020; TestTargetID = 3D1E59B31945FFAC001CF760; }; 5FB74B901CCB9274009DDBF1 = { CreatedOnToolsVersion = 7.3; LastSwiftMigration = 1020; }; 5FB74B991CCB9274009DDBF1 = { CreatedOnToolsVersion = 7.3; LastSwiftMigration = 1020; }; 5FB74BAC1CCB929D009DDBF1 = { CreatedOnToolsVersion = 7.3; LastSwiftMigration = 1020; }; 5FB74BB51CCB929D009DDBF1 = { CreatedOnToolsVersion = 7.3; LastSwiftMigration = 1020; }; 5FB74BC81CCB92BA009DDBF1 = { CreatedOnToolsVersion = 7.3; LastSwiftMigration = 1020; }; }; }; buildConfigurationList = 3D1E59AE1945FFAC001CF760 /* Build configuration list for PBXProject "SwiftCSV" */; compatibilityVersion = "Xcode 3.2"; developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( en, Base, ); mainGroup = 3D1E59AA1945FFAC001CF760; productRefGroup = 3D1E59B51945FFAC001CF760 /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( 3D1E59B31945FFAC001CF760 /* SwiftCSV */, 3D1E59BE1945FFAD001CF760 /* SwiftCSVTests */, 5FB74B901CCB9274009DDBF1 /* SwiftCSV OSX */, 5FB74B991CCB9274009DDBF1 /* SwiftCSV OSXTests */, 5FB74BAC1CCB929D009DDBF1 /* SwiftCSV tvOS */, 5FB74BB51CCB929D009DDBF1 /* SwiftCSV tvOSTests */, 5FB74BC81CCB92BA009DDBF1 /* SwiftCSV watchOS */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ 3D1E59B21945FFAC001CF760 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( 50B575DA2BEE1E2E006C9262 /* PrivacyInfo.xcprivacy in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; 3D1E59BD1945FFAD001CF760 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( DDF406522AB83CDE00A2B058 /* large.csv in Resources */, DDF406552AB83CDE00A2B058 /* utf8_with_bom.csv in Resources */, DDF406612AB83CDE00A2B058 /* empty_fields.csv in Resources */, DDF4064F2AB83CDE00A2B058 /* wonderland.csv in Resources */, DDF4065E2AB83CDE00A2B058 /* quotes.csv in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; 5FB74B8F1CCB9274009DDBF1 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( 50B575DB2BEE1E2E006C9262 /* PrivacyInfo.xcprivacy in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; 5FB74B981CCB9274009DDBF1 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( DDF406532AB83CDE00A2B058 /* large.csv in Resources */, DDF406562AB83CDE00A2B058 /* utf8_with_bom.csv in Resources */, DDF406622AB83CDE00A2B058 /* empty_fields.csv in Resources */, DDF406502AB83CDE00A2B058 /* wonderland.csv in Resources */, DDF4065F2AB83CDE00A2B058 /* quotes.csv in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; 5FB74BAB1CCB929D009DDBF1 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( 50B575DC2BEE1E2E006C9262 /* PrivacyInfo.xcprivacy in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; 5FB74BB41CCB929D009DDBF1 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( DDF406542AB83CDE00A2B058 /* large.csv in Resources */, DDF406572AB83CDE00A2B058 /* utf8_with_bom.csv in Resources */, DDF406632AB83CDE00A2B058 /* empty_fields.csv in Resources */, DDF406512AB83CDE00A2B058 /* wonderland.csv in Resources */, DDF406602AB83CDE00A2B058 /* quotes.csv in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; 5FB74BC71CCB92BA009DDBF1 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( 50B575DD2BEE1E2E006C9262 /* PrivacyInfo.xcprivacy in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ 3D1E59AF1945FFAC001CF760 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 50B3EEA4286F8A84007B3956 /* CSVDelimiter.swift in Sources */, DFAD8B7B28B601EB0042BB56 /* Serializer.swift in Sources */, 508975D21DBB897A006F3DBE /* NamedCSVView.swift in Sources */, 508CA0FB2771F2E70084C8E8 /* CSV+DelimiterGuessing.swift in Sources */, 3DAAEE9C1C74C7EC00A933DB /* CSV.swift in Sources */, BE9B02D81CBE57B8009FE424 /* Parser.swift in Sources */, 508975DC1DBF3B70006F3DBE /* EnumeratedCSVView.swift in Sources */, 508975D71DBF34CF006F3DBE /* ParsingState.swift in Sources */, 3D444BCD1C7D88290001C60C /* String+Lines.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 3D1E59BB1945FFAD001CF760 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( E46085941CCB1F5C00385286 /* PerformanceTest.swift in Sources */, 3D1E59C71945FFAD001CF760 /* NamedCSVViewTests.swift in Sources */, 50A2B23424894DC900B168A9 /* NewlineTests.swift in Sources */, 508CA0FD2771F3260084C8E8 /* CSVDelimiterGuessingTests.swift in Sources */, 508975E11DBF3E51006F3DBE /* EnumeratedCSVViewTests.swift in Sources */, 508CA1052772039E0084C8E8 /* CSVDelimiterTests.swift in Sources */, 5015AD8A274BA20A0050F975 /* ParserTests.swift in Sources */, 3D3749E3194D6DF7008F262A /* TSVTests.swift in Sources */, BE06B6801CB726B5009578CC /* URLTests.swift in Sources */, BE6C86071CB5CE44009A351D /* QuotedTests.swift in Sources */, 502CDAF42AC60ADA00766701 /* ResourceHelper.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 5FB74B8C1CCB9274009DDBF1 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 50B3EEA5286F8AA3007B3956 /* CSVDelimiter.swift in Sources */, DFAD8B8228BC8B710042BB56 /* Serializer.swift in Sources */, 508975D31DBB897A006F3DBE /* NamedCSVView.swift in Sources */, 508CA1002771F32C0084C8E8 /* CSV+DelimiterGuessing.swift in Sources */, 5FB74BD11CCB92E5009DDBF1 /* CSV.swift in Sources */, 5FB74BD21CCB92E5009DDBF1 /* String+Lines.swift in Sources */, 508975DD1DBF3B70006F3DBE /* EnumeratedCSVView.swift in Sources */, 508975D81DBF34CF006F3DBE /* ParsingState.swift in Sources */, 5FB74BD51CCB92E5009DDBF1 /* Parser.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 5FB74B961CCB9274009DDBF1 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 5FB74BE01CCB9312009DDBF1 /* NamedCSVViewTests.swift in Sources */, 5FB74BE11CCB9312009DDBF1 /* QuotedTests.swift in Sources */, 50A2B23524894DC900B168A9 /* NewlineTests.swift in Sources */, 508CA0FE2771F3260084C8E8 /* CSVDelimiterGuessingTests.swift in Sources */, 508975E21DBF3E51006F3DBE /* EnumeratedCSVViewTests.swift in Sources */, 508CA1062772039E0084C8E8 /* CSVDelimiterTests.swift in Sources */, 5015AD8B274BA20A0050F975 /* ParserTests.swift in Sources */, 5FB74BE21CCB9312009DDBF1 /* TSVTests.swift in Sources */, 5FB74BE31CCB9312009DDBF1 /* URLTests.swift in Sources */, 5FB74BE41CCB9312009DDBF1 /* PerformanceTest.swift in Sources */, 502CDAF52AC60ADA00766701 /* ResourceHelper.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 5FB74BA81CCB929D009DDBF1 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 50B3EEA6286F8AA4007B3956 /* CSVDelimiter.swift in Sources */, DFAD8B8128BC8B700042BB56 /* Serializer.swift in Sources */, 508975D41DBB897A006F3DBE /* NamedCSVView.swift in Sources */, 508CA1022771F32D0084C8E8 /* CSV+DelimiterGuessing.swift in Sources */, 5FB74BD61CCB92EB009DDBF1 /* CSV.swift in Sources */, 5FB74BD71CCB92EB009DDBF1 /* String+Lines.swift in Sources */, 508975DE1DBF3B70006F3DBE /* EnumeratedCSVView.swift in Sources */, 508975D91DBF34CF006F3DBE /* ParsingState.swift in Sources */, 5FB74BDA1CCB92EB009DDBF1 /* Parser.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 5FB74BB21CCB929D009DDBF1 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 5FB74BE51CCB931F009DDBF1 /* NamedCSVViewTests.swift in Sources */, 5FB74BE61CCB931F009DDBF1 /* QuotedTests.swift in Sources */, 50A2B23624894DC900B168A9 /* NewlineTests.swift in Sources */, 508CA0FF2771F3260084C8E8 /* CSVDelimiterGuessingTests.swift in Sources */, 508975E31DBF3E51006F3DBE /* EnumeratedCSVViewTests.swift in Sources */, 508CA1072772039E0084C8E8 /* CSVDelimiterTests.swift in Sources */, 5015AD8C274BA20A0050F975 /* ParserTests.swift in Sources */, 5FB74BE71CCB931F009DDBF1 /* TSVTests.swift in Sources */, 5FB74BE81CCB931F009DDBF1 /* URLTests.swift in Sources */, 5FB74BE91CCB931F009DDBF1 /* PerformanceTest.swift in Sources */, 502CDAF62AC60ADA00766701 /* ResourceHelper.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 5FB74BC41CCB92BA009DDBF1 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 50B3EEA7286F8AA5007B3956 /* CSVDelimiter.swift in Sources */, DFAD8B8028BC8B6F0042BB56 /* Serializer.swift in Sources */, 508975D51DBB897A006F3DBE /* NamedCSVView.swift in Sources */, 508CA1032771F32E0084C8E8 /* CSV+DelimiterGuessing.swift in Sources */, 5FB74BDB1CCB92F1009DDBF1 /* CSV.swift in Sources */, 5FB74BDC1CCB92F1009DDBF1 /* String+Lines.swift in Sources */, 508975DF1DBF3B70006F3DBE /* EnumeratedCSVView.swift in Sources */, 508975DA1DBF34CF006F3DBE /* ParsingState.swift in Sources */, 5FB74BDF1CCB92F1009DDBF1 /* Parser.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ 3D1E59C21945FFAD001CF760 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 3D1E59B31945FFAC001CF760 /* SwiftCSV */; targetProxy = 3D1E59C11945FFAD001CF760 /* PBXContainerItemProxy */; }; 3D1E59D519460259001CF760 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 3D1E59B31945FFAC001CF760 /* SwiftCSV */; targetProxy = 3D1E59D419460259001CF760 /* PBXContainerItemProxy */; }; 5FB74B9D1CCB9274009DDBF1 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 5FB74B901CCB9274009DDBF1 /* SwiftCSV OSX */; targetProxy = 5FB74B9C1CCB9274009DDBF1 /* PBXContainerItemProxy */; }; 5FB74BB91CCB929D009DDBF1 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 5FB74BAC1CCB929D009DDBF1 /* SwiftCSV tvOS */; targetProxy = 5FB74BB81CCB929D009DDBF1 /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ 3D1E59C81945FFAD001CF760 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 504F73F02BEF52AA00FF4102 /* Project.xcconfig */; 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_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; 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*]" = ""; COPY_PHASE_STRIP = NO; CURRENT_PROJECT_VERSION = 1; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; ENABLE_USER_SCRIPT_SANDBOXING = 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_SYMBOLS_PRIVATE_EXTERN = NO; 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; METAL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Debug; }; 3D1E59C91945FFAD001CF760 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 504F73F02BEF52AA00FF4102 /* Project.xcconfig */; 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_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; 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*]" = ""; COPY_PHASE_STRIP = YES; CURRENT_PROJECT_VERSION = 1; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_USER_SCRIPT_SANDBOXING = 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; METAL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SWIFT_COMPILATION_MODE = wholemodule; SWIFT_OPTIMIZATION_LEVEL = "-O"; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Release; }; 3D1E59CB1945FFAD001CF760 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ""; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_MODULE_VERIFIER = YES; INFOPLIST_FILE = "SwiftCSV.xcodeproj/SwiftCSV-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); MARKETING_VERSION = 0.8.1; MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++"; MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu99 gnu++11"; PRODUCT_BUNDLE_IDENTIFIER = "naoty.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; }; name = Debug; }; 3D1E59CC1945FFAD001CF760 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ""; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_MODULE_VERIFIER = YES; INFOPLIST_FILE = "SwiftCSV.xcodeproj/SwiftCSV-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); MARKETING_VERSION = 0.8.1; MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++"; MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu99 gnu++11"; PRODUCT_BUNDLE_IDENTIFIER = "naoty.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; SWIFT_VERSION = 5.0; }; name = Release; }; 3D1E59CE1945FFAD001CF760 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=macosx*]" = "-"; CODE_SIGN_STYLE = Automatic; DEVELOPMENT_TEAM = ""; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; GCC_PREPROCESSOR_DEFINITIONS = ( "DEBUG=1", "$(inherited)", ); INFOPLIST_FILE = "SwiftCSV.xcodeproj/SwiftCSVTests-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); METAL_ENABLE_DEBUG_INFO = YES; PRODUCT_BUNDLE_IDENTIFIER = "naoty.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; SDKROOT = iphoneos; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; }; name = Debug; }; 3D1E59CF1945FFAD001CF760 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=macosx*]" = "-"; CODE_SIGN_STYLE = Automatic; DEVELOPMENT_TEAM = ""; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; INFOPLIST_FILE = "SwiftCSV.xcodeproj/SwiftCSVTests-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); METAL_ENABLE_DEBUG_INFO = NO; PRODUCT_BUNDLE_IDENTIFIER = "naoty.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; SDKROOT = iphoneos; SWIFT_VERSION = 5.0; }; name = Release; }; 5FB74BA21CCB9274009DDBF1 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { CLANG_ANALYZER_NONNULL = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ""; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_MODULE_VERIFIER = YES; FRAMEWORK_VERSION = A; GCC_NO_COMMON_BLOCKS = YES; INFOPLIST_FILE = "SwiftCSV.xcodeproj/SwiftCSV-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/../Frameworks", "@loader_path/Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 10.13; MARKETING_VERSION = 0.8.0; MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++"; MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu99 gnu++11"; MTL_ENABLE_DEBUG_INFO = YES; PRODUCT_BUNDLE_IDENTIFIER = "naoty.SwiftCSV.SwiftCSV-OSX"; PRODUCT_NAME = SwiftCSV; PROVISIONING_PROFILE_SPECIFIER = ""; SDKROOT = macosx; SKIP_INSTALL = YES; SWIFT_VERSION = 5.0; }; name = Debug; }; 5FB74BA31CCB9274009DDBF1 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { CLANG_ANALYZER_NONNULL = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; COPY_PHASE_STRIP = NO; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ""; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_MODULE_VERIFIER = YES; FRAMEWORK_VERSION = A; GCC_NO_COMMON_BLOCKS = YES; INFOPLIST_FILE = "SwiftCSV.xcodeproj/SwiftCSV-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/../Frameworks", "@loader_path/Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 10.13; MARKETING_VERSION = 0.8.0; MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++"; MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu99 gnu++11"; MTL_ENABLE_DEBUG_INFO = NO; PRODUCT_BUNDLE_IDENTIFIER = "naoty.SwiftCSV.SwiftCSV-OSX"; PRODUCT_NAME = SwiftCSV; PROVISIONING_PROFILE_SPECIFIER = ""; SDKROOT = macosx; SKIP_INSTALL = YES; SWIFT_VERSION = 5.0; }; name = Release; }; 5FB74BA41CCB9274009DDBF1 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { CLANG_ANALYZER_NONNULL = YES; CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=macosx*]" = "-"; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = ""; GCC_NO_COMMON_BLOCKS = YES; INFOPLIST_FILE = "SwiftCSV.xcodeproj/SwiftCSVTests-Info.plist"; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/../Frameworks", "@loader_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = "$(RECOMMENDED_MACOSX_DEPLOYMENT_TARGET)"; MTL_ENABLE_DEBUG_INFO = YES; PRODUCT_BUNDLE_IDENTIFIER = "naoty.SwiftCSV.SwiftCSV-OSXTests"; PRODUCT_NAME = SwiftCSVTests; PROVISIONING_PROFILE_SPECIFIER = ""; SDKROOT = macosx; SWIFT_VERSION = 5.0; }; name = Debug; }; 5FB74BA51CCB9274009DDBF1 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { CLANG_ANALYZER_NONNULL = YES; CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=macosx*]" = "-"; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; COPY_PHASE_STRIP = NO; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = ""; GCC_NO_COMMON_BLOCKS = YES; INFOPLIST_FILE = "SwiftCSV.xcodeproj/SwiftCSVTests-Info.plist"; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/../Frameworks", "@loader_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = "$(RECOMMENDED_MACOSX_DEPLOYMENT_TARGET)"; MTL_ENABLE_DEBUG_INFO = NO; PRODUCT_BUNDLE_IDENTIFIER = "naoty.SwiftCSV.SwiftCSV-OSXTests"; PRODUCT_NAME = SwiftCSVTests; PROVISIONING_PROFILE_SPECIFIER = ""; SDKROOT = macosx; SWIFT_VERSION = 5.0; }; name = Release; }; 5FB74BBF1CCB929D009DDBF1 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { CLANG_ANALYZER_NONNULL = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; DEBUG_INFORMATION_FORMAT = dwarf; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ""; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_MODULE_VERIFIER = YES; GCC_NO_COMMON_BLOCKS = YES; INFOPLIST_FILE = "SwiftCSV.xcodeproj/SwiftCSV-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); MARKETING_VERSION = 0.8.0; MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++"; MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu99 gnu++11"; MTL_ENABLE_DEBUG_INFO = YES; PRODUCT_BUNDLE_IDENTIFIER = "naoty.SwiftCSV.SwiftCSV-tvOS"; PRODUCT_NAME = SwiftCSV; PROVISIONING_PROFILE_SPECIFIER = ""; SDKROOT = appletvos; SKIP_INSTALL = YES; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2,3"; TVOS_DEPLOYMENT_TARGET = 12.0; }; name = Debug; }; 5FB74BC01CCB929D009DDBF1 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { CLANG_ANALYZER_NONNULL = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ""; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_MODULE_VERIFIER = YES; GCC_NO_COMMON_BLOCKS = YES; INFOPLIST_FILE = "SwiftCSV.xcodeproj/SwiftCSV-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); MARKETING_VERSION = 0.8.0; MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++"; MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu99 gnu++11"; MTL_ENABLE_DEBUG_INFO = NO; PRODUCT_BUNDLE_IDENTIFIER = "naoty.SwiftCSV.SwiftCSV-tvOS"; PRODUCT_NAME = SwiftCSV; PROVISIONING_PROFILE_SPECIFIER = ""; SDKROOT = appletvos; SKIP_INSTALL = YES; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2,3"; TVOS_DEPLOYMENT_TARGET = 12.0; }; name = Release; }; 5FB74BC21CCB929D009DDBF1 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { CLANG_ANALYZER_NONNULL = YES; DEBUG_INFORMATION_FORMAT = dwarf; GCC_NO_COMMON_BLOCKS = YES; INFOPLIST_FILE = "SwiftCSV.xcodeproj/SwiftCSVTests-Info.plist"; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); MTL_ENABLE_DEBUG_INFO = YES; PRODUCT_BUNDLE_IDENTIFIER = "naoty.SwiftCSV.SwiftCSV-tvOSTests"; PRODUCT_NAME = SwiftCSVTests; SDKROOT = appletvos; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2,3"; TVOS_DEPLOYMENT_TARGET = 12.0; }; name = Debug; }; 5FB74BC31CCB929D009DDBF1 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { CLANG_ANALYZER_NONNULL = YES; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; GCC_NO_COMMON_BLOCKS = YES; INFOPLIST_FILE = "SwiftCSV.xcodeproj/SwiftCSVTests-Info.plist"; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); MTL_ENABLE_DEBUG_INFO = NO; PRODUCT_BUNDLE_IDENTIFIER = "naoty.SwiftCSV.SwiftCSV-tvOSTests"; PRODUCT_NAME = SwiftCSVTests; SDKROOT = appletvos; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2,3"; TVOS_DEPLOYMENT_TARGET = 12.0; }; name = Release; }; 5FB74BCF1CCB92BA009DDBF1 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ANALYZER_NONNULL = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; DEBUG_INFORMATION_FORMAT = dwarf; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ""; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_MODULE_VERIFIER = YES; GCC_NO_COMMON_BLOCKS = YES; INFOPLIST_FILE = "SwiftCSV.xcodeproj/SwiftCSV-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++"; MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu99 gnu++11"; MTL_ENABLE_DEBUG_INFO = YES; PRODUCT_BUNDLE_IDENTIFIER = "naoty.SwiftCSV.SwiftCSV-watchOS"; PRODUCT_NAME = SwiftCSV; PROVISIONING_PROFILE_SPECIFIER = ""; SDKROOT = watchos; SKIP_INSTALL = YES; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = 4; WATCHOS_DEPLOYMENT_TARGET = 4.0; }; name = Debug; }; 5FB74BD01CCB92BA009DDBF1 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ANALYZER_NONNULL = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ""; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_MODULE_VERIFIER = YES; GCC_NO_COMMON_BLOCKS = YES; INFOPLIST_FILE = "SwiftCSV.xcodeproj/SwiftCSV-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++"; MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu99 gnu++11"; MTL_ENABLE_DEBUG_INFO = NO; PRODUCT_BUNDLE_IDENTIFIER = "naoty.SwiftCSV.SwiftCSV-watchOS"; PRODUCT_NAME = SwiftCSV; PROVISIONING_PROFILE_SPECIFIER = ""; SDKROOT = watchos; SKIP_INSTALL = YES; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = 4; WATCHOS_DEPLOYMENT_TARGET = 4.0; }; name = Release; }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ 3D1E59AE1945FFAC001CF760 /* Build configuration list for PBXProject "SwiftCSV" */ = { isa = XCConfigurationList; buildConfigurations = ( 3D1E59C81945FFAD001CF760 /* Debug */, 3D1E59C91945FFAD001CF760 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 3D1E59CA1945FFAD001CF760 /* Build configuration list for PBXNativeTarget "SwiftCSV" */ = { isa = XCConfigurationList; buildConfigurations = ( 3D1E59CB1945FFAD001CF760 /* Debug */, 3D1E59CC1945FFAD001CF760 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 3D1E59CD1945FFAD001CF760 /* Build configuration list for PBXNativeTarget "SwiftCSVTests" */ = { isa = XCConfigurationList; buildConfigurations = ( 3D1E59CE1945FFAD001CF760 /* Debug */, 3D1E59CF1945FFAD001CF760 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 5FB74BA61CCB9274009DDBF1 /* Build configuration list for PBXNativeTarget "SwiftCSV OSX" */ = { isa = XCConfigurationList; buildConfigurations = ( 5FB74BA21CCB9274009DDBF1 /* Debug */, 5FB74BA31CCB9274009DDBF1 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 5FB74BA71CCB9274009DDBF1 /* Build configuration list for PBXNativeTarget "SwiftCSV OSXTests" */ = { isa = XCConfigurationList; buildConfigurations = ( 5FB74BA41CCB9274009DDBF1 /* Debug */, 5FB74BA51CCB9274009DDBF1 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 5FB74BBE1CCB929D009DDBF1 /* Build configuration list for PBXNativeTarget "SwiftCSV tvOS" */ = { isa = XCConfigurationList; buildConfigurations = ( 5FB74BBF1CCB929D009DDBF1 /* Debug */, 5FB74BC01CCB929D009DDBF1 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 5FB74BC11CCB929D009DDBF1 /* Build configuration list for PBXNativeTarget "SwiftCSV tvOSTests" */ = { isa = XCConfigurationList; buildConfigurations = ( 5FB74BC21CCB929D009DDBF1 /* Debug */, 5FB74BC31CCB929D009DDBF1 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 5FB74BCE1CCB92BA009DDBF1 /* Build configuration list for PBXNativeTarget "SwiftCSV watchOS" */ = { isa = XCConfigurationList; buildConfigurations = ( 5FB74BCF1CCB92BA009DDBF1 /* Debug */, 5FB74BD01CCB92BA009DDBF1 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; /* End XCConfigurationList section */ }; rootObject = 3D1E59AB1945FFAC001CF760 /* Project object */; } ================================================ FILE: SwiftCSV.xcodeproj/project.xcworkspace/contents.xcworkspacedata ================================================ ================================================ FILE: SwiftCSV.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist ================================================ IDEDidComputeMac32BitWarning ================================================ FILE: SwiftCSV.xcodeproj/xcshareddata/xcbaselines/3D1E59BE1945FFAD001CF760.xcbaseline/210222BF-FF70-4818-9C2E-20B20A9F7F48.plist ================================================ classNames BigFileTest testPerformanceExample() com.apple.XCTPerformanceMetric_WallClockTime baselineAverage 10.622 baselineIntegrationDisplayName Local Baseline ================================================ FILE: SwiftCSV.xcodeproj/xcshareddata/xcbaselines/3D1E59BE1945FFAD001CF760.xcbaseline/Info.plist ================================================ runDestinationsByUUID 210222BF-FF70-4818-9C2E-20B20A9F7F48 localComputer busSpeedInMHz 100 cpuCount 1 cpuKind Intel Core i5 cpuSpeedInMHz 1300 logicalCPUCoresPerPackage 4 modelCode MacBookAir6,2 physicalCPUCoresPerPackage 2 platformIdentifier com.apple.platform.macosx targetArchitecture x86_64 targetDevice modelCode iPhone8,2 platformIdentifier com.apple.platform.iphonesimulator ================================================ FILE: SwiftCSV.xcodeproj/xcshareddata/xcschemes/SwiftCSV-iOS.xcscheme ================================================ ================================================ FILE: SwiftCSV.xcodeproj/xcshareddata/xcschemes/SwiftCSV-macOS.xcscheme ================================================ ================================================ FILE: SwiftCSV.xcodeproj/xcshareddata/xcschemes/SwiftCSV-tvOS.xcscheme ================================================ ================================================ FILE: SwiftCSV.xcodeproj/xcshareddata/xcschemes/SwiftCSV-watchOS.xcscheme ================================================ ================================================ FILE: SwiftCSVTests/CSVDelimiterGuessingTests.swift ================================================ // // CSVDelimiterGuessingTests.swift // SwiftCSV // // Created by Christian Tietze on 21.12.21. // Copyright © 2021 Naoto Kaneko. All rights reserved. // import XCTest @testable import SwiftCSV class CSVDelimiterGuessingTests: XCTestCase { func testGuessDelimiter_InvalidInput_FallbackToComma() throws { XCTAssertEqual(CSVDelimiter.guessed(string: ""), .comma) XCTAssertEqual(CSVDelimiter.guessed(string: " "), .comma) XCTAssertEqual(CSVDelimiter.guessed(string: "fallback"), .comma) XCTAssertEqual(CSVDelimiter.guessed(string: #""opened;quote;never;closed"#), .comma) XCTAssertEqual(CSVDelimiter.guessed(string: "just a single line of text"), .comma) XCTAssertEqual(CSVDelimiter.guessed(string: "\n"), .comma) } func testGuessDelimiter_Comma() throws { XCTAssertEqual(CSVDelimiter.guessed(string: "header,"), .comma) XCTAssertEqual(CSVDelimiter.guessed(string: "id,name,age"), .comma) XCTAssertEqual(CSVDelimiter.guessed(string: #""a","b","c""#), .comma) XCTAssertEqual(CSVDelimiter.guessed(string: #""a;","b\t","c""#), .comma, "Prioritizes separator between quotations over first occurrence") } func testGuessDelimiter_Semicolon() throws { XCTAssertEqual(CSVDelimiter.guessed(string: "header;"), .semicolon) XCTAssertEqual(CSVDelimiter.guessed(string: "id;name;age"), .semicolon) XCTAssertEqual(CSVDelimiter.guessed(string: #""a";"b";"c""#), .semicolon) XCTAssertEqual(CSVDelimiter.guessed(string: #""a,";"b\t";"c""#), .semicolon, "Prioritizes separator between quotations over first occurrence") XCTAssertEqual(CSVDelimiter.guessed(string: """ "Test";"Test_1" "Test";"Test_2" """), .semicolon) } func testGuessDelimiter_Tab() throws { XCTAssertEqual(CSVDelimiter.guessed(string: "header\t"), .tab) XCTAssertEqual(CSVDelimiter.guessed(string: "id\tname\tage"), .tab) // We cannot use #"..."# string delimiters here because \t doesn't work inside these. XCTAssertEqual(CSVDelimiter.guessed(string: "\"a\"\t\"b\"\t\"c\""), .tab) XCTAssertEqual(CSVDelimiter.guessed(string: "\"a,\"\t\"b;\"\t\"c\""), .tab, "Prioritizes separator between quotations over first occurrence") } func testGuessDelimiter_IgnoresEmptyLeadingLines() throws { XCTAssertEqual(CSVDelimiter.guessed(string: "\na,b,c"), .comma) XCTAssertEqual(CSVDelimiter.guessed(string: "\n\n\na,b,c"), .comma) XCTAssertEqual(CSVDelimiter.guessed(string: "\n \n \na,b,c"), .comma) XCTAssertEqual(CSVDelimiter.guessed(string: "\na;b;c"), .semicolon) XCTAssertEqual(CSVDelimiter.guessed(string: "\n \n \na;b;c"), .semicolon) XCTAssertEqual(CSVDelimiter.guessed(string: "\na\tb\tc"), .tab) XCTAssertEqual(CSVDelimiter.guessed(string: "\n \n \na\tb\tc"), .tab) } func testInitWithGuessedDelimiter() throws { let semicolonCSV = try NamedCSV(string: "id;name;age\n1;Alice;18\n2;Bob;19\n3;Charlie") let expectedSemicolonCSV = [ ["id": "1", "name": "Alice", "age": "18"], ["id": "2", "name": "Bob", "age": "19"], ["id": "3", "name": "Charlie", "age": ""] ] for (index, row) in semicolonCSV.rows.enumerated() { XCTAssertEqual(expectedSemicolonCSV[index], row) } let tabCSV = try NamedCSV(string: "id\tname\tage\n1\tAlice\t18\n2\tBob\t19\n3\tCharlie") let expectedTabCSV = [ ["id": "1", "name": "Alice", "age": "18"], ["id": "2", "name": "Bob", "age": "19"], ["id": "3", "name": "Charlie", "age": ""] ] for (index, row) in tabCSV.rows.enumerated() { XCTAssertEqual(expectedTabCSV[index], row) } } } ================================================ FILE: SwiftCSVTests/CSVDelimiterTests.swift ================================================ // // CSVDelimiterTests.swift // SwiftCSV // // Created by Christian Tietze on 21.12.21. // Copyright © 2021 SwiftCSV. All rights reserved. // import XCTest @testable import SwiftCSV class CSVDelimiterTests: XCTestCase { func testRawValue() { XCTAssertEqual(CSVDelimiter.comma.rawValue, ",") XCTAssertEqual(CSVDelimiter.semicolon.rawValue, ";") XCTAssertEqual(CSVDelimiter.tab.rawValue, "\t") XCTAssertEqual(CSVDelimiter.character("x").rawValue, "x") } func testLiteralInitializer() { XCTAssertEqual(CSVDelimiter.comma, ",") XCTAssertEqual(CSVDelimiter.semicolon, ";") XCTAssertEqual(CSVDelimiter.tab, "\t") XCTAssertEqual(CSVDelimiter.character("x"), "x") } } ================================================ FILE: SwiftCSVTests/EnumeratedCSVViewTests.swift ================================================ // // EnumeratedViewTests.swift // SwiftCSV // // Created by Christian Tietze on 2016-10-25. // Copyright © 2016 Naoto Kaneko. All rights reserved. // import XCTest @testable import SwiftCSV class EnumeratedViewTests: XCTestCase { let string = "id,name,age\n1,Alice,18\n2,Bob,19\n3,Charlie,20" var csv: CSV! override func setUpWithError() throws { csv = try CSV(string: string, delimiter: ",", loadColumns: true) } override func tearDownWithError() throws { csv = nil } func testRows() { let expected = [ ["1", "Alice", "18"], ["2", "Bob", "19"], ["3", "Charlie", "20"] ] XCTAssertEqual(csv.rows, expected) } func testRows_WithLimit() throws { csv = try CSV(string: string, delimiter: ",", rowLimit: 2) let expected = [ ["1", "Alice", "18"], ["2", "Bob", "19"] ] XCTAssertEqual(csv.rows, expected) } func testColumns() { let expected = [ Enumerated.Column(header: "id", rows: ["1", "2", "3"]), Enumerated.Column(header: "name", rows: ["Alice", "Bob", "Charlie"]), Enumerated.Column(header: "age", rows: ["18", "19", "20"]) ] XCTAssertEqual(csv.columns, expected) } func testColumns_WithLimit() throws { csv = try CSV(string: string, delimiter: ",", rowLimit: 2) let expected = [ Enumerated.Column(header: "id", rows: ["1", "2"]), Enumerated.Column(header: "name", rows: ["Alice", "Bob"]), Enumerated.Column(header: "age", rows: ["18", "19"]) ] XCTAssertEqual(csv.columns, expected) } func testFillsIncompleteRows() throws { csv = try CSV(string: "id,name,age\n1,Alice,18\n2\n3,Charlie", delimiter: ",", loadColumns: true) let expectedRows = [ ["1", "Alice", "18"], ["2", "", ""], ["3", "Charlie", ""] ] XCTAssertEqual(csv.rows, expectedRows) let expectedColumns = [ Enumerated.Column(header: "id", rows: ["1", "2", "3"]), Enumerated.Column(header: "name", rows: ["Alice", "", "Charlie"]), Enumerated.Column(header: "age", rows: ["18", "", ""]) ] XCTAssertEqual(csv.columns, expectedColumns) } func testSerialization() throws { // Comma-separated values. XCTAssertEqual(csv.serialized, "id,name,age\n1,Alice,18\n2,Bob,19\n3,Charlie,20") // Comma-separated values with double quotes and embedded delimiters in cells. csv = try CSV(string: "id,\"the, name\",age\n1,\"Alice, In, Wonderland\",18\n2,Bob,19\n3,Charlie,20") XCTAssertEqual(csv.serialized, "id,\"the, name\",age\n1,\"Alice, In, Wonderland\",18\n2,Bob,19\n3,Charlie,20") // Tab-separated values with implicit delimiter (delimiter guessing). csv = try CSV(string: "id\tname\tage\n1\tAlice\t18\n2\tBob\t19\n3\tCharlie\t20") XCTAssertEqual(csv.serialized, "id\tname\tage\n1\tAlice\t18\n2\tBob\t19\n3\tCharlie\t20") // Tab-separated values with double quotes and embedded delimiters in cells. csv = try CSV(string: "id\t\"the\t name\"\tage\n1\t\"Alice\t In\t Wonderland\"\t18\n2\tBob\t19\n3\tCharlie\t20") XCTAssertEqual(csv.serialized, "id\t\"the\t name\"\tage\n1\t\"Alice\t In\t Wonderland\"\t18\n2\tBob\t19\n3\tCharlie\t20") // Tab-separated values with explicit alternate delimiter (tab) and embedded default delimiters (commas) in cells. csv = try CSV(string: "id\tthe, name,age\n1\tAlice, In, Wonderland\t18\n2\tBob\t19\n3\tCharlie\t20", delimiter: .tab) XCTAssertEqual(csv.serialized, "id\tthe, name,age\n1\tAlice, In, Wonderland\t18\n2\tBob\t19\n3\tCharlie\t20") } } ================================================ FILE: SwiftCSVTests/NamedCSVViewTests.swift ================================================ // // NamedViewTests.swift // CSVTests // // Created by naoty on 2014/06/09. // Copyright (c) 2014年 Naoto Kaneko. All rights reserved. // import XCTest @testable import SwiftCSV class NamedViewTests: XCTestCase { let string = "id,name,age\n1,Alice,18\n2,Bob,19\n3,Charlie,20" var csv: CSV! override func setUpWithError() throws { csv = try CSV(string: string) } override func tearDownWithError() throws { csv = nil } func testHeader() { XCTAssertEqual(csv.header, ["id", "name", "age"]) } func testRows() { let expected = [ ["id": "1", "name": "Alice", "age": "18"], ["id": "2", "name": "Bob", "age": "19"], ["id": "3", "name": "Charlie", "age": "20"] ] XCTAssertEqual(csv.rows, expected) } func testRows_WithLimit() throws { csv = try CSV(string: string, delimiter: ",", rowLimit: 2) let expected = [ ["id": "1", "name": "Alice", "age": "18"], ["id": "2", "name": "Bob", "age": "19"], ] XCTAssertEqual(csv.rows, expected) } func testColumns() { let expected = [ "id": ["1", "2", "3"], "name": ["Alice", "Bob", "Charlie"], "age": ["18", "19", "20"] ] XCTAssertEqual(csv.columns, expected) } func testColumns_WithLimit() throws { csv = try CSV(string: string, delimiter: ",", rowLimit: 2) let expected = [ "id": ["1", "2"], "name": ["Alice", "Bob"], "age": ["18", "19"] ] XCTAssertEqual(csv.columns, expected) } func testFillsIncompleteRows() throws { csv = try CSV(string: "id,name,age\n1,Alice,18\n2,,19\n3,Charlie") let expectedRows = [ ["id": "1", "name": "Alice", "age": "18"], ["id": "2", "name": "", "age": "19"], ["id": "3", "name": "Charlie", "age": ""] ] XCTAssertEqual(csv.rows, expectedRows) let expectedColumns = [ "id": ["1", "2", "3"], "name": ["Alice", "", "Charlie"], "age": ["18", "19", ""] ] XCTAssertEqual(csv.columns, expectedColumns) } func testSerialization() { XCTAssertEqual(csv.serialized, "id,name,age\n1,Alice,18\n2,Bob,19\n3,Charlie,20") } func testSerializationWithDoubleQuotes() throws { csv = try CSV(string: "id,\"the, name\",age\n1,\"Alice, In, Wonderland\",18\n2,Bob,19\n3,Charlie,20") XCTAssertEqual(csv.serialized, "id,\"the, name\",age\n1,\"Alice, In, Wonderland\",18\n2,Bob,19\n3,Charlie,20") } func testEnumerate() throws { let expected = [ ["id": "1", "name": "Alice", "age": "18"], ["id": "2", "name": "Bob", "age": "19"], ["id": "3", "name": "Charlie", "age": "20"] ] var index = 0 try csv.enumerateAsDict { row in XCTAssertEqual(row, expected[index]) index += 1 } } func testIgnoreColumns() throws { csv = try CSV(string: "id,name,age\n1,Alice,18\n2,Bob,19\n3,Charlie,20", delimiter: ",", loadColumns: false) XCTAssertNil(csv.columns) let expected = [ ["id": "1", "name": "Alice", "age": "18"], ["id": "2", "name": "Bob", "age": "19"], ["id": "3", "name": "Charlie", "age": "20"] ] for (index, row) in csv.rows.enumerated() { XCTAssertEqual(expected[index], row) } } func testInit_ParseCommaSeparatedFileWithQuotesAndWhitespaces() throws { let tab = "\t" let paragraphSeparator = "\u{2029}" let ideographicSpace = "\u{3000}" let failingCsv = """ "a" \(tab) , \(paragraphSeparator) "b" "A" \(ideographicSpace) , \(tab) "B" """ let csv = try CSV(string: failingCsv, delimiter: .comma) XCTAssertEqual(csv.rows, [["b": "B", "a": "A"]]) XCTAssertThrowsError(try CSV(string: failingCsv), "Delimiter guessing should fail here.") } } ================================================ FILE: SwiftCSVTests/NewlineTests.swift ================================================ // // NewlineTests.swift // SwiftCSV // // Created by Christian Tietze on 05/12/16. // Copyright © 2016 Naoto Kaneko. All rights reserved. // import XCTest @testable import SwiftCSV class NewlineTests: XCTestCase { func testInit_withCR() throws { let csv = try CSV(string: "id,name,age\r1,Alice,18\r2,Bob,19\r3,Charlie,20") XCTAssertEqual(csv.header, ["id", "name", "age"]) let expectedRows = [ ["id": "1", "name": "Alice", "age": "18"], ["id": "2", "name": "Bob", "age": "19"], ["id": "3", "name": "Charlie", "age": "20"] ] for (index, row) in csv.rows.enumerated() { XCTAssertEqual(expectedRows[index], row) } } func testInit_withLF() throws { let csv = try CSV(string: "id,name,age\n1,Alice,18\n2,Bob,19\n3,Charlie,20") XCTAssertEqual(csv.header, ["id", "name", "age"]) let expectedRows = [ ["id": "1", "name": "Alice", "age": "18"], ["id": "2", "name": "Bob", "age": "19"], ["id": "3", "name": "Charlie", "age": "20"] ] for (index, row) in csv.rows.enumerated() { XCTAssertEqual(expectedRows[index], row) } } func testInit_withCRLF() throws { let csv = try CSV(string: "id,name,age\r\n1,Alice,18\r\n2,Bob,19\r\n3,Charlie,20") XCTAssertEqual(csv.header, ["id", "name", "age"]) let expectedRows = [ ["id": "1", "name": "Alice", "age": "18"], ["id": "2", "name": "Bob", "age": "19"], ["id": "3", "name": "Charlie", "age": "20"] ] for (index, row) in csv.rows.enumerated() { XCTAssertEqual(expectedRows[index], row) } } func testInit_whenThereIsExtraCarriageReturnAtTheEnd() throws { let csv = try CSV(string: "id,name,age\n1,Alice,18\n2,Bob,19\n3,Charlie\r\n") let expected = [ ["id": "1", "name": "Alice", "age": "18"], ["id": "2", "name": "Bob", "age": "19"], ["id": "3", "name": "Charlie", "age": ""] ] for (index, row) in csv.rows.enumerated() { XCTAssertEqual(expected[index], row) } } } ================================================ FILE: SwiftCSVTests/ParserTests.swift ================================================ // // ParserTests.swift // SwiftCSV // // Created by Christian Tietze on 22.11.21. // Copyright © 2021 Naoto Kaneko. All rights reserved. // import XCTest @testable import SwiftCSV class ParserTests: XCTestCase { func testParseArray_RowLimitAndOffset() throws { let string = "id,name\n1,foo\n2,bar\n3,baz" XCTAssertEqual(try Parser.array(text: string, delimiter: ",", startAt: 1, rowLimit: nil), [["1","foo"], ["2","bar"], ["3","baz"]]) XCTAssertEqual(try Parser.array(text: string, delimiter: ",", startAt: 2, rowLimit: nil), [["2","bar"], ["3","baz"]]) XCTAssertEqual(try Parser.array(text: string, delimiter: ",", startAt: 3, rowLimit: nil), [["3","baz"]]) XCTAssertEqual(try Parser.array(text: string, delimiter: ",", startAt: 4, rowLimit: nil), []) XCTAssertEqual(try Parser.array(text: string, delimiter: ",", startAt: 0, rowLimit: nil), [["id","name"], ["1","foo"], ["2","bar"], ["3","baz"]]) XCTAssertEqual(try Parser.array(text: string, delimiter: ",", startAt: 0, rowLimit: -1), [["id","name"], ["1","foo"], ["2","bar"], ["3","baz"]]) XCTAssertEqual(try Parser.array(text: string, delimiter: ",", startAt: 0, rowLimit: 0), []) XCTAssertEqual(try Parser.array(text: string, delimiter: ",", startAt: 0, rowLimit: 1), [["id","name"]]) XCTAssertEqual(try Parser.array(text: string, delimiter: ",", startAt: 0, rowLimit: 2), [["id","name"], ["1","foo"]]) XCTAssertEqual(try Parser.array(text: string, delimiter: ",", startAt: 0, rowLimit: 3), [["id","name"], ["1","foo"], ["2","bar"]]) XCTAssertEqual(try Parser.array(text: string, delimiter: ",", startAt: 0, rowLimit: 4), [["id","name"], ["1","foo"], ["2","bar"], ["3","baz"]]) XCTAssertEqual(try Parser.array(text: string, delimiter: ",", startAt: 0, rowLimit: 5), [["id","name"], ["1","foo"], ["2","bar"], ["3","baz"]]) XCTAssertEqual(try Parser.array(text: string, delimiter: ",", startAt: 0, rowLimit: 999), [["id","name"], ["1","foo"], ["2","bar"], ["3","baz"]]) XCTAssertEqual(try Parser.array(text: string, delimiter: ",", startAt: 1, rowLimit: 1), [["1","foo"]]) XCTAssertEqual(try Parser.array(text: string, delimiter: ",", startAt: 1, rowLimit: 2), [["1","foo"], ["2","bar"]]) XCTAssertEqual(try Parser.array(text: string, delimiter: ",", startAt: 2, rowLimit: 1), [["2","bar"]]) XCTAssertEqual(try Parser.array(text: string, delimiter: ",", startAt: 2, rowLimit: 2), [["2","bar"], ["3","baz"]]) XCTAssertEqual(try Parser.array(text: string, delimiter: ",", startAt: 5, rowLimit: 1), []) } } ================================================ FILE: SwiftCSVTests/PerformanceTest.swift ================================================ // // PerformanceTest.swift // SwiftCSV // // Created by 杉本裕樹 on 2016/04/23. // Copyright © 2016年 Naoto Kaneko. All rights reserved. // import XCTest @testable import SwiftCSV class PerformanceTest: XCTestCase { var csv: CSV! override func setUpWithError() throws { let testFilePath = "TestData/large" let testFileExtension = "csv" guard let csvURL = ResourceHelper.url(forResource: testFilePath, withExtension: testFileExtension) else { XCTAssertNotNil(nil, "Could not get URL for \(testFilePath).\(testFileExtension) from Test Bundle") return } csv = try CSV(url: csvURL) } func testParsePerformance() { measure { _ = self.csv.rows } } } ================================================ FILE: SwiftCSVTests/QuotedTests.swift ================================================ // // QuotedTests.swift // SwiftCSV // // Created by Will Richardson on 7/04/16. // Copyright © 2016 Naoto Kaneko. All rights reserved. // import XCTest import SwiftCSV class QuotedTests: XCTestCase { var csv: CSV! override func setUpWithError() throws { csv = try CSV(string: "id,\"name, person\",age\n\"5\",\"Smith, John\",67\n8,Joe Bloggs,\"8\"") } func testQuotedHeader() { XCTAssertEqual(csv.header, ["id", "name, person", "age"]) } func testQuotedContent() { let cols = csv.rows XCTAssertEqual(cols[0], [ "id": "5", "name, person": "Smith, John", "age": "67" ]) XCTAssertEqual(cols[1], [ "id": "8", "name, person": "Joe Bloggs", "age": "8" ]) } func testEmbeddedQuotes() throws { let testFilePath = "TestData/wonderland" let testFileExtension = "csv" guard let csvURL = ResourceHelper.url(forResource: testFilePath, withExtension: testFileExtension) else { XCTAssertNotNil(nil, "Could not get URL for \(testFilePath).\(testFileExtension) from Test Bundle") return } csv = try CSV(url: csvURL) /* The test file: Character,Quote White Rabbit,"""Where shall I begin, please your Majesty?"" he asked." King,"""Begin at the beginning,"" the King said gravely, ""and go on till you come to the end: then stop.""" March Hare,"""Do you mean that you think you can find out the answer to it?"" said the March Hare." Notice there are no commas (delimiters) in the 3rd line. For more information, see https://www.rfc-editor.org/rfc/rfc4180.html */ let expected = [ [ "Character" : "White Rabbit" , "Quote" : #""Where shall I begin, please your Majesty?" he asked."# ], [ "Character" : "King" , "Quote" : #""Begin at the beginning," the King said gravely, "and go on till you come to the end: then stop.""# ], [ "Character" : "March Hare" , "Quote" : #""Do you mean that you think you can find out the answer to it?" said the March Hare."# ] ] for (index, row) in csv.rows.enumerated() { XCTAssertEqual(expected[index], row) } let serialized = csv.serialized let read = try String(contentsOf: csvURL, encoding: .utf8) XCTAssertEqual(serialized, read) } } ================================================ FILE: SwiftCSVTests/ResourceHelper.swift ================================================ import Foundation // Find url of resource. // This is a workaround for Xcode, when testing from the Xcode project (not the SPM package) bundle.module is not available... struct ResourceHelper { static func url(forResource name: String, withExtension type: String) -> URL? { #if SWIFT_PACKAGE return Bundle.module.url(forResource: name, withExtension: type) #else // Xcode project let bundle = Bundle(for: NamedViewTests.self) // In Xcode, folders are stripped from the resources folder. var finalName = name var slashCharSet = CharacterSet() slashCharSet.insert("/") let parts = name.components(separatedBy: slashCharSet) if parts.count > 1 { finalName = parts.last! } return bundle.url(forResource: finalName, withExtension: type) #endif } } ================================================ FILE: SwiftCSVTests/TSVTests.swift ================================================ // // TSVTests.swift // SwiftCSV // // Created by naoty on 2014/06/15. // Copyright (c) 2014年 Naoto Kaneko. All rights reserved. // import XCTest import Foundation @testable import SwiftCSV class TSVTests: XCTestCase { var tsv: CSV! override func setUpWithError() throws { tsv = try CSV(string: "id\tname\tage\n1\tAlice\t18\n2\tBob\t19\n3\tCharlie\t20", delimiter: "\t") } func testInit_makesHeader() { XCTAssertEqual(tsv.header, ["id", "name", "age"]) } func testInit_makesRows() { let expected = [ ["id": "1", "name": "Alice", "age": "18"], ["id": "2", "name": "Bob", "age": "19"], ["id": "3", "name": "Charlie", "age": "20"] ] for (index, row) in tsv.rows.enumerated() { XCTAssertEqual(expected[index], row) } } func testInit_makesColumns() throws { let expected = [ "id": ["1", "2", "3"], "name": ["Alice", "Bob", "Charlie"], "age": ["18", "19", "20"] ] XCTAssertEqual( Set(try XCTUnwrap(tsv.columns).keys), Set(expected.keys)) for (key, value) in try XCTUnwrap(tsv.columns) { XCTAssertEqual(expected[key] ?? [], value) } } } ================================================ FILE: SwiftCSVTests/TestData/empty_fields.csv ================================================ id,name,age 1,John,23 2,James,32 3,, 6 ,Tom ================================================ FILE: SwiftCSVTests/TestData/large.csv ================================================ id,name,age,job 1,name1,20,job1 2,name2,20,job2 3,name3,20,job3 4,name4,20,job4 5,name5,20,job5 6,name6,20,job6 7,name7,20,job7 8,name8,20,job8 9,name9,20,job9 10,name10,20,job10 11,name11,20,job11 12,name12,20,job12 13,name13,20,job13 14,name14,20,job14 15,name15,20,job15 16,name16,20,job16 17,name17,20,job17 18,name18,20,job18 19,name19,20,job19 20,name20,20,job20 21,name21,20,job21 22,name22,20,job22 23,name23,20,job23 24,name24,20,job24 25,name25,20,job25 26,name26,20,job26 27,name27,20,job27 28,name28,20,job28 29,name29,20,job29 30,name30,20,job30 31,name31,20,job31 32,name32,20,job32 33,name33,20,job33 34,name34,20,job34 35,name35,20,job35 36,name36,20,job36 37,name37,20,job37 38,name38,20,job38 39,name39,20,job39 40,name40,20,job40 41,name41,20,job41 42,name42,20,job42 43,name43,20,job43 44,name44,20,job44 45,name45,20,job45 46,name46,20,job46 47,name47,20,job47 48,name48,20,job48 49,name49,20,job49 50,name50,20,job50 51,name51,20,job51 52,name52,20,job52 53,name53,20,job53 54,name54,20,job54 55,name55,20,job55 56,name56,20,job56 57,name57,20,job57 58,name58,20,job58 59,name59,20,job59 60,name60,20,job60 61,name61,20,job61 62,name62,20,job62 63,name63,20,job63 64,name64,20,job64 65,name65,20,job65 66,name66,20,job66 67,name67,20,job67 68,name68,20,job68 69,name69,20,job69 70,name70,20,job70 71,name71,20,job71 72,name72,20,job72 73,name73,20,job73 74,name74,20,job74 75,name75,20,job75 76,name76,20,job76 77,name77,20,job77 78,name78,20,job78 79,name79,20,job79 80,name80,20,job80 81,name81,20,job81 82,name82,20,job82 83,name83,20,job83 84,name84,20,job84 85,name85,20,job85 86,name86,20,job86 87,name87,20,job87 88,name88,20,job88 89,name89,20,job89 90,name90,20,job90 91,name91,20,job91 92,name92,20,job92 93,name93,20,job93 94,name94,20,job94 95,name95,20,job95 96,name96,20,job96 97,name97,20,job97 98,name98,20,job98 99,name99,20,job99 100,name100,20,job100 101,name101,20,job101 102,name102,20,job102 103,name103,20,job103 104,name104,20,job104 105,name105,20,job105 106,name106,20,job106 107,name107,20,job107 108,name108,20,job108 109,name109,20,job109 110,name110,20,job110 111,name111,20,job111 112,name112,20,job112 113,name113,20,job113 114,name114,20,job114 115,name115,20,job115 116,name116,20,job116 117,name117,20,job117 118,name118,20,job118 119,name119,20,job119 120,name120,20,job120 121,name121,20,job121 122,name122,20,job122 123,name123,20,job123 124,name124,20,job124 125,name125,20,job125 126,name126,20,job126 127,name127,20,job127 128,name128,20,job128 129,name129,20,job129 130,name130,20,job130 131,name131,20,job131 132,name132,20,job132 133,name133,20,job133 134,name134,20,job134 135,name135,20,job135 136,name136,20,job136 137,name137,20,job137 138,name138,20,job138 139,name139,20,job139 140,name140,20,job140 141,name141,20,job141 142,name142,20,job142 143,name143,20,job143 144,name144,20,job144 145,name145,20,job145 146,name146,20,job146 147,name147,20,job147 148,name148,20,job148 149,name149,20,job149 150,name150,20,job150 151,name151,20,job151 152,name152,20,job152 153,name153,20,job153 154,name154,20,job154 155,name155,20,job155 156,name156,20,job156 157,name157,20,job157 158,name158,20,job158 159,name159,20,job159 160,name160,20,job160 161,name161,20,job161 162,name162,20,job162 163,name163,20,job163 164,name164,20,job164 165,name165,20,job165 166,name166,20,job166 167,name167,20,job167 168,name168,20,job168 169,name169,20,job169 170,name170,20,job170 171,name171,20,job171 172,name172,20,job172 173,name173,20,job173 174,name174,20,job174 175,name175,20,job175 176,name176,20,job176 177,name177,20,job177 178,name178,20,job178 179,name179,20,job179 180,name180,20,job180 181,name181,20,job181 182,name182,20,job182 183,name183,20,job183 184,name184,20,job184 185,name185,20,job185 186,name186,20,job186 187,name187,20,job187 188,name188,20,job188 189,name189,20,job189 190,name190,20,job190 191,name191,20,job191 192,name192,20,job192 193,name193,20,job193 194,name194,20,job194 195,name195,20,job195 196,name196,20,job196 197,name197,20,job197 198,name198,20,job198 199,name199,20,job199 200,name200,20,job200 201,name201,20,job201 202,name202,20,job202 203,name203,20,job203 204,name204,20,job204 205,name205,20,job205 206,name206,20,job206 207,name207,20,job207 208,name208,20,job208 209,name209,20,job209 210,name210,20,job210 211,name211,20,job211 212,name212,20,job212 213,name213,20,job213 214,name214,20,job214 215,name215,20,job215 216,name216,20,job216 217,name217,20,job217 218,name218,20,job218 219,name219,20,job219 220,name220,20,job220 221,name221,20,job221 222,name222,20,job222 223,name223,20,job223 224,name224,20,job224 225,name225,20,job225 226,name226,20,job226 227,name227,20,job227 228,name228,20,job228 229,name229,20,job229 230,name230,20,job230 231,name231,20,job231 232,name232,20,job232 233,name233,20,job233 234,name234,20,job234 235,name235,20,job235 236,name236,20,job236 237,name237,20,job237 238,name238,20,job238 239,name239,20,job239 240,name240,20,job240 241,name241,20,job241 242,name242,20,job242 243,name243,20,job243 244,name244,20,job244 245,name245,20,job245 246,name246,20,job246 247,name247,20,job247 248,name248,20,job248 249,name249,20,job249 250,name250,20,job250 251,name251,20,job251 252,name252,20,job252 253,name253,20,job253 254,name254,20,job254 255,name255,20,job255 256,name256,20,job256 257,name257,20,job257 258,name258,20,job258 259,name259,20,job259 260,name260,20,job260 261,name261,20,job261 262,name262,20,job262 263,name263,20,job263 264,name264,20,job264 265,name265,20,job265 266,name266,20,job266 267,name267,20,job267 268,name268,20,job268 269,name269,20,job269 270,name270,20,job270 271,name271,20,job271 272,name272,20,job272 273,name273,20,job273 274,name274,20,job274 275,name275,20,job275 276,name276,20,job276 277,name277,20,job277 278,name278,20,job278 279,name279,20,job279 280,name280,20,job280 281,name281,20,job281 282,name282,20,job282 283,name283,20,job283 284,name284,20,job284 285,name285,20,job285 286,name286,20,job286 287,name287,20,job287 288,name288,20,job288 289,name289,20,job289 290,name290,20,job290 291,name291,20,job291 292,name292,20,job292 293,name293,20,job293 294,name294,20,job294 295,name295,20,job295 296,name296,20,job296 297,name297,20,job297 298,name298,20,job298 299,name299,20,job299 300,name300,20,job300 301,name301,20,job301 302,name302,20,job302 303,name303,20,job303 304,name304,20,job304 305,name305,20,job305 306,name306,20,job306 307,name307,20,job307 308,name308,20,job308 309,name309,20,job309 310,name310,20,job310 311,name311,20,job311 312,name312,20,job312 313,name313,20,job313 314,name314,20,job314 315,name315,20,job315 316,name316,20,job316 317,name317,20,job317 318,name318,20,job318 319,name319,20,job319 320,name320,20,job320 321,name321,20,job321 322,name322,20,job322 323,name323,20,job323 324,name324,20,job324 325,name325,20,job325 326,name326,20,job326 327,name327,20,job327 328,name328,20,job328 329,name329,20,job329 330,name330,20,job330 331,name331,20,job331 332,name332,20,job332 333,name333,20,job333 334,name334,20,job334 335,name335,20,job335 336,name336,20,job336 337,name337,20,job337 338,name338,20,job338 339,name339,20,job339 340,name340,20,job340 341,name341,20,job341 342,name342,20,job342 343,name343,20,job343 344,name344,20,job344 345,name345,20,job345 346,name346,20,job346 347,name347,20,job347 348,name348,20,job348 349,name349,20,job349 350,name350,20,job350 351,name351,20,job351 352,name352,20,job352 353,name353,20,job353 354,name354,20,job354 355,name355,20,job355 356,name356,20,job356 357,name357,20,job357 358,name358,20,job358 359,name359,20,job359 360,name360,20,job360 361,name361,20,job361 362,name362,20,job362 363,name363,20,job363 364,name364,20,job364 365,name365,20,job365 366,name366,20,job366 367,name367,20,job367 368,name368,20,job368 369,name369,20,job369 370,name370,20,job370 371,name371,20,job371 372,name372,20,job372 373,name373,20,job373 374,name374,20,job374 375,name375,20,job375 376,name376,20,job376 377,name377,20,job377 378,name378,20,job378 379,name379,20,job379 380,name380,20,job380 381,name381,20,job381 382,name382,20,job382 383,name383,20,job383 384,name384,20,job384 385,name385,20,job385 386,name386,20,job386 387,name387,20,job387 388,name388,20,job388 389,name389,20,job389 390,name390,20,job390 391,name391,20,job391 392,name392,20,job392 393,name393,20,job393 394,name394,20,job394 395,name395,20,job395 396,name396,20,job396 397,name397,20,job397 398,name398,20,job398 399,name399,20,job399 400,name400,20,job400 401,name401,20,job401 402,name402,20,job402 403,name403,20,job403 404,name404,20,job404 405,name405,20,job405 406,name406,20,job406 407,name407,20,job407 408,name408,20,job408 409,name409,20,job409 410,name410,20,job410 411,name411,20,job411 412,name412,20,job412 413,name413,20,job413 414,name414,20,job414 415,name415,20,job415 416,name416,20,job416 417,name417,20,job417 418,name418,20,job418 419,name419,20,job419 420,name420,20,job420 421,name421,20,job421 422,name422,20,job422 423,name423,20,job423 424,name424,20,job424 425,name425,20,job425 426,name426,20,job426 427,name427,20,job427 428,name428,20,job428 429,name429,20,job429 430,name430,20,job430 431,name431,20,job431 432,name432,20,job432 433,name433,20,job433 434,name434,20,job434 435,name435,20,job435 436,name436,20,job436 437,name437,20,job437 438,name438,20,job438 439,name439,20,job439 440,name440,20,job440 441,name441,20,job441 442,name442,20,job442 443,name443,20,job443 444,name444,20,job444 445,name445,20,job445 446,name446,20,job446 447,name447,20,job447 448,name448,20,job448 449,name449,20,job449 450,name450,20,job450 451,name451,20,job451 452,name452,20,job452 453,name453,20,job453 454,name454,20,job454 455,name455,20,job455 456,name456,20,job456 457,name457,20,job457 458,name458,20,job458 459,name459,20,job459 460,name460,20,job460 461,name461,20,job461 462,name462,20,job462 463,name463,20,job463 464,name464,20,job464 465,name465,20,job465 466,name466,20,job466 467,name467,20,job467 468,name468,20,job468 469,name469,20,job469 470,name470,20,job470 471,name471,20,job471 472,name472,20,job472 473,name473,20,job473 474,name474,20,job474 475,name475,20,job475 476,name476,20,job476 477,name477,20,job477 478,name478,20,job478 479,name479,20,job479 480,name480,20,job480 481,name481,20,job481 482,name482,20,job482 483,name483,20,job483 484,name484,20,job484 485,name485,20,job485 486,name486,20,job486 487,name487,20,job487 488,name488,20,job488 489,name489,20,job489 490,name490,20,job490 491,name491,20,job491 492,name492,20,job492 493,name493,20,job493 494,name494,20,job494 495,name495,20,job495 496,name496,20,job496 497,name497,20,job497 498,name498,20,job498 499,name499,20,job499 500,name500,20,job500 501,name501,20,job501 502,name502,20,job502 503,name503,20,job503 504,name504,20,job504 505,name505,20,job505 506,name506,20,job506 507,name507,20,job507 508,name508,20,job508 509,name509,20,job509 510,name510,20,job510 511,name511,20,job511 512,name512,20,job512 513,name513,20,job513 514,name514,20,job514 515,name515,20,job515 516,name516,20,job516 517,name517,20,job517 518,name518,20,job518 519,name519,20,job519 520,name520,20,job520 521,name521,20,job521 522,name522,20,job522 523,name523,20,job523 524,name524,20,job524 525,name525,20,job525 526,name526,20,job526 527,name527,20,job527 528,name528,20,job528 529,name529,20,job529 530,name530,20,job530 531,name531,20,job531 532,name532,20,job532 533,name533,20,job533 534,name534,20,job534 535,name535,20,job535 536,name536,20,job536 537,name537,20,job537 538,name538,20,job538 539,name539,20,job539 540,name540,20,job540 541,name541,20,job541 542,name542,20,job542 543,name543,20,job543 544,name544,20,job544 545,name545,20,job545 546,name546,20,job546 547,name547,20,job547 548,name548,20,job548 549,name549,20,job549 550,name550,20,job550 551,name551,20,job551 552,name552,20,job552 553,name553,20,job553 554,name554,20,job554 555,name555,20,job555 556,name556,20,job556 557,name557,20,job557 558,name558,20,job558 559,name559,20,job559 560,name560,20,job560 561,name561,20,job561 562,name562,20,job562 563,name563,20,job563 564,name564,20,job564 565,name565,20,job565 566,name566,20,job566 567,name567,20,job567 568,name568,20,job568 569,name569,20,job569 570,name570,20,job570 571,name571,20,job571 572,name572,20,job572 573,name573,20,job573 574,name574,20,job574 575,name575,20,job575 576,name576,20,job576 577,name577,20,job577 578,name578,20,job578 579,name579,20,job579 580,name580,20,job580 581,name581,20,job581 582,name582,20,job582 583,name583,20,job583 584,name584,20,job584 585,name585,20,job585 586,name586,20,job586 587,name587,20,job587 588,name588,20,job588 589,name589,20,job589 590,name590,20,job590 591,name591,20,job591 592,name592,20,job592 593,name593,20,job593 594,name594,20,job594 595,name595,20,job595 596,name596,20,job596 597,name597,20,job597 598,name598,20,job598 599,name599,20,job599 600,name600,20,job600 601,name601,20,job601 602,name602,20,job602 603,name603,20,job603 604,name604,20,job604 605,name605,20,job605 606,name606,20,job606 607,name607,20,job607 608,name608,20,job608 609,name609,20,job609 610,name610,20,job610 611,name611,20,job611 612,name612,20,job612 613,name613,20,job613 614,name614,20,job614 615,name615,20,job615 616,name616,20,job616 617,name617,20,job617 618,name618,20,job618 619,name619,20,job619 620,name620,20,job620 621,name621,20,job621 622,name622,20,job622 623,name623,20,job623 624,name624,20,job624 625,name625,20,job625 626,name626,20,job626 627,name627,20,job627 628,name628,20,job628 629,name629,20,job629 630,name630,20,job630 631,name631,20,job631 632,name632,20,job632 633,name633,20,job633 634,name634,20,job634 635,name635,20,job635 636,name636,20,job636 637,name637,20,job637 638,name638,20,job638 639,name639,20,job639 640,name640,20,job640 641,name641,20,job641 642,name642,20,job642 643,name643,20,job643 644,name644,20,job644 645,name645,20,job645 646,name646,20,job646 647,name647,20,job647 648,name648,20,job648 649,name649,20,job649 650,name650,20,job650 651,name651,20,job651 652,name652,20,job652 653,name653,20,job653 654,name654,20,job654 655,name655,20,job655 656,name656,20,job656 657,name657,20,job657 658,name658,20,job658 659,name659,20,job659 660,name660,20,job660 661,name661,20,job661 662,name662,20,job662 663,name663,20,job663 664,name664,20,job664 665,name665,20,job665 666,name666,20,job666 667,name667,20,job667 668,name668,20,job668 669,name669,20,job669 670,name670,20,job670 671,name671,20,job671 672,name672,20,job672 673,name673,20,job673 674,name674,20,job674 675,name675,20,job675 676,name676,20,job676 677,name677,20,job677 678,name678,20,job678 679,name679,20,job679 680,name680,20,job680 681,name681,20,job681 682,name682,20,job682 683,name683,20,job683 684,name684,20,job684 685,name685,20,job685 686,name686,20,job686 687,name687,20,job687 688,name688,20,job688 689,name689,20,job689 690,name690,20,job690 691,name691,20,job691 692,name692,20,job692 693,name693,20,job693 694,name694,20,job694 695,name695,20,job695 696,name696,20,job696 697,name697,20,job697 698,name698,20,job698 699,name699,20,job699 700,name700,20,job700 701,name701,20,job701 702,name702,20,job702 703,name703,20,job703 704,name704,20,job704 705,name705,20,job705 706,name706,20,job706 707,name707,20,job707 708,name708,20,job708 709,name709,20,job709 710,name710,20,job710 711,name711,20,job711 712,name712,20,job712 713,name713,20,job713 714,name714,20,job714 715,name715,20,job715 716,name716,20,job716 717,name717,20,job717 718,name718,20,job718 719,name719,20,job719 720,name720,20,job720 721,name721,20,job721 722,name722,20,job722 723,name723,20,job723 724,name724,20,job724 725,name725,20,job725 726,name726,20,job726 727,name727,20,job727 728,name728,20,job728 729,name729,20,job729 730,name730,20,job730 731,name731,20,job731 732,name732,20,job732 733,name733,20,job733 734,name734,20,job734 735,name735,20,job735 736,name736,20,job736 737,name737,20,job737 738,name738,20,job738 739,name739,20,job739 740,name740,20,job740 741,name741,20,job741 742,name742,20,job742 743,name743,20,job743 744,name744,20,job744 745,name745,20,job745 746,name746,20,job746 747,name747,20,job747 748,name748,20,job748 749,name749,20,job749 750,name750,20,job750 751,name751,20,job751 752,name752,20,job752 753,name753,20,job753 754,name754,20,job754 755,name755,20,job755 756,name756,20,job756 757,name757,20,job757 758,name758,20,job758 759,name759,20,job759 760,name760,20,job760 761,name761,20,job761 762,name762,20,job762 763,name763,20,job763 764,name764,20,job764 765,name765,20,job765 766,name766,20,job766 767,name767,20,job767 768,name768,20,job768 769,name769,20,job769 770,name770,20,job770 771,name771,20,job771 772,name772,20,job772 773,name773,20,job773 774,name774,20,job774 775,name775,20,job775 776,name776,20,job776 777,name777,20,job777 778,name778,20,job778 779,name779,20,job779 780,name780,20,job780 781,name781,20,job781 782,name782,20,job782 783,name783,20,job783 784,name784,20,job784 785,name785,20,job785 786,name786,20,job786 787,name787,20,job787 788,name788,20,job788 789,name789,20,job789 790,name790,20,job790 791,name791,20,job791 792,name792,20,job792 793,name793,20,job793 794,name794,20,job794 795,name795,20,job795 796,name796,20,job796 797,name797,20,job797 798,name798,20,job798 799,name799,20,job799 800,name800,20,job800 801,name801,20,job801 802,name802,20,job802 803,name803,20,job803 804,name804,20,job804 805,name805,20,job805 806,name806,20,job806 807,name807,20,job807 808,name808,20,job808 809,name809,20,job809 810,name810,20,job810 811,name811,20,job811 812,name812,20,job812 813,name813,20,job813 814,name814,20,job814 815,name815,20,job815 816,name816,20,job816 817,name817,20,job817 818,name818,20,job818 819,name819,20,job819 820,name820,20,job820 821,name821,20,job821 822,name822,20,job822 823,name823,20,job823 824,name824,20,job824 825,name825,20,job825 826,name826,20,job826 827,name827,20,job827 828,name828,20,job828 829,name829,20,job829 830,name830,20,job830 831,name831,20,job831 832,name832,20,job832 833,name833,20,job833 834,name834,20,job834 835,name835,20,job835 836,name836,20,job836 837,name837,20,job837 838,name838,20,job838 839,name839,20,job839 840,name840,20,job840 841,name841,20,job841 842,name842,20,job842 843,name843,20,job843 844,name844,20,job844 845,name845,20,job845 846,name846,20,job846 847,name847,20,job847 848,name848,20,job848 849,name849,20,job849 850,name850,20,job850 851,name851,20,job851 852,name852,20,job852 853,name853,20,job853 854,name854,20,job854 855,name855,20,job855 856,name856,20,job856 857,name857,20,job857 858,name858,20,job858 859,name859,20,job859 860,name860,20,job860 861,name861,20,job861 862,name862,20,job862 863,name863,20,job863 864,name864,20,job864 865,name865,20,job865 866,name866,20,job866 867,name867,20,job867 868,name868,20,job868 869,name869,20,job869 870,name870,20,job870 871,name871,20,job871 872,name872,20,job872 873,name873,20,job873 874,name874,20,job874 875,name875,20,job875 876,name876,20,job876 877,name877,20,job877 878,name878,20,job878 879,name879,20,job879 880,name880,20,job880 881,name881,20,job881 882,name882,20,job882 883,name883,20,job883 884,name884,20,job884 885,name885,20,job885 886,name886,20,job886 887,name887,20,job887 888,name888,20,job888 889,name889,20,job889 890,name890,20,job890 891,name891,20,job891 892,name892,20,job892 893,name893,20,job893 894,name894,20,job894 895,name895,20,job895 896,name896,20,job896 897,name897,20,job897 898,name898,20,job898 899,name899,20,job899 900,name900,20,job900 901,name901,20,job901 902,name902,20,job902 903,name903,20,job903 904,name904,20,job904 905,name905,20,job905 906,name906,20,job906 907,name907,20,job907 908,name908,20,job908 909,name909,20,job909 910,name910,20,job910 911,name911,20,job911 912,name912,20,job912 913,name913,20,job913 914,name914,20,job914 915,name915,20,job915 916,name916,20,job916 917,name917,20,job917 918,name918,20,job918 919,name919,20,job919 920,name920,20,job920 921,name921,20,job921 922,name922,20,job922 923,name923,20,job923 924,name924,20,job924 925,name925,20,job925 926,name926,20,job926 927,name927,20,job927 928,name928,20,job928 929,name929,20,job929 930,name930,20,job930 931,name931,20,job931 932,name932,20,job932 933,name933,20,job933 934,name934,20,job934 935,name935,20,job935 936,name936,20,job936 937,name937,20,job937 938,name938,20,job938 939,name939,20,job939 940,name940,20,job940 941,name941,20,job941 942,name942,20,job942 943,name943,20,job943 944,name944,20,job944 945,name945,20,job945 946,name946,20,job946 947,name947,20,job947 948,name948,20,job948 949,name949,20,job949 950,name950,20,job950 951,name951,20,job951 952,name952,20,job952 953,name953,20,job953 954,name954,20,job954 955,name955,20,job955 956,name956,20,job956 957,name957,20,job957 958,name958,20,job958 959,name959,20,job959 960,name960,20,job960 961,name961,20,job961 962,name962,20,job962 963,name963,20,job963 964,name964,20,job964 965,name965,20,job965 966,name966,20,job966 967,name967,20,job967 968,name968,20,job968 969,name969,20,job969 970,name970,20,job970 971,name971,20,job971 972,name972,20,job972 973,name973,20,job973 974,name974,20,job974 975,name975,20,job975 976,name976,20,job976 977,name977,20,job977 978,name978,20,job978 979,name979,20,job979 980,name980,20,job980 981,name981,20,job981 982,name982,20,job982 983,name983,20,job983 984,name984,20,job984 985,name985,20,job985 986,name986,20,job986 987,name987,20,job987 988,name988,20,job988 989,name989,20,job989 990,name990,20,job990 991,name991,20,job991 992,name992,20,job992 993,name993,20,job993 994,name994,20,job994 995,name995,20,job995 996,name996,20,job996 997,name997,20,job997 998,name998,20,job998 999,name999,20,job999 1000,name1000,20,job1000 1001,name1001,20,job1001 1002,name1002,20,job1002 1003,name1003,20,job1003 1004,name1004,20,job1004 1005,name1005,20,job1005 1006,name1006,20,job1006 1007,name1007,20,job1007 1008,name1008,20,job1008 1009,name1009,20,job1009 1010,name1010,20,job1010 1011,name1011,20,job1011 1012,name1012,20,job1012 1013,name1013,20,job1013 1014,name1014,20,job1014 1015,name1015,20,job1015 1016,name1016,20,job1016 1017,name1017,20,job1017 1018,name1018,20,job1018 1019,name1019,20,job1019 1020,name1020,20,job1020 1021,name1021,20,job1021 1022,name1022,20,job1022 1023,name1023,20,job1023 1024,name1024,20,job1024 1025,name1025,20,job1025 1026,name1026,20,job1026 1027,name1027,20,job1027 1028,name1028,20,job1028 1029,name1029,20,job1029 1030,name1030,20,job1030 1031,name1031,20,job1031 1032,name1032,20,job1032 1033,name1033,20,job1033 1034,name1034,20,job1034 1035,name1035,20,job1035 1036,name1036,20,job1036 1037,name1037,20,job1037 1038,name1038,20,job1038 1039,name1039,20,job1039 1040,name1040,20,job1040 1041,name1041,20,job1041 1042,name1042,20,job1042 1043,name1043,20,job1043 1044,name1044,20,job1044 1045,name1045,20,job1045 1046,name1046,20,job1046 1047,name1047,20,job1047 1048,name1048,20,job1048 1049,name1049,20,job1049 1050,name1050,20,job1050 1051,name1051,20,job1051 1052,name1052,20,job1052 1053,name1053,20,job1053 1054,name1054,20,job1054 1055,name1055,20,job1055 1056,name1056,20,job1056 1057,name1057,20,job1057 1058,name1058,20,job1058 1059,name1059,20,job1059 1060,name1060,20,job1060 1061,name1061,20,job1061 1062,name1062,20,job1062 1063,name1063,20,job1063 1064,name1064,20,job1064 1065,name1065,20,job1065 1066,name1066,20,job1066 1067,name1067,20,job1067 1068,name1068,20,job1068 1069,name1069,20,job1069 1070,name1070,20,job1070 1071,name1071,20,job1071 1072,name1072,20,job1072 1073,name1073,20,job1073 1074,name1074,20,job1074 1075,name1075,20,job1075 1076,name1076,20,job1076 1077,name1077,20,job1077 1078,name1078,20,job1078 1079,name1079,20,job1079 1080,name1080,20,job1080 1081,name1081,20,job1081 1082,name1082,20,job1082 1083,name1083,20,job1083 1084,name1084,20,job1084 1085,name1085,20,job1085 1086,name1086,20,job1086 1087,name1087,20,job1087 1088,name1088,20,job1088 1089,name1089,20,job1089 1090,name1090,20,job1090 1091,name1091,20,job1091 1092,name1092,20,job1092 1093,name1093,20,job1093 1094,name1094,20,job1094 1095,name1095,20,job1095 1096,name1096,20,job1096 1097,name1097,20,job1097 1098,name1098,20,job1098 1099,name1099,20,job1099 1100,name1100,20,job1100 1101,name1101,20,job1101 1102,name1102,20,job1102 1103,name1103,20,job1103 1104,name1104,20,job1104 1105,name1105,20,job1105 1106,name1106,20,job1106 1107,name1107,20,job1107 1108,name1108,20,job1108 1109,name1109,20,job1109 1110,name1110,20,job1110 1111,name1111,20,job1111 1112,name1112,20,job1112 1113,name1113,20,job1113 1114,name1114,20,job1114 1115,name1115,20,job1115 1116,name1116,20,job1116 1117,name1117,20,job1117 1118,name1118,20,job1118 1119,name1119,20,job1119 1120,name1120,20,job1120 1121,name1121,20,job1121 1122,name1122,20,job1122 1123,name1123,20,job1123 1124,name1124,20,job1124 1125,name1125,20,job1125 1126,name1126,20,job1126 1127,name1127,20,job1127 1128,name1128,20,job1128 1129,name1129,20,job1129 1130,name1130,20,job1130 1131,name1131,20,job1131 1132,name1132,20,job1132 1133,name1133,20,job1133 1134,name1134,20,job1134 1135,name1135,20,job1135 1136,name1136,20,job1136 1137,name1137,20,job1137 1138,name1138,20,job1138 1139,name1139,20,job1139 1140,name1140,20,job1140 1141,name1141,20,job1141 1142,name1142,20,job1142 1143,name1143,20,job1143 1144,name1144,20,job1144 1145,name1145,20,job1145 1146,name1146,20,job1146 1147,name1147,20,job1147 1148,name1148,20,job1148 1149,name1149,20,job1149 1150,name1150,20,job1150 1151,name1151,20,job1151 1152,name1152,20,job1152 1153,name1153,20,job1153 1154,name1154,20,job1154 1155,name1155,20,job1155 1156,name1156,20,job1156 1157,name1157,20,job1157 1158,name1158,20,job1158 1159,name1159,20,job1159 1160,name1160,20,job1160 1161,name1161,20,job1161 1162,name1162,20,job1162 1163,name1163,20,job1163 1164,name1164,20,job1164 1165,name1165,20,job1165 1166,name1166,20,job1166 1167,name1167,20,job1167 1168,name1168,20,job1168 1169,name1169,20,job1169 1170,name1170,20,job1170 1171,name1171,20,job1171 1172,name1172,20,job1172 1173,name1173,20,job1173 1174,name1174,20,job1174 1175,name1175,20,job1175 1176,name1176,20,job1176 1177,name1177,20,job1177 1178,name1178,20,job1178 1179,name1179,20,job1179 1180,name1180,20,job1180 1181,name1181,20,job1181 1182,name1182,20,job1182 1183,name1183,20,job1183 1184,name1184,20,job1184 1185,name1185,20,job1185 1186,name1186,20,job1186 1187,name1187,20,job1187 1188,name1188,20,job1188 1189,name1189,20,job1189 1190,name1190,20,job1190 1191,name1191,20,job1191 1192,name1192,20,job1192 1193,name1193,20,job1193 1194,name1194,20,job1194 1195,name1195,20,job1195 1196,name1196,20,job1196 1197,name1197,20,job1197 1198,name1198,20,job1198 1199,name1199,20,job1199 1200,name1200,20,job1200 1201,name1201,20,job1201 1202,name1202,20,job1202 1203,name1203,20,job1203 1204,name1204,20,job1204 1205,name1205,20,job1205 1206,name1206,20,job1206 1207,name1207,20,job1207 1208,name1208,20,job1208 1209,name1209,20,job1209 1210,name1210,20,job1210 1211,name1211,20,job1211 1212,name1212,20,job1212 1213,name1213,20,job1213 1214,name1214,20,job1214 1215,name1215,20,job1215 1216,name1216,20,job1216 1217,name1217,20,job1217 1218,name1218,20,job1218 1219,name1219,20,job1219 1220,name1220,20,job1220 1221,name1221,20,job1221 1222,name1222,20,job1222 1223,name1223,20,job1223 1224,name1224,20,job1224 1225,name1225,20,job1225 1226,name1226,20,job1226 1227,name1227,20,job1227 1228,name1228,20,job1228 1229,name1229,20,job1229 1230,name1230,20,job1230 1231,name1231,20,job1231 1232,name1232,20,job1232 1233,name1233,20,job1233 1234,name1234,20,job1234 1235,name1235,20,job1235 1236,name1236,20,job1236 1237,name1237,20,job1237 1238,name1238,20,job1238 1239,name1239,20,job1239 1240,name1240,20,job1240 1241,name1241,20,job1241 1242,name1242,20,job1242 1243,name1243,20,job1243 1244,name1244,20,job1244 1245,name1245,20,job1245 1246,name1246,20,job1246 1247,name1247,20,job1247 1248,name1248,20,job1248 1249,name1249,20,job1249 1250,name1250,20,job1250 1251,name1251,20,job1251 1252,name1252,20,job1252 1253,name1253,20,job1253 1254,name1254,20,job1254 1255,name1255,20,job1255 1256,name1256,20,job1256 1257,name1257,20,job1257 1258,name1258,20,job1258 1259,name1259,20,job1259 1260,name1260,20,job1260 1261,name1261,20,job1261 1262,name1262,20,job1262 1263,name1263,20,job1263 1264,name1264,20,job1264 1265,name1265,20,job1265 1266,name1266,20,job1266 1267,name1267,20,job1267 1268,name1268,20,job1268 1269,name1269,20,job1269 1270,name1270,20,job1270 1271,name1271,20,job1271 1272,name1272,20,job1272 1273,name1273,20,job1273 1274,name1274,20,job1274 1275,name1275,20,job1275 1276,name1276,20,job1276 1277,name1277,20,job1277 1278,name1278,20,job1278 1279,name1279,20,job1279 1280,name1280,20,job1280 1281,name1281,20,job1281 1282,name1282,20,job1282 1283,name1283,20,job1283 1284,name1284,20,job1284 1285,name1285,20,job1285 1286,name1286,20,job1286 1287,name1287,20,job1287 1288,name1288,20,job1288 1289,name1289,20,job1289 1290,name1290,20,job1290 1291,name1291,20,job1291 1292,name1292,20,job1292 1293,name1293,20,job1293 1294,name1294,20,job1294 1295,name1295,20,job1295 1296,name1296,20,job1296 1297,name1297,20,job1297 1298,name1298,20,job1298 1299,name1299,20,job1299 1300,name1300,20,job1300 1301,name1301,20,job1301 1302,name1302,20,job1302 1303,name1303,20,job1303 1304,name1304,20,job1304 1305,name1305,20,job1305 1306,name1306,20,job1306 1307,name1307,20,job1307 1308,name1308,20,job1308 1309,name1309,20,job1309 1310,name1310,20,job1310 1311,name1311,20,job1311 1312,name1312,20,job1312 1313,name1313,20,job1313 1314,name1314,20,job1314 1315,name1315,20,job1315 1316,name1316,20,job1316 1317,name1317,20,job1317 1318,name1318,20,job1318 1319,name1319,20,job1319 1320,name1320,20,job1320 1321,name1321,20,job1321 1322,name1322,20,job1322 1323,name1323,20,job1323 1324,name1324,20,job1324 1325,name1325,20,job1325 1326,name1326,20,job1326 1327,name1327,20,job1327 1328,name1328,20,job1328 1329,name1329,20,job1329 1330,name1330,20,job1330 1331,name1331,20,job1331 1332,name1332,20,job1332 1333,name1333,20,job1333 1334,name1334,20,job1334 1335,name1335,20,job1335 1336,name1336,20,job1336 1337,name1337,20,job1337 1338,name1338,20,job1338 1339,name1339,20,job1339 1340,name1340,20,job1340 1341,name1341,20,job1341 1342,name1342,20,job1342 1343,name1343,20,job1343 1344,name1344,20,job1344 1345,name1345,20,job1345 1346,name1346,20,job1346 1347,name1347,20,job1347 1348,name1348,20,job1348 1349,name1349,20,job1349 1350,name1350,20,job1350 1351,name1351,20,job1351 1352,name1352,20,job1352 1353,name1353,20,job1353 1354,name1354,20,job1354 1355,name1355,20,job1355 1356,name1356,20,job1356 1357,name1357,20,job1357 1358,name1358,20,job1358 1359,name1359,20,job1359 1360,name1360,20,job1360 1361,name1361,20,job1361 1362,name1362,20,job1362 1363,name1363,20,job1363 1364,name1364,20,job1364 1365,name1365,20,job1365 1366,name1366,20,job1366 1367,name1367,20,job1367 1368,name1368,20,job1368 1369,name1369,20,job1369 1370,name1370,20,job1370 1371,name1371,20,job1371 1372,name1372,20,job1372 1373,name1373,20,job1373 1374,name1374,20,job1374 1375,name1375,20,job1375 1376,name1376,20,job1376 1377,name1377,20,job1377 1378,name1378,20,job1378 1379,name1379,20,job1379 1380,name1380,20,job1380 1381,name1381,20,job1381 1382,name1382,20,job1382 1383,name1383,20,job1383 1384,name1384,20,job1384 1385,name1385,20,job1385 1386,name1386,20,job1386 1387,name1387,20,job1387 1388,name1388,20,job1388 1389,name1389,20,job1389 1390,name1390,20,job1390 1391,name1391,20,job1391 1392,name1392,20,job1392 1393,name1393,20,job1393 1394,name1394,20,job1394 1395,name1395,20,job1395 1396,name1396,20,job1396 1397,name1397,20,job1397 1398,name1398,20,job1398 1399,name1399,20,job1399 1400,name1400,20,job1400 1401,name1401,20,job1401 1402,name1402,20,job1402 1403,name1403,20,job1403 1404,name1404,20,job1404 1405,name1405,20,job1405 1406,name1406,20,job1406 1407,name1407,20,job1407 1408,name1408,20,job1408 1409,name1409,20,job1409 1410,name1410,20,job1410 1411,name1411,20,job1411 1412,name1412,20,job1412 1413,name1413,20,job1413 1414,name1414,20,job1414 1415,name1415,20,job1415 1416,name1416,20,job1416 1417,name1417,20,job1417 1418,name1418,20,job1418 1419,name1419,20,job1419 1420,name1420,20,job1420 1421,name1421,20,job1421 1422,name1422,20,job1422 1423,name1423,20,job1423 1424,name1424,20,job1424 1425,name1425,20,job1425 1426,name1426,20,job1426 1427,name1427,20,job1427 1428,name1428,20,job1428 1429,name1429,20,job1429 1430,name1430,20,job1430 1431,name1431,20,job1431 1432,name1432,20,job1432 1433,name1433,20,job1433 1434,name1434,20,job1434 1435,name1435,20,job1435 1436,name1436,20,job1436 1437,name1437,20,job1437 1438,name1438,20,job1438 1439,name1439,20,job1439 1440,name1440,20,job1440 1441,name1441,20,job1441 1442,name1442,20,job1442 1443,name1443,20,job1443 1444,name1444,20,job1444 1445,name1445,20,job1445 1446,name1446,20,job1446 1447,name1447,20,job1447 1448,name1448,20,job1448 1449,name1449,20,job1449 1450,name1450,20,job1450 1451,name1451,20,job1451 1452,name1452,20,job1452 1453,name1453,20,job1453 1454,name1454,20,job1454 1455,name1455,20,job1455 1456,name1456,20,job1456 1457,name1457,20,job1457 1458,name1458,20,job1458 1459,name1459,20,job1459 1460,name1460,20,job1460 1461,name1461,20,job1461 1462,name1462,20,job1462 1463,name1463,20,job1463 1464,name1464,20,job1464 1465,name1465,20,job1465 1466,name1466,20,job1466 1467,name1467,20,job1467 1468,name1468,20,job1468 1469,name1469,20,job1469 1470,name1470,20,job1470 1471,name1471,20,job1471 1472,name1472,20,job1472 1473,name1473,20,job1473 1474,name1474,20,job1474 1475,name1475,20,job1475 1476,name1476,20,job1476 1477,name1477,20,job1477 1478,name1478,20,job1478 1479,name1479,20,job1479 1480,name1480,20,job1480 1481,name1481,20,job1481 1482,name1482,20,job1482 1483,name1483,20,job1483 1484,name1484,20,job1484 1485,name1485,20,job1485 1486,name1486,20,job1486 1487,name1487,20,job1487 1488,name1488,20,job1488 1489,name1489,20,job1489 1490,name1490,20,job1490 1491,name1491,20,job1491 1492,name1492,20,job1492 1493,name1493,20,job1493 1494,name1494,20,job1494 1495,name1495,20,job1495 1496,name1496,20,job1496 1497,name1497,20,job1497 1498,name1498,20,job1498 1499,name1499,20,job1499 1500,name1500,20,job1500 1501,name1501,20,job1501 1502,name1502,20,job1502 1503,name1503,20,job1503 1504,name1504,20,job1504 1505,name1505,20,job1505 1506,name1506,20,job1506 1507,name1507,20,job1507 1508,name1508,20,job1508 1509,name1509,20,job1509 1510,name1510,20,job1510 1511,name1511,20,job1511 1512,name1512,20,job1512 1513,name1513,20,job1513 1514,name1514,20,job1514 1515,name1515,20,job1515 1516,name1516,20,job1516 1517,name1517,20,job1517 1518,name1518,20,job1518 1519,name1519,20,job1519 1520,name1520,20,job1520 1521,name1521,20,job1521 1522,name1522,20,job1522 1523,name1523,20,job1523 1524,name1524,20,job1524 1525,name1525,20,job1525 1526,name1526,20,job1526 1527,name1527,20,job1527 1528,name1528,20,job1528 1529,name1529,20,job1529 1530,name1530,20,job1530 1531,name1531,20,job1531 1532,name1532,20,job1532 1533,name1533,20,job1533 1534,name1534,20,job1534 1535,name1535,20,job1535 1536,name1536,20,job1536 1537,name1537,20,job1537 1538,name1538,20,job1538 1539,name1539,20,job1539 1540,name1540,20,job1540 1541,name1541,20,job1541 1542,name1542,20,job1542 1543,name1543,20,job1543 1544,name1544,20,job1544 1545,name1545,20,job1545 1546,name1546,20,job1546 1547,name1547,20,job1547 1548,name1548,20,job1548 1549,name1549,20,job1549 1550,name1550,20,job1550 1551,name1551,20,job1551 1552,name1552,20,job1552 1553,name1553,20,job1553 1554,name1554,20,job1554 1555,name1555,20,job1555 1556,name1556,20,job1556 1557,name1557,20,job1557 1558,name1558,20,job1558 1559,name1559,20,job1559 1560,name1560,20,job1560 1561,name1561,20,job1561 1562,name1562,20,job1562 1563,name1563,20,job1563 1564,name1564,20,job1564 1565,name1565,20,job1565 1566,name1566,20,job1566 1567,name1567,20,job1567 1568,name1568,20,job1568 1569,name1569,20,job1569 1570,name1570,20,job1570 1571,name1571,20,job1571 1572,name1572,20,job1572 1573,name1573,20,job1573 1574,name1574,20,job1574 1575,name1575,20,job1575 1576,name1576,20,job1576 1577,name1577,20,job1577 1578,name1578,20,job1578 1579,name1579,20,job1579 1580,name1580,20,job1580 1581,name1581,20,job1581 1582,name1582,20,job1582 1583,name1583,20,job1583 1584,name1584,20,job1584 1585,name1585,20,job1585 1586,name1586,20,job1586 1587,name1587,20,job1587 1588,name1588,20,job1588 1589,name1589,20,job1589 1590,name1590,20,job1590 1591,name1591,20,job1591 1592,name1592,20,job1592 1593,name1593,20,job1593 1594,name1594,20,job1594 1595,name1595,20,job1595 1596,name1596,20,job1596 1597,name1597,20,job1597 1598,name1598,20,job1598 1599,name1599,20,job1599 1600,name1600,20,job1600 1601,name1601,20,job1601 1602,name1602,20,job1602 1603,name1603,20,job1603 1604,name1604,20,job1604 1605,name1605,20,job1605 1606,name1606,20,job1606 1607,name1607,20,job1607 1608,name1608,20,job1608 1609,name1609,20,job1609 1610,name1610,20,job1610 1611,name1611,20,job1611 1612,name1612,20,job1612 1613,name1613,20,job1613 1614,name1614,20,job1614 1615,name1615,20,job1615 1616,name1616,20,job1616 1617,name1617,20,job1617 1618,name1618,20,job1618 1619,name1619,20,job1619 1620,name1620,20,job1620 1621,name1621,20,job1621 1622,name1622,20,job1622 1623,name1623,20,job1623 1624,name1624,20,job1624 1625,name1625,20,job1625 1626,name1626,20,job1626 1627,name1627,20,job1627 1628,name1628,20,job1628 1629,name1629,20,job1629 1630,name1630,20,job1630 1631,name1631,20,job1631 1632,name1632,20,job1632 1633,name1633,20,job1633 1634,name1634,20,job1634 1635,name1635,20,job1635 1636,name1636,20,job1636 1637,name1637,20,job1637 1638,name1638,20,job1638 1639,name1639,20,job1639 1640,name1640,20,job1640 1641,name1641,20,job1641 1642,name1642,20,job1642 1643,name1643,20,job1643 1644,name1644,20,job1644 1645,name1645,20,job1645 1646,name1646,20,job1646 1647,name1647,20,job1647 1648,name1648,20,job1648 1649,name1649,20,job1649 1650,name1650,20,job1650 1651,name1651,20,job1651 1652,name1652,20,job1652 1653,name1653,20,job1653 1654,name1654,20,job1654 1655,name1655,20,job1655 1656,name1656,20,job1656 1657,name1657,20,job1657 1658,name1658,20,job1658 1659,name1659,20,job1659 1660,name1660,20,job1660 1661,name1661,20,job1661 1662,name1662,20,job1662 1663,name1663,20,job1663 1664,name1664,20,job1664 1665,name1665,20,job1665 1666,name1666,20,job1666 1667,name1667,20,job1667 1668,name1668,20,job1668 1669,name1669,20,job1669 1670,name1670,20,job1670 1671,name1671,20,job1671 1672,name1672,20,job1672 1673,name1673,20,job1673 1674,name1674,20,job1674 1675,name1675,20,job1675 1676,name1676,20,job1676 1677,name1677,20,job1677 1678,name1678,20,job1678 1679,name1679,20,job1679 1680,name1680,20,job1680 1681,name1681,20,job1681 1682,name1682,20,job1682 1683,name1683,20,job1683 1684,name1684,20,job1684 1685,name1685,20,job1685 1686,name1686,20,job1686 1687,name1687,20,job1687 1688,name1688,20,job1688 1689,name1689,20,job1689 1690,name1690,20,job1690 1691,name1691,20,job1691 1692,name1692,20,job1692 1693,name1693,20,job1693 1694,name1694,20,job1694 1695,name1695,20,job1695 1696,name1696,20,job1696 1697,name1697,20,job1697 1698,name1698,20,job1698 1699,name1699,20,job1699 1700,name1700,20,job1700 1701,name1701,20,job1701 1702,name1702,20,job1702 1703,name1703,20,job1703 1704,name1704,20,job1704 1705,name1705,20,job1705 1706,name1706,20,job1706 1707,name1707,20,job1707 1708,name1708,20,job1708 1709,name1709,20,job1709 1710,name1710,20,job1710 1711,name1711,20,job1711 1712,name1712,20,job1712 1713,name1713,20,job1713 1714,name1714,20,job1714 1715,name1715,20,job1715 1716,name1716,20,job1716 1717,name1717,20,job1717 1718,name1718,20,job1718 1719,name1719,20,job1719 1720,name1720,20,job1720 1721,name1721,20,job1721 1722,name1722,20,job1722 1723,name1723,20,job1723 1724,name1724,20,job1724 1725,name1725,20,job1725 1726,name1726,20,job1726 1727,name1727,20,job1727 1728,name1728,20,job1728 1729,name1729,20,job1729 1730,name1730,20,job1730 1731,name1731,20,job1731 1732,name1732,20,job1732 1733,name1733,20,job1733 1734,name1734,20,job1734 1735,name1735,20,job1735 1736,name1736,20,job1736 1737,name1737,20,job1737 1738,name1738,20,job1738 1739,name1739,20,job1739 1740,name1740,20,job1740 1741,name1741,20,job1741 1742,name1742,20,job1742 1743,name1743,20,job1743 1744,name1744,20,job1744 1745,name1745,20,job1745 1746,name1746,20,job1746 1747,name1747,20,job1747 1748,name1748,20,job1748 1749,name1749,20,job1749 1750,name1750,20,job1750 1751,name1751,20,job1751 1752,name1752,20,job1752 1753,name1753,20,job1753 1754,name1754,20,job1754 1755,name1755,20,job1755 1756,name1756,20,job1756 1757,name1757,20,job1757 1758,name1758,20,job1758 1759,name1759,20,job1759 1760,name1760,20,job1760 1761,name1761,20,job1761 1762,name1762,20,job1762 1763,name1763,20,job1763 1764,name1764,20,job1764 1765,name1765,20,job1765 1766,name1766,20,job1766 1767,name1767,20,job1767 1768,name1768,20,job1768 1769,name1769,20,job1769 1770,name1770,20,job1770 1771,name1771,20,job1771 1772,name1772,20,job1772 1773,name1773,20,job1773 1774,name1774,20,job1774 1775,name1775,20,job1775 1776,name1776,20,job1776 1777,name1777,20,job1777 1778,name1778,20,job1778 1779,name1779,20,job1779 1780,name1780,20,job1780 1781,name1781,20,job1781 1782,name1782,20,job1782 1783,name1783,20,job1783 1784,name1784,20,job1784 1785,name1785,20,job1785 1786,name1786,20,job1786 1787,name1787,20,job1787 1788,name1788,20,job1788 1789,name1789,20,job1789 1790,name1790,20,job1790 1791,name1791,20,job1791 1792,name1792,20,job1792 1793,name1793,20,job1793 1794,name1794,20,job1794 1795,name1795,20,job1795 1796,name1796,20,job1796 1797,name1797,20,job1797 1798,name1798,20,job1798 1799,name1799,20,job1799 1800,name1800,20,job1800 1801,name1801,20,job1801 1802,name1802,20,job1802 1803,name1803,20,job1803 1804,name1804,20,job1804 1805,name1805,20,job1805 1806,name1806,20,job1806 1807,name1807,20,job1807 1808,name1808,20,job1808 1809,name1809,20,job1809 1810,name1810,20,job1810 1811,name1811,20,job1811 1812,name1812,20,job1812 1813,name1813,20,job1813 1814,name1814,20,job1814 1815,name1815,20,job1815 1816,name1816,20,job1816 1817,name1817,20,job1817 1818,name1818,20,job1818 1819,name1819,20,job1819 1820,name1820,20,job1820 1821,name1821,20,job1821 1822,name1822,20,job1822 1823,name1823,20,job1823 1824,name1824,20,job1824 1825,name1825,20,job1825 1826,name1826,20,job1826 1827,name1827,20,job1827 1828,name1828,20,job1828 1829,name1829,20,job1829 1830,name1830,20,job1830 1831,name1831,20,job1831 1832,name1832,20,job1832 1833,name1833,20,job1833 1834,name1834,20,job1834 1835,name1835,20,job1835 1836,name1836,20,job1836 1837,name1837,20,job1837 1838,name1838,20,job1838 1839,name1839,20,job1839 1840,name1840,20,job1840 1841,name1841,20,job1841 1842,name1842,20,job1842 1843,name1843,20,job1843 1844,name1844,20,job1844 1845,name1845,20,job1845 1846,name1846,20,job1846 1847,name1847,20,job1847 1848,name1848,20,job1848 1849,name1849,20,job1849 1850,name1850,20,job1850 1851,name1851,20,job1851 1852,name1852,20,job1852 1853,name1853,20,job1853 1854,name1854,20,job1854 1855,name1855,20,job1855 1856,name1856,20,job1856 1857,name1857,20,job1857 1858,name1858,20,job1858 1859,name1859,20,job1859 1860,name1860,20,job1860 1861,name1861,20,job1861 1862,name1862,20,job1862 1863,name1863,20,job1863 1864,name1864,20,job1864 1865,name1865,20,job1865 1866,name1866,20,job1866 1867,name1867,20,job1867 1868,name1868,20,job1868 1869,name1869,20,job1869 1870,name1870,20,job1870 1871,name1871,20,job1871 1872,name1872,20,job1872 1873,name1873,20,job1873 1874,name1874,20,job1874 1875,name1875,20,job1875 1876,name1876,20,job1876 1877,name1877,20,job1877 1878,name1878,20,job1878 1879,name1879,20,job1879 1880,name1880,20,job1880 1881,name1881,20,job1881 1882,name1882,20,job1882 1883,name1883,20,job1883 1884,name1884,20,job1884 1885,name1885,20,job1885 1886,name1886,20,job1886 1887,name1887,20,job1887 1888,name1888,20,job1888 1889,name1889,20,job1889 1890,name1890,20,job1890 1891,name1891,20,job1891 1892,name1892,20,job1892 1893,name1893,20,job1893 1894,name1894,20,job1894 1895,name1895,20,job1895 1896,name1896,20,job1896 1897,name1897,20,job1897 1898,name1898,20,job1898 1899,name1899,20,job1899 1900,name1900,20,job1900 1901,name1901,20,job1901 1902,name1902,20,job1902 1903,name1903,20,job1903 1904,name1904,20,job1904 1905,name1905,20,job1905 1906,name1906,20,job1906 1907,name1907,20,job1907 1908,name1908,20,job1908 1909,name1909,20,job1909 1910,name1910,20,job1910 1911,name1911,20,job1911 1912,name1912,20,job1912 1913,name1913,20,job1913 1914,name1914,20,job1914 1915,name1915,20,job1915 1916,name1916,20,job1916 1917,name1917,20,job1917 1918,name1918,20,job1918 1919,name1919,20,job1919 1920,name1920,20,job1920 1921,name1921,20,job1921 1922,name1922,20,job1922 1923,name1923,20,job1923 1924,name1924,20,job1924 1925,name1925,20,job1925 1926,name1926,20,job1926 1927,name1927,20,job1927 1928,name1928,20,job1928 1929,name1929,20,job1929 1930,name1930,20,job1930 1931,name1931,20,job1931 1932,name1932,20,job1932 1933,name1933,20,job1933 1934,name1934,20,job1934 1935,name1935,20,job1935 1936,name1936,20,job1936 1937,name1937,20,job1937 1938,name1938,20,job1938 1939,name1939,20,job1939 1940,name1940,20,job1940 1941,name1941,20,job1941 1942,name1942,20,job1942 1943,name1943,20,job1943 1944,name1944,20,job1944 1945,name1945,20,job1945 1946,name1946,20,job1946 1947,name1947,20,job1947 1948,name1948,20,job1948 1949,name1949,20,job1949 1950,name1950,20,job1950 1951,name1951,20,job1951 1952,name1952,20,job1952 1953,name1953,20,job1953 1954,name1954,20,job1954 1955,name1955,20,job1955 1956,name1956,20,job1956 1957,name1957,20,job1957 1958,name1958,20,job1958 1959,name1959,20,job1959 1960,name1960,20,job1960 1961,name1961,20,job1961 1962,name1962,20,job1962 1963,name1963,20,job1963 1964,name1964,20,job1964 1965,name1965,20,job1965 1966,name1966,20,job1966 1967,name1967,20,job1967 1968,name1968,20,job1968 1969,name1969,20,job1969 1970,name1970,20,job1970 1971,name1971,20,job1971 1972,name1972,20,job1972 1973,name1973,20,job1973 1974,name1974,20,job1974 1975,name1975,20,job1975 1976,name1976,20,job1976 1977,name1977,20,job1977 1978,name1978,20,job1978 1979,name1979,20,job1979 1980,name1980,20,job1980 1981,name1981,20,job1981 1982,name1982,20,job1982 1983,name1983,20,job1983 1984,name1984,20,job1984 1985,name1985,20,job1985 1986,name1986,20,job1986 1987,name1987,20,job1987 1988,name1988,20,job1988 1989,name1989,20,job1989 1990,name1990,20,job1990 1991,name1991,20,job1991 1992,name1992,20,job1992 1993,name1993,20,job1993 1994,name1994,20,job1994 1995,name1995,20,job1995 1996,name1996,20,job1996 1997,name1997,20,job1997 1998,name1998,20,job1998 1999,name1999,20,job1999 2000,name2000,20,job2000 2001,name2001,20,job2001 2002,name2002,20,job2002 2003,name2003,20,job2003 2004,name2004,20,job2004 2005,name2005,20,job2005 2006,name2006,20,job2006 2007,name2007,20,job2007 2008,name2008,20,job2008 2009,name2009,20,job2009 2010,name2010,20,job2010 2011,name2011,20,job2011 2012,name2012,20,job2012 2013,name2013,20,job2013 2014,name2014,20,job2014 2015,name2015,20,job2015 2016,name2016,20,job2016 2017,name2017,20,job2017 2018,name2018,20,job2018 2019,name2019,20,job2019 2020,name2020,20,job2020 2021,name2021,20,job2021 2022,name2022,20,job2022 2023,name2023,20,job2023 2024,name2024,20,job2024 2025,name2025,20,job2025 2026,name2026,20,job2026 2027,name2027,20,job2027 2028,name2028,20,job2028 2029,name2029,20,job2029 2030,name2030,20,job2030 2031,name2031,20,job2031 2032,name2032,20,job2032 2033,name2033,20,job2033 2034,name2034,20,job2034 2035,name2035,20,job2035 2036,name2036,20,job2036 2037,name2037,20,job2037 2038,name2038,20,job2038 2039,name2039,20,job2039 2040,name2040,20,job2040 2041,name2041,20,job2041 2042,name2042,20,job2042 2043,name2043,20,job2043 2044,name2044,20,job2044 2045,name2045,20,job2045 2046,name2046,20,job2046 2047,name2047,20,job2047 2048,name2048,20,job2048 2049,name2049,20,job2049 2050,name2050,20,job2050 2051,name2051,20,job2051 2052,name2052,20,job2052 2053,name2053,20,job2053 2054,name2054,20,job2054 2055,name2055,20,job2055 2056,name2056,20,job2056 2057,name2057,20,job2057 2058,name2058,20,job2058 2059,name2059,20,job2059 2060,name2060,20,job2060 2061,name2061,20,job2061 2062,name2062,20,job2062 2063,name2063,20,job2063 2064,name2064,20,job2064 2065,name2065,20,job2065 2066,name2066,20,job2066 2067,name2067,20,job2067 2068,name2068,20,job2068 2069,name2069,20,job2069 2070,name2070,20,job2070 2071,name2071,20,job2071 2072,name2072,20,job2072 2073,name2073,20,job2073 2074,name2074,20,job2074 2075,name2075,20,job2075 2076,name2076,20,job2076 2077,name2077,20,job2077 2078,name2078,20,job2078 2079,name2079,20,job2079 2080,name2080,20,job2080 2081,name2081,20,job2081 2082,name2082,20,job2082 2083,name2083,20,job2083 2084,name2084,20,job2084 2085,name2085,20,job2085 2086,name2086,20,job2086 2087,name2087,20,job2087 2088,name2088,20,job2088 2089,name2089,20,job2089 2090,name2090,20,job2090 2091,name2091,20,job2091 2092,name2092,20,job2092 2093,name2093,20,job2093 2094,name2094,20,job2094 2095,name2095,20,job2095 2096,name2096,20,job2096 2097,name2097,20,job2097 2098,name2098,20,job2098 2099,name2099,20,job2099 2100,name2100,20,job2100 2101,name2101,20,job2101 2102,name2102,20,job2102 2103,name2103,20,job2103 2104,name2104,20,job2104 2105,name2105,20,job2105 2106,name2106,20,job2106 2107,name2107,20,job2107 2108,name2108,20,job2108 2109,name2109,20,job2109 2110,name2110,20,job2110 2111,name2111,20,job2111 2112,name2112,20,job2112 2113,name2113,20,job2113 2114,name2114,20,job2114 2115,name2115,20,job2115 2116,name2116,20,job2116 2117,name2117,20,job2117 2118,name2118,20,job2118 2119,name2119,20,job2119 2120,name2120,20,job2120 2121,name2121,20,job2121 2122,name2122,20,job2122 2123,name2123,20,job2123 2124,name2124,20,job2124 2125,name2125,20,job2125 2126,name2126,20,job2126 2127,name2127,20,job2127 2128,name2128,20,job2128 2129,name2129,20,job2129 2130,name2130,20,job2130 2131,name2131,20,job2131 2132,name2132,20,job2132 2133,name2133,20,job2133 2134,name2134,20,job2134 2135,name2135,20,job2135 2136,name2136,20,job2136 2137,name2137,20,job2137 2138,name2138,20,job2138 2139,name2139,20,job2139 2140,name2140,20,job2140 2141,name2141,20,job2141 2142,name2142,20,job2142 2143,name2143,20,job2143 2144,name2144,20,job2144 2145,name2145,20,job2145 2146,name2146,20,job2146 2147,name2147,20,job2147 2148,name2148,20,job2148 2149,name2149,20,job2149 2150,name2150,20,job2150 2151,name2151,20,job2151 2152,name2152,20,job2152 2153,name2153,20,job2153 2154,name2154,20,job2154 2155,name2155,20,job2155 2156,name2156,20,job2156 2157,name2157,20,job2157 2158,name2158,20,job2158 2159,name2159,20,job2159 2160,name2160,20,job2160 2161,name2161,20,job2161 2162,name2162,20,job2162 2163,name2163,20,job2163 2164,name2164,20,job2164 2165,name2165,20,job2165 2166,name2166,20,job2166 2167,name2167,20,job2167 2168,name2168,20,job2168 2169,name2169,20,job2169 2170,name2170,20,job2170 2171,name2171,20,job2171 2172,name2172,20,job2172 2173,name2173,20,job2173 2174,name2174,20,job2174 2175,name2175,20,job2175 2176,name2176,20,job2176 2177,name2177,20,job2177 2178,name2178,20,job2178 2179,name2179,20,job2179 2180,name2180,20,job2180 2181,name2181,20,job2181 2182,name2182,20,job2182 2183,name2183,20,job2183 2184,name2184,20,job2184 2185,name2185,20,job2185 2186,name2186,20,job2186 2187,name2187,20,job2187 2188,name2188,20,job2188 2189,name2189,20,job2189 2190,name2190,20,job2190 2191,name2191,20,job2191 2192,name2192,20,job2192 2193,name2193,20,job2193 2194,name2194,20,job2194 2195,name2195,20,job2195 2196,name2196,20,job2196 2197,name2197,20,job2197 2198,name2198,20,job2198 2199,name2199,20,job2199 2200,name2200,20,job2200 2201,name2201,20,job2201 2202,name2202,20,job2202 2203,name2203,20,job2203 2204,name2204,20,job2204 2205,name2205,20,job2205 2206,name2206,20,job2206 2207,name2207,20,job2207 2208,name2208,20,job2208 2209,name2209,20,job2209 2210,name2210,20,job2210 2211,name2211,20,job2211 2212,name2212,20,job2212 2213,name2213,20,job2213 2214,name2214,20,job2214 2215,name2215,20,job2215 2216,name2216,20,job2216 2217,name2217,20,job2217 2218,name2218,20,job2218 2219,name2219,20,job2219 2220,name2220,20,job2220 2221,name2221,20,job2221 2222,name2222,20,job2222 2223,name2223,20,job2223 2224,name2224,20,job2224 2225,name2225,20,job2225 2226,name2226,20,job2226 2227,name2227,20,job2227 2228,name2228,20,job2228 2229,name2229,20,job2229 2230,name2230,20,job2230 2231,name2231,20,job2231 2232,name2232,20,job2232 2233,name2233,20,job2233 2234,name2234,20,job2234 2235,name2235,20,job2235 2236,name2236,20,job2236 2237,name2237,20,job2237 2238,name2238,20,job2238 2239,name2239,20,job2239 2240,name2240,20,job2240 2241,name2241,20,job2241 2242,name2242,20,job2242 2243,name2243,20,job2243 2244,name2244,20,job2244 2245,name2245,20,job2245 2246,name2246,20,job2246 2247,name2247,20,job2247 2248,name2248,20,job2248 2249,name2249,20,job2249 2250,name2250,20,job2250 2251,name2251,20,job2251 2252,name2252,20,job2252 2253,name2253,20,job2253 2254,name2254,20,job2254 2255,name2255,20,job2255 2256,name2256,20,job2256 2257,name2257,20,job2257 2258,name2258,20,job2258 2259,name2259,20,job2259 2260,name2260,20,job2260 2261,name2261,20,job2261 2262,name2262,20,job2262 2263,name2263,20,job2263 2264,name2264,20,job2264 2265,name2265,20,job2265 2266,name2266,20,job2266 2267,name2267,20,job2267 2268,name2268,20,job2268 2269,name2269,20,job2269 2270,name2270,20,job2270 2271,name2271,20,job2271 2272,name2272,20,job2272 2273,name2273,20,job2273 2274,name2274,20,job2274 2275,name2275,20,job2275 2276,name2276,20,job2276 2277,name2277,20,job2277 2278,name2278,20,job2278 2279,name2279,20,job2279 2280,name2280,20,job2280 2281,name2281,20,job2281 2282,name2282,20,job2282 2283,name2283,20,job2283 2284,name2284,20,job2284 2285,name2285,20,job2285 2286,name2286,20,job2286 2287,name2287,20,job2287 2288,name2288,20,job2288 2289,name2289,20,job2289 2290,name2290,20,job2290 2291,name2291,20,job2291 2292,name2292,20,job2292 2293,name2293,20,job2293 2294,name2294,20,job2294 2295,name2295,20,job2295 2296,name2296,20,job2296 2297,name2297,20,job2297 2298,name2298,20,job2298 2299,name2299,20,job2299 2300,name2300,20,job2300 2301,name2301,20,job2301 2302,name2302,20,job2302 2303,name2303,20,job2303 2304,name2304,20,job2304 2305,name2305,20,job2305 2306,name2306,20,job2306 2307,name2307,20,job2307 2308,name2308,20,job2308 2309,name2309,20,job2309 2310,name2310,20,job2310 2311,name2311,20,job2311 2312,name2312,20,job2312 2313,name2313,20,job2313 2314,name2314,20,job2314 2315,name2315,20,job2315 2316,name2316,20,job2316 2317,name2317,20,job2317 2318,name2318,20,job2318 2319,name2319,20,job2319 2320,name2320,20,job2320 2321,name2321,20,job2321 2322,name2322,20,job2322 2323,name2323,20,job2323 2324,name2324,20,job2324 2325,name2325,20,job2325 2326,name2326,20,job2326 2327,name2327,20,job2327 2328,name2328,20,job2328 2329,name2329,20,job2329 2330,name2330,20,job2330 2331,name2331,20,job2331 2332,name2332,20,job2332 2333,name2333,20,job2333 2334,name2334,20,job2334 2335,name2335,20,job2335 2336,name2336,20,job2336 2337,name2337,20,job2337 2338,name2338,20,job2338 2339,name2339,20,job2339 2340,name2340,20,job2340 2341,name2341,20,job2341 2342,name2342,20,job2342 2343,name2343,20,job2343 2344,name2344,20,job2344 2345,name2345,20,job2345 2346,name2346,20,job2346 2347,name2347,20,job2347 2348,name2348,20,job2348 2349,name2349,20,job2349 2350,name2350,20,job2350 2351,name2351,20,job2351 2352,name2352,20,job2352 2353,name2353,20,job2353 2354,name2354,20,job2354 2355,name2355,20,job2355 2356,name2356,20,job2356 2357,name2357,20,job2357 2358,name2358,20,job2358 2359,name2359,20,job2359 2360,name2360,20,job2360 2361,name2361,20,job2361 2362,name2362,20,job2362 2363,name2363,20,job2363 2364,name2364,20,job2364 2365,name2365,20,job2365 2366,name2366,20,job2366 2367,name2367,20,job2367 2368,name2368,20,job2368 2369,name2369,20,job2369 2370,name2370,20,job2370 2371,name2371,20,job2371 2372,name2372,20,job2372 2373,name2373,20,job2373 2374,name2374,20,job2374 2375,name2375,20,job2375 2376,name2376,20,job2376 2377,name2377,20,job2377 2378,name2378,20,job2378 2379,name2379,20,job2379 2380,name2380,20,job2380 2381,name2381,20,job2381 2382,name2382,20,job2382 2383,name2383,20,job2383 2384,name2384,20,job2384 2385,name2385,20,job2385 2386,name2386,20,job2386 2387,name2387,20,job2387 2388,name2388,20,job2388 2389,name2389,20,job2389 2390,name2390,20,job2390 2391,name2391,20,job2391 2392,name2392,20,job2392 2393,name2393,20,job2393 2394,name2394,20,job2394 2395,name2395,20,job2395 2396,name2396,20,job2396 2397,name2397,20,job2397 2398,name2398,20,job2398 2399,name2399,20,job2399 2400,name2400,20,job2400 2401,name2401,20,job2401 2402,name2402,20,job2402 2403,name2403,20,job2403 2404,name2404,20,job2404 2405,name2405,20,job2405 2406,name2406,20,job2406 2407,name2407,20,job2407 2408,name2408,20,job2408 2409,name2409,20,job2409 2410,name2410,20,job2410 2411,name2411,20,job2411 2412,name2412,20,job2412 2413,name2413,20,job2413 2414,name2414,20,job2414 2415,name2415,20,job2415 2416,name2416,20,job2416 2417,name2417,20,job2417 2418,name2418,20,job2418 2419,name2419,20,job2419 2420,name2420,20,job2420 2421,name2421,20,job2421 2422,name2422,20,job2422 2423,name2423,20,job2423 2424,name2424,20,job2424 2425,name2425,20,job2425 2426,name2426,20,job2426 2427,name2427,20,job2427 2428,name2428,20,job2428 2429,name2429,20,job2429 2430,name2430,20,job2430 2431,name2431,20,job2431 2432,name2432,20,job2432 2433,name2433,20,job2433 2434,name2434,20,job2434 2435,name2435,20,job2435 2436,name2436,20,job2436 2437,name2437,20,job2437 2438,name2438,20,job2438 2439,name2439,20,job2439 2440,name2440,20,job2440 2441,name2441,20,job2441 2442,name2442,20,job2442 2443,name2443,20,job2443 2444,name2444,20,job2444 2445,name2445,20,job2445 2446,name2446,20,job2446 2447,name2447,20,job2447 2448,name2448,20,job2448 2449,name2449,20,job2449 2450,name2450,20,job2450 2451,name2451,20,job2451 2452,name2452,20,job2452 2453,name2453,20,job2453 2454,name2454,20,job2454 2455,name2455,20,job2455 2456,name2456,20,job2456 2457,name2457,20,job2457 2458,name2458,20,job2458 2459,name2459,20,job2459 2460,name2460,20,job2460 2461,name2461,20,job2461 2462,name2462,20,job2462 2463,name2463,20,job2463 2464,name2464,20,job2464 2465,name2465,20,job2465 2466,name2466,20,job2466 2467,name2467,20,job2467 2468,name2468,20,job2468 2469,name2469,20,job2469 2470,name2470,20,job2470 2471,name2471,20,job2471 2472,name2472,20,job2472 2473,name2473,20,job2473 2474,name2474,20,job2474 2475,name2475,20,job2475 2476,name2476,20,job2476 2477,name2477,20,job2477 2478,name2478,20,job2478 2479,name2479,20,job2479 2480,name2480,20,job2480 2481,name2481,20,job2481 2482,name2482,20,job2482 2483,name2483,20,job2483 2484,name2484,20,job2484 2485,name2485,20,job2485 2486,name2486,20,job2486 2487,name2487,20,job2487 2488,name2488,20,job2488 2489,name2489,20,job2489 2490,name2490,20,job2490 2491,name2491,20,job2491 2492,name2492,20,job2492 2493,name2493,20,job2493 2494,name2494,20,job2494 2495,name2495,20,job2495 2496,name2496,20,job2496 2497,name2497,20,job2497 2498,name2498,20,job2498 2499,name2499,20,job2499 2500,name2500,20,job2500 2501,name2501,20,job2501 2502,name2502,20,job2502 2503,name2503,20,job2503 2504,name2504,20,job2504 2505,name2505,20,job2505 2506,name2506,20,job2506 2507,name2507,20,job2507 2508,name2508,20,job2508 2509,name2509,20,job2509 2510,name2510,20,job2510 2511,name2511,20,job2511 2512,name2512,20,job2512 2513,name2513,20,job2513 2514,name2514,20,job2514 2515,name2515,20,job2515 2516,name2516,20,job2516 2517,name2517,20,job2517 2518,name2518,20,job2518 2519,name2519,20,job2519 2520,name2520,20,job2520 2521,name2521,20,job2521 2522,name2522,20,job2522 2523,name2523,20,job2523 2524,name2524,20,job2524 2525,name2525,20,job2525 2526,name2526,20,job2526 2527,name2527,20,job2527 2528,name2528,20,job2528 2529,name2529,20,job2529 2530,name2530,20,job2530 2531,name2531,20,job2531 2532,name2532,20,job2532 2533,name2533,20,job2533 2534,name2534,20,job2534 2535,name2535,20,job2535 2536,name2536,20,job2536 2537,name2537,20,job2537 2538,name2538,20,job2538 2539,name2539,20,job2539 2540,name2540,20,job2540 2541,name2541,20,job2541 2542,name2542,20,job2542 2543,name2543,20,job2543 2544,name2544,20,job2544 2545,name2545,20,job2545 2546,name2546,20,job2546 2547,name2547,20,job2547 2548,name2548,20,job2548 2549,name2549,20,job2549 2550,name2550,20,job2550 2551,name2551,20,job2551 2552,name2552,20,job2552 2553,name2553,20,job2553 2554,name2554,20,job2554 2555,name2555,20,job2555 2556,name2556,20,job2556 2557,name2557,20,job2557 2558,name2558,20,job2558 2559,name2559,20,job2559 2560,name2560,20,job2560 2561,name2561,20,job2561 2562,name2562,20,job2562 2563,name2563,20,job2563 2564,name2564,20,job2564 2565,name2565,20,job2565 2566,name2566,20,job2566 2567,name2567,20,job2567 2568,name2568,20,job2568 2569,name2569,20,job2569 2570,name2570,20,job2570 2571,name2571,20,job2571 2572,name2572,20,job2572 2573,name2573,20,job2573 2574,name2574,20,job2574 2575,name2575,20,job2575 2576,name2576,20,job2576 2577,name2577,20,job2577 2578,name2578,20,job2578 2579,name2579,20,job2579 2580,name2580,20,job2580 2581,name2581,20,job2581 2582,name2582,20,job2582 2583,name2583,20,job2583 2584,name2584,20,job2584 2585,name2585,20,job2585 2586,name2586,20,job2586 2587,name2587,20,job2587 2588,name2588,20,job2588 2589,name2589,20,job2589 2590,name2590,20,job2590 2591,name2591,20,job2591 2592,name2592,20,job2592 2593,name2593,20,job2593 2594,name2594,20,job2594 2595,name2595,20,job2595 2596,name2596,20,job2596 2597,name2597,20,job2597 2598,name2598,20,job2598 2599,name2599,20,job2599 2600,name2600,20,job2600 2601,name2601,20,job2601 2602,name2602,20,job2602 2603,name2603,20,job2603 2604,name2604,20,job2604 2605,name2605,20,job2605 2606,name2606,20,job2606 2607,name2607,20,job2607 2608,name2608,20,job2608 2609,name2609,20,job2609 2610,name2610,20,job2610 2611,name2611,20,job2611 2612,name2612,20,job2612 2613,name2613,20,job2613 2614,name2614,20,job2614 2615,name2615,20,job2615 2616,name2616,20,job2616 2617,name2617,20,job2617 2618,name2618,20,job2618 2619,name2619,20,job2619 2620,name2620,20,job2620 2621,name2621,20,job2621 2622,name2622,20,job2622 2623,name2623,20,job2623 2624,name2624,20,job2624 2625,name2625,20,job2625 2626,name2626,20,job2626 2627,name2627,20,job2627 2628,name2628,20,job2628 2629,name2629,20,job2629 2630,name2630,20,job2630 2631,name2631,20,job2631 2632,name2632,20,job2632 2633,name2633,20,job2633 2634,name2634,20,job2634 2635,name2635,20,job2635 2636,name2636,20,job2636 2637,name2637,20,job2637 2638,name2638,20,job2638 2639,name2639,20,job2639 2640,name2640,20,job2640 2641,name2641,20,job2641 2642,name2642,20,job2642 2643,name2643,20,job2643 2644,name2644,20,job2644 2645,name2645,20,job2645 2646,name2646,20,job2646 2647,name2647,20,job2647 2648,name2648,20,job2648 2649,name2649,20,job2649 2650,name2650,20,job2650 2651,name2651,20,job2651 2652,name2652,20,job2652 2653,name2653,20,job2653 2654,name2654,20,job2654 2655,name2655,20,job2655 2656,name2656,20,job2656 2657,name2657,20,job2657 2658,name2658,20,job2658 2659,name2659,20,job2659 2660,name2660,20,job2660 2661,name2661,20,job2661 2662,name2662,20,job2662 2663,name2663,20,job2663 2664,name2664,20,job2664 2665,name2665,20,job2665 2666,name2666,20,job2666 2667,name2667,20,job2667 2668,name2668,20,job2668 2669,name2669,20,job2669 2670,name2670,20,job2670 2671,name2671,20,job2671 2672,name2672,20,job2672 2673,name2673,20,job2673 2674,name2674,20,job2674 2675,name2675,20,job2675 2676,name2676,20,job2676 2677,name2677,20,job2677 2678,name2678,20,job2678 2679,name2679,20,job2679 2680,name2680,20,job2680 2681,name2681,20,job2681 2682,name2682,20,job2682 2683,name2683,20,job2683 2684,name2684,20,job2684 2685,name2685,20,job2685 2686,name2686,20,job2686 2687,name2687,20,job2687 2688,name2688,20,job2688 2689,name2689,20,job2689 2690,name2690,20,job2690 2691,name2691,20,job2691 2692,name2692,20,job2692 2693,name2693,20,job2693 2694,name2694,20,job2694 2695,name2695,20,job2695 2696,name2696,20,job2696 2697,name2697,20,job2697 2698,name2698,20,job2698 2699,name2699,20,job2699 2700,name2700,20,job2700 2701,name2701,20,job2701 2702,name2702,20,job2702 2703,name2703,20,job2703 2704,name2704,20,job2704 2705,name2705,20,job2705 2706,name2706,20,job2706 2707,name2707,20,job2707 2708,name2708,20,job2708 2709,name2709,20,job2709 2710,name2710,20,job2710 2711,name2711,20,job2711 2712,name2712,20,job2712 2713,name2713,20,job2713 2714,name2714,20,job2714 2715,name2715,20,job2715 2716,name2716,20,job2716 2717,name2717,20,job2717 2718,name2718,20,job2718 2719,name2719,20,job2719 2720,name2720,20,job2720 2721,name2721,20,job2721 2722,name2722,20,job2722 2723,name2723,20,job2723 2724,name2724,20,job2724 2725,name2725,20,job2725 2726,name2726,20,job2726 2727,name2727,20,job2727 2728,name2728,20,job2728 2729,name2729,20,job2729 2730,name2730,20,job2730 2731,name2731,20,job2731 2732,name2732,20,job2732 2733,name2733,20,job2733 2734,name2734,20,job2734 2735,name2735,20,job2735 2736,name2736,20,job2736 2737,name2737,20,job2737 2738,name2738,20,job2738 2739,name2739,20,job2739 2740,name2740,20,job2740 2741,name2741,20,job2741 2742,name2742,20,job2742 2743,name2743,20,job2743 2744,name2744,20,job2744 2745,name2745,20,job2745 2746,name2746,20,job2746 2747,name2747,20,job2747 2748,name2748,20,job2748 2749,name2749,20,job2749 2750,name2750,20,job2750 2751,name2751,20,job2751 2752,name2752,20,job2752 2753,name2753,20,job2753 2754,name2754,20,job2754 2755,name2755,20,job2755 2756,name2756,20,job2756 2757,name2757,20,job2757 2758,name2758,20,job2758 2759,name2759,20,job2759 2760,name2760,20,job2760 2761,name2761,20,job2761 2762,name2762,20,job2762 2763,name2763,20,job2763 2764,name2764,20,job2764 2765,name2765,20,job2765 2766,name2766,20,job2766 2767,name2767,20,job2767 2768,name2768,20,job2768 2769,name2769,20,job2769 2770,name2770,20,job2770 2771,name2771,20,job2771 2772,name2772,20,job2772 2773,name2773,20,job2773 2774,name2774,20,job2774 2775,name2775,20,job2775 2776,name2776,20,job2776 2777,name2777,20,job2777 2778,name2778,20,job2778 2779,name2779,20,job2779 2780,name2780,20,job2780 2781,name2781,20,job2781 2782,name2782,20,job2782 2783,name2783,20,job2783 2784,name2784,20,job2784 2785,name2785,20,job2785 2786,name2786,20,job2786 2787,name2787,20,job2787 2788,name2788,20,job2788 2789,name2789,20,job2789 2790,name2790,20,job2790 2791,name2791,20,job2791 2792,name2792,20,job2792 2793,name2793,20,job2793 2794,name2794,20,job2794 2795,name2795,20,job2795 2796,name2796,20,job2796 2797,name2797,20,job2797 2798,name2798,20,job2798 2799,name2799,20,job2799 2800,name2800,20,job2800 2801,name2801,20,job2801 2802,name2802,20,job2802 2803,name2803,20,job2803 2804,name2804,20,job2804 2805,name2805,20,job2805 2806,name2806,20,job2806 2807,name2807,20,job2807 2808,name2808,20,job2808 2809,name2809,20,job2809 2810,name2810,20,job2810 2811,name2811,20,job2811 2812,name2812,20,job2812 2813,name2813,20,job2813 2814,name2814,20,job2814 2815,name2815,20,job2815 2816,name2816,20,job2816 2817,name2817,20,job2817 2818,name2818,20,job2818 2819,name2819,20,job2819 2820,name2820,20,job2820 2821,name2821,20,job2821 2822,name2822,20,job2822 2823,name2823,20,job2823 2824,name2824,20,job2824 2825,name2825,20,job2825 2826,name2826,20,job2826 2827,name2827,20,job2827 2828,name2828,20,job2828 2829,name2829,20,job2829 2830,name2830,20,job2830 2831,name2831,20,job2831 2832,name2832,20,job2832 2833,name2833,20,job2833 2834,name2834,20,job2834 2835,name2835,20,job2835 2836,name2836,20,job2836 2837,name2837,20,job2837 2838,name2838,20,job2838 2839,name2839,20,job2839 2840,name2840,20,job2840 2841,name2841,20,job2841 2842,name2842,20,job2842 2843,name2843,20,job2843 2844,name2844,20,job2844 2845,name2845,20,job2845 2846,name2846,20,job2846 2847,name2847,20,job2847 2848,name2848,20,job2848 2849,name2849,20,job2849 2850,name2850,20,job2850 2851,name2851,20,job2851 2852,name2852,20,job2852 2853,name2853,20,job2853 2854,name2854,20,job2854 2855,name2855,20,job2855 2856,name2856,20,job2856 2857,name2857,20,job2857 2858,name2858,20,job2858 2859,name2859,20,job2859 2860,name2860,20,job2860 2861,name2861,20,job2861 2862,name2862,20,job2862 2863,name2863,20,job2863 2864,name2864,20,job2864 2865,name2865,20,job2865 2866,name2866,20,job2866 2867,name2867,20,job2867 2868,name2868,20,job2868 2869,name2869,20,job2869 2870,name2870,20,job2870 2871,name2871,20,job2871 2872,name2872,20,job2872 2873,name2873,20,job2873 2874,name2874,20,job2874 2875,name2875,20,job2875 2876,name2876,20,job2876 2877,name2877,20,job2877 2878,name2878,20,job2878 2879,name2879,20,job2879 2880,name2880,20,job2880 2881,name2881,20,job2881 2882,name2882,20,job2882 2883,name2883,20,job2883 2884,name2884,20,job2884 2885,name2885,20,job2885 2886,name2886,20,job2886 2887,name2887,20,job2887 2888,name2888,20,job2888 2889,name2889,20,job2889 2890,name2890,20,job2890 2891,name2891,20,job2891 2892,name2892,20,job2892 2893,name2893,20,job2893 2894,name2894,20,job2894 2895,name2895,20,job2895 2896,name2896,20,job2896 2897,name2897,20,job2897 2898,name2898,20,job2898 2899,name2899,20,job2899 2900,name2900,20,job2900 2901,name2901,20,job2901 2902,name2902,20,job2902 2903,name2903,20,job2903 2904,name2904,20,job2904 2905,name2905,20,job2905 2906,name2906,20,job2906 2907,name2907,20,job2907 2908,name2908,20,job2908 2909,name2909,20,job2909 2910,name2910,20,job2910 2911,name2911,20,job2911 2912,name2912,20,job2912 2913,name2913,20,job2913 2914,name2914,20,job2914 2915,name2915,20,job2915 2916,name2916,20,job2916 2917,name2917,20,job2917 2918,name2918,20,job2918 2919,name2919,20,job2919 2920,name2920,20,job2920 2921,name2921,20,job2921 2922,name2922,20,job2922 2923,name2923,20,job2923 2924,name2924,20,job2924 2925,name2925,20,job2925 2926,name2926,20,job2926 2927,name2927,20,job2927 2928,name2928,20,job2928 2929,name2929,20,job2929 2930,name2930,20,job2930 2931,name2931,20,job2931 2932,name2932,20,job2932 2933,name2933,20,job2933 2934,name2934,20,job2934 2935,name2935,20,job2935 2936,name2936,20,job2936 2937,name2937,20,job2937 2938,name2938,20,job2938 2939,name2939,20,job2939 2940,name2940,20,job2940 2941,name2941,20,job2941 2942,name2942,20,job2942 2943,name2943,20,job2943 2944,name2944,20,job2944 2945,name2945,20,job2945 2946,name2946,20,job2946 2947,name2947,20,job2947 2948,name2948,20,job2948 2949,name2949,20,job2949 2950,name2950,20,job2950 2951,name2951,20,job2951 2952,name2952,20,job2952 2953,name2953,20,job2953 2954,name2954,20,job2954 2955,name2955,20,job2955 2956,name2956,20,job2956 2957,name2957,20,job2957 2958,name2958,20,job2958 2959,name2959,20,job2959 2960,name2960,20,job2960 2961,name2961,20,job2961 2962,name2962,20,job2962 2963,name2963,20,job2963 2964,name2964,20,job2964 2965,name2965,20,job2965 2966,name2966,20,job2966 2967,name2967,20,job2967 2968,name2968,20,job2968 2969,name2969,20,job2969 2970,name2970,20,job2970 2971,name2971,20,job2971 2972,name2972,20,job2972 2973,name2973,20,job2973 2974,name2974,20,job2974 2975,name2975,20,job2975 2976,name2976,20,job2976 2977,name2977,20,job2977 2978,name2978,20,job2978 2979,name2979,20,job2979 2980,name2980,20,job2980 2981,name2981,20,job2981 2982,name2982,20,job2982 2983,name2983,20,job2983 2984,name2984,20,job2984 2985,name2985,20,job2985 2986,name2986,20,job2986 2987,name2987,20,job2987 2988,name2988,20,job2988 2989,name2989,20,job2989 2990,name2990,20,job2990 2991,name2991,20,job2991 2992,name2992,20,job2992 2993,name2993,20,job2993 2994,name2994,20,job2994 2995,name2995,20,job2995 2996,name2996,20,job2996 2997,name2997,20,job2997 2998,name2998,20,job2998 2999,name2999,20,job2999 3000,name3000,20,job3000 3001,name3001,20,job3001 3002,name3002,20,job3002 3003,name3003,20,job3003 3004,name3004,20,job3004 3005,name3005,20,job3005 3006,name3006,20,job3006 3007,name3007,20,job3007 3008,name3008,20,job3008 3009,name3009,20,job3009 3010,name3010,20,job3010 3011,name3011,20,job3011 3012,name3012,20,job3012 3013,name3013,20,job3013 3014,name3014,20,job3014 3015,name3015,20,job3015 3016,name3016,20,job3016 3017,name3017,20,job3017 3018,name3018,20,job3018 3019,name3019,20,job3019 3020,name3020,20,job3020 3021,name3021,20,job3021 3022,name3022,20,job3022 3023,name3023,20,job3023 3024,name3024,20,job3024 3025,name3025,20,job3025 3026,name3026,20,job3026 3027,name3027,20,job3027 3028,name3028,20,job3028 3029,name3029,20,job3029 3030,name3030,20,job3030 3031,name3031,20,job3031 3032,name3032,20,job3032 3033,name3033,20,job3033 3034,name3034,20,job3034 3035,name3035,20,job3035 3036,name3036,20,job3036 3037,name3037,20,job3037 3038,name3038,20,job3038 3039,name3039,20,job3039 3040,name3040,20,job3040 3041,name3041,20,job3041 3042,name3042,20,job3042 3043,name3043,20,job3043 3044,name3044,20,job3044 3045,name3045,20,job3045 3046,name3046,20,job3046 3047,name3047,20,job3047 3048,name3048,20,job3048 3049,name3049,20,job3049 3050,name3050,20,job3050 3051,name3051,20,job3051 3052,name3052,20,job3052 3053,name3053,20,job3053 3054,name3054,20,job3054 3055,name3055,20,job3055 3056,name3056,20,job3056 3057,name3057,20,job3057 3058,name3058,20,job3058 3059,name3059,20,job3059 3060,name3060,20,job3060 3061,name3061,20,job3061 3062,name3062,20,job3062 3063,name3063,20,job3063 3064,name3064,20,job3064 3065,name3065,20,job3065 3066,name3066,20,job3066 3067,name3067,20,job3067 3068,name3068,20,job3068 3069,name3069,20,job3069 3070,name3070,20,job3070 3071,name3071,20,job3071 3072,name3072,20,job3072 3073,name3073,20,job3073 3074,name3074,20,job3074 3075,name3075,20,job3075 3076,name3076,20,job3076 3077,name3077,20,job3077 3078,name3078,20,job3078 3079,name3079,20,job3079 3080,name3080,20,job3080 3081,name3081,20,job3081 3082,name3082,20,job3082 3083,name3083,20,job3083 3084,name3084,20,job3084 3085,name3085,20,job3085 3086,name3086,20,job3086 3087,name3087,20,job3087 3088,name3088,20,job3088 3089,name3089,20,job3089 3090,name3090,20,job3090 3091,name3091,20,job3091 3092,name3092,20,job3092 3093,name3093,20,job3093 3094,name3094,20,job3094 3095,name3095,20,job3095 3096,name3096,20,job3096 3097,name3097,20,job3097 3098,name3098,20,job3098 3099,name3099,20,job3099 3100,name3100,20,job3100 3101,name3101,20,job3101 3102,name3102,20,job3102 3103,name3103,20,job3103 3104,name3104,20,job3104 3105,name3105,20,job3105 3106,name3106,20,job3106 3107,name3107,20,job3107 3108,name3108,20,job3108 3109,name3109,20,job3109 3110,name3110,20,job3110 3111,name3111,20,job3111 3112,name3112,20,job3112 3113,name3113,20,job3113 3114,name3114,20,job3114 3115,name3115,20,job3115 3116,name3116,20,job3116 3117,name3117,20,job3117 3118,name3118,20,job3118 3119,name3119,20,job3119 3120,name3120,20,job3120 3121,name3121,20,job3121 3122,name3122,20,job3122 3123,name3123,20,job3123 3124,name3124,20,job3124 3125,name3125,20,job3125 3126,name3126,20,job3126 3127,name3127,20,job3127 3128,name3128,20,job3128 3129,name3129,20,job3129 3130,name3130,20,job3130 3131,name3131,20,job3131 3132,name3132,20,job3132 3133,name3133,20,job3133 3134,name3134,20,job3134 3135,name3135,20,job3135 3136,name3136,20,job3136 3137,name3137,20,job3137 3138,name3138,20,job3138 3139,name3139,20,job3139 3140,name3140,20,job3140 3141,name3141,20,job3141 3142,name3142,20,job3142 3143,name3143,20,job3143 3144,name3144,20,job3144 3145,name3145,20,job3145 3146,name3146,20,job3146 3147,name3147,20,job3147 3148,name3148,20,job3148 3149,name3149,20,job3149 3150,name3150,20,job3150 3151,name3151,20,job3151 3152,name3152,20,job3152 3153,name3153,20,job3153 3154,name3154,20,job3154 3155,name3155,20,job3155 3156,name3156,20,job3156 3157,name3157,20,job3157 3158,name3158,20,job3158 3159,name3159,20,job3159 3160,name3160,20,job3160 3161,name3161,20,job3161 3162,name3162,20,job3162 3163,name3163,20,job3163 3164,name3164,20,job3164 3165,name3165,20,job3165 3166,name3166,20,job3166 3167,name3167,20,job3167 3168,name3168,20,job3168 3169,name3169,20,job3169 3170,name3170,20,job3170 3171,name3171,20,job3171 3172,name3172,20,job3172 3173,name3173,20,job3173 3174,name3174,20,job3174 3175,name3175,20,job3175 3176,name3176,20,job3176 3177,name3177,20,job3177 3178,name3178,20,job3178 3179,name3179,20,job3179 3180,name3180,20,job3180 3181,name3181,20,job3181 3182,name3182,20,job3182 3183,name3183,20,job3183 3184,name3184,20,job3184 3185,name3185,20,job3185 3186,name3186,20,job3186 3187,name3187,20,job3187 3188,name3188,20,job3188 3189,name3189,20,job3189 3190,name3190,20,job3190 3191,name3191,20,job3191 3192,name3192,20,job3192 3193,name3193,20,job3193 3194,name3194,20,job3194 3195,name3195,20,job3195 3196,name3196,20,job3196 3197,name3197,20,job3197 3198,name3198,20,job3198 3199,name3199,20,job3199 3200,name3200,20,job3200 3201,name3201,20,job3201 3202,name3202,20,job3202 3203,name3203,20,job3203 3204,name3204,20,job3204 3205,name3205,20,job3205 3206,name3206,20,job3206 3207,name3207,20,job3207 3208,name3208,20,job3208 3209,name3209,20,job3209 3210,name3210,20,job3210 3211,name3211,20,job3211 3212,name3212,20,job3212 3213,name3213,20,job3213 3214,name3214,20,job3214 3215,name3215,20,job3215 3216,name3216,20,job3216 3217,name3217,20,job3217 3218,name3218,20,job3218 3219,name3219,20,job3219 3220,name3220,20,job3220 3221,name3221,20,job3221 3222,name3222,20,job3222 3223,name3223,20,job3223 3224,name3224,20,job3224 3225,name3225,20,job3225 3226,name3226,20,job3226 3227,name3227,20,job3227 3228,name3228,20,job3228 3229,name3229,20,job3229 3230,name3230,20,job3230 3231,name3231,20,job3231 3232,name3232,20,job3232 3233,name3233,20,job3233 3234,name3234,20,job3234 3235,name3235,20,job3235 3236,name3236,20,job3236 3237,name3237,20,job3237 3238,name3238,20,job3238 3239,name3239,20,job3239 3240,name3240,20,job3240 3241,name3241,20,job3241 3242,name3242,20,job3242 3243,name3243,20,job3243 3244,name3244,20,job3244 3245,name3245,20,job3245 3246,name3246,20,job3246 3247,name3247,20,job3247 3248,name3248,20,job3248 3249,name3249,20,job3249 3250,name3250,20,job3250 3251,name3251,20,job3251 3252,name3252,20,job3252 3253,name3253,20,job3253 3254,name3254,20,job3254 3255,name3255,20,job3255 3256,name3256,20,job3256 3257,name3257,20,job3257 3258,name3258,20,job3258 3259,name3259,20,job3259 3260,name3260,20,job3260 3261,name3261,20,job3261 3262,name3262,20,job3262 3263,name3263,20,job3263 3264,name3264,20,job3264 3265,name3265,20,job3265 3266,name3266,20,job3266 3267,name3267,20,job3267 3268,name3268,20,job3268 3269,name3269,20,job3269 3270,name3270,20,job3270 3271,name3271,20,job3271 3272,name3272,20,job3272 3273,name3273,20,job3273 3274,name3274,20,job3274 3275,name3275,20,job3275 3276,name3276,20,job3276 3277,name3277,20,job3277 3278,name3278,20,job3278 3279,name3279,20,job3279 3280,name3280,20,job3280 3281,name3281,20,job3281 3282,name3282,20,job3282 3283,name3283,20,job3283 3284,name3284,20,job3284 3285,name3285,20,job3285 3286,name3286,20,job3286 3287,name3287,20,job3287 3288,name3288,20,job3288 3289,name3289,20,job3289 3290,name3290,20,job3290 3291,name3291,20,job3291 3292,name3292,20,job3292 3293,name3293,20,job3293 3294,name3294,20,job3294 3295,name3295,20,job3295 3296,name3296,20,job3296 3297,name3297,20,job3297 3298,name3298,20,job3298 3299,name3299,20,job3299 3300,name3300,20,job3300 3301,name3301,20,job3301 3302,name3302,20,job3302 3303,name3303,20,job3303 3304,name3304,20,job3304 3305,name3305,20,job3305 3306,name3306,20,job3306 3307,name3307,20,job3307 3308,name3308,20,job3308 3309,name3309,20,job3309 3310,name3310,20,job3310 3311,name3311,20,job3311 3312,name3312,20,job3312 3313,name3313,20,job3313 3314,name3314,20,job3314 3315,name3315,20,job3315 3316,name3316,20,job3316 3317,name3317,20,job3317 3318,name3318,20,job3318 3319,name3319,20,job3319 3320,name3320,20,job3320 3321,name3321,20,job3321 3322,name3322,20,job3322 3323,name3323,20,job3323 3324,name3324,20,job3324 3325,name3325,20,job3325 3326,name3326,20,job3326 3327,name3327,20,job3327 3328,name3328,20,job3328 3329,name3329,20,job3329 3330,name3330,20,job3330 3331,name3331,20,job3331 3332,name3332,20,job3332 3333,name3333,20,job3333 3334,name3334,20,job3334 3335,name3335,20,job3335 3336,name3336,20,job3336 3337,name3337,20,job3337 3338,name3338,20,job3338 3339,name3339,20,job3339 3340,name3340,20,job3340 3341,name3341,20,job3341 3342,name3342,20,job3342 3343,name3343,20,job3343 3344,name3344,20,job3344 3345,name3345,20,job3345 3346,name3346,20,job3346 3347,name3347,20,job3347 3348,name3348,20,job3348 3349,name3349,20,job3349 3350,name3350,20,job3350 3351,name3351,20,job3351 3352,name3352,20,job3352 3353,name3353,20,job3353 3354,name3354,20,job3354 3355,name3355,20,job3355 3356,name3356,20,job3356 3357,name3357,20,job3357 3358,name3358,20,job3358 3359,name3359,20,job3359 3360,name3360,20,job3360 3361,name3361,20,job3361 3362,name3362,20,job3362 3363,name3363,20,job3363 3364,name3364,20,job3364 3365,name3365,20,job3365 3366,name3366,20,job3366 3367,name3367,20,job3367 3368,name3368,20,job3368 3369,name3369,20,job3369 3370,name3370,20,job3370 3371,name3371,20,job3371 3372,name3372,20,job3372 3373,name3373,20,job3373 3374,name3374,20,job3374 3375,name3375,20,job3375 3376,name3376,20,job3376 3377,name3377,20,job3377 3378,name3378,20,job3378 3379,name3379,20,job3379 3380,name3380,20,job3380 3381,name3381,20,job3381 3382,name3382,20,job3382 3383,name3383,20,job3383 3384,name3384,20,job3384 3385,name3385,20,job3385 3386,name3386,20,job3386 3387,name3387,20,job3387 3388,name3388,20,job3388 3389,name3389,20,job3389 3390,name3390,20,job3390 3391,name3391,20,job3391 3392,name3392,20,job3392 3393,name3393,20,job3393 3394,name3394,20,job3394 3395,name3395,20,job3395 3396,name3396,20,job3396 3397,name3397,20,job3397 3398,name3398,20,job3398 3399,name3399,20,job3399 3400,name3400,20,job3400 3401,name3401,20,job3401 3402,name3402,20,job3402 3403,name3403,20,job3403 3404,name3404,20,job3404 3405,name3405,20,job3405 3406,name3406,20,job3406 3407,name3407,20,job3407 3408,name3408,20,job3408 3409,name3409,20,job3409 3410,name3410,20,job3410 3411,name3411,20,job3411 3412,name3412,20,job3412 3413,name3413,20,job3413 3414,name3414,20,job3414 3415,name3415,20,job3415 3416,name3416,20,job3416 3417,name3417,20,job3417 3418,name3418,20,job3418 3419,name3419,20,job3419 3420,name3420,20,job3420 3421,name3421,20,job3421 3422,name3422,20,job3422 3423,name3423,20,job3423 3424,name3424,20,job3424 3425,name3425,20,job3425 3426,name3426,20,job3426 3427,name3427,20,job3427 3428,name3428,20,job3428 3429,name3429,20,job3429 3430,name3430,20,job3430 3431,name3431,20,job3431 3432,name3432,20,job3432 3433,name3433,20,job3433 3434,name3434,20,job3434 3435,name3435,20,job3435 3436,name3436,20,job3436 3437,name3437,20,job3437 3438,name3438,20,job3438 3439,name3439,20,job3439 3440,name3440,20,job3440 3441,name3441,20,job3441 3442,name3442,20,job3442 3443,name3443,20,job3443 3444,name3444,20,job3444 3445,name3445,20,job3445 3446,name3446,20,job3446 3447,name3447,20,job3447 3448,name3448,20,job3448 3449,name3449,20,job3449 3450,name3450,20,job3450 3451,name3451,20,job3451 3452,name3452,20,job3452 3453,name3453,20,job3453 3454,name3454,20,job3454 3455,name3455,20,job3455 3456,name3456,20,job3456 3457,name3457,20,job3457 3458,name3458,20,job3458 3459,name3459,20,job3459 3460,name3460,20,job3460 3461,name3461,20,job3461 3462,name3462,20,job3462 3463,name3463,20,job3463 3464,name3464,20,job3464 3465,name3465,20,job3465 3466,name3466,20,job3466 3467,name3467,20,job3467 3468,name3468,20,job3468 3469,name3469,20,job3469 3470,name3470,20,job3470 3471,name3471,20,job3471 3472,name3472,20,job3472 3473,name3473,20,job3473 3474,name3474,20,job3474 3475,name3475,20,job3475 3476,name3476,20,job3476 3477,name3477,20,job3477 3478,name3478,20,job3478 3479,name3479,20,job3479 3480,name3480,20,job3480 3481,name3481,20,job3481 3482,name3482,20,job3482 3483,name3483,20,job3483 3484,name3484,20,job3484 3485,name3485,20,job3485 3486,name3486,20,job3486 3487,name3487,20,job3487 3488,name3488,20,job3488 3489,name3489,20,job3489 3490,name3490,20,job3490 3491,name3491,20,job3491 3492,name3492,20,job3492 3493,name3493,20,job3493 3494,name3494,20,job3494 3495,name3495,20,job3495 3496,name3496,20,job3496 3497,name3497,20,job3497 3498,name3498,20,job3498 3499,name3499,20,job3499 3500,name3500,20,job3500 3501,name3501,20,job3501 3502,name3502,20,job3502 3503,name3503,20,job3503 3504,name3504,20,job3504 3505,name3505,20,job3505 3506,name3506,20,job3506 3507,name3507,20,job3507 3508,name3508,20,job3508 3509,name3509,20,job3509 3510,name3510,20,job3510 3511,name3511,20,job3511 3512,name3512,20,job3512 3513,name3513,20,job3513 3514,name3514,20,job3514 3515,name3515,20,job3515 3516,name3516,20,job3516 3517,name3517,20,job3517 3518,name3518,20,job3518 3519,name3519,20,job3519 3520,name3520,20,job3520 3521,name3521,20,job3521 3522,name3522,20,job3522 3523,name3523,20,job3523 3524,name3524,20,job3524 3525,name3525,20,job3525 3526,name3526,20,job3526 3527,name3527,20,job3527 3528,name3528,20,job3528 3529,name3529,20,job3529 3530,name3530,20,job3530 3531,name3531,20,job3531 3532,name3532,20,job3532 3533,name3533,20,job3533 3534,name3534,20,job3534 3535,name3535,20,job3535 3536,name3536,20,job3536 3537,name3537,20,job3537 3538,name3538,20,job3538 3539,name3539,20,job3539 3540,name3540,20,job3540 3541,name3541,20,job3541 3542,name3542,20,job3542 3543,name3543,20,job3543 3544,name3544,20,job3544 3545,name3545,20,job3545 3546,name3546,20,job3546 3547,name3547,20,job3547 3548,name3548,20,job3548 3549,name3549,20,job3549 3550,name3550,20,job3550 3551,name3551,20,job3551 3552,name3552,20,job3552 3553,name3553,20,job3553 3554,name3554,20,job3554 3555,name3555,20,job3555 3556,name3556,20,job3556 3557,name3557,20,job3557 3558,name3558,20,job3558 3559,name3559,20,job3559 3560,name3560,20,job3560 3561,name3561,20,job3561 3562,name3562,20,job3562 3563,name3563,20,job3563 3564,name3564,20,job3564 3565,name3565,20,job3565 3566,name3566,20,job3566 3567,name3567,20,job3567 3568,name3568,20,job3568 3569,name3569,20,job3569 3570,name3570,20,job3570 3571,name3571,20,job3571 3572,name3572,20,job3572 3573,name3573,20,job3573 3574,name3574,20,job3574 3575,name3575,20,job3575 3576,name3576,20,job3576 3577,name3577,20,job3577 3578,name3578,20,job3578 3579,name3579,20,job3579 3580,name3580,20,job3580 3581,name3581,20,job3581 3582,name3582,20,job3582 3583,name3583,20,job3583 3584,name3584,20,job3584 3585,name3585,20,job3585 3586,name3586,20,job3586 3587,name3587,20,job3587 3588,name3588,20,job3588 3589,name3589,20,job3589 3590,name3590,20,job3590 3591,name3591,20,job3591 3592,name3592,20,job3592 3593,name3593,20,job3593 3594,name3594,20,job3594 3595,name3595,20,job3595 3596,name3596,20,job3596 3597,name3597,20,job3597 3598,name3598,20,job3598 3599,name3599,20,job3599 3600,name3600,20,job3600 3601,name3601,20,job3601 3602,name3602,20,job3602 3603,name3603,20,job3603 3604,name3604,20,job3604 3605,name3605,20,job3605 3606,name3606,20,job3606 3607,name3607,20,job3607 3608,name3608,20,job3608 3609,name3609,20,job3609 3610,name3610,20,job3610 3611,name3611,20,job3611 3612,name3612,20,job3612 3613,name3613,20,job3613 3614,name3614,20,job3614 3615,name3615,20,job3615 3616,name3616,20,job3616 3617,name3617,20,job3617 3618,name3618,20,job3618 3619,name3619,20,job3619 3620,name3620,20,job3620 3621,name3621,20,job3621 3622,name3622,20,job3622 3623,name3623,20,job3623 3624,name3624,20,job3624 3625,name3625,20,job3625 3626,name3626,20,job3626 3627,name3627,20,job3627 3628,name3628,20,job3628 3629,name3629,20,job3629 3630,name3630,20,job3630 3631,name3631,20,job3631 3632,name3632,20,job3632 3633,name3633,20,job3633 3634,name3634,20,job3634 3635,name3635,20,job3635 3636,name3636,20,job3636 3637,name3637,20,job3637 3638,name3638,20,job3638 3639,name3639,20,job3639 3640,name3640,20,job3640 3641,name3641,20,job3641 3642,name3642,20,job3642 3643,name3643,20,job3643 3644,name3644,20,job3644 3645,name3645,20,job3645 3646,name3646,20,job3646 3647,name3647,20,job3647 3648,name3648,20,job3648 3649,name3649,20,job3649 3650,name3650,20,job3650 3651,name3651,20,job3651 3652,name3652,20,job3652 3653,name3653,20,job3653 3654,name3654,20,job3654 3655,name3655,20,job3655 3656,name3656,20,job3656 3657,name3657,20,job3657 3658,name3658,20,job3658 3659,name3659,20,job3659 3660,name3660,20,job3660 3661,name3661,20,job3661 3662,name3662,20,job3662 3663,name3663,20,job3663 3664,name3664,20,job3664 3665,name3665,20,job3665 3666,name3666,20,job3666 3667,name3667,20,job3667 3668,name3668,20,job3668 3669,name3669,20,job3669 3670,name3670,20,job3670 3671,name3671,20,job3671 3672,name3672,20,job3672 3673,name3673,20,job3673 3674,name3674,20,job3674 3675,name3675,20,job3675 3676,name3676,20,job3676 3677,name3677,20,job3677 3678,name3678,20,job3678 3679,name3679,20,job3679 3680,name3680,20,job3680 3681,name3681,20,job3681 3682,name3682,20,job3682 3683,name3683,20,job3683 3684,name3684,20,job3684 3685,name3685,20,job3685 3686,name3686,20,job3686 3687,name3687,20,job3687 3688,name3688,20,job3688 3689,name3689,20,job3689 3690,name3690,20,job3690 3691,name3691,20,job3691 3692,name3692,20,job3692 3693,name3693,20,job3693 3694,name3694,20,job3694 3695,name3695,20,job3695 3696,name3696,20,job3696 3697,name3697,20,job3697 3698,name3698,20,job3698 3699,name3699,20,job3699 3700,name3700,20,job3700 3701,name3701,20,job3701 3702,name3702,20,job3702 3703,name3703,20,job3703 3704,name3704,20,job3704 3705,name3705,20,job3705 3706,name3706,20,job3706 3707,name3707,20,job3707 3708,name3708,20,job3708 3709,name3709,20,job3709 3710,name3710,20,job3710 3711,name3711,20,job3711 3712,name3712,20,job3712 3713,name3713,20,job3713 3714,name3714,20,job3714 3715,name3715,20,job3715 3716,name3716,20,job3716 3717,name3717,20,job3717 3718,name3718,20,job3718 3719,name3719,20,job3719 3720,name3720,20,job3720 3721,name3721,20,job3721 3722,name3722,20,job3722 3723,name3723,20,job3723 3724,name3724,20,job3724 3725,name3725,20,job3725 3726,name3726,20,job3726 3727,name3727,20,job3727 3728,name3728,20,job3728 3729,name3729,20,job3729 3730,name3730,20,job3730 3731,name3731,20,job3731 3732,name3732,20,job3732 3733,name3733,20,job3733 3734,name3734,20,job3734 3735,name3735,20,job3735 3736,name3736,20,job3736 3737,name3737,20,job3737 3738,name3738,20,job3738 3739,name3739,20,job3739 3740,name3740,20,job3740 3741,name3741,20,job3741 3742,name3742,20,job3742 3743,name3743,20,job3743 3744,name3744,20,job3744 3745,name3745,20,job3745 3746,name3746,20,job3746 3747,name3747,20,job3747 3748,name3748,20,job3748 3749,name3749,20,job3749 3750,name3750,20,job3750 3751,name3751,20,job3751 3752,name3752,20,job3752 3753,name3753,20,job3753 3754,name3754,20,job3754 3755,name3755,20,job3755 3756,name3756,20,job3756 3757,name3757,20,job3757 3758,name3758,20,job3758 3759,name3759,20,job3759 3760,name3760,20,job3760 3761,name3761,20,job3761 3762,name3762,20,job3762 3763,name3763,20,job3763 3764,name3764,20,job3764 3765,name3765,20,job3765 3766,name3766,20,job3766 3767,name3767,20,job3767 3768,name3768,20,job3768 3769,name3769,20,job3769 3770,name3770,20,job3770 3771,name3771,20,job3771 3772,name3772,20,job3772 3773,name3773,20,job3773 3774,name3774,20,job3774 3775,name3775,20,job3775 3776,name3776,20,job3776 3777,name3777,20,job3777 3778,name3778,20,job3778 3779,name3779,20,job3779 3780,name3780,20,job3780 3781,name3781,20,job3781 3782,name3782,20,job3782 3783,name3783,20,job3783 3784,name3784,20,job3784 3785,name3785,20,job3785 3786,name3786,20,job3786 3787,name3787,20,job3787 3788,name3788,20,job3788 3789,name3789,20,job3789 3790,name3790,20,job3790 3791,name3791,20,job3791 3792,name3792,20,job3792 3793,name3793,20,job3793 3794,name3794,20,job3794 3795,name3795,20,job3795 3796,name3796,20,job3796 3797,name3797,20,job3797 3798,name3798,20,job3798 3799,name3799,20,job3799 3800,name3800,20,job3800 3801,name3801,20,job3801 3802,name3802,20,job3802 3803,name3803,20,job3803 3804,name3804,20,job3804 3805,name3805,20,job3805 3806,name3806,20,job3806 3807,name3807,20,job3807 3808,name3808,20,job3808 3809,name3809,20,job3809 3810,name3810,20,job3810 3811,name3811,20,job3811 3812,name3812,20,job3812 3813,name3813,20,job3813 3814,name3814,20,job3814 3815,name3815,20,job3815 3816,name3816,20,job3816 3817,name3817,20,job3817 3818,name3818,20,job3818 3819,name3819,20,job3819 3820,name3820,20,job3820 3821,name3821,20,job3821 3822,name3822,20,job3822 3823,name3823,20,job3823 3824,name3824,20,job3824 3825,name3825,20,job3825 3826,name3826,20,job3826 3827,name3827,20,job3827 3828,name3828,20,job3828 3829,name3829,20,job3829 3830,name3830,20,job3830 3831,name3831,20,job3831 3832,name3832,20,job3832 3833,name3833,20,job3833 3834,name3834,20,job3834 3835,name3835,20,job3835 3836,name3836,20,job3836 3837,name3837,20,job3837 3838,name3838,20,job3838 3839,name3839,20,job3839 3840,name3840,20,job3840 3841,name3841,20,job3841 3842,name3842,20,job3842 3843,name3843,20,job3843 3844,name3844,20,job3844 3845,name3845,20,job3845 3846,name3846,20,job3846 3847,name3847,20,job3847 3848,name3848,20,job3848 3849,name3849,20,job3849 3850,name3850,20,job3850 3851,name3851,20,job3851 3852,name3852,20,job3852 3853,name3853,20,job3853 3854,name3854,20,job3854 3855,name3855,20,job3855 3856,name3856,20,job3856 3857,name3857,20,job3857 3858,name3858,20,job3858 3859,name3859,20,job3859 3860,name3860,20,job3860 3861,name3861,20,job3861 3862,name3862,20,job3862 3863,name3863,20,job3863 3864,name3864,20,job3864 3865,name3865,20,job3865 3866,name3866,20,job3866 3867,name3867,20,job3867 3868,name3868,20,job3868 3869,name3869,20,job3869 3870,name3870,20,job3870 3871,name3871,20,job3871 3872,name3872,20,job3872 3873,name3873,20,job3873 3874,name3874,20,job3874 3875,name3875,20,job3875 3876,name3876,20,job3876 3877,name3877,20,job3877 3878,name3878,20,job3878 3879,name3879,20,job3879 3880,name3880,20,job3880 3881,name3881,20,job3881 3882,name3882,20,job3882 3883,name3883,20,job3883 3884,name3884,20,job3884 3885,name3885,20,job3885 3886,name3886,20,job3886 3887,name3887,20,job3887 3888,name3888,20,job3888 3889,name3889,20,job3889 3890,name3890,20,job3890 3891,name3891,20,job3891 3892,name3892,20,job3892 3893,name3893,20,job3893 3894,name3894,20,job3894 3895,name3895,20,job3895 3896,name3896,20,job3896 3897,name3897,20,job3897 3898,name3898,20,job3898 3899,name3899,20,job3899 3900,name3900,20,job3900 3901,name3901,20,job3901 3902,name3902,20,job3902 3903,name3903,20,job3903 3904,name3904,20,job3904 3905,name3905,20,job3905 3906,name3906,20,job3906 3907,name3907,20,job3907 3908,name3908,20,job3908 3909,name3909,20,job3909 3910,name3910,20,job3910 3911,name3911,20,job3911 3912,name3912,20,job3912 3913,name3913,20,job3913 3914,name3914,20,job3914 3915,name3915,20,job3915 3916,name3916,20,job3916 3917,name3917,20,job3917 3918,name3918,20,job3918 3919,name3919,20,job3919 3920,name3920,20,job3920 3921,name3921,20,job3921 3922,name3922,20,job3922 3923,name3923,20,job3923 3924,name3924,20,job3924 3925,name3925,20,job3925 3926,name3926,20,job3926 3927,name3927,20,job3927 3928,name3928,20,job3928 3929,name3929,20,job3929 3930,name3930,20,job3930 3931,name3931,20,job3931 3932,name3932,20,job3932 3933,name3933,20,job3933 3934,name3934,20,job3934 3935,name3935,20,job3935 3936,name3936,20,job3936 3937,name3937,20,job3937 3938,name3938,20,job3938 3939,name3939,20,job3939 3940,name3940,20,job3940 3941,name3941,20,job3941 3942,name3942,20,job3942 3943,name3943,20,job3943 3944,name3944,20,job3944 3945,name3945,20,job3945 3946,name3946,20,job3946 3947,name3947,20,job3947 3948,name3948,20,job3948 3949,name3949,20,job3949 3950,name3950,20,job3950 3951,name3951,20,job3951 3952,name3952,20,job3952 3953,name3953,20,job3953 3954,name3954,20,job3954 3955,name3955,20,job3955 3956,name3956,20,job3956 3957,name3957,20,job3957 3958,name3958,20,job3958 3959,name3959,20,job3959 3960,name3960,20,job3960 3961,name3961,20,job3961 3962,name3962,20,job3962 3963,name3963,20,job3963 3964,name3964,20,job3964 3965,name3965,20,job3965 3966,name3966,20,job3966 3967,name3967,20,job3967 3968,name3968,20,job3968 3969,name3969,20,job3969 3970,name3970,20,job3970 3971,name3971,20,job3971 3972,name3972,20,job3972 3973,name3973,20,job3973 3974,name3974,20,job3974 3975,name3975,20,job3975 3976,name3976,20,job3976 3977,name3977,20,job3977 3978,name3978,20,job3978 3979,name3979,20,job3979 3980,name3980,20,job3980 3981,name3981,20,job3981 3982,name3982,20,job3982 3983,name3983,20,job3983 3984,name3984,20,job3984 3985,name3985,20,job3985 3986,name3986,20,job3986 3987,name3987,20,job3987 3988,name3988,20,job3988 3989,name3989,20,job3989 3990,name3990,20,job3990 3991,name3991,20,job3991 3992,name3992,20,job3992 3993,name3993,20,job3993 3994,name3994,20,job3994 3995,name3995,20,job3995 3996,name3996,20,job3996 3997,name3997,20,job3997 3998,name3998,20,job3998 3999,name3999,20,job3999 4000,name4000,20,job4000 4001,name4001,20,job4001 4002,name4002,20,job4002 4003,name4003,20,job4003 4004,name4004,20,job4004 4005,name4005,20,job4005 4006,name4006,20,job4006 4007,name4007,20,job4007 4008,name4008,20,job4008 4009,name4009,20,job4009 4010,name4010,20,job4010 4011,name4011,20,job4011 4012,name4012,20,job4012 4013,name4013,20,job4013 4014,name4014,20,job4014 4015,name4015,20,job4015 4016,name4016,20,job4016 4017,name4017,20,job4017 4018,name4018,20,job4018 4019,name4019,20,job4019 4020,name4020,20,job4020 4021,name4021,20,job4021 4022,name4022,20,job4022 4023,name4023,20,job4023 4024,name4024,20,job4024 4025,name4025,20,job4025 4026,name4026,20,job4026 4027,name4027,20,job4027 4028,name4028,20,job4028 4029,name4029,20,job4029 4030,name4030,20,job4030 4031,name4031,20,job4031 4032,name4032,20,job4032 4033,name4033,20,job4033 4034,name4034,20,job4034 4035,name4035,20,job4035 4036,name4036,20,job4036 4037,name4037,20,job4037 4038,name4038,20,job4038 4039,name4039,20,job4039 4040,name4040,20,job4040 4041,name4041,20,job4041 4042,name4042,20,job4042 4043,name4043,20,job4043 4044,name4044,20,job4044 4045,name4045,20,job4045 4046,name4046,20,job4046 4047,name4047,20,job4047 4048,name4048,20,job4048 4049,name4049,20,job4049 4050,name4050,20,job4050 4051,name4051,20,job4051 4052,name4052,20,job4052 4053,name4053,20,job4053 4054,name4054,20,job4054 4055,name4055,20,job4055 4056,name4056,20,job4056 4057,name4057,20,job4057 4058,name4058,20,job4058 4059,name4059,20,job4059 4060,name4060,20,job4060 4061,name4061,20,job4061 4062,name4062,20,job4062 4063,name4063,20,job4063 4064,name4064,20,job4064 4065,name4065,20,job4065 4066,name4066,20,job4066 4067,name4067,20,job4067 4068,name4068,20,job4068 4069,name4069,20,job4069 4070,name4070,20,job4070 4071,name4071,20,job4071 4072,name4072,20,job4072 4073,name4073,20,job4073 4074,name4074,20,job4074 4075,name4075,20,job4075 4076,name4076,20,job4076 4077,name4077,20,job4077 4078,name4078,20,job4078 4079,name4079,20,job4079 4080,name4080,20,job4080 4081,name4081,20,job4081 4082,name4082,20,job4082 4083,name4083,20,job4083 4084,name4084,20,job4084 4085,name4085,20,job4085 4086,name4086,20,job4086 4087,name4087,20,job4087 4088,name4088,20,job4088 4089,name4089,20,job4089 4090,name4090,20,job4090 4091,name4091,20,job4091 4092,name4092,20,job4092 4093,name4093,20,job4093 4094,name4094,20,job4094 4095,name4095,20,job4095 4096,name4096,20,job4096 4097,name4097,20,job4097 4098,name4098,20,job4098 4099,name4099,20,job4099 4100,name4100,20,job4100 4101,name4101,20,job4101 4102,name4102,20,job4102 4103,name4103,20,job4103 4104,name4104,20,job4104 4105,name4105,20,job4105 4106,name4106,20,job4106 4107,name4107,20,job4107 4108,name4108,20,job4108 4109,name4109,20,job4109 4110,name4110,20,job4110 4111,name4111,20,job4111 4112,name4112,20,job4112 4113,name4113,20,job4113 4114,name4114,20,job4114 4115,name4115,20,job4115 4116,name4116,20,job4116 4117,name4117,20,job4117 4118,name4118,20,job4118 4119,name4119,20,job4119 4120,name4120,20,job4120 4121,name4121,20,job4121 4122,name4122,20,job4122 4123,name4123,20,job4123 4124,name4124,20,job4124 4125,name4125,20,job4125 4126,name4126,20,job4126 4127,name4127,20,job4127 4128,name4128,20,job4128 4129,name4129,20,job4129 4130,name4130,20,job4130 4131,name4131,20,job4131 4132,name4132,20,job4132 4133,name4133,20,job4133 4134,name4134,20,job4134 4135,name4135,20,job4135 4136,name4136,20,job4136 4137,name4137,20,job4137 4138,name4138,20,job4138 4139,name4139,20,job4139 4140,name4140,20,job4140 4141,name4141,20,job4141 4142,name4142,20,job4142 4143,name4143,20,job4143 4144,name4144,20,job4144 4145,name4145,20,job4145 4146,name4146,20,job4146 4147,name4147,20,job4147 4148,name4148,20,job4148 4149,name4149,20,job4149 4150,name4150,20,job4150 4151,name4151,20,job4151 4152,name4152,20,job4152 4153,name4153,20,job4153 4154,name4154,20,job4154 4155,name4155,20,job4155 4156,name4156,20,job4156 4157,name4157,20,job4157 4158,name4158,20,job4158 4159,name4159,20,job4159 4160,name4160,20,job4160 4161,name4161,20,job4161 4162,name4162,20,job4162 4163,name4163,20,job4163 4164,name4164,20,job4164 4165,name4165,20,job4165 4166,name4166,20,job4166 4167,name4167,20,job4167 4168,name4168,20,job4168 4169,name4169,20,job4169 4170,name4170,20,job4170 4171,name4171,20,job4171 4172,name4172,20,job4172 4173,name4173,20,job4173 4174,name4174,20,job4174 4175,name4175,20,job4175 4176,name4176,20,job4176 4177,name4177,20,job4177 4178,name4178,20,job4178 4179,name4179,20,job4179 4180,name4180,20,job4180 4181,name4181,20,job4181 4182,name4182,20,job4182 4183,name4183,20,job4183 4184,name4184,20,job4184 4185,name4185,20,job4185 4186,name4186,20,job4186 4187,name4187,20,job4187 4188,name4188,20,job4188 4189,name4189,20,job4189 4190,name4190,20,job4190 4191,name4191,20,job4191 4192,name4192,20,job4192 4193,name4193,20,job4193 4194,name4194,20,job4194 4195,name4195,20,job4195 4196,name4196,20,job4196 4197,name4197,20,job4197 4198,name4198,20,job4198 4199,name4199,20,job4199 4200,name4200,20,job4200 4201,name4201,20,job4201 4202,name4202,20,job4202 4203,name4203,20,job4203 4204,name4204,20,job4204 4205,name4205,20,job4205 4206,name4206,20,job4206 4207,name4207,20,job4207 4208,name4208,20,job4208 4209,name4209,20,job4209 4210,name4210,20,job4210 4211,name4211,20,job4211 4212,name4212,20,job4212 4213,name4213,20,job4213 4214,name4214,20,job4214 4215,name4215,20,job4215 4216,name4216,20,job4216 4217,name4217,20,job4217 4218,name4218,20,job4218 4219,name4219,20,job4219 4220,name4220,20,job4220 4221,name4221,20,job4221 4222,name4222,20,job4222 4223,name4223,20,job4223 4224,name4224,20,job4224 4225,name4225,20,job4225 4226,name4226,20,job4226 4227,name4227,20,job4227 4228,name4228,20,job4228 4229,name4229,20,job4229 4230,name4230,20,job4230 4231,name4231,20,job4231 4232,name4232,20,job4232 4233,name4233,20,job4233 4234,name4234,20,job4234 4235,name4235,20,job4235 4236,name4236,20,job4236 4237,name4237,20,job4237 4238,name4238,20,job4238 4239,name4239,20,job4239 4240,name4240,20,job4240 4241,name4241,20,job4241 4242,name4242,20,job4242 4243,name4243,20,job4243 4244,name4244,20,job4244 4245,name4245,20,job4245 4246,name4246,20,job4246 4247,name4247,20,job4247 4248,name4248,20,job4248 4249,name4249,20,job4249 4250,name4250,20,job4250 4251,name4251,20,job4251 4252,name4252,20,job4252 4253,name4253,20,job4253 4254,name4254,20,job4254 4255,name4255,20,job4255 4256,name4256,20,job4256 4257,name4257,20,job4257 4258,name4258,20,job4258 4259,name4259,20,job4259 4260,name4260,20,job4260 4261,name4261,20,job4261 4262,name4262,20,job4262 4263,name4263,20,job4263 4264,name4264,20,job4264 4265,name4265,20,job4265 4266,name4266,20,job4266 4267,name4267,20,job4267 4268,name4268,20,job4268 4269,name4269,20,job4269 4270,name4270,20,job4270 4271,name4271,20,job4271 4272,name4272,20,job4272 4273,name4273,20,job4273 4274,name4274,20,job4274 4275,name4275,20,job4275 4276,name4276,20,job4276 4277,name4277,20,job4277 4278,name4278,20,job4278 4279,name4279,20,job4279 4280,name4280,20,job4280 4281,name4281,20,job4281 4282,name4282,20,job4282 4283,name4283,20,job4283 4284,name4284,20,job4284 4285,name4285,20,job4285 4286,name4286,20,job4286 4287,name4287,20,job4287 4288,name4288,20,job4288 4289,name4289,20,job4289 4290,name4290,20,job4290 4291,name4291,20,job4291 4292,name4292,20,job4292 4293,name4293,20,job4293 4294,name4294,20,job4294 4295,name4295,20,job4295 4296,name4296,20,job4296 4297,name4297,20,job4297 4298,name4298,20,job4298 4299,name4299,20,job4299 4300,name4300,20,job4300 4301,name4301,20,job4301 4302,name4302,20,job4302 4303,name4303,20,job4303 4304,name4304,20,job4304 4305,name4305,20,job4305 4306,name4306,20,job4306 4307,name4307,20,job4307 4308,name4308,20,job4308 4309,name4309,20,job4309 4310,name4310,20,job4310 4311,name4311,20,job4311 4312,name4312,20,job4312 4313,name4313,20,job4313 4314,name4314,20,job4314 4315,name4315,20,job4315 4316,name4316,20,job4316 4317,name4317,20,job4317 4318,name4318,20,job4318 4319,name4319,20,job4319 4320,name4320,20,job4320 4321,name4321,20,job4321 4322,name4322,20,job4322 4323,name4323,20,job4323 4324,name4324,20,job4324 4325,name4325,20,job4325 4326,name4326,20,job4326 4327,name4327,20,job4327 4328,name4328,20,job4328 4329,name4329,20,job4329 4330,name4330,20,job4330 4331,name4331,20,job4331 4332,name4332,20,job4332 4333,name4333,20,job4333 4334,name4334,20,job4334 4335,name4335,20,job4335 4336,name4336,20,job4336 4337,name4337,20,job4337 4338,name4338,20,job4338 4339,name4339,20,job4339 4340,name4340,20,job4340 4341,name4341,20,job4341 4342,name4342,20,job4342 4343,name4343,20,job4343 4344,name4344,20,job4344 4345,name4345,20,job4345 4346,name4346,20,job4346 4347,name4347,20,job4347 4348,name4348,20,job4348 4349,name4349,20,job4349 4350,name4350,20,job4350 4351,name4351,20,job4351 4352,name4352,20,job4352 4353,name4353,20,job4353 4354,name4354,20,job4354 4355,name4355,20,job4355 4356,name4356,20,job4356 4357,name4357,20,job4357 4358,name4358,20,job4358 4359,name4359,20,job4359 4360,name4360,20,job4360 4361,name4361,20,job4361 4362,name4362,20,job4362 4363,name4363,20,job4363 4364,name4364,20,job4364 4365,name4365,20,job4365 4366,name4366,20,job4366 4367,name4367,20,job4367 4368,name4368,20,job4368 4369,name4369,20,job4369 4370,name4370,20,job4370 4371,name4371,20,job4371 4372,name4372,20,job4372 4373,name4373,20,job4373 4374,name4374,20,job4374 4375,name4375,20,job4375 4376,name4376,20,job4376 4377,name4377,20,job4377 4378,name4378,20,job4378 4379,name4379,20,job4379 4380,name4380,20,job4380 4381,name4381,20,job4381 4382,name4382,20,job4382 4383,name4383,20,job4383 4384,name4384,20,job4384 4385,name4385,20,job4385 4386,name4386,20,job4386 4387,name4387,20,job4387 4388,name4388,20,job4388 4389,name4389,20,job4389 4390,name4390,20,job4390 4391,name4391,20,job4391 4392,name4392,20,job4392 4393,name4393,20,job4393 4394,name4394,20,job4394 4395,name4395,20,job4395 4396,name4396,20,job4396 4397,name4397,20,job4397 4398,name4398,20,job4398 4399,name4399,20,job4399 4400,name4400,20,job4400 4401,name4401,20,job4401 4402,name4402,20,job4402 4403,name4403,20,job4403 4404,name4404,20,job4404 4405,name4405,20,job4405 4406,name4406,20,job4406 4407,name4407,20,job4407 4408,name4408,20,job4408 4409,name4409,20,job4409 4410,name4410,20,job4410 4411,name4411,20,job4411 4412,name4412,20,job4412 4413,name4413,20,job4413 4414,name4414,20,job4414 4415,name4415,20,job4415 4416,name4416,20,job4416 4417,name4417,20,job4417 4418,name4418,20,job4418 4419,name4419,20,job4419 4420,name4420,20,job4420 4421,name4421,20,job4421 4422,name4422,20,job4422 4423,name4423,20,job4423 4424,name4424,20,job4424 4425,name4425,20,job4425 4426,name4426,20,job4426 4427,name4427,20,job4427 4428,name4428,20,job4428 4429,name4429,20,job4429 4430,name4430,20,job4430 4431,name4431,20,job4431 4432,name4432,20,job4432 4433,name4433,20,job4433 4434,name4434,20,job4434 4435,name4435,20,job4435 4436,name4436,20,job4436 4437,name4437,20,job4437 4438,name4438,20,job4438 4439,name4439,20,job4439 4440,name4440,20,job4440 4441,name4441,20,job4441 4442,name4442,20,job4442 4443,name4443,20,job4443 4444,name4444,20,job4444 4445,name4445,20,job4445 4446,name4446,20,job4446 4447,name4447,20,job4447 4448,name4448,20,job4448 4449,name4449,20,job4449 4450,name4450,20,job4450 4451,name4451,20,job4451 4452,name4452,20,job4452 4453,name4453,20,job4453 4454,name4454,20,job4454 4455,name4455,20,job4455 4456,name4456,20,job4456 4457,name4457,20,job4457 4458,name4458,20,job4458 4459,name4459,20,job4459 4460,name4460,20,job4460 4461,name4461,20,job4461 4462,name4462,20,job4462 4463,name4463,20,job4463 4464,name4464,20,job4464 4465,name4465,20,job4465 4466,name4466,20,job4466 4467,name4467,20,job4467 4468,name4468,20,job4468 4469,name4469,20,job4469 4470,name4470,20,job4470 4471,name4471,20,job4471 4472,name4472,20,job4472 4473,name4473,20,job4473 4474,name4474,20,job4474 4475,name4475,20,job4475 4476,name4476,20,job4476 4477,name4477,20,job4477 4478,name4478,20,job4478 4479,name4479,20,job4479 4480,name4480,20,job4480 4481,name4481,20,job4481 4482,name4482,20,job4482 4483,name4483,20,job4483 4484,name4484,20,job4484 4485,name4485,20,job4485 4486,name4486,20,job4486 4487,name4487,20,job4487 4488,name4488,20,job4488 4489,name4489,20,job4489 4490,name4490,20,job4490 4491,name4491,20,job4491 4492,name4492,20,job4492 4493,name4493,20,job4493 4494,name4494,20,job4494 4495,name4495,20,job4495 4496,name4496,20,job4496 4497,name4497,20,job4497 4498,name4498,20,job4498 4499,name4499,20,job4499 4500,name4500,20,job4500 4501,name4501,20,job4501 4502,name4502,20,job4502 4503,name4503,20,job4503 4504,name4504,20,job4504 4505,name4505,20,job4505 4506,name4506,20,job4506 4507,name4507,20,job4507 4508,name4508,20,job4508 4509,name4509,20,job4509 4510,name4510,20,job4510 4511,name4511,20,job4511 4512,name4512,20,job4512 4513,name4513,20,job4513 4514,name4514,20,job4514 4515,name4515,20,job4515 4516,name4516,20,job4516 4517,name4517,20,job4517 4518,name4518,20,job4518 4519,name4519,20,job4519 4520,name4520,20,job4520 4521,name4521,20,job4521 4522,name4522,20,job4522 4523,name4523,20,job4523 4524,name4524,20,job4524 4525,name4525,20,job4525 4526,name4526,20,job4526 4527,name4527,20,job4527 4528,name4528,20,job4528 4529,name4529,20,job4529 4530,name4530,20,job4530 4531,name4531,20,job4531 4532,name4532,20,job4532 4533,name4533,20,job4533 4534,name4534,20,job4534 4535,name4535,20,job4535 4536,name4536,20,job4536 4537,name4537,20,job4537 4538,name4538,20,job4538 4539,name4539,20,job4539 4540,name4540,20,job4540 4541,name4541,20,job4541 4542,name4542,20,job4542 4543,name4543,20,job4543 4544,name4544,20,job4544 4545,name4545,20,job4545 4546,name4546,20,job4546 4547,name4547,20,job4547 4548,name4548,20,job4548 4549,name4549,20,job4549 4550,name4550,20,job4550 4551,name4551,20,job4551 4552,name4552,20,job4552 4553,name4553,20,job4553 4554,name4554,20,job4554 4555,name4555,20,job4555 4556,name4556,20,job4556 4557,name4557,20,job4557 4558,name4558,20,job4558 4559,name4559,20,job4559 4560,name4560,20,job4560 4561,name4561,20,job4561 4562,name4562,20,job4562 4563,name4563,20,job4563 4564,name4564,20,job4564 4565,name4565,20,job4565 4566,name4566,20,job4566 4567,name4567,20,job4567 4568,name4568,20,job4568 4569,name4569,20,job4569 4570,name4570,20,job4570 4571,name4571,20,job4571 4572,name4572,20,job4572 4573,name4573,20,job4573 4574,name4574,20,job4574 4575,name4575,20,job4575 4576,name4576,20,job4576 4577,name4577,20,job4577 4578,name4578,20,job4578 4579,name4579,20,job4579 4580,name4580,20,job4580 4581,name4581,20,job4581 4582,name4582,20,job4582 4583,name4583,20,job4583 4584,name4584,20,job4584 4585,name4585,20,job4585 4586,name4586,20,job4586 4587,name4587,20,job4587 4588,name4588,20,job4588 4589,name4589,20,job4589 4590,name4590,20,job4590 4591,name4591,20,job4591 4592,name4592,20,job4592 4593,name4593,20,job4593 4594,name4594,20,job4594 4595,name4595,20,job4595 4596,name4596,20,job4596 4597,name4597,20,job4597 4598,name4598,20,job4598 4599,name4599,20,job4599 4600,name4600,20,job4600 4601,name4601,20,job4601 4602,name4602,20,job4602 4603,name4603,20,job4603 4604,name4604,20,job4604 4605,name4605,20,job4605 4606,name4606,20,job4606 4607,name4607,20,job4607 4608,name4608,20,job4608 4609,name4609,20,job4609 4610,name4610,20,job4610 4611,name4611,20,job4611 4612,name4612,20,job4612 4613,name4613,20,job4613 4614,name4614,20,job4614 4615,name4615,20,job4615 4616,name4616,20,job4616 4617,name4617,20,job4617 4618,name4618,20,job4618 4619,name4619,20,job4619 4620,name4620,20,job4620 4621,name4621,20,job4621 4622,name4622,20,job4622 4623,name4623,20,job4623 4624,name4624,20,job4624 4625,name4625,20,job4625 4626,name4626,20,job4626 4627,name4627,20,job4627 4628,name4628,20,job4628 4629,name4629,20,job4629 4630,name4630,20,job4630 4631,name4631,20,job4631 4632,name4632,20,job4632 4633,name4633,20,job4633 4634,name4634,20,job4634 4635,name4635,20,job4635 4636,name4636,20,job4636 4637,name4637,20,job4637 4638,name4638,20,job4638 4639,name4639,20,job4639 4640,name4640,20,job4640 4641,name4641,20,job4641 4642,name4642,20,job4642 4643,name4643,20,job4643 4644,name4644,20,job4644 4645,name4645,20,job4645 4646,name4646,20,job4646 4647,name4647,20,job4647 4648,name4648,20,job4648 4649,name4649,20,job4649 4650,name4650,20,job4650 4651,name4651,20,job4651 4652,name4652,20,job4652 4653,name4653,20,job4653 4654,name4654,20,job4654 4655,name4655,20,job4655 4656,name4656,20,job4656 4657,name4657,20,job4657 4658,name4658,20,job4658 4659,name4659,20,job4659 4660,name4660,20,job4660 4661,name4661,20,job4661 4662,name4662,20,job4662 4663,name4663,20,job4663 4664,name4664,20,job4664 4665,name4665,20,job4665 4666,name4666,20,job4666 4667,name4667,20,job4667 4668,name4668,20,job4668 4669,name4669,20,job4669 4670,name4670,20,job4670 4671,name4671,20,job4671 4672,name4672,20,job4672 4673,name4673,20,job4673 4674,name4674,20,job4674 4675,name4675,20,job4675 4676,name4676,20,job4676 4677,name4677,20,job4677 4678,name4678,20,job4678 4679,name4679,20,job4679 4680,name4680,20,job4680 4681,name4681,20,job4681 4682,name4682,20,job4682 4683,name4683,20,job4683 4684,name4684,20,job4684 4685,name4685,20,job4685 4686,name4686,20,job4686 4687,name4687,20,job4687 4688,name4688,20,job4688 4689,name4689,20,job4689 4690,name4690,20,job4690 4691,name4691,20,job4691 4692,name4692,20,job4692 4693,name4693,20,job4693 4694,name4694,20,job4694 4695,name4695,20,job4695 4696,name4696,20,job4696 4697,name4697,20,job4697 4698,name4698,20,job4698 4699,name4699,20,job4699 4700,name4700,20,job4700 4701,name4701,20,job4701 4702,name4702,20,job4702 4703,name4703,20,job4703 4704,name4704,20,job4704 4705,name4705,20,job4705 4706,name4706,20,job4706 4707,name4707,20,job4707 4708,name4708,20,job4708 4709,name4709,20,job4709 4710,name4710,20,job4710 4711,name4711,20,job4711 4712,name4712,20,job4712 4713,name4713,20,job4713 4714,name4714,20,job4714 4715,name4715,20,job4715 4716,name4716,20,job4716 4717,name4717,20,job4717 4718,name4718,20,job4718 4719,name4719,20,job4719 4720,name4720,20,job4720 4721,name4721,20,job4721 4722,name4722,20,job4722 4723,name4723,20,job4723 4724,name4724,20,job4724 4725,name4725,20,job4725 4726,name4726,20,job4726 4727,name4727,20,job4727 4728,name4728,20,job4728 4729,name4729,20,job4729 4730,name4730,20,job4730 4731,name4731,20,job4731 4732,name4732,20,job4732 4733,name4733,20,job4733 4734,name4734,20,job4734 4735,name4735,20,job4735 4736,name4736,20,job4736 4737,name4737,20,job4737 4738,name4738,20,job4738 4739,name4739,20,job4739 4740,name4740,20,job4740 4741,name4741,20,job4741 4742,name4742,20,job4742 4743,name4743,20,job4743 4744,name4744,20,job4744 4745,name4745,20,job4745 4746,name4746,20,job4746 4747,name4747,20,job4747 4748,name4748,20,job4748 4749,name4749,20,job4749 4750,name4750,20,job4750 4751,name4751,20,job4751 4752,name4752,20,job4752 4753,name4753,20,job4753 4754,name4754,20,job4754 4755,name4755,20,job4755 4756,name4756,20,job4756 4757,name4757,20,job4757 4758,name4758,20,job4758 4759,name4759,20,job4759 4760,name4760,20,job4760 4761,name4761,20,job4761 4762,name4762,20,job4762 4763,name4763,20,job4763 4764,name4764,20,job4764 4765,name4765,20,job4765 4766,name4766,20,job4766 4767,name4767,20,job4767 4768,name4768,20,job4768 4769,name4769,20,job4769 4770,name4770,20,job4770 4771,name4771,20,job4771 4772,name4772,20,job4772 4773,name4773,20,job4773 4774,name4774,20,job4774 4775,name4775,20,job4775 4776,name4776,20,job4776 4777,name4777,20,job4777 4778,name4778,20,job4778 4779,name4779,20,job4779 4780,name4780,20,job4780 4781,name4781,20,job4781 4782,name4782,20,job4782 4783,name4783,20,job4783 4784,name4784,20,job4784 4785,name4785,20,job4785 4786,name4786,20,job4786 4787,name4787,20,job4787 4788,name4788,20,job4788 4789,name4789,20,job4789 4790,name4790,20,job4790 4791,name4791,20,job4791 4792,name4792,20,job4792 4793,name4793,20,job4793 4794,name4794,20,job4794 4795,name4795,20,job4795 4796,name4796,20,job4796 4797,name4797,20,job4797 4798,name4798,20,job4798 4799,name4799,20,job4799 4800,name4800,20,job4800 4801,name4801,20,job4801 4802,name4802,20,job4802 4803,name4803,20,job4803 4804,name4804,20,job4804 4805,name4805,20,job4805 4806,name4806,20,job4806 4807,name4807,20,job4807 4808,name4808,20,job4808 4809,name4809,20,job4809 4810,name4810,20,job4810 4811,name4811,20,job4811 4812,name4812,20,job4812 4813,name4813,20,job4813 4814,name4814,20,job4814 4815,name4815,20,job4815 4816,name4816,20,job4816 4817,name4817,20,job4817 4818,name4818,20,job4818 4819,name4819,20,job4819 4820,name4820,20,job4820 4821,name4821,20,job4821 4822,name4822,20,job4822 4823,name4823,20,job4823 4824,name4824,20,job4824 4825,name4825,20,job4825 4826,name4826,20,job4826 4827,name4827,20,job4827 4828,name4828,20,job4828 4829,name4829,20,job4829 4830,name4830,20,job4830 4831,name4831,20,job4831 4832,name4832,20,job4832 4833,name4833,20,job4833 4834,name4834,20,job4834 4835,name4835,20,job4835 4836,name4836,20,job4836 4837,name4837,20,job4837 4838,name4838,20,job4838 4839,name4839,20,job4839 4840,name4840,20,job4840 4841,name4841,20,job4841 4842,name4842,20,job4842 4843,name4843,20,job4843 4844,name4844,20,job4844 4845,name4845,20,job4845 4846,name4846,20,job4846 4847,name4847,20,job4847 4848,name4848,20,job4848 4849,name4849,20,job4849 4850,name4850,20,job4850 4851,name4851,20,job4851 4852,name4852,20,job4852 4853,name4853,20,job4853 4854,name4854,20,job4854 4855,name4855,20,job4855 4856,name4856,20,job4856 4857,name4857,20,job4857 4858,name4858,20,job4858 4859,name4859,20,job4859 4860,name4860,20,job4860 4861,name4861,20,job4861 4862,name4862,20,job4862 4863,name4863,20,job4863 4864,name4864,20,job4864 4865,name4865,20,job4865 4866,name4866,20,job4866 4867,name4867,20,job4867 4868,name4868,20,job4868 4869,name4869,20,job4869 4870,name4870,20,job4870 4871,name4871,20,job4871 4872,name4872,20,job4872 4873,name4873,20,job4873 4874,name4874,20,job4874 4875,name4875,20,job4875 4876,name4876,20,job4876 4877,name4877,20,job4877 4878,name4878,20,job4878 4879,name4879,20,job4879 4880,name4880,20,job4880 4881,name4881,20,job4881 4882,name4882,20,job4882 4883,name4883,20,job4883 4884,name4884,20,job4884 4885,name4885,20,job4885 4886,name4886,20,job4886 4887,name4887,20,job4887 4888,name4888,20,job4888 4889,name4889,20,job4889 4890,name4890,20,job4890 4891,name4891,20,job4891 4892,name4892,20,job4892 4893,name4893,20,job4893 4894,name4894,20,job4894 4895,name4895,20,job4895 4896,name4896,20,job4896 4897,name4897,20,job4897 4898,name4898,20,job4898 4899,name4899,20,job4899 4900,name4900,20,job4900 4901,name4901,20,job4901 4902,name4902,20,job4902 4903,name4903,20,job4903 4904,name4904,20,job4904 4905,name4905,20,job4905 4906,name4906,20,job4906 4907,name4907,20,job4907 4908,name4908,20,job4908 4909,name4909,20,job4909 4910,name4910,20,job4910 4911,name4911,20,job4911 4912,name4912,20,job4912 4913,name4913,20,job4913 4914,name4914,20,job4914 4915,name4915,20,job4915 4916,name4916,20,job4916 4917,name4917,20,job4917 4918,name4918,20,job4918 4919,name4919,20,job4919 4920,name4920,20,job4920 4921,name4921,20,job4921 4922,name4922,20,job4922 4923,name4923,20,job4923 4924,name4924,20,job4924 4925,name4925,20,job4925 4926,name4926,20,job4926 4927,name4927,20,job4927 4928,name4928,20,job4928 4929,name4929,20,job4929 4930,name4930,20,job4930 4931,name4931,20,job4931 4932,name4932,20,job4932 4933,name4933,20,job4933 4934,name4934,20,job4934 4935,name4935,20,job4935 4936,name4936,20,job4936 4937,name4937,20,job4937 4938,name4938,20,job4938 4939,name4939,20,job4939 4940,name4940,20,job4940 4941,name4941,20,job4941 4942,name4942,20,job4942 4943,name4943,20,job4943 4944,name4944,20,job4944 4945,name4945,20,job4945 4946,name4946,20,job4946 4947,name4947,20,job4947 4948,name4948,20,job4948 4949,name4949,20,job4949 4950,name4950,20,job4950 4951,name4951,20,job4951 4952,name4952,20,job4952 4953,name4953,20,job4953 4954,name4954,20,job4954 4955,name4955,20,job4955 4956,name4956,20,job4956 4957,name4957,20,job4957 4958,name4958,20,job4958 4959,name4959,20,job4959 4960,name4960,20,job4960 4961,name4961,20,job4961 4962,name4962,20,job4962 4963,name4963,20,job4963 4964,name4964,20,job4964 4965,name4965,20,job4965 4966,name4966,20,job4966 4967,name4967,20,job4967 4968,name4968,20,job4968 4969,name4969,20,job4969 4970,name4970,20,job4970 4971,name4971,20,job4971 4972,name4972,20,job4972 4973,name4973,20,job4973 4974,name4974,20,job4974 4975,name4975,20,job4975 4976,name4976,20,job4976 4977,name4977,20,job4977 4978,name4978,20,job4978 4979,name4979,20,job4979 4980,name4980,20,job4980 4981,name4981,20,job4981 4982,name4982,20,job4982 4983,name4983,20,job4983 4984,name4984,20,job4984 4985,name4985,20,job4985 4986,name4986,20,job4986 4987,name4987,20,job4987 4988,name4988,20,job4988 4989,name4989,20,job4989 4990,name4990,20,job4990 4991,name4991,20,job4991 4992,name4992,20,job4992 4993,name4993,20,job4993 4994,name4994,20,job4994 4995,name4995,20,job4995 4996,name4996,20,job4996 4997,name4997,20,job4997 4998,name4998,20,job4998 4999,name4999,20,job4999 5000,name5000,20,job5000 5001,name5001,20,job5001 5002,name5002,20,job5002 5003,name5003,20,job5003 5004,name5004,20,job5004 5005,name5005,20,job5005 5006,name5006,20,job5006 5007,name5007,20,job5007 5008,name5008,20,job5008 5009,name5009,20,job5009 5010,name5010,20,job5010 5011,name5011,20,job5011 5012,name5012,20,job5012 5013,name5013,20,job5013 5014,name5014,20,job5014 5015,name5015,20,job5015 5016,name5016,20,job5016 5017,name5017,20,job5017 5018,name5018,20,job5018 5019,name5019,20,job5019 5020,name5020,20,job5020 5021,name5021,20,job5021 5022,name5022,20,job5022 5023,name5023,20,job5023 5024,name5024,20,job5024 5025,name5025,20,job5025 5026,name5026,20,job5026 5027,name5027,20,job5027 5028,name5028,20,job5028 5029,name5029,20,job5029 5030,name5030,20,job5030 5031,name5031,20,job5031 5032,name5032,20,job5032 5033,name5033,20,job5033 5034,name5034,20,job5034 5035,name5035,20,job5035 5036,name5036,20,job5036 5037,name5037,20,job5037 5038,name5038,20,job5038 5039,name5039,20,job5039 5040,name5040,20,job5040 5041,name5041,20,job5041 5042,name5042,20,job5042 5043,name5043,20,job5043 5044,name5044,20,job5044 5045,name5045,20,job5045 5046,name5046,20,job5046 5047,name5047,20,job5047 5048,name5048,20,job5048 5049,name5049,20,job5049 5050,name5050,20,job5050 5051,name5051,20,job5051 5052,name5052,20,job5052 5053,name5053,20,job5053 5054,name5054,20,job5054 5055,name5055,20,job5055 5056,name5056,20,job5056 5057,name5057,20,job5057 5058,name5058,20,job5058 5059,name5059,20,job5059 5060,name5060,20,job5060 5061,name5061,20,job5061 5062,name5062,20,job5062 5063,name5063,20,job5063 5064,name5064,20,job5064 5065,name5065,20,job5065 5066,name5066,20,job5066 5067,name5067,20,job5067 5068,name5068,20,job5068 5069,name5069,20,job5069 5070,name5070,20,job5070 5071,name5071,20,job5071 5072,name5072,20,job5072 5073,name5073,20,job5073 5074,name5074,20,job5074 5075,name5075,20,job5075 5076,name5076,20,job5076 5077,name5077,20,job5077 5078,name5078,20,job5078 5079,name5079,20,job5079 5080,name5080,20,job5080 5081,name5081,20,job5081 5082,name5082,20,job5082 5083,name5083,20,job5083 5084,name5084,20,job5084 5085,name5085,20,job5085 5086,name5086,20,job5086 5087,name5087,20,job5087 5088,name5088,20,job5088 5089,name5089,20,job5089 5090,name5090,20,job5090 5091,name5091,20,job5091 5092,name5092,20,job5092 5093,name5093,20,job5093 5094,name5094,20,job5094 5095,name5095,20,job5095 5096,name5096,20,job5096 5097,name5097,20,job5097 5098,name5098,20,job5098 5099,name5099,20,job5099 5100,name5100,20,job5100 5101,name5101,20,job5101 5102,name5102,20,job5102 5103,name5103,20,job5103 5104,name5104,20,job5104 5105,name5105,20,job5105 5106,name5106,20,job5106 5107,name5107,20,job5107 5108,name5108,20,job5108 5109,name5109,20,job5109 5110,name5110,20,job5110 5111,name5111,20,job5111 5112,name5112,20,job5112 5113,name5113,20,job5113 5114,name5114,20,job5114 5115,name5115,20,job5115 5116,name5116,20,job5116 5117,name5117,20,job5117 5118,name5118,20,job5118 5119,name5119,20,job5119 5120,name5120,20,job5120 5121,name5121,20,job5121 5122,name5122,20,job5122 5123,name5123,20,job5123 5124,name5124,20,job5124 5125,name5125,20,job5125 5126,name5126,20,job5126 5127,name5127,20,job5127 5128,name5128,20,job5128 5129,name5129,20,job5129 5130,name5130,20,job5130 5131,name5131,20,job5131 5132,name5132,20,job5132 5133,name5133,20,job5133 5134,name5134,20,job5134 5135,name5135,20,job5135 5136,name5136,20,job5136 5137,name5137,20,job5137 5138,name5138,20,job5138 5139,name5139,20,job5139 5140,name5140,20,job5140 5141,name5141,20,job5141 5142,name5142,20,job5142 5143,name5143,20,job5143 5144,name5144,20,job5144 5145,name5145,20,job5145 5146,name5146,20,job5146 5147,name5147,20,job5147 5148,name5148,20,job5148 5149,name5149,20,job5149 5150,name5150,20,job5150 5151,name5151,20,job5151 5152,name5152,20,job5152 5153,name5153,20,job5153 5154,name5154,20,job5154 5155,name5155,20,job5155 5156,name5156,20,job5156 5157,name5157,20,job5157 5158,name5158,20,job5158 5159,name5159,20,job5159 5160,name5160,20,job5160 5161,name5161,20,job5161 5162,name5162,20,job5162 5163,name5163,20,job5163 5164,name5164,20,job5164 5165,name5165,20,job5165 5166,name5166,20,job5166 5167,name5167,20,job5167 5168,name5168,20,job5168 5169,name5169,20,job5169 5170,name5170,20,job5170 5171,name5171,20,job5171 5172,name5172,20,job5172 5173,name5173,20,job5173 5174,name5174,20,job5174 5175,name5175,20,job5175 5176,name5176,20,job5176 5177,name5177,20,job5177 5178,name5178,20,job5178 5179,name5179,20,job5179 5180,name5180,20,job5180 5181,name5181,20,job5181 5182,name5182,20,job5182 5183,name5183,20,job5183 5184,name5184,20,job5184 5185,name5185,20,job5185 5186,name5186,20,job5186 5187,name5187,20,job5187 5188,name5188,20,job5188 5189,name5189,20,job5189 5190,name5190,20,job5190 5191,name5191,20,job5191 5192,name5192,20,job5192 5193,name5193,20,job5193 5194,name5194,20,job5194 5195,name5195,20,job5195 5196,name5196,20,job5196 5197,name5197,20,job5197 5198,name5198,20,job5198 5199,name5199,20,job5199 5200,name5200,20,job5200 5201,name5201,20,job5201 5202,name5202,20,job5202 5203,name5203,20,job5203 5204,name5204,20,job5204 5205,name5205,20,job5205 5206,name5206,20,job5206 5207,name5207,20,job5207 5208,name5208,20,job5208 5209,name5209,20,job5209 5210,name5210,20,job5210 5211,name5211,20,job5211 5212,name5212,20,job5212 5213,name5213,20,job5213 5214,name5214,20,job5214 5215,name5215,20,job5215 5216,name5216,20,job5216 5217,name5217,20,job5217 5218,name5218,20,job5218 5219,name5219,20,job5219 5220,name5220,20,job5220 5221,name5221,20,job5221 5222,name5222,20,job5222 5223,name5223,20,job5223 5224,name5224,20,job5224 5225,name5225,20,job5225 5226,name5226,20,job5226 5227,name5227,20,job5227 5228,name5228,20,job5228 5229,name5229,20,job5229 5230,name5230,20,job5230 5231,name5231,20,job5231 5232,name5232,20,job5232 5233,name5233,20,job5233 5234,name5234,20,job5234 5235,name5235,20,job5235 5236,name5236,20,job5236 5237,name5237,20,job5237 5238,name5238,20,job5238 5239,name5239,20,job5239 5240,name5240,20,job5240 5241,name5241,20,job5241 5242,name5242,20,job5242 5243,name5243,20,job5243 5244,name5244,20,job5244 5245,name5245,20,job5245 5246,name5246,20,job5246 5247,name5247,20,job5247 5248,name5248,20,job5248 5249,name5249,20,job5249 5250,name5250,20,job5250 5251,name5251,20,job5251 5252,name5252,20,job5252 5253,name5253,20,job5253 5254,name5254,20,job5254 5255,name5255,20,job5255 5256,name5256,20,job5256 5257,name5257,20,job5257 5258,name5258,20,job5258 5259,name5259,20,job5259 5260,name5260,20,job5260 5261,name5261,20,job5261 5262,name5262,20,job5262 5263,name5263,20,job5263 5264,name5264,20,job5264 5265,name5265,20,job5265 5266,name5266,20,job5266 5267,name5267,20,job5267 5268,name5268,20,job5268 5269,name5269,20,job5269 5270,name5270,20,job5270 5271,name5271,20,job5271 5272,name5272,20,job5272 5273,name5273,20,job5273 5274,name5274,20,job5274 5275,name5275,20,job5275 5276,name5276,20,job5276 5277,name5277,20,job5277 5278,name5278,20,job5278 5279,name5279,20,job5279 5280,name5280,20,job5280 5281,name5281,20,job5281 5282,name5282,20,job5282 5283,name5283,20,job5283 5284,name5284,20,job5284 5285,name5285,20,job5285 5286,name5286,20,job5286 5287,name5287,20,job5287 5288,name5288,20,job5288 5289,name5289,20,job5289 5290,name5290,20,job5290 5291,name5291,20,job5291 5292,name5292,20,job5292 5293,name5293,20,job5293 5294,name5294,20,job5294 5295,name5295,20,job5295 5296,name5296,20,job5296 5297,name5297,20,job5297 5298,name5298,20,job5298 5299,name5299,20,job5299 5300,name5300,20,job5300 5301,name5301,20,job5301 5302,name5302,20,job5302 5303,name5303,20,job5303 5304,name5304,20,job5304 5305,name5305,20,job5305 5306,name5306,20,job5306 5307,name5307,20,job5307 5308,name5308,20,job5308 5309,name5309,20,job5309 5310,name5310,20,job5310 5311,name5311,20,job5311 5312,name5312,20,job5312 5313,name5313,20,job5313 5314,name5314,20,job5314 5315,name5315,20,job5315 5316,name5316,20,job5316 5317,name5317,20,job5317 5318,name5318,20,job5318 5319,name5319,20,job5319 5320,name5320,20,job5320 5321,name5321,20,job5321 5322,name5322,20,job5322 5323,name5323,20,job5323 5324,name5324,20,job5324 5325,name5325,20,job5325 5326,name5326,20,job5326 5327,name5327,20,job5327 5328,name5328,20,job5328 5329,name5329,20,job5329 5330,name5330,20,job5330 5331,name5331,20,job5331 5332,name5332,20,job5332 5333,name5333,20,job5333 5334,name5334,20,job5334 5335,name5335,20,job5335 5336,name5336,20,job5336 5337,name5337,20,job5337 5338,name5338,20,job5338 5339,name5339,20,job5339 5340,name5340,20,job5340 5341,name5341,20,job5341 5342,name5342,20,job5342 5343,name5343,20,job5343 5344,name5344,20,job5344 5345,name5345,20,job5345 5346,name5346,20,job5346 5347,name5347,20,job5347 5348,name5348,20,job5348 5349,name5349,20,job5349 5350,name5350,20,job5350 5351,name5351,20,job5351 5352,name5352,20,job5352 5353,name5353,20,job5353 5354,name5354,20,job5354 5355,name5355,20,job5355 5356,name5356,20,job5356 5357,name5357,20,job5357 5358,name5358,20,job5358 5359,name5359,20,job5359 5360,name5360,20,job5360 5361,name5361,20,job5361 5362,name5362,20,job5362 5363,name5363,20,job5363 5364,name5364,20,job5364 5365,name5365,20,job5365 5366,name5366,20,job5366 5367,name5367,20,job5367 5368,name5368,20,job5368 5369,name5369,20,job5369 5370,name5370,20,job5370 5371,name5371,20,job5371 5372,name5372,20,job5372 5373,name5373,20,job5373 5374,name5374,20,job5374 5375,name5375,20,job5375 5376,name5376,20,job5376 5377,name5377,20,job5377 5378,name5378,20,job5378 5379,name5379,20,job5379 5380,name5380,20,job5380 5381,name5381,20,job5381 5382,name5382,20,job5382 5383,name5383,20,job5383 5384,name5384,20,job5384 5385,name5385,20,job5385 5386,name5386,20,job5386 5387,name5387,20,job5387 5388,name5388,20,job5388 5389,name5389,20,job5389 5390,name5390,20,job5390 5391,name5391,20,job5391 5392,name5392,20,job5392 5393,name5393,20,job5393 5394,name5394,20,job5394 5395,name5395,20,job5395 5396,name5396,20,job5396 5397,name5397,20,job5397 5398,name5398,20,job5398 5399,name5399,20,job5399 5400,name5400,20,job5400 5401,name5401,20,job5401 5402,name5402,20,job5402 5403,name5403,20,job5403 5404,name5404,20,job5404 5405,name5405,20,job5405 5406,name5406,20,job5406 5407,name5407,20,job5407 5408,name5408,20,job5408 5409,name5409,20,job5409 5410,name5410,20,job5410 5411,name5411,20,job5411 5412,name5412,20,job5412 5413,name5413,20,job5413 5414,name5414,20,job5414 5415,name5415,20,job5415 5416,name5416,20,job5416 5417,name5417,20,job5417 5418,name5418,20,job5418 5419,name5419,20,job5419 5420,name5420,20,job5420 5421,name5421,20,job5421 5422,name5422,20,job5422 5423,name5423,20,job5423 5424,name5424,20,job5424 5425,name5425,20,job5425 5426,name5426,20,job5426 5427,name5427,20,job5427 5428,name5428,20,job5428 5429,name5429,20,job5429 5430,name5430,20,job5430 5431,name5431,20,job5431 5432,name5432,20,job5432 5433,name5433,20,job5433 5434,name5434,20,job5434 5435,name5435,20,job5435 5436,name5436,20,job5436 5437,name5437,20,job5437 5438,name5438,20,job5438 5439,name5439,20,job5439 5440,name5440,20,job5440 5441,name5441,20,job5441 5442,name5442,20,job5442 5443,name5443,20,job5443 5444,name5444,20,job5444 5445,name5445,20,job5445 5446,name5446,20,job5446 5447,name5447,20,job5447 5448,name5448,20,job5448 5449,name5449,20,job5449 5450,name5450,20,job5450 5451,name5451,20,job5451 5452,name5452,20,job5452 5453,name5453,20,job5453 5454,name5454,20,job5454 5455,name5455,20,job5455 5456,name5456,20,job5456 5457,name5457,20,job5457 5458,name5458,20,job5458 5459,name5459,20,job5459 5460,name5460,20,job5460 5461,name5461,20,job5461 5462,name5462,20,job5462 5463,name5463,20,job5463 5464,name5464,20,job5464 5465,name5465,20,job5465 5466,name5466,20,job5466 5467,name5467,20,job5467 5468,name5468,20,job5468 5469,name5469,20,job5469 5470,name5470,20,job5470 5471,name5471,20,job5471 5472,name5472,20,job5472 5473,name5473,20,job5473 5474,name5474,20,job5474 5475,name5475,20,job5475 5476,name5476,20,job5476 5477,name5477,20,job5477 5478,name5478,20,job5478 5479,name5479,20,job5479 5480,name5480,20,job5480 5481,name5481,20,job5481 5482,name5482,20,job5482 5483,name5483,20,job5483 5484,name5484,20,job5484 5485,name5485,20,job5485 5486,name5486,20,job5486 5487,name5487,20,job5487 5488,name5488,20,job5488 5489,name5489,20,job5489 5490,name5490,20,job5490 5491,name5491,20,job5491 5492,name5492,20,job5492 5493,name5493,20,job5493 5494,name5494,20,job5494 5495,name5495,20,job5495 5496,name5496,20,job5496 5497,name5497,20,job5497 5498,name5498,20,job5498 5499,name5499,20,job5499 5500,name5500,20,job5500 5501,name5501,20,job5501 5502,name5502,20,job5502 5503,name5503,20,job5503 5504,name5504,20,job5504 5505,name5505,20,job5505 5506,name5506,20,job5506 5507,name5507,20,job5507 5508,name5508,20,job5508 5509,name5509,20,job5509 5510,name5510,20,job5510 5511,name5511,20,job5511 5512,name5512,20,job5512 5513,name5513,20,job5513 5514,name5514,20,job5514 5515,name5515,20,job5515 5516,name5516,20,job5516 5517,name5517,20,job5517 5518,name5518,20,job5518 5519,name5519,20,job5519 5520,name5520,20,job5520 5521,name5521,20,job5521 5522,name5522,20,job5522 5523,name5523,20,job5523 5524,name5524,20,job5524 5525,name5525,20,job5525 5526,name5526,20,job5526 5527,name5527,20,job5527 5528,name5528,20,job5528 5529,name5529,20,job5529 5530,name5530,20,job5530 5531,name5531,20,job5531 5532,name5532,20,job5532 5533,name5533,20,job5533 5534,name5534,20,job5534 5535,name5535,20,job5535 5536,name5536,20,job5536 5537,name5537,20,job5537 5538,name5538,20,job5538 5539,name5539,20,job5539 5540,name5540,20,job5540 5541,name5541,20,job5541 5542,name5542,20,job5542 5543,name5543,20,job5543 5544,name5544,20,job5544 5545,name5545,20,job5545 5546,name5546,20,job5546 5547,name5547,20,job5547 5548,name5548,20,job5548 5549,name5549,20,job5549 5550,name5550,20,job5550 5551,name5551,20,job5551 5552,name5552,20,job5552 5553,name5553,20,job5553 5554,name5554,20,job5554 5555,name5555,20,job5555 5556,name5556,20,job5556 5557,name5557,20,job5557 5558,name5558,20,job5558 5559,name5559,20,job5559 5560,name5560,20,job5560 5561,name5561,20,job5561 5562,name5562,20,job5562 5563,name5563,20,job5563 5564,name5564,20,job5564 5565,name5565,20,job5565 5566,name5566,20,job5566 5567,name5567,20,job5567 5568,name5568,20,job5568 5569,name5569,20,job5569 5570,name5570,20,job5570 5571,name5571,20,job5571 5572,name5572,20,job5572 5573,name5573,20,job5573 5574,name5574,20,job5574 5575,name5575,20,job5575 5576,name5576,20,job5576 5577,name5577,20,job5577 5578,name5578,20,job5578 5579,name5579,20,job5579 5580,name5580,20,job5580 5581,name5581,20,job5581 5582,name5582,20,job5582 5583,name5583,20,job5583 5584,name5584,20,job5584 5585,name5585,20,job5585 5586,name5586,20,job5586 5587,name5587,20,job5587 5588,name5588,20,job5588 5589,name5589,20,job5589 5590,name5590,20,job5590 5591,name5591,20,job5591 5592,name5592,20,job5592 5593,name5593,20,job5593 5594,name5594,20,job5594 5595,name5595,20,job5595 5596,name5596,20,job5596 5597,name5597,20,job5597 5598,name5598,20,job5598 5599,name5599,20,job5599 5600,name5600,20,job5600 5601,name5601,20,job5601 5602,name5602,20,job5602 5603,name5603,20,job5603 5604,name5604,20,job5604 5605,name5605,20,job5605 5606,name5606,20,job5606 5607,name5607,20,job5607 5608,name5608,20,job5608 5609,name5609,20,job5609 5610,name5610,20,job5610 5611,name5611,20,job5611 5612,name5612,20,job5612 5613,name5613,20,job5613 5614,name5614,20,job5614 5615,name5615,20,job5615 5616,name5616,20,job5616 5617,name5617,20,job5617 5618,name5618,20,job5618 5619,name5619,20,job5619 5620,name5620,20,job5620 5621,name5621,20,job5621 5622,name5622,20,job5622 5623,name5623,20,job5623 5624,name5624,20,job5624 5625,name5625,20,job5625 5626,name5626,20,job5626 5627,name5627,20,job5627 5628,name5628,20,job5628 5629,name5629,20,job5629 5630,name5630,20,job5630 5631,name5631,20,job5631 5632,name5632,20,job5632 5633,name5633,20,job5633 5634,name5634,20,job5634 5635,name5635,20,job5635 5636,name5636,20,job5636 5637,name5637,20,job5637 5638,name5638,20,job5638 5639,name5639,20,job5639 5640,name5640,20,job5640 5641,name5641,20,job5641 5642,name5642,20,job5642 5643,name5643,20,job5643 5644,name5644,20,job5644 5645,name5645,20,job5645 5646,name5646,20,job5646 5647,name5647,20,job5647 5648,name5648,20,job5648 5649,name5649,20,job5649 5650,name5650,20,job5650 5651,name5651,20,job5651 5652,name5652,20,job5652 5653,name5653,20,job5653 5654,name5654,20,job5654 5655,name5655,20,job5655 5656,name5656,20,job5656 5657,name5657,20,job5657 5658,name5658,20,job5658 5659,name5659,20,job5659 5660,name5660,20,job5660 5661,name5661,20,job5661 5662,name5662,20,job5662 5663,name5663,20,job5663 5664,name5664,20,job5664 5665,name5665,20,job5665 5666,name5666,20,job5666 5667,name5667,20,job5667 5668,name5668,20,job5668 5669,name5669,20,job5669 5670,name5670,20,job5670 5671,name5671,20,job5671 5672,name5672,20,job5672 5673,name5673,20,job5673 5674,name5674,20,job5674 5675,name5675,20,job5675 5676,name5676,20,job5676 5677,name5677,20,job5677 5678,name5678,20,job5678 5679,name5679,20,job5679 5680,name5680,20,job5680 5681,name5681,20,job5681 5682,name5682,20,job5682 5683,name5683,20,job5683 5684,name5684,20,job5684 5685,name5685,20,job5685 5686,name5686,20,job5686 5687,name5687,20,job5687 5688,name5688,20,job5688 5689,name5689,20,job5689 5690,name5690,20,job5690 5691,name5691,20,job5691 5692,name5692,20,job5692 5693,name5693,20,job5693 5694,name5694,20,job5694 5695,name5695,20,job5695 5696,name5696,20,job5696 5697,name5697,20,job5697 5698,name5698,20,job5698 5699,name5699,20,job5699 5700,name5700,20,job5700 5701,name5701,20,job5701 5702,name5702,20,job5702 5703,name5703,20,job5703 5704,name5704,20,job5704 5705,name5705,20,job5705 5706,name5706,20,job5706 5707,name5707,20,job5707 5708,name5708,20,job5708 5709,name5709,20,job5709 5710,name5710,20,job5710 5711,name5711,20,job5711 5712,name5712,20,job5712 5713,name5713,20,job5713 5714,name5714,20,job5714 5715,name5715,20,job5715 5716,name5716,20,job5716 5717,name5717,20,job5717 5718,name5718,20,job5718 5719,name5719,20,job5719 5720,name5720,20,job5720 5721,name5721,20,job5721 5722,name5722,20,job5722 5723,name5723,20,job5723 5724,name5724,20,job5724 5725,name5725,20,job5725 5726,name5726,20,job5726 5727,name5727,20,job5727 5728,name5728,20,job5728 5729,name5729,20,job5729 5730,name5730,20,job5730 5731,name5731,20,job5731 5732,name5732,20,job5732 5733,name5733,20,job5733 5734,name5734,20,job5734 5735,name5735,20,job5735 5736,name5736,20,job5736 5737,name5737,20,job5737 5738,name5738,20,job5738 5739,name5739,20,job5739 5740,name5740,20,job5740 5741,name5741,20,job5741 5742,name5742,20,job5742 5743,name5743,20,job5743 5744,name5744,20,job5744 5745,name5745,20,job5745 5746,name5746,20,job5746 5747,name5747,20,job5747 5748,name5748,20,job5748 5749,name5749,20,job5749 5750,name5750,20,job5750 5751,name5751,20,job5751 5752,name5752,20,job5752 5753,name5753,20,job5753 5754,name5754,20,job5754 5755,name5755,20,job5755 5756,name5756,20,job5756 5757,name5757,20,job5757 5758,name5758,20,job5758 5759,name5759,20,job5759 5760,name5760,20,job5760 5761,name5761,20,job5761 5762,name5762,20,job5762 5763,name5763,20,job5763 5764,name5764,20,job5764 5765,name5765,20,job5765 5766,name5766,20,job5766 5767,name5767,20,job5767 5768,name5768,20,job5768 5769,name5769,20,job5769 5770,name5770,20,job5770 5771,name5771,20,job5771 5772,name5772,20,job5772 5773,name5773,20,job5773 5774,name5774,20,job5774 5775,name5775,20,job5775 5776,name5776,20,job5776 5777,name5777,20,job5777 5778,name5778,20,job5778 5779,name5779,20,job5779 5780,name5780,20,job5780 5781,name5781,20,job5781 5782,name5782,20,job5782 5783,name5783,20,job5783 5784,name5784,20,job5784 5785,name5785,20,job5785 5786,name5786,20,job5786 5787,name5787,20,job5787 5788,name5788,20,job5788 5789,name5789,20,job5789 5790,name5790,20,job5790 5791,name5791,20,job5791 5792,name5792,20,job5792 5793,name5793,20,job5793 5794,name5794,20,job5794 5795,name5795,20,job5795 5796,name5796,20,job5796 5797,name5797,20,job5797 5798,name5798,20,job5798 5799,name5799,20,job5799 5800,name5800,20,job5800 5801,name5801,20,job5801 5802,name5802,20,job5802 5803,name5803,20,job5803 5804,name5804,20,job5804 5805,name5805,20,job5805 5806,name5806,20,job5806 5807,name5807,20,job5807 5808,name5808,20,job5808 5809,name5809,20,job5809 5810,name5810,20,job5810 5811,name5811,20,job5811 5812,name5812,20,job5812 5813,name5813,20,job5813 5814,name5814,20,job5814 5815,name5815,20,job5815 5816,name5816,20,job5816 5817,name5817,20,job5817 5818,name5818,20,job5818 5819,name5819,20,job5819 5820,name5820,20,job5820 5821,name5821,20,job5821 5822,name5822,20,job5822 5823,name5823,20,job5823 5824,name5824,20,job5824 5825,name5825,20,job5825 5826,name5826,20,job5826 5827,name5827,20,job5827 5828,name5828,20,job5828 5829,name5829,20,job5829 5830,name5830,20,job5830 5831,name5831,20,job5831 5832,name5832,20,job5832 5833,name5833,20,job5833 5834,name5834,20,job5834 5835,name5835,20,job5835 5836,name5836,20,job5836 5837,name5837,20,job5837 5838,name5838,20,job5838 5839,name5839,20,job5839 5840,name5840,20,job5840 5841,name5841,20,job5841 5842,name5842,20,job5842 5843,name5843,20,job5843 5844,name5844,20,job5844 5845,name5845,20,job5845 5846,name5846,20,job5846 5847,name5847,20,job5847 5848,name5848,20,job5848 5849,name5849,20,job5849 5850,name5850,20,job5850 5851,name5851,20,job5851 5852,name5852,20,job5852 5853,name5853,20,job5853 5854,name5854,20,job5854 5855,name5855,20,job5855 5856,name5856,20,job5856 5857,name5857,20,job5857 5858,name5858,20,job5858 5859,name5859,20,job5859 5860,name5860,20,job5860 5861,name5861,20,job5861 5862,name5862,20,job5862 5863,name5863,20,job5863 5864,name5864,20,job5864 5865,name5865,20,job5865 5866,name5866,20,job5866 5867,name5867,20,job5867 5868,name5868,20,job5868 5869,name5869,20,job5869 5870,name5870,20,job5870 5871,name5871,20,job5871 5872,name5872,20,job5872 5873,name5873,20,job5873 5874,name5874,20,job5874 5875,name5875,20,job5875 5876,name5876,20,job5876 5877,name5877,20,job5877 5878,name5878,20,job5878 5879,name5879,20,job5879 5880,name5880,20,job5880 5881,name5881,20,job5881 5882,name5882,20,job5882 5883,name5883,20,job5883 5884,name5884,20,job5884 5885,name5885,20,job5885 5886,name5886,20,job5886 5887,name5887,20,job5887 5888,name5888,20,job5888 5889,name5889,20,job5889 5890,name5890,20,job5890 5891,name5891,20,job5891 5892,name5892,20,job5892 5893,name5893,20,job5893 5894,name5894,20,job5894 5895,name5895,20,job5895 5896,name5896,20,job5896 5897,name5897,20,job5897 5898,name5898,20,job5898 5899,name5899,20,job5899 5900,name5900,20,job5900 5901,name5901,20,job5901 5902,name5902,20,job5902 5903,name5903,20,job5903 5904,name5904,20,job5904 5905,name5905,20,job5905 5906,name5906,20,job5906 5907,name5907,20,job5907 5908,name5908,20,job5908 5909,name5909,20,job5909 5910,name5910,20,job5910 5911,name5911,20,job5911 5912,name5912,20,job5912 5913,name5913,20,job5913 5914,name5914,20,job5914 5915,name5915,20,job5915 5916,name5916,20,job5916 5917,name5917,20,job5917 5918,name5918,20,job5918 5919,name5919,20,job5919 5920,name5920,20,job5920 5921,name5921,20,job5921 5922,name5922,20,job5922 5923,name5923,20,job5923 5924,name5924,20,job5924 5925,name5925,20,job5925 5926,name5926,20,job5926 5927,name5927,20,job5927 5928,name5928,20,job5928 5929,name5929,20,job5929 5930,name5930,20,job5930 5931,name5931,20,job5931 5932,name5932,20,job5932 5933,name5933,20,job5933 5934,name5934,20,job5934 5935,name5935,20,job5935 5936,name5936,20,job5936 5937,name5937,20,job5937 5938,name5938,20,job5938 5939,name5939,20,job5939 5940,name5940,20,job5940 5941,name5941,20,job5941 5942,name5942,20,job5942 5943,name5943,20,job5943 5944,name5944,20,job5944 5945,name5945,20,job5945 5946,name5946,20,job5946 5947,name5947,20,job5947 5948,name5948,20,job5948 5949,name5949,20,job5949 5950,name5950,20,job5950 5951,name5951,20,job5951 5952,name5952,20,job5952 5953,name5953,20,job5953 5954,name5954,20,job5954 5955,name5955,20,job5955 5956,name5956,20,job5956 5957,name5957,20,job5957 5958,name5958,20,job5958 5959,name5959,20,job5959 5960,name5960,20,job5960 5961,name5961,20,job5961 5962,name5962,20,job5962 5963,name5963,20,job5963 5964,name5964,20,job5964 5965,name5965,20,job5965 5966,name5966,20,job5966 5967,name5967,20,job5967 5968,name5968,20,job5968 5969,name5969,20,job5969 5970,name5970,20,job5970 5971,name5971,20,job5971 5972,name5972,20,job5972 5973,name5973,20,job5973 5974,name5974,20,job5974 5975,name5975,20,job5975 5976,name5976,20,job5976 5977,name5977,20,job5977 5978,name5978,20,job5978 5979,name5979,20,job5979 5980,name5980,20,job5980 5981,name5981,20,job5981 5982,name5982,20,job5982 5983,name5983,20,job5983 5984,name5984,20,job5984 5985,name5985,20,job5985 5986,name5986,20,job5986 5987,name5987,20,job5987 5988,name5988,20,job5988 5989,name5989,20,job5989 5990,name5990,20,job5990 5991,name5991,20,job5991 5992,name5992,20,job5992 5993,name5993,20,job5993 5994,name5994,20,job5994 5995,name5995,20,job5995 5996,name5996,20,job5996 5997,name5997,20,job5997 5998,name5998,20,job5998 5999,name5999,20,job5999 6000,name6000,20,job6000 6001,name6001,20,job6001 6002,name6002,20,job6002 6003,name6003,20,job6003 6004,name6004,20,job6004 6005,name6005,20,job6005 6006,name6006,20,job6006 6007,name6007,20,job6007 6008,name6008,20,job6008 6009,name6009,20,job6009 6010,name6010,20,job6010 6011,name6011,20,job6011 6012,name6012,20,job6012 6013,name6013,20,job6013 6014,name6014,20,job6014 6015,name6015,20,job6015 6016,name6016,20,job6016 6017,name6017,20,job6017 6018,name6018,20,job6018 6019,name6019,20,job6019 6020,name6020,20,job6020 6021,name6021,20,job6021 6022,name6022,20,job6022 6023,name6023,20,job6023 6024,name6024,20,job6024 6025,name6025,20,job6025 6026,name6026,20,job6026 6027,name6027,20,job6027 6028,name6028,20,job6028 6029,name6029,20,job6029 6030,name6030,20,job6030 6031,name6031,20,job6031 6032,name6032,20,job6032 6033,name6033,20,job6033 6034,name6034,20,job6034 6035,name6035,20,job6035 6036,name6036,20,job6036 6037,name6037,20,job6037 6038,name6038,20,job6038 6039,name6039,20,job6039 6040,name6040,20,job6040 6041,name6041,20,job6041 6042,name6042,20,job6042 6043,name6043,20,job6043 6044,name6044,20,job6044 6045,name6045,20,job6045 6046,name6046,20,job6046 6047,name6047,20,job6047 6048,name6048,20,job6048 6049,name6049,20,job6049 6050,name6050,20,job6050 6051,name6051,20,job6051 6052,name6052,20,job6052 6053,name6053,20,job6053 6054,name6054,20,job6054 6055,name6055,20,job6055 6056,name6056,20,job6056 6057,name6057,20,job6057 6058,name6058,20,job6058 6059,name6059,20,job6059 6060,name6060,20,job6060 6061,name6061,20,job6061 6062,name6062,20,job6062 6063,name6063,20,job6063 6064,name6064,20,job6064 6065,name6065,20,job6065 6066,name6066,20,job6066 6067,name6067,20,job6067 6068,name6068,20,job6068 6069,name6069,20,job6069 6070,name6070,20,job6070 6071,name6071,20,job6071 6072,name6072,20,job6072 6073,name6073,20,job6073 6074,name6074,20,job6074 6075,name6075,20,job6075 6076,name6076,20,job6076 6077,name6077,20,job6077 6078,name6078,20,job6078 6079,name6079,20,job6079 6080,name6080,20,job6080 6081,name6081,20,job6081 6082,name6082,20,job6082 6083,name6083,20,job6083 6084,name6084,20,job6084 6085,name6085,20,job6085 6086,name6086,20,job6086 6087,name6087,20,job6087 6088,name6088,20,job6088 6089,name6089,20,job6089 6090,name6090,20,job6090 6091,name6091,20,job6091 6092,name6092,20,job6092 6093,name6093,20,job6093 6094,name6094,20,job6094 6095,name6095,20,job6095 6096,name6096,20,job6096 6097,name6097,20,job6097 6098,name6098,20,job6098 6099,name6099,20,job6099 6100,name6100,20,job6100 6101,name6101,20,job6101 6102,name6102,20,job6102 6103,name6103,20,job6103 6104,name6104,20,job6104 6105,name6105,20,job6105 6106,name6106,20,job6106 6107,name6107,20,job6107 6108,name6108,20,job6108 6109,name6109,20,job6109 6110,name6110,20,job6110 6111,name6111,20,job6111 6112,name6112,20,job6112 6113,name6113,20,job6113 6114,name6114,20,job6114 6115,name6115,20,job6115 6116,name6116,20,job6116 6117,name6117,20,job6117 6118,name6118,20,job6118 6119,name6119,20,job6119 6120,name6120,20,job6120 6121,name6121,20,job6121 6122,name6122,20,job6122 6123,name6123,20,job6123 6124,name6124,20,job6124 6125,name6125,20,job6125 6126,name6126,20,job6126 6127,name6127,20,job6127 6128,name6128,20,job6128 6129,name6129,20,job6129 6130,name6130,20,job6130 6131,name6131,20,job6131 6132,name6132,20,job6132 6133,name6133,20,job6133 6134,name6134,20,job6134 6135,name6135,20,job6135 6136,name6136,20,job6136 6137,name6137,20,job6137 6138,name6138,20,job6138 6139,name6139,20,job6139 6140,name6140,20,job6140 6141,name6141,20,job6141 6142,name6142,20,job6142 6143,name6143,20,job6143 6144,name6144,20,job6144 6145,name6145,20,job6145 6146,name6146,20,job6146 6147,name6147,20,job6147 6148,name6148,20,job6148 6149,name6149,20,job6149 6150,name6150,20,job6150 6151,name6151,20,job6151 6152,name6152,20,job6152 6153,name6153,20,job6153 6154,name6154,20,job6154 6155,name6155,20,job6155 6156,name6156,20,job6156 6157,name6157,20,job6157 6158,name6158,20,job6158 6159,name6159,20,job6159 6160,name6160,20,job6160 6161,name6161,20,job6161 6162,name6162,20,job6162 6163,name6163,20,job6163 6164,name6164,20,job6164 6165,name6165,20,job6165 6166,name6166,20,job6166 6167,name6167,20,job6167 6168,name6168,20,job6168 6169,name6169,20,job6169 6170,name6170,20,job6170 6171,name6171,20,job6171 6172,name6172,20,job6172 6173,name6173,20,job6173 6174,name6174,20,job6174 6175,name6175,20,job6175 6176,name6176,20,job6176 6177,name6177,20,job6177 6178,name6178,20,job6178 6179,name6179,20,job6179 6180,name6180,20,job6180 6181,name6181,20,job6181 6182,name6182,20,job6182 6183,name6183,20,job6183 6184,name6184,20,job6184 6185,name6185,20,job6185 6186,name6186,20,job6186 6187,name6187,20,job6187 6188,name6188,20,job6188 6189,name6189,20,job6189 6190,name6190,20,job6190 6191,name6191,20,job6191 6192,name6192,20,job6192 6193,name6193,20,job6193 6194,name6194,20,job6194 6195,name6195,20,job6195 6196,name6196,20,job6196 6197,name6197,20,job6197 6198,name6198,20,job6198 6199,name6199,20,job6199 6200,name6200,20,job6200 6201,name6201,20,job6201 6202,name6202,20,job6202 6203,name6203,20,job6203 6204,name6204,20,job6204 6205,name6205,20,job6205 6206,name6206,20,job6206 6207,name6207,20,job6207 6208,name6208,20,job6208 6209,name6209,20,job6209 6210,name6210,20,job6210 6211,name6211,20,job6211 6212,name6212,20,job6212 6213,name6213,20,job6213 6214,name6214,20,job6214 6215,name6215,20,job6215 6216,name6216,20,job6216 6217,name6217,20,job6217 6218,name6218,20,job6218 6219,name6219,20,job6219 6220,name6220,20,job6220 6221,name6221,20,job6221 6222,name6222,20,job6222 6223,name6223,20,job6223 6224,name6224,20,job6224 6225,name6225,20,job6225 6226,name6226,20,job6226 6227,name6227,20,job6227 6228,name6228,20,job6228 6229,name6229,20,job6229 6230,name6230,20,job6230 6231,name6231,20,job6231 6232,name6232,20,job6232 6233,name6233,20,job6233 6234,name6234,20,job6234 6235,name6235,20,job6235 6236,name6236,20,job6236 6237,name6237,20,job6237 6238,name6238,20,job6238 6239,name6239,20,job6239 6240,name6240,20,job6240 6241,name6241,20,job6241 6242,name6242,20,job6242 6243,name6243,20,job6243 6244,name6244,20,job6244 6245,name6245,20,job6245 6246,name6246,20,job6246 6247,name6247,20,job6247 6248,name6248,20,job6248 6249,name6249,20,job6249 6250,name6250,20,job6250 6251,name6251,20,job6251 6252,name6252,20,job6252 6253,name6253,20,job6253 6254,name6254,20,job6254 6255,name6255,20,job6255 6256,name6256,20,job6256 6257,name6257,20,job6257 6258,name6258,20,job6258 6259,name6259,20,job6259 6260,name6260,20,job6260 6261,name6261,20,job6261 6262,name6262,20,job6262 6263,name6263,20,job6263 6264,name6264,20,job6264 6265,name6265,20,job6265 6266,name6266,20,job6266 6267,name6267,20,job6267 6268,name6268,20,job6268 6269,name6269,20,job6269 6270,name6270,20,job6270 6271,name6271,20,job6271 6272,name6272,20,job6272 6273,name6273,20,job6273 6274,name6274,20,job6274 6275,name6275,20,job6275 6276,name6276,20,job6276 6277,name6277,20,job6277 6278,name6278,20,job6278 6279,name6279,20,job6279 6280,name6280,20,job6280 6281,name6281,20,job6281 6282,name6282,20,job6282 6283,name6283,20,job6283 6284,name6284,20,job6284 6285,name6285,20,job6285 6286,name6286,20,job6286 6287,name6287,20,job6287 6288,name6288,20,job6288 6289,name6289,20,job6289 6290,name6290,20,job6290 6291,name6291,20,job6291 6292,name6292,20,job6292 6293,name6293,20,job6293 6294,name6294,20,job6294 6295,name6295,20,job6295 6296,name6296,20,job6296 6297,name6297,20,job6297 6298,name6298,20,job6298 6299,name6299,20,job6299 6300,name6300,20,job6300 6301,name6301,20,job6301 6302,name6302,20,job6302 6303,name6303,20,job6303 6304,name6304,20,job6304 6305,name6305,20,job6305 6306,name6306,20,job6306 6307,name6307,20,job6307 6308,name6308,20,job6308 6309,name6309,20,job6309 6310,name6310,20,job6310 6311,name6311,20,job6311 6312,name6312,20,job6312 6313,name6313,20,job6313 6314,name6314,20,job6314 6315,name6315,20,job6315 6316,name6316,20,job6316 6317,name6317,20,job6317 6318,name6318,20,job6318 6319,name6319,20,job6319 6320,name6320,20,job6320 6321,name6321,20,job6321 6322,name6322,20,job6322 6323,name6323,20,job6323 6324,name6324,20,job6324 6325,name6325,20,job6325 6326,name6326,20,job6326 6327,name6327,20,job6327 6328,name6328,20,job6328 6329,name6329,20,job6329 6330,name6330,20,job6330 6331,name6331,20,job6331 6332,name6332,20,job6332 6333,name6333,20,job6333 6334,name6334,20,job6334 6335,name6335,20,job6335 6336,name6336,20,job6336 6337,name6337,20,job6337 6338,name6338,20,job6338 6339,name6339,20,job6339 6340,name6340,20,job6340 6341,name6341,20,job6341 6342,name6342,20,job6342 6343,name6343,20,job6343 6344,name6344,20,job6344 6345,name6345,20,job6345 6346,name6346,20,job6346 6347,name6347,20,job6347 6348,name6348,20,job6348 6349,name6349,20,job6349 6350,name6350,20,job6350 6351,name6351,20,job6351 6352,name6352,20,job6352 6353,name6353,20,job6353 6354,name6354,20,job6354 6355,name6355,20,job6355 6356,name6356,20,job6356 6357,name6357,20,job6357 6358,name6358,20,job6358 6359,name6359,20,job6359 6360,name6360,20,job6360 6361,name6361,20,job6361 6362,name6362,20,job6362 6363,name6363,20,job6363 6364,name6364,20,job6364 6365,name6365,20,job6365 6366,name6366,20,job6366 6367,name6367,20,job6367 6368,name6368,20,job6368 6369,name6369,20,job6369 6370,name6370,20,job6370 6371,name6371,20,job6371 6372,name6372,20,job6372 6373,name6373,20,job6373 6374,name6374,20,job6374 6375,name6375,20,job6375 6376,name6376,20,job6376 6377,name6377,20,job6377 6378,name6378,20,job6378 6379,name6379,20,job6379 6380,name6380,20,job6380 6381,name6381,20,job6381 6382,name6382,20,job6382 6383,name6383,20,job6383 6384,name6384,20,job6384 6385,name6385,20,job6385 6386,name6386,20,job6386 6387,name6387,20,job6387 6388,name6388,20,job6388 6389,name6389,20,job6389 6390,name6390,20,job6390 6391,name6391,20,job6391 6392,name6392,20,job6392 6393,name6393,20,job6393 6394,name6394,20,job6394 6395,name6395,20,job6395 6396,name6396,20,job6396 6397,name6397,20,job6397 6398,name6398,20,job6398 6399,name6399,20,job6399 6400,name6400,20,job6400 6401,name6401,20,job6401 6402,name6402,20,job6402 6403,name6403,20,job6403 6404,name6404,20,job6404 6405,name6405,20,job6405 6406,name6406,20,job6406 6407,name6407,20,job6407 6408,name6408,20,job6408 6409,name6409,20,job6409 6410,name6410,20,job6410 6411,name6411,20,job6411 6412,name6412,20,job6412 6413,name6413,20,job6413 6414,name6414,20,job6414 6415,name6415,20,job6415 6416,name6416,20,job6416 6417,name6417,20,job6417 6418,name6418,20,job6418 6419,name6419,20,job6419 6420,name6420,20,job6420 6421,name6421,20,job6421 6422,name6422,20,job6422 6423,name6423,20,job6423 6424,name6424,20,job6424 6425,name6425,20,job6425 6426,name6426,20,job6426 6427,name6427,20,job6427 6428,name6428,20,job6428 6429,name6429,20,job6429 6430,name6430,20,job6430 6431,name6431,20,job6431 6432,name6432,20,job6432 6433,name6433,20,job6433 6434,name6434,20,job6434 6435,name6435,20,job6435 6436,name6436,20,job6436 6437,name6437,20,job6437 6438,name6438,20,job6438 6439,name6439,20,job6439 6440,name6440,20,job6440 6441,name6441,20,job6441 6442,name6442,20,job6442 6443,name6443,20,job6443 6444,name6444,20,job6444 6445,name6445,20,job6445 6446,name6446,20,job6446 6447,name6447,20,job6447 6448,name6448,20,job6448 6449,name6449,20,job6449 6450,name6450,20,job6450 6451,name6451,20,job6451 6452,name6452,20,job6452 6453,name6453,20,job6453 6454,name6454,20,job6454 6455,name6455,20,job6455 6456,name6456,20,job6456 6457,name6457,20,job6457 6458,name6458,20,job6458 6459,name6459,20,job6459 6460,name6460,20,job6460 6461,name6461,20,job6461 6462,name6462,20,job6462 6463,name6463,20,job6463 6464,name6464,20,job6464 6465,name6465,20,job6465 6466,name6466,20,job6466 6467,name6467,20,job6467 6468,name6468,20,job6468 6469,name6469,20,job6469 6470,name6470,20,job6470 6471,name6471,20,job6471 6472,name6472,20,job6472 6473,name6473,20,job6473 6474,name6474,20,job6474 6475,name6475,20,job6475 6476,name6476,20,job6476 6477,name6477,20,job6477 6478,name6478,20,job6478 6479,name6479,20,job6479 6480,name6480,20,job6480 6481,name6481,20,job6481 6482,name6482,20,job6482 6483,name6483,20,job6483 6484,name6484,20,job6484 6485,name6485,20,job6485 6486,name6486,20,job6486 6487,name6487,20,job6487 6488,name6488,20,job6488 6489,name6489,20,job6489 6490,name6490,20,job6490 6491,name6491,20,job6491 6492,name6492,20,job6492 6493,name6493,20,job6493 6494,name6494,20,job6494 6495,name6495,20,job6495 6496,name6496,20,job6496 6497,name6497,20,job6497 6498,name6498,20,job6498 6499,name6499,20,job6499 6500,name6500,20,job6500 6501,name6501,20,job6501 6502,name6502,20,job6502 6503,name6503,20,job6503 6504,name6504,20,job6504 6505,name6505,20,job6505 6506,name6506,20,job6506 6507,name6507,20,job6507 6508,name6508,20,job6508 6509,name6509,20,job6509 6510,name6510,20,job6510 6511,name6511,20,job6511 6512,name6512,20,job6512 6513,name6513,20,job6513 6514,name6514,20,job6514 6515,name6515,20,job6515 6516,name6516,20,job6516 6517,name6517,20,job6517 6518,name6518,20,job6518 6519,name6519,20,job6519 6520,name6520,20,job6520 6521,name6521,20,job6521 6522,name6522,20,job6522 6523,name6523,20,job6523 6524,name6524,20,job6524 6525,name6525,20,job6525 6526,name6526,20,job6526 6527,name6527,20,job6527 6528,name6528,20,job6528 6529,name6529,20,job6529 6530,name6530,20,job6530 6531,name6531,20,job6531 6532,name6532,20,job6532 6533,name6533,20,job6533 6534,name6534,20,job6534 6535,name6535,20,job6535 6536,name6536,20,job6536 6537,name6537,20,job6537 6538,name6538,20,job6538 6539,name6539,20,job6539 6540,name6540,20,job6540 6541,name6541,20,job6541 6542,name6542,20,job6542 6543,name6543,20,job6543 6544,name6544,20,job6544 6545,name6545,20,job6545 6546,name6546,20,job6546 6547,name6547,20,job6547 6548,name6548,20,job6548 6549,name6549,20,job6549 6550,name6550,20,job6550 6551,name6551,20,job6551 6552,name6552,20,job6552 6553,name6553,20,job6553 6554,name6554,20,job6554 6555,name6555,20,job6555 6556,name6556,20,job6556 6557,name6557,20,job6557 6558,name6558,20,job6558 6559,name6559,20,job6559 6560,name6560,20,job6560 6561,name6561,20,job6561 6562,name6562,20,job6562 6563,name6563,20,job6563 6564,name6564,20,job6564 6565,name6565,20,job6565 6566,name6566,20,job6566 6567,name6567,20,job6567 6568,name6568,20,job6568 6569,name6569,20,job6569 6570,name6570,20,job6570 6571,name6571,20,job6571 6572,name6572,20,job6572 6573,name6573,20,job6573 6574,name6574,20,job6574 6575,name6575,20,job6575 6576,name6576,20,job6576 6577,name6577,20,job6577 6578,name6578,20,job6578 6579,name6579,20,job6579 6580,name6580,20,job6580 6581,name6581,20,job6581 6582,name6582,20,job6582 6583,name6583,20,job6583 6584,name6584,20,job6584 6585,name6585,20,job6585 6586,name6586,20,job6586 6587,name6587,20,job6587 6588,name6588,20,job6588 6589,name6589,20,job6589 6590,name6590,20,job6590 6591,name6591,20,job6591 6592,name6592,20,job6592 6593,name6593,20,job6593 6594,name6594,20,job6594 6595,name6595,20,job6595 6596,name6596,20,job6596 6597,name6597,20,job6597 6598,name6598,20,job6598 6599,name6599,20,job6599 6600,name6600,20,job6600 6601,name6601,20,job6601 6602,name6602,20,job6602 6603,name6603,20,job6603 6604,name6604,20,job6604 6605,name6605,20,job6605 6606,name6606,20,job6606 6607,name6607,20,job6607 6608,name6608,20,job6608 6609,name6609,20,job6609 6610,name6610,20,job6610 6611,name6611,20,job6611 6612,name6612,20,job6612 6613,name6613,20,job6613 6614,name6614,20,job6614 6615,name6615,20,job6615 6616,name6616,20,job6616 6617,name6617,20,job6617 6618,name6618,20,job6618 6619,name6619,20,job6619 6620,name6620,20,job6620 6621,name6621,20,job6621 6622,name6622,20,job6622 6623,name6623,20,job6623 6624,name6624,20,job6624 6625,name6625,20,job6625 6626,name6626,20,job6626 6627,name6627,20,job6627 6628,name6628,20,job6628 6629,name6629,20,job6629 6630,name6630,20,job6630 6631,name6631,20,job6631 6632,name6632,20,job6632 6633,name6633,20,job6633 6634,name6634,20,job6634 6635,name6635,20,job6635 6636,name6636,20,job6636 6637,name6637,20,job6637 6638,name6638,20,job6638 6639,name6639,20,job6639 6640,name6640,20,job6640 6641,name6641,20,job6641 6642,name6642,20,job6642 6643,name6643,20,job6643 6644,name6644,20,job6644 6645,name6645,20,job6645 6646,name6646,20,job6646 6647,name6647,20,job6647 6648,name6648,20,job6648 6649,name6649,20,job6649 6650,name6650,20,job6650 6651,name6651,20,job6651 6652,name6652,20,job6652 6653,name6653,20,job6653 6654,name6654,20,job6654 6655,name6655,20,job6655 6656,name6656,20,job6656 6657,name6657,20,job6657 6658,name6658,20,job6658 6659,name6659,20,job6659 6660,name6660,20,job6660 6661,name6661,20,job6661 6662,name6662,20,job6662 6663,name6663,20,job6663 6664,name6664,20,job6664 6665,name6665,20,job6665 6666,name6666,20,job6666 6667,name6667,20,job6667 6668,name6668,20,job6668 6669,name6669,20,job6669 6670,name6670,20,job6670 6671,name6671,20,job6671 6672,name6672,20,job6672 6673,name6673,20,job6673 6674,name6674,20,job6674 6675,name6675,20,job6675 6676,name6676,20,job6676 6677,name6677,20,job6677 6678,name6678,20,job6678 6679,name6679,20,job6679 6680,name6680,20,job6680 6681,name6681,20,job6681 6682,name6682,20,job6682 6683,name6683,20,job6683 6684,name6684,20,job6684 6685,name6685,20,job6685 6686,name6686,20,job6686 6687,name6687,20,job6687 6688,name6688,20,job6688 6689,name6689,20,job6689 6690,name6690,20,job6690 6691,name6691,20,job6691 6692,name6692,20,job6692 6693,name6693,20,job6693 6694,name6694,20,job6694 6695,name6695,20,job6695 6696,name6696,20,job6696 6697,name6697,20,job6697 6698,name6698,20,job6698 6699,name6699,20,job6699 6700,name6700,20,job6700 6701,name6701,20,job6701 6702,name6702,20,job6702 6703,name6703,20,job6703 6704,name6704,20,job6704 6705,name6705,20,job6705 6706,name6706,20,job6706 6707,name6707,20,job6707 6708,name6708,20,job6708 6709,name6709,20,job6709 6710,name6710,20,job6710 6711,name6711,20,job6711 6712,name6712,20,job6712 6713,name6713,20,job6713 6714,name6714,20,job6714 6715,name6715,20,job6715 6716,name6716,20,job6716 6717,name6717,20,job6717 6718,name6718,20,job6718 6719,name6719,20,job6719 6720,name6720,20,job6720 6721,name6721,20,job6721 6722,name6722,20,job6722 6723,name6723,20,job6723 6724,name6724,20,job6724 6725,name6725,20,job6725 6726,name6726,20,job6726 6727,name6727,20,job6727 6728,name6728,20,job6728 6729,name6729,20,job6729 6730,name6730,20,job6730 6731,name6731,20,job6731 6732,name6732,20,job6732 6733,name6733,20,job6733 6734,name6734,20,job6734 6735,name6735,20,job6735 6736,name6736,20,job6736 6737,name6737,20,job6737 6738,name6738,20,job6738 6739,name6739,20,job6739 6740,name6740,20,job6740 6741,name6741,20,job6741 6742,name6742,20,job6742 6743,name6743,20,job6743 6744,name6744,20,job6744 6745,name6745,20,job6745 6746,name6746,20,job6746 6747,name6747,20,job6747 6748,name6748,20,job6748 6749,name6749,20,job6749 6750,name6750,20,job6750 6751,name6751,20,job6751 6752,name6752,20,job6752 6753,name6753,20,job6753 6754,name6754,20,job6754 6755,name6755,20,job6755 6756,name6756,20,job6756 6757,name6757,20,job6757 6758,name6758,20,job6758 6759,name6759,20,job6759 6760,name6760,20,job6760 6761,name6761,20,job6761 6762,name6762,20,job6762 6763,name6763,20,job6763 6764,name6764,20,job6764 6765,name6765,20,job6765 6766,name6766,20,job6766 6767,name6767,20,job6767 6768,name6768,20,job6768 6769,name6769,20,job6769 6770,name6770,20,job6770 6771,name6771,20,job6771 6772,name6772,20,job6772 6773,name6773,20,job6773 6774,name6774,20,job6774 6775,name6775,20,job6775 6776,name6776,20,job6776 6777,name6777,20,job6777 6778,name6778,20,job6778 6779,name6779,20,job6779 6780,name6780,20,job6780 6781,name6781,20,job6781 6782,name6782,20,job6782 6783,name6783,20,job6783 6784,name6784,20,job6784 6785,name6785,20,job6785 6786,name6786,20,job6786 6787,name6787,20,job6787 6788,name6788,20,job6788 6789,name6789,20,job6789 6790,name6790,20,job6790 6791,name6791,20,job6791 6792,name6792,20,job6792 6793,name6793,20,job6793 6794,name6794,20,job6794 6795,name6795,20,job6795 6796,name6796,20,job6796 6797,name6797,20,job6797 6798,name6798,20,job6798 6799,name6799,20,job6799 6800,name6800,20,job6800 6801,name6801,20,job6801 6802,name6802,20,job6802 6803,name6803,20,job6803 6804,name6804,20,job6804 6805,name6805,20,job6805 6806,name6806,20,job6806 6807,name6807,20,job6807 6808,name6808,20,job6808 6809,name6809,20,job6809 6810,name6810,20,job6810 6811,name6811,20,job6811 6812,name6812,20,job6812 6813,name6813,20,job6813 6814,name6814,20,job6814 6815,name6815,20,job6815 6816,name6816,20,job6816 6817,name6817,20,job6817 6818,name6818,20,job6818 6819,name6819,20,job6819 6820,name6820,20,job6820 6821,name6821,20,job6821 6822,name6822,20,job6822 6823,name6823,20,job6823 6824,name6824,20,job6824 6825,name6825,20,job6825 6826,name6826,20,job6826 6827,name6827,20,job6827 6828,name6828,20,job6828 6829,name6829,20,job6829 6830,name6830,20,job6830 6831,name6831,20,job6831 6832,name6832,20,job6832 6833,name6833,20,job6833 6834,name6834,20,job6834 6835,name6835,20,job6835 6836,name6836,20,job6836 6837,name6837,20,job6837 6838,name6838,20,job6838 6839,name6839,20,job6839 6840,name6840,20,job6840 6841,name6841,20,job6841 6842,name6842,20,job6842 6843,name6843,20,job6843 6844,name6844,20,job6844 6845,name6845,20,job6845 6846,name6846,20,job6846 6847,name6847,20,job6847 6848,name6848,20,job6848 6849,name6849,20,job6849 6850,name6850,20,job6850 6851,name6851,20,job6851 6852,name6852,20,job6852 6853,name6853,20,job6853 6854,name6854,20,job6854 6855,name6855,20,job6855 6856,name6856,20,job6856 6857,name6857,20,job6857 6858,name6858,20,job6858 6859,name6859,20,job6859 6860,name6860,20,job6860 6861,name6861,20,job6861 6862,name6862,20,job6862 6863,name6863,20,job6863 6864,name6864,20,job6864 6865,name6865,20,job6865 6866,name6866,20,job6866 6867,name6867,20,job6867 6868,name6868,20,job6868 6869,name6869,20,job6869 6870,name6870,20,job6870 6871,name6871,20,job6871 6872,name6872,20,job6872 6873,name6873,20,job6873 6874,name6874,20,job6874 6875,name6875,20,job6875 6876,name6876,20,job6876 6877,name6877,20,job6877 6878,name6878,20,job6878 6879,name6879,20,job6879 6880,name6880,20,job6880 6881,name6881,20,job6881 6882,name6882,20,job6882 6883,name6883,20,job6883 6884,name6884,20,job6884 6885,name6885,20,job6885 6886,name6886,20,job6886 6887,name6887,20,job6887 6888,name6888,20,job6888 6889,name6889,20,job6889 6890,name6890,20,job6890 6891,name6891,20,job6891 6892,name6892,20,job6892 6893,name6893,20,job6893 6894,name6894,20,job6894 6895,name6895,20,job6895 6896,name6896,20,job6896 6897,name6897,20,job6897 6898,name6898,20,job6898 6899,name6899,20,job6899 6900,name6900,20,job6900 6901,name6901,20,job6901 6902,name6902,20,job6902 6903,name6903,20,job6903 6904,name6904,20,job6904 6905,name6905,20,job6905 6906,name6906,20,job6906 6907,name6907,20,job6907 6908,name6908,20,job6908 6909,name6909,20,job6909 6910,name6910,20,job6910 6911,name6911,20,job6911 6912,name6912,20,job6912 6913,name6913,20,job6913 6914,name6914,20,job6914 6915,name6915,20,job6915 6916,name6916,20,job6916 6917,name6917,20,job6917 6918,name6918,20,job6918 6919,name6919,20,job6919 6920,name6920,20,job6920 6921,name6921,20,job6921 6922,name6922,20,job6922 6923,name6923,20,job6923 6924,name6924,20,job6924 6925,name6925,20,job6925 6926,name6926,20,job6926 6927,name6927,20,job6927 6928,name6928,20,job6928 6929,name6929,20,job6929 6930,name6930,20,job6930 6931,name6931,20,job6931 6932,name6932,20,job6932 6933,name6933,20,job6933 6934,name6934,20,job6934 6935,name6935,20,job6935 6936,name6936,20,job6936 6937,name6937,20,job6937 6938,name6938,20,job6938 6939,name6939,20,job6939 6940,name6940,20,job6940 6941,name6941,20,job6941 6942,name6942,20,job6942 6943,name6943,20,job6943 6944,name6944,20,job6944 6945,name6945,20,job6945 6946,name6946,20,job6946 6947,name6947,20,job6947 6948,name6948,20,job6948 6949,name6949,20,job6949 6950,name6950,20,job6950 6951,name6951,20,job6951 6952,name6952,20,job6952 6953,name6953,20,job6953 6954,name6954,20,job6954 6955,name6955,20,job6955 6956,name6956,20,job6956 6957,name6957,20,job6957 6958,name6958,20,job6958 6959,name6959,20,job6959 6960,name6960,20,job6960 6961,name6961,20,job6961 6962,name6962,20,job6962 6963,name6963,20,job6963 6964,name6964,20,job6964 6965,name6965,20,job6965 6966,name6966,20,job6966 6967,name6967,20,job6967 6968,name6968,20,job6968 6969,name6969,20,job6969 6970,name6970,20,job6970 6971,name6971,20,job6971 6972,name6972,20,job6972 6973,name6973,20,job6973 6974,name6974,20,job6974 6975,name6975,20,job6975 6976,name6976,20,job6976 6977,name6977,20,job6977 6978,name6978,20,job6978 6979,name6979,20,job6979 6980,name6980,20,job6980 6981,name6981,20,job6981 6982,name6982,20,job6982 6983,name6983,20,job6983 6984,name6984,20,job6984 6985,name6985,20,job6985 6986,name6986,20,job6986 6987,name6987,20,job6987 6988,name6988,20,job6988 6989,name6989,20,job6989 6990,name6990,20,job6990 6991,name6991,20,job6991 6992,name6992,20,job6992 6993,name6993,20,job6993 6994,name6994,20,job6994 6995,name6995,20,job6995 6996,name6996,20,job6996 6997,name6997,20,job6997 6998,name6998,20,job6998 6999,name6999,20,job6999 7000,name7000,20,job7000 7001,name7001,20,job7001 7002,name7002,20,job7002 7003,name7003,20,job7003 7004,name7004,20,job7004 7005,name7005,20,job7005 7006,name7006,20,job7006 7007,name7007,20,job7007 7008,name7008,20,job7008 7009,name7009,20,job7009 7010,name7010,20,job7010 7011,name7011,20,job7011 7012,name7012,20,job7012 7013,name7013,20,job7013 7014,name7014,20,job7014 7015,name7015,20,job7015 7016,name7016,20,job7016 7017,name7017,20,job7017 7018,name7018,20,job7018 7019,name7019,20,job7019 7020,name7020,20,job7020 7021,name7021,20,job7021 7022,name7022,20,job7022 7023,name7023,20,job7023 7024,name7024,20,job7024 7025,name7025,20,job7025 7026,name7026,20,job7026 7027,name7027,20,job7027 7028,name7028,20,job7028 7029,name7029,20,job7029 7030,name7030,20,job7030 7031,name7031,20,job7031 7032,name7032,20,job7032 7033,name7033,20,job7033 7034,name7034,20,job7034 7035,name7035,20,job7035 7036,name7036,20,job7036 7037,name7037,20,job7037 7038,name7038,20,job7038 7039,name7039,20,job7039 7040,name7040,20,job7040 7041,name7041,20,job7041 7042,name7042,20,job7042 7043,name7043,20,job7043 7044,name7044,20,job7044 7045,name7045,20,job7045 7046,name7046,20,job7046 7047,name7047,20,job7047 7048,name7048,20,job7048 7049,name7049,20,job7049 7050,name7050,20,job7050 7051,name7051,20,job7051 7052,name7052,20,job7052 7053,name7053,20,job7053 7054,name7054,20,job7054 7055,name7055,20,job7055 7056,name7056,20,job7056 7057,name7057,20,job7057 7058,name7058,20,job7058 7059,name7059,20,job7059 7060,name7060,20,job7060 7061,name7061,20,job7061 7062,name7062,20,job7062 7063,name7063,20,job7063 7064,name7064,20,job7064 7065,name7065,20,job7065 7066,name7066,20,job7066 7067,name7067,20,job7067 7068,name7068,20,job7068 7069,name7069,20,job7069 7070,name7070,20,job7070 7071,name7071,20,job7071 7072,name7072,20,job7072 7073,name7073,20,job7073 7074,name7074,20,job7074 7075,name7075,20,job7075 7076,name7076,20,job7076 7077,name7077,20,job7077 7078,name7078,20,job7078 7079,name7079,20,job7079 7080,name7080,20,job7080 7081,name7081,20,job7081 7082,name7082,20,job7082 7083,name7083,20,job7083 7084,name7084,20,job7084 7085,name7085,20,job7085 7086,name7086,20,job7086 7087,name7087,20,job7087 7088,name7088,20,job7088 7089,name7089,20,job7089 7090,name7090,20,job7090 7091,name7091,20,job7091 7092,name7092,20,job7092 7093,name7093,20,job7093 7094,name7094,20,job7094 7095,name7095,20,job7095 7096,name7096,20,job7096 7097,name7097,20,job7097 7098,name7098,20,job7098 7099,name7099,20,job7099 7100,name7100,20,job7100 7101,name7101,20,job7101 7102,name7102,20,job7102 7103,name7103,20,job7103 7104,name7104,20,job7104 7105,name7105,20,job7105 7106,name7106,20,job7106 7107,name7107,20,job7107 7108,name7108,20,job7108 7109,name7109,20,job7109 7110,name7110,20,job7110 7111,name7111,20,job7111 7112,name7112,20,job7112 7113,name7113,20,job7113 7114,name7114,20,job7114 7115,name7115,20,job7115 7116,name7116,20,job7116 7117,name7117,20,job7117 7118,name7118,20,job7118 7119,name7119,20,job7119 7120,name7120,20,job7120 7121,name7121,20,job7121 7122,name7122,20,job7122 7123,name7123,20,job7123 7124,name7124,20,job7124 7125,name7125,20,job7125 7126,name7126,20,job7126 7127,name7127,20,job7127 7128,name7128,20,job7128 7129,name7129,20,job7129 7130,name7130,20,job7130 7131,name7131,20,job7131 7132,name7132,20,job7132 7133,name7133,20,job7133 7134,name7134,20,job7134 7135,name7135,20,job7135 7136,name7136,20,job7136 7137,name7137,20,job7137 7138,name7138,20,job7138 7139,name7139,20,job7139 7140,name7140,20,job7140 7141,name7141,20,job7141 7142,name7142,20,job7142 7143,name7143,20,job7143 7144,name7144,20,job7144 7145,name7145,20,job7145 7146,name7146,20,job7146 7147,name7147,20,job7147 7148,name7148,20,job7148 7149,name7149,20,job7149 7150,name7150,20,job7150 7151,name7151,20,job7151 7152,name7152,20,job7152 7153,name7153,20,job7153 7154,name7154,20,job7154 7155,name7155,20,job7155 7156,name7156,20,job7156 7157,name7157,20,job7157 7158,name7158,20,job7158 7159,name7159,20,job7159 7160,name7160,20,job7160 7161,name7161,20,job7161 7162,name7162,20,job7162 7163,name7163,20,job7163 7164,name7164,20,job7164 7165,name7165,20,job7165 7166,name7166,20,job7166 7167,name7167,20,job7167 7168,name7168,20,job7168 7169,name7169,20,job7169 7170,name7170,20,job7170 7171,name7171,20,job7171 7172,name7172,20,job7172 7173,name7173,20,job7173 7174,name7174,20,job7174 7175,name7175,20,job7175 7176,name7176,20,job7176 7177,name7177,20,job7177 7178,name7178,20,job7178 7179,name7179,20,job7179 7180,name7180,20,job7180 7181,name7181,20,job7181 7182,name7182,20,job7182 7183,name7183,20,job7183 7184,name7184,20,job7184 7185,name7185,20,job7185 7186,name7186,20,job7186 7187,name7187,20,job7187 7188,name7188,20,job7188 7189,name7189,20,job7189 7190,name7190,20,job7190 7191,name7191,20,job7191 7192,name7192,20,job7192 7193,name7193,20,job7193 7194,name7194,20,job7194 7195,name7195,20,job7195 7196,name7196,20,job7196 7197,name7197,20,job7197 7198,name7198,20,job7198 7199,name7199,20,job7199 7200,name7200,20,job7200 7201,name7201,20,job7201 7202,name7202,20,job7202 7203,name7203,20,job7203 7204,name7204,20,job7204 7205,name7205,20,job7205 7206,name7206,20,job7206 7207,name7207,20,job7207 7208,name7208,20,job7208 7209,name7209,20,job7209 7210,name7210,20,job7210 7211,name7211,20,job7211 7212,name7212,20,job7212 7213,name7213,20,job7213 7214,name7214,20,job7214 7215,name7215,20,job7215 7216,name7216,20,job7216 7217,name7217,20,job7217 7218,name7218,20,job7218 7219,name7219,20,job7219 7220,name7220,20,job7220 7221,name7221,20,job7221 7222,name7222,20,job7222 7223,name7223,20,job7223 7224,name7224,20,job7224 7225,name7225,20,job7225 7226,name7226,20,job7226 7227,name7227,20,job7227 7228,name7228,20,job7228 7229,name7229,20,job7229 7230,name7230,20,job7230 7231,name7231,20,job7231 7232,name7232,20,job7232 7233,name7233,20,job7233 7234,name7234,20,job7234 7235,name7235,20,job7235 7236,name7236,20,job7236 7237,name7237,20,job7237 7238,name7238,20,job7238 7239,name7239,20,job7239 7240,name7240,20,job7240 7241,name7241,20,job7241 7242,name7242,20,job7242 7243,name7243,20,job7243 7244,name7244,20,job7244 7245,name7245,20,job7245 7246,name7246,20,job7246 7247,name7247,20,job7247 7248,name7248,20,job7248 7249,name7249,20,job7249 7250,name7250,20,job7250 7251,name7251,20,job7251 7252,name7252,20,job7252 7253,name7253,20,job7253 7254,name7254,20,job7254 7255,name7255,20,job7255 7256,name7256,20,job7256 7257,name7257,20,job7257 7258,name7258,20,job7258 7259,name7259,20,job7259 7260,name7260,20,job7260 7261,name7261,20,job7261 7262,name7262,20,job7262 7263,name7263,20,job7263 7264,name7264,20,job7264 7265,name7265,20,job7265 7266,name7266,20,job7266 7267,name7267,20,job7267 7268,name7268,20,job7268 7269,name7269,20,job7269 7270,name7270,20,job7270 7271,name7271,20,job7271 7272,name7272,20,job7272 7273,name7273,20,job7273 7274,name7274,20,job7274 7275,name7275,20,job7275 7276,name7276,20,job7276 7277,name7277,20,job7277 7278,name7278,20,job7278 7279,name7279,20,job7279 7280,name7280,20,job7280 7281,name7281,20,job7281 7282,name7282,20,job7282 7283,name7283,20,job7283 7284,name7284,20,job7284 7285,name7285,20,job7285 7286,name7286,20,job7286 7287,name7287,20,job7287 7288,name7288,20,job7288 7289,name7289,20,job7289 7290,name7290,20,job7290 7291,name7291,20,job7291 7292,name7292,20,job7292 7293,name7293,20,job7293 7294,name7294,20,job7294 7295,name7295,20,job7295 7296,name7296,20,job7296 7297,name7297,20,job7297 7298,name7298,20,job7298 7299,name7299,20,job7299 7300,name7300,20,job7300 7301,name7301,20,job7301 7302,name7302,20,job7302 7303,name7303,20,job7303 7304,name7304,20,job7304 7305,name7305,20,job7305 7306,name7306,20,job7306 7307,name7307,20,job7307 7308,name7308,20,job7308 7309,name7309,20,job7309 7310,name7310,20,job7310 7311,name7311,20,job7311 7312,name7312,20,job7312 7313,name7313,20,job7313 7314,name7314,20,job7314 7315,name7315,20,job7315 7316,name7316,20,job7316 7317,name7317,20,job7317 7318,name7318,20,job7318 7319,name7319,20,job7319 7320,name7320,20,job7320 7321,name7321,20,job7321 7322,name7322,20,job7322 7323,name7323,20,job7323 7324,name7324,20,job7324 7325,name7325,20,job7325 7326,name7326,20,job7326 7327,name7327,20,job7327 7328,name7328,20,job7328 7329,name7329,20,job7329 7330,name7330,20,job7330 7331,name7331,20,job7331 7332,name7332,20,job7332 7333,name7333,20,job7333 7334,name7334,20,job7334 7335,name7335,20,job7335 7336,name7336,20,job7336 7337,name7337,20,job7337 7338,name7338,20,job7338 7339,name7339,20,job7339 7340,name7340,20,job7340 7341,name7341,20,job7341 7342,name7342,20,job7342 7343,name7343,20,job7343 7344,name7344,20,job7344 7345,name7345,20,job7345 7346,name7346,20,job7346 7347,name7347,20,job7347 7348,name7348,20,job7348 7349,name7349,20,job7349 7350,name7350,20,job7350 7351,name7351,20,job7351 7352,name7352,20,job7352 7353,name7353,20,job7353 7354,name7354,20,job7354 7355,name7355,20,job7355 7356,name7356,20,job7356 7357,name7357,20,job7357 7358,name7358,20,job7358 7359,name7359,20,job7359 7360,name7360,20,job7360 7361,name7361,20,job7361 7362,name7362,20,job7362 7363,name7363,20,job7363 7364,name7364,20,job7364 7365,name7365,20,job7365 7366,name7366,20,job7366 7367,name7367,20,job7367 7368,name7368,20,job7368 7369,name7369,20,job7369 7370,name7370,20,job7370 7371,name7371,20,job7371 7372,name7372,20,job7372 7373,name7373,20,job7373 7374,name7374,20,job7374 7375,name7375,20,job7375 7376,name7376,20,job7376 7377,name7377,20,job7377 7378,name7378,20,job7378 7379,name7379,20,job7379 7380,name7380,20,job7380 7381,name7381,20,job7381 7382,name7382,20,job7382 7383,name7383,20,job7383 7384,name7384,20,job7384 7385,name7385,20,job7385 7386,name7386,20,job7386 7387,name7387,20,job7387 7388,name7388,20,job7388 7389,name7389,20,job7389 7390,name7390,20,job7390 7391,name7391,20,job7391 7392,name7392,20,job7392 7393,name7393,20,job7393 7394,name7394,20,job7394 7395,name7395,20,job7395 7396,name7396,20,job7396 7397,name7397,20,job7397 7398,name7398,20,job7398 7399,name7399,20,job7399 7400,name7400,20,job7400 7401,name7401,20,job7401 7402,name7402,20,job7402 7403,name7403,20,job7403 7404,name7404,20,job7404 7405,name7405,20,job7405 7406,name7406,20,job7406 7407,name7407,20,job7407 7408,name7408,20,job7408 7409,name7409,20,job7409 7410,name7410,20,job7410 7411,name7411,20,job7411 7412,name7412,20,job7412 7413,name7413,20,job7413 7414,name7414,20,job7414 7415,name7415,20,job7415 7416,name7416,20,job7416 7417,name7417,20,job7417 7418,name7418,20,job7418 7419,name7419,20,job7419 7420,name7420,20,job7420 7421,name7421,20,job7421 7422,name7422,20,job7422 7423,name7423,20,job7423 7424,name7424,20,job7424 7425,name7425,20,job7425 7426,name7426,20,job7426 7427,name7427,20,job7427 7428,name7428,20,job7428 7429,name7429,20,job7429 7430,name7430,20,job7430 7431,name7431,20,job7431 7432,name7432,20,job7432 7433,name7433,20,job7433 7434,name7434,20,job7434 7435,name7435,20,job7435 7436,name7436,20,job7436 7437,name7437,20,job7437 7438,name7438,20,job7438 7439,name7439,20,job7439 7440,name7440,20,job7440 7441,name7441,20,job7441 7442,name7442,20,job7442 7443,name7443,20,job7443 7444,name7444,20,job7444 7445,name7445,20,job7445 7446,name7446,20,job7446 7447,name7447,20,job7447 7448,name7448,20,job7448 7449,name7449,20,job7449 7450,name7450,20,job7450 7451,name7451,20,job7451 7452,name7452,20,job7452 7453,name7453,20,job7453 7454,name7454,20,job7454 7455,name7455,20,job7455 7456,name7456,20,job7456 7457,name7457,20,job7457 7458,name7458,20,job7458 7459,name7459,20,job7459 7460,name7460,20,job7460 7461,name7461,20,job7461 7462,name7462,20,job7462 7463,name7463,20,job7463 7464,name7464,20,job7464 7465,name7465,20,job7465 7466,name7466,20,job7466 7467,name7467,20,job7467 7468,name7468,20,job7468 7469,name7469,20,job7469 7470,name7470,20,job7470 7471,name7471,20,job7471 7472,name7472,20,job7472 7473,name7473,20,job7473 7474,name7474,20,job7474 7475,name7475,20,job7475 7476,name7476,20,job7476 7477,name7477,20,job7477 7478,name7478,20,job7478 7479,name7479,20,job7479 7480,name7480,20,job7480 7481,name7481,20,job7481 7482,name7482,20,job7482 7483,name7483,20,job7483 7484,name7484,20,job7484 7485,name7485,20,job7485 7486,name7486,20,job7486 7487,name7487,20,job7487 7488,name7488,20,job7488 7489,name7489,20,job7489 7490,name7490,20,job7490 7491,name7491,20,job7491 7492,name7492,20,job7492 7493,name7493,20,job7493 7494,name7494,20,job7494 7495,name7495,20,job7495 7496,name7496,20,job7496 7497,name7497,20,job7497 7498,name7498,20,job7498 7499,name7499,20,job7499 7500,name7500,20,job7500 7501,name7501,20,job7501 7502,name7502,20,job7502 7503,name7503,20,job7503 7504,name7504,20,job7504 7505,name7505,20,job7505 7506,name7506,20,job7506 7507,name7507,20,job7507 7508,name7508,20,job7508 7509,name7509,20,job7509 7510,name7510,20,job7510 7511,name7511,20,job7511 7512,name7512,20,job7512 7513,name7513,20,job7513 7514,name7514,20,job7514 7515,name7515,20,job7515 7516,name7516,20,job7516 7517,name7517,20,job7517 7518,name7518,20,job7518 7519,name7519,20,job7519 7520,name7520,20,job7520 7521,name7521,20,job7521 7522,name7522,20,job7522 7523,name7523,20,job7523 7524,name7524,20,job7524 7525,name7525,20,job7525 7526,name7526,20,job7526 7527,name7527,20,job7527 7528,name7528,20,job7528 7529,name7529,20,job7529 7530,name7530,20,job7530 7531,name7531,20,job7531 7532,name7532,20,job7532 7533,name7533,20,job7533 7534,name7534,20,job7534 7535,name7535,20,job7535 7536,name7536,20,job7536 7537,name7537,20,job7537 7538,name7538,20,job7538 7539,name7539,20,job7539 7540,name7540,20,job7540 7541,name7541,20,job7541 7542,name7542,20,job7542 7543,name7543,20,job7543 7544,name7544,20,job7544 7545,name7545,20,job7545 7546,name7546,20,job7546 7547,name7547,20,job7547 7548,name7548,20,job7548 7549,name7549,20,job7549 7550,name7550,20,job7550 7551,name7551,20,job7551 7552,name7552,20,job7552 7553,name7553,20,job7553 7554,name7554,20,job7554 7555,name7555,20,job7555 7556,name7556,20,job7556 7557,name7557,20,job7557 7558,name7558,20,job7558 7559,name7559,20,job7559 7560,name7560,20,job7560 7561,name7561,20,job7561 7562,name7562,20,job7562 7563,name7563,20,job7563 7564,name7564,20,job7564 7565,name7565,20,job7565 7566,name7566,20,job7566 7567,name7567,20,job7567 7568,name7568,20,job7568 7569,name7569,20,job7569 7570,name7570,20,job7570 7571,name7571,20,job7571 7572,name7572,20,job7572 7573,name7573,20,job7573 7574,name7574,20,job7574 7575,name7575,20,job7575 7576,name7576,20,job7576 7577,name7577,20,job7577 7578,name7578,20,job7578 7579,name7579,20,job7579 7580,name7580,20,job7580 7581,name7581,20,job7581 7582,name7582,20,job7582 7583,name7583,20,job7583 7584,name7584,20,job7584 7585,name7585,20,job7585 7586,name7586,20,job7586 7587,name7587,20,job7587 7588,name7588,20,job7588 7589,name7589,20,job7589 7590,name7590,20,job7590 7591,name7591,20,job7591 7592,name7592,20,job7592 7593,name7593,20,job7593 7594,name7594,20,job7594 7595,name7595,20,job7595 7596,name7596,20,job7596 7597,name7597,20,job7597 7598,name7598,20,job7598 7599,name7599,20,job7599 7600,name7600,20,job7600 7601,name7601,20,job7601 7602,name7602,20,job7602 7603,name7603,20,job7603 7604,name7604,20,job7604 7605,name7605,20,job7605 7606,name7606,20,job7606 7607,name7607,20,job7607 7608,name7608,20,job7608 7609,name7609,20,job7609 7610,name7610,20,job7610 7611,name7611,20,job7611 7612,name7612,20,job7612 7613,name7613,20,job7613 7614,name7614,20,job7614 7615,name7615,20,job7615 7616,name7616,20,job7616 7617,name7617,20,job7617 7618,name7618,20,job7618 7619,name7619,20,job7619 7620,name7620,20,job7620 7621,name7621,20,job7621 7622,name7622,20,job7622 7623,name7623,20,job7623 7624,name7624,20,job7624 7625,name7625,20,job7625 7626,name7626,20,job7626 7627,name7627,20,job7627 7628,name7628,20,job7628 7629,name7629,20,job7629 7630,name7630,20,job7630 7631,name7631,20,job7631 7632,name7632,20,job7632 7633,name7633,20,job7633 7634,name7634,20,job7634 7635,name7635,20,job7635 7636,name7636,20,job7636 7637,name7637,20,job7637 7638,name7638,20,job7638 7639,name7639,20,job7639 7640,name7640,20,job7640 7641,name7641,20,job7641 7642,name7642,20,job7642 7643,name7643,20,job7643 7644,name7644,20,job7644 7645,name7645,20,job7645 7646,name7646,20,job7646 7647,name7647,20,job7647 7648,name7648,20,job7648 7649,name7649,20,job7649 7650,name7650,20,job7650 7651,name7651,20,job7651 7652,name7652,20,job7652 7653,name7653,20,job7653 7654,name7654,20,job7654 7655,name7655,20,job7655 7656,name7656,20,job7656 7657,name7657,20,job7657 7658,name7658,20,job7658 7659,name7659,20,job7659 7660,name7660,20,job7660 7661,name7661,20,job7661 7662,name7662,20,job7662 7663,name7663,20,job7663 7664,name7664,20,job7664 7665,name7665,20,job7665 7666,name7666,20,job7666 7667,name7667,20,job7667 7668,name7668,20,job7668 7669,name7669,20,job7669 7670,name7670,20,job7670 7671,name7671,20,job7671 7672,name7672,20,job7672 7673,name7673,20,job7673 7674,name7674,20,job7674 7675,name7675,20,job7675 7676,name7676,20,job7676 7677,name7677,20,job7677 7678,name7678,20,job7678 7679,name7679,20,job7679 7680,name7680,20,job7680 7681,name7681,20,job7681 7682,name7682,20,job7682 7683,name7683,20,job7683 7684,name7684,20,job7684 7685,name7685,20,job7685 7686,name7686,20,job7686 7687,name7687,20,job7687 7688,name7688,20,job7688 7689,name7689,20,job7689 7690,name7690,20,job7690 7691,name7691,20,job7691 7692,name7692,20,job7692 7693,name7693,20,job7693 7694,name7694,20,job7694 7695,name7695,20,job7695 7696,name7696,20,job7696 7697,name7697,20,job7697 7698,name7698,20,job7698 7699,name7699,20,job7699 7700,name7700,20,job7700 7701,name7701,20,job7701 7702,name7702,20,job7702 7703,name7703,20,job7703 7704,name7704,20,job7704 7705,name7705,20,job7705 7706,name7706,20,job7706 7707,name7707,20,job7707 7708,name7708,20,job7708 7709,name7709,20,job7709 7710,name7710,20,job7710 7711,name7711,20,job7711 7712,name7712,20,job7712 7713,name7713,20,job7713 7714,name7714,20,job7714 7715,name7715,20,job7715 7716,name7716,20,job7716 7717,name7717,20,job7717 7718,name7718,20,job7718 7719,name7719,20,job7719 7720,name7720,20,job7720 7721,name7721,20,job7721 7722,name7722,20,job7722 7723,name7723,20,job7723 7724,name7724,20,job7724 7725,name7725,20,job7725 7726,name7726,20,job7726 7727,name7727,20,job7727 7728,name7728,20,job7728 7729,name7729,20,job7729 7730,name7730,20,job7730 7731,name7731,20,job7731 7732,name7732,20,job7732 7733,name7733,20,job7733 7734,name7734,20,job7734 7735,name7735,20,job7735 7736,name7736,20,job7736 7737,name7737,20,job7737 7738,name7738,20,job7738 7739,name7739,20,job7739 7740,name7740,20,job7740 7741,name7741,20,job7741 7742,name7742,20,job7742 7743,name7743,20,job7743 7744,name7744,20,job7744 7745,name7745,20,job7745 7746,name7746,20,job7746 7747,name7747,20,job7747 7748,name7748,20,job7748 7749,name7749,20,job7749 7750,name7750,20,job7750 7751,name7751,20,job7751 7752,name7752,20,job7752 7753,name7753,20,job7753 7754,name7754,20,job7754 7755,name7755,20,job7755 7756,name7756,20,job7756 7757,name7757,20,job7757 7758,name7758,20,job7758 7759,name7759,20,job7759 7760,name7760,20,job7760 7761,name7761,20,job7761 7762,name7762,20,job7762 7763,name7763,20,job7763 7764,name7764,20,job7764 7765,name7765,20,job7765 7766,name7766,20,job7766 7767,name7767,20,job7767 7768,name7768,20,job7768 7769,name7769,20,job7769 7770,name7770,20,job7770 7771,name7771,20,job7771 7772,name7772,20,job7772 7773,name7773,20,job7773 7774,name7774,20,job7774 7775,name7775,20,job7775 7776,name7776,20,job7776 7777,name7777,20,job7777 7778,name7778,20,job7778 7779,name7779,20,job7779 7780,name7780,20,job7780 7781,name7781,20,job7781 7782,name7782,20,job7782 7783,name7783,20,job7783 7784,name7784,20,job7784 7785,name7785,20,job7785 7786,name7786,20,job7786 7787,name7787,20,job7787 7788,name7788,20,job7788 7789,name7789,20,job7789 7790,name7790,20,job7790 7791,name7791,20,job7791 7792,name7792,20,job7792 7793,name7793,20,job7793 7794,name7794,20,job7794 7795,name7795,20,job7795 7796,name7796,20,job7796 7797,name7797,20,job7797 7798,name7798,20,job7798 7799,name7799,20,job7799 7800,name7800,20,job7800 7801,name7801,20,job7801 7802,name7802,20,job7802 7803,name7803,20,job7803 7804,name7804,20,job7804 7805,name7805,20,job7805 7806,name7806,20,job7806 7807,name7807,20,job7807 7808,name7808,20,job7808 7809,name7809,20,job7809 7810,name7810,20,job7810 7811,name7811,20,job7811 7812,name7812,20,job7812 7813,name7813,20,job7813 7814,name7814,20,job7814 7815,name7815,20,job7815 7816,name7816,20,job7816 7817,name7817,20,job7817 7818,name7818,20,job7818 7819,name7819,20,job7819 7820,name7820,20,job7820 7821,name7821,20,job7821 7822,name7822,20,job7822 7823,name7823,20,job7823 7824,name7824,20,job7824 7825,name7825,20,job7825 7826,name7826,20,job7826 7827,name7827,20,job7827 7828,name7828,20,job7828 7829,name7829,20,job7829 7830,name7830,20,job7830 7831,name7831,20,job7831 7832,name7832,20,job7832 7833,name7833,20,job7833 7834,name7834,20,job7834 7835,name7835,20,job7835 7836,name7836,20,job7836 7837,name7837,20,job7837 7838,name7838,20,job7838 7839,name7839,20,job7839 7840,name7840,20,job7840 7841,name7841,20,job7841 7842,name7842,20,job7842 7843,name7843,20,job7843 7844,name7844,20,job7844 7845,name7845,20,job7845 7846,name7846,20,job7846 7847,name7847,20,job7847 7848,name7848,20,job7848 7849,name7849,20,job7849 7850,name7850,20,job7850 7851,name7851,20,job7851 7852,name7852,20,job7852 7853,name7853,20,job7853 7854,name7854,20,job7854 7855,name7855,20,job7855 7856,name7856,20,job7856 7857,name7857,20,job7857 7858,name7858,20,job7858 7859,name7859,20,job7859 7860,name7860,20,job7860 7861,name7861,20,job7861 7862,name7862,20,job7862 7863,name7863,20,job7863 7864,name7864,20,job7864 7865,name7865,20,job7865 7866,name7866,20,job7866 7867,name7867,20,job7867 7868,name7868,20,job7868 7869,name7869,20,job7869 7870,name7870,20,job7870 7871,name7871,20,job7871 7872,name7872,20,job7872 7873,name7873,20,job7873 7874,name7874,20,job7874 7875,name7875,20,job7875 7876,name7876,20,job7876 7877,name7877,20,job7877 7878,name7878,20,job7878 7879,name7879,20,job7879 7880,name7880,20,job7880 7881,name7881,20,job7881 7882,name7882,20,job7882 7883,name7883,20,job7883 7884,name7884,20,job7884 7885,name7885,20,job7885 7886,name7886,20,job7886 7887,name7887,20,job7887 7888,name7888,20,job7888 7889,name7889,20,job7889 7890,name7890,20,job7890 7891,name7891,20,job7891 7892,name7892,20,job7892 7893,name7893,20,job7893 7894,name7894,20,job7894 7895,name7895,20,job7895 7896,name7896,20,job7896 7897,name7897,20,job7897 7898,name7898,20,job7898 7899,name7899,20,job7899 7900,name7900,20,job7900 7901,name7901,20,job7901 7902,name7902,20,job7902 7903,name7903,20,job7903 7904,name7904,20,job7904 7905,name7905,20,job7905 7906,name7906,20,job7906 7907,name7907,20,job7907 7908,name7908,20,job7908 7909,name7909,20,job7909 7910,name7910,20,job7910 7911,name7911,20,job7911 7912,name7912,20,job7912 7913,name7913,20,job7913 7914,name7914,20,job7914 7915,name7915,20,job7915 7916,name7916,20,job7916 7917,name7917,20,job7917 7918,name7918,20,job7918 7919,name7919,20,job7919 7920,name7920,20,job7920 7921,name7921,20,job7921 7922,name7922,20,job7922 7923,name7923,20,job7923 7924,name7924,20,job7924 7925,name7925,20,job7925 7926,name7926,20,job7926 7927,name7927,20,job7927 7928,name7928,20,job7928 7929,name7929,20,job7929 7930,name7930,20,job7930 7931,name7931,20,job7931 7932,name7932,20,job7932 7933,name7933,20,job7933 7934,name7934,20,job7934 7935,name7935,20,job7935 7936,name7936,20,job7936 7937,name7937,20,job7937 7938,name7938,20,job7938 7939,name7939,20,job7939 7940,name7940,20,job7940 7941,name7941,20,job7941 7942,name7942,20,job7942 7943,name7943,20,job7943 7944,name7944,20,job7944 7945,name7945,20,job7945 7946,name7946,20,job7946 7947,name7947,20,job7947 7948,name7948,20,job7948 7949,name7949,20,job7949 7950,name7950,20,job7950 7951,name7951,20,job7951 7952,name7952,20,job7952 7953,name7953,20,job7953 7954,name7954,20,job7954 7955,name7955,20,job7955 7956,name7956,20,job7956 7957,name7957,20,job7957 7958,name7958,20,job7958 7959,name7959,20,job7959 7960,name7960,20,job7960 7961,name7961,20,job7961 7962,name7962,20,job7962 7963,name7963,20,job7963 7964,name7964,20,job7964 7965,name7965,20,job7965 7966,name7966,20,job7966 7967,name7967,20,job7967 7968,name7968,20,job7968 7969,name7969,20,job7969 7970,name7970,20,job7970 7971,name7971,20,job7971 7972,name7972,20,job7972 7973,name7973,20,job7973 7974,name7974,20,job7974 7975,name7975,20,job7975 7976,name7976,20,job7976 7977,name7977,20,job7977 7978,name7978,20,job7978 7979,name7979,20,job7979 7980,name7980,20,job7980 7981,name7981,20,job7981 7982,name7982,20,job7982 7983,name7983,20,job7983 7984,name7984,20,job7984 7985,name7985,20,job7985 7986,name7986,20,job7986 7987,name7987,20,job7987 7988,name7988,20,job7988 7989,name7989,20,job7989 7990,name7990,20,job7990 7991,name7991,20,job7991 7992,name7992,20,job7992 7993,name7993,20,job7993 7994,name7994,20,job7994 7995,name7995,20,job7995 7996,name7996,20,job7996 7997,name7997,20,job7997 7998,name7998,20,job7998 7999,name7999,20,job7999 8000,name8000,20,job8000 8001,name8001,20,job8001 8002,name8002,20,job8002 8003,name8003,20,job8003 8004,name8004,20,job8004 8005,name8005,20,job8005 8006,name8006,20,job8006 8007,name8007,20,job8007 8008,name8008,20,job8008 8009,name8009,20,job8009 8010,name8010,20,job8010 8011,name8011,20,job8011 8012,name8012,20,job8012 8013,name8013,20,job8013 8014,name8014,20,job8014 8015,name8015,20,job8015 8016,name8016,20,job8016 8017,name8017,20,job8017 8018,name8018,20,job8018 8019,name8019,20,job8019 8020,name8020,20,job8020 8021,name8021,20,job8021 8022,name8022,20,job8022 8023,name8023,20,job8023 8024,name8024,20,job8024 8025,name8025,20,job8025 8026,name8026,20,job8026 8027,name8027,20,job8027 8028,name8028,20,job8028 8029,name8029,20,job8029 8030,name8030,20,job8030 8031,name8031,20,job8031 8032,name8032,20,job8032 8033,name8033,20,job8033 8034,name8034,20,job8034 8035,name8035,20,job8035 8036,name8036,20,job8036 8037,name8037,20,job8037 8038,name8038,20,job8038 8039,name8039,20,job8039 8040,name8040,20,job8040 8041,name8041,20,job8041 8042,name8042,20,job8042 8043,name8043,20,job8043 8044,name8044,20,job8044 8045,name8045,20,job8045 8046,name8046,20,job8046 8047,name8047,20,job8047 8048,name8048,20,job8048 8049,name8049,20,job8049 8050,name8050,20,job8050 8051,name8051,20,job8051 8052,name8052,20,job8052 8053,name8053,20,job8053 8054,name8054,20,job8054 8055,name8055,20,job8055 8056,name8056,20,job8056 8057,name8057,20,job8057 8058,name8058,20,job8058 8059,name8059,20,job8059 8060,name8060,20,job8060 8061,name8061,20,job8061 8062,name8062,20,job8062 8063,name8063,20,job8063 8064,name8064,20,job8064 8065,name8065,20,job8065 8066,name8066,20,job8066 8067,name8067,20,job8067 8068,name8068,20,job8068 8069,name8069,20,job8069 8070,name8070,20,job8070 8071,name8071,20,job8071 8072,name8072,20,job8072 8073,name8073,20,job8073 8074,name8074,20,job8074 8075,name8075,20,job8075 8076,name8076,20,job8076 8077,name8077,20,job8077 8078,name8078,20,job8078 8079,name8079,20,job8079 8080,name8080,20,job8080 8081,name8081,20,job8081 8082,name8082,20,job8082 8083,name8083,20,job8083 8084,name8084,20,job8084 8085,name8085,20,job8085 8086,name8086,20,job8086 8087,name8087,20,job8087 8088,name8088,20,job8088 8089,name8089,20,job8089 8090,name8090,20,job8090 8091,name8091,20,job8091 8092,name8092,20,job8092 8093,name8093,20,job8093 8094,name8094,20,job8094 8095,name8095,20,job8095 8096,name8096,20,job8096 8097,name8097,20,job8097 8098,name8098,20,job8098 8099,name8099,20,job8099 8100,name8100,20,job8100 8101,name8101,20,job8101 8102,name8102,20,job8102 8103,name8103,20,job8103 8104,name8104,20,job8104 8105,name8105,20,job8105 8106,name8106,20,job8106 8107,name8107,20,job8107 8108,name8108,20,job8108 8109,name8109,20,job8109 8110,name8110,20,job8110 8111,name8111,20,job8111 8112,name8112,20,job8112 8113,name8113,20,job8113 8114,name8114,20,job8114 8115,name8115,20,job8115 8116,name8116,20,job8116 8117,name8117,20,job8117 8118,name8118,20,job8118 8119,name8119,20,job8119 8120,name8120,20,job8120 8121,name8121,20,job8121 8122,name8122,20,job8122 8123,name8123,20,job8123 8124,name8124,20,job8124 8125,name8125,20,job8125 8126,name8126,20,job8126 8127,name8127,20,job8127 8128,name8128,20,job8128 8129,name8129,20,job8129 8130,name8130,20,job8130 8131,name8131,20,job8131 8132,name8132,20,job8132 8133,name8133,20,job8133 8134,name8134,20,job8134 8135,name8135,20,job8135 8136,name8136,20,job8136 8137,name8137,20,job8137 8138,name8138,20,job8138 8139,name8139,20,job8139 8140,name8140,20,job8140 8141,name8141,20,job8141 8142,name8142,20,job8142 8143,name8143,20,job8143 8144,name8144,20,job8144 8145,name8145,20,job8145 8146,name8146,20,job8146 8147,name8147,20,job8147 8148,name8148,20,job8148 8149,name8149,20,job8149 8150,name8150,20,job8150 8151,name8151,20,job8151 8152,name8152,20,job8152 8153,name8153,20,job8153 8154,name8154,20,job8154 8155,name8155,20,job8155 8156,name8156,20,job8156 8157,name8157,20,job8157 8158,name8158,20,job8158 8159,name8159,20,job8159 8160,name8160,20,job8160 8161,name8161,20,job8161 8162,name8162,20,job8162 8163,name8163,20,job8163 8164,name8164,20,job8164 8165,name8165,20,job8165 8166,name8166,20,job8166 8167,name8167,20,job8167 8168,name8168,20,job8168 8169,name8169,20,job8169 8170,name8170,20,job8170 8171,name8171,20,job8171 8172,name8172,20,job8172 8173,name8173,20,job8173 8174,name8174,20,job8174 8175,name8175,20,job8175 8176,name8176,20,job8176 8177,name8177,20,job8177 8178,name8178,20,job8178 8179,name8179,20,job8179 8180,name8180,20,job8180 8181,name8181,20,job8181 8182,name8182,20,job8182 8183,name8183,20,job8183 8184,name8184,20,job8184 8185,name8185,20,job8185 8186,name8186,20,job8186 8187,name8187,20,job8187 8188,name8188,20,job8188 8189,name8189,20,job8189 8190,name8190,20,job8190 8191,name8191,20,job8191 8192,name8192,20,job8192 8193,name8193,20,job8193 8194,name8194,20,job8194 8195,name8195,20,job8195 8196,name8196,20,job8196 8197,name8197,20,job8197 8198,name8198,20,job8198 8199,name8199,20,job8199 8200,name8200,20,job8200 8201,name8201,20,job8201 8202,name8202,20,job8202 8203,name8203,20,job8203 8204,name8204,20,job8204 8205,name8205,20,job8205 8206,name8206,20,job8206 8207,name8207,20,job8207 8208,name8208,20,job8208 8209,name8209,20,job8209 8210,name8210,20,job8210 8211,name8211,20,job8211 8212,name8212,20,job8212 8213,name8213,20,job8213 8214,name8214,20,job8214 8215,name8215,20,job8215 8216,name8216,20,job8216 8217,name8217,20,job8217 8218,name8218,20,job8218 8219,name8219,20,job8219 8220,name8220,20,job8220 8221,name8221,20,job8221 8222,name8222,20,job8222 8223,name8223,20,job8223 8224,name8224,20,job8224 8225,name8225,20,job8225 8226,name8226,20,job8226 8227,name8227,20,job8227 8228,name8228,20,job8228 8229,name8229,20,job8229 8230,name8230,20,job8230 8231,name8231,20,job8231 8232,name8232,20,job8232 8233,name8233,20,job8233 8234,name8234,20,job8234 8235,name8235,20,job8235 8236,name8236,20,job8236 8237,name8237,20,job8237 8238,name8238,20,job8238 8239,name8239,20,job8239 8240,name8240,20,job8240 8241,name8241,20,job8241 8242,name8242,20,job8242 8243,name8243,20,job8243 8244,name8244,20,job8244 8245,name8245,20,job8245 8246,name8246,20,job8246 8247,name8247,20,job8247 8248,name8248,20,job8248 8249,name8249,20,job8249 8250,name8250,20,job8250 8251,name8251,20,job8251 8252,name8252,20,job8252 8253,name8253,20,job8253 8254,name8254,20,job8254 8255,name8255,20,job8255 8256,name8256,20,job8256 8257,name8257,20,job8257 8258,name8258,20,job8258 8259,name8259,20,job8259 8260,name8260,20,job8260 8261,name8261,20,job8261 8262,name8262,20,job8262 8263,name8263,20,job8263 8264,name8264,20,job8264 8265,name8265,20,job8265 8266,name8266,20,job8266 8267,name8267,20,job8267 8268,name8268,20,job8268 8269,name8269,20,job8269 8270,name8270,20,job8270 8271,name8271,20,job8271 8272,name8272,20,job8272 8273,name8273,20,job8273 8274,name8274,20,job8274 8275,name8275,20,job8275 8276,name8276,20,job8276 8277,name8277,20,job8277 8278,name8278,20,job8278 8279,name8279,20,job8279 8280,name8280,20,job8280 8281,name8281,20,job8281 8282,name8282,20,job8282 8283,name8283,20,job8283 8284,name8284,20,job8284 8285,name8285,20,job8285 8286,name8286,20,job8286 8287,name8287,20,job8287 8288,name8288,20,job8288 8289,name8289,20,job8289 8290,name8290,20,job8290 8291,name8291,20,job8291 8292,name8292,20,job8292 8293,name8293,20,job8293 8294,name8294,20,job8294 8295,name8295,20,job8295 8296,name8296,20,job8296 8297,name8297,20,job8297 8298,name8298,20,job8298 8299,name8299,20,job8299 8300,name8300,20,job8300 8301,name8301,20,job8301 8302,name8302,20,job8302 8303,name8303,20,job8303 8304,name8304,20,job8304 8305,name8305,20,job8305 8306,name8306,20,job8306 8307,name8307,20,job8307 8308,name8308,20,job8308 8309,name8309,20,job8309 8310,name8310,20,job8310 8311,name8311,20,job8311 8312,name8312,20,job8312 8313,name8313,20,job8313 8314,name8314,20,job8314 8315,name8315,20,job8315 8316,name8316,20,job8316 8317,name8317,20,job8317 8318,name8318,20,job8318 8319,name8319,20,job8319 8320,name8320,20,job8320 8321,name8321,20,job8321 8322,name8322,20,job8322 8323,name8323,20,job8323 8324,name8324,20,job8324 8325,name8325,20,job8325 8326,name8326,20,job8326 8327,name8327,20,job8327 8328,name8328,20,job8328 8329,name8329,20,job8329 8330,name8330,20,job8330 8331,name8331,20,job8331 8332,name8332,20,job8332 8333,name8333,20,job8333 8334,name8334,20,job8334 8335,name8335,20,job8335 8336,name8336,20,job8336 8337,name8337,20,job8337 8338,name8338,20,job8338 8339,name8339,20,job8339 8340,name8340,20,job8340 8341,name8341,20,job8341 8342,name8342,20,job8342 8343,name8343,20,job8343 8344,name8344,20,job8344 8345,name8345,20,job8345 8346,name8346,20,job8346 8347,name8347,20,job8347 8348,name8348,20,job8348 8349,name8349,20,job8349 8350,name8350,20,job8350 8351,name8351,20,job8351 8352,name8352,20,job8352 8353,name8353,20,job8353 8354,name8354,20,job8354 8355,name8355,20,job8355 8356,name8356,20,job8356 8357,name8357,20,job8357 8358,name8358,20,job8358 8359,name8359,20,job8359 8360,name8360,20,job8360 8361,name8361,20,job8361 8362,name8362,20,job8362 8363,name8363,20,job8363 8364,name8364,20,job8364 8365,name8365,20,job8365 8366,name8366,20,job8366 8367,name8367,20,job8367 8368,name8368,20,job8368 8369,name8369,20,job8369 8370,name8370,20,job8370 8371,name8371,20,job8371 8372,name8372,20,job8372 8373,name8373,20,job8373 8374,name8374,20,job8374 8375,name8375,20,job8375 8376,name8376,20,job8376 8377,name8377,20,job8377 8378,name8378,20,job8378 8379,name8379,20,job8379 8380,name8380,20,job8380 8381,name8381,20,job8381 8382,name8382,20,job8382 8383,name8383,20,job8383 8384,name8384,20,job8384 8385,name8385,20,job8385 8386,name8386,20,job8386 8387,name8387,20,job8387 8388,name8388,20,job8388 8389,name8389,20,job8389 8390,name8390,20,job8390 8391,name8391,20,job8391 8392,name8392,20,job8392 8393,name8393,20,job8393 8394,name8394,20,job8394 8395,name8395,20,job8395 8396,name8396,20,job8396 8397,name8397,20,job8397 8398,name8398,20,job8398 8399,name8399,20,job8399 8400,name8400,20,job8400 8401,name8401,20,job8401 8402,name8402,20,job8402 8403,name8403,20,job8403 8404,name8404,20,job8404 8405,name8405,20,job8405 8406,name8406,20,job8406 8407,name8407,20,job8407 8408,name8408,20,job8408 8409,name8409,20,job8409 8410,name8410,20,job8410 8411,name8411,20,job8411 8412,name8412,20,job8412 8413,name8413,20,job8413 8414,name8414,20,job8414 8415,name8415,20,job8415 8416,name8416,20,job8416 8417,name8417,20,job8417 8418,name8418,20,job8418 8419,name8419,20,job8419 8420,name8420,20,job8420 8421,name8421,20,job8421 8422,name8422,20,job8422 8423,name8423,20,job8423 8424,name8424,20,job8424 8425,name8425,20,job8425 8426,name8426,20,job8426 8427,name8427,20,job8427 8428,name8428,20,job8428 8429,name8429,20,job8429 8430,name8430,20,job8430 8431,name8431,20,job8431 8432,name8432,20,job8432 8433,name8433,20,job8433 8434,name8434,20,job8434 8435,name8435,20,job8435 8436,name8436,20,job8436 8437,name8437,20,job8437 8438,name8438,20,job8438 8439,name8439,20,job8439 8440,name8440,20,job8440 8441,name8441,20,job8441 8442,name8442,20,job8442 8443,name8443,20,job8443 8444,name8444,20,job8444 8445,name8445,20,job8445 8446,name8446,20,job8446 8447,name8447,20,job8447 8448,name8448,20,job8448 8449,name8449,20,job8449 8450,name8450,20,job8450 8451,name8451,20,job8451 8452,name8452,20,job8452 8453,name8453,20,job8453 8454,name8454,20,job8454 8455,name8455,20,job8455 8456,name8456,20,job8456 8457,name8457,20,job8457 8458,name8458,20,job8458 8459,name8459,20,job8459 8460,name8460,20,job8460 8461,name8461,20,job8461 8462,name8462,20,job8462 8463,name8463,20,job8463 8464,name8464,20,job8464 8465,name8465,20,job8465 8466,name8466,20,job8466 8467,name8467,20,job8467 8468,name8468,20,job8468 8469,name8469,20,job8469 8470,name8470,20,job8470 8471,name8471,20,job8471 8472,name8472,20,job8472 8473,name8473,20,job8473 8474,name8474,20,job8474 8475,name8475,20,job8475 8476,name8476,20,job8476 8477,name8477,20,job8477 8478,name8478,20,job8478 8479,name8479,20,job8479 8480,name8480,20,job8480 8481,name8481,20,job8481 8482,name8482,20,job8482 8483,name8483,20,job8483 8484,name8484,20,job8484 8485,name8485,20,job8485 8486,name8486,20,job8486 8487,name8487,20,job8487 8488,name8488,20,job8488 8489,name8489,20,job8489 8490,name8490,20,job8490 8491,name8491,20,job8491 8492,name8492,20,job8492 8493,name8493,20,job8493 8494,name8494,20,job8494 8495,name8495,20,job8495 8496,name8496,20,job8496 8497,name8497,20,job8497 8498,name8498,20,job8498 8499,name8499,20,job8499 8500,name8500,20,job8500 8501,name8501,20,job8501 8502,name8502,20,job8502 8503,name8503,20,job8503 8504,name8504,20,job8504 8505,name8505,20,job8505 8506,name8506,20,job8506 8507,name8507,20,job8507 8508,name8508,20,job8508 8509,name8509,20,job8509 8510,name8510,20,job8510 8511,name8511,20,job8511 8512,name8512,20,job8512 8513,name8513,20,job8513 8514,name8514,20,job8514 8515,name8515,20,job8515 8516,name8516,20,job8516 8517,name8517,20,job8517 8518,name8518,20,job8518 8519,name8519,20,job8519 8520,name8520,20,job8520 8521,name8521,20,job8521 8522,name8522,20,job8522 8523,name8523,20,job8523 8524,name8524,20,job8524 8525,name8525,20,job8525 8526,name8526,20,job8526 8527,name8527,20,job8527 8528,name8528,20,job8528 8529,name8529,20,job8529 8530,name8530,20,job8530 8531,name8531,20,job8531 8532,name8532,20,job8532 8533,name8533,20,job8533 8534,name8534,20,job8534 8535,name8535,20,job8535 8536,name8536,20,job8536 8537,name8537,20,job8537 8538,name8538,20,job8538 8539,name8539,20,job8539 8540,name8540,20,job8540 8541,name8541,20,job8541 8542,name8542,20,job8542 8543,name8543,20,job8543 8544,name8544,20,job8544 8545,name8545,20,job8545 8546,name8546,20,job8546 8547,name8547,20,job8547 8548,name8548,20,job8548 8549,name8549,20,job8549 8550,name8550,20,job8550 8551,name8551,20,job8551 8552,name8552,20,job8552 8553,name8553,20,job8553 8554,name8554,20,job8554 8555,name8555,20,job8555 8556,name8556,20,job8556 8557,name8557,20,job8557 8558,name8558,20,job8558 8559,name8559,20,job8559 8560,name8560,20,job8560 8561,name8561,20,job8561 8562,name8562,20,job8562 8563,name8563,20,job8563 8564,name8564,20,job8564 8565,name8565,20,job8565 8566,name8566,20,job8566 8567,name8567,20,job8567 8568,name8568,20,job8568 8569,name8569,20,job8569 8570,name8570,20,job8570 8571,name8571,20,job8571 8572,name8572,20,job8572 8573,name8573,20,job8573 8574,name8574,20,job8574 8575,name8575,20,job8575 8576,name8576,20,job8576 8577,name8577,20,job8577 8578,name8578,20,job8578 8579,name8579,20,job8579 8580,name8580,20,job8580 8581,name8581,20,job8581 8582,name8582,20,job8582 8583,name8583,20,job8583 8584,name8584,20,job8584 8585,name8585,20,job8585 8586,name8586,20,job8586 8587,name8587,20,job8587 8588,name8588,20,job8588 8589,name8589,20,job8589 8590,name8590,20,job8590 8591,name8591,20,job8591 8592,name8592,20,job8592 8593,name8593,20,job8593 8594,name8594,20,job8594 8595,name8595,20,job8595 8596,name8596,20,job8596 8597,name8597,20,job8597 8598,name8598,20,job8598 8599,name8599,20,job8599 8600,name8600,20,job8600 8601,name8601,20,job8601 8602,name8602,20,job8602 8603,name8603,20,job8603 8604,name8604,20,job8604 8605,name8605,20,job8605 8606,name8606,20,job8606 8607,name8607,20,job8607 8608,name8608,20,job8608 8609,name8609,20,job8609 8610,name8610,20,job8610 8611,name8611,20,job8611 8612,name8612,20,job8612 8613,name8613,20,job8613 8614,name8614,20,job8614 8615,name8615,20,job8615 8616,name8616,20,job8616 8617,name8617,20,job8617 8618,name8618,20,job8618 8619,name8619,20,job8619 8620,name8620,20,job8620 8621,name8621,20,job8621 8622,name8622,20,job8622 8623,name8623,20,job8623 8624,name8624,20,job8624 8625,name8625,20,job8625 8626,name8626,20,job8626 8627,name8627,20,job8627 8628,name8628,20,job8628 8629,name8629,20,job8629 8630,name8630,20,job8630 8631,name8631,20,job8631 8632,name8632,20,job8632 8633,name8633,20,job8633 8634,name8634,20,job8634 8635,name8635,20,job8635 8636,name8636,20,job8636 8637,name8637,20,job8637 8638,name8638,20,job8638 8639,name8639,20,job8639 8640,name8640,20,job8640 8641,name8641,20,job8641 8642,name8642,20,job8642 8643,name8643,20,job8643 8644,name8644,20,job8644 8645,name8645,20,job8645 8646,name8646,20,job8646 8647,name8647,20,job8647 8648,name8648,20,job8648 8649,name8649,20,job8649 8650,name8650,20,job8650 8651,name8651,20,job8651 8652,name8652,20,job8652 8653,name8653,20,job8653 8654,name8654,20,job8654 8655,name8655,20,job8655 8656,name8656,20,job8656 8657,name8657,20,job8657 8658,name8658,20,job8658 8659,name8659,20,job8659 8660,name8660,20,job8660 8661,name8661,20,job8661 8662,name8662,20,job8662 8663,name8663,20,job8663 8664,name8664,20,job8664 8665,name8665,20,job8665 8666,name8666,20,job8666 8667,name8667,20,job8667 8668,name8668,20,job8668 8669,name8669,20,job8669 8670,name8670,20,job8670 8671,name8671,20,job8671 8672,name8672,20,job8672 8673,name8673,20,job8673 8674,name8674,20,job8674 8675,name8675,20,job8675 8676,name8676,20,job8676 8677,name8677,20,job8677 8678,name8678,20,job8678 8679,name8679,20,job8679 8680,name8680,20,job8680 8681,name8681,20,job8681 8682,name8682,20,job8682 8683,name8683,20,job8683 8684,name8684,20,job8684 8685,name8685,20,job8685 8686,name8686,20,job8686 8687,name8687,20,job8687 8688,name8688,20,job8688 8689,name8689,20,job8689 8690,name8690,20,job8690 8691,name8691,20,job8691 8692,name8692,20,job8692 8693,name8693,20,job8693 8694,name8694,20,job8694 8695,name8695,20,job8695 8696,name8696,20,job8696 8697,name8697,20,job8697 8698,name8698,20,job8698 8699,name8699,20,job8699 8700,name8700,20,job8700 8701,name8701,20,job8701 8702,name8702,20,job8702 8703,name8703,20,job8703 8704,name8704,20,job8704 8705,name8705,20,job8705 8706,name8706,20,job8706 8707,name8707,20,job8707 8708,name8708,20,job8708 8709,name8709,20,job8709 8710,name8710,20,job8710 8711,name8711,20,job8711 8712,name8712,20,job8712 8713,name8713,20,job8713 8714,name8714,20,job8714 8715,name8715,20,job8715 8716,name8716,20,job8716 8717,name8717,20,job8717 8718,name8718,20,job8718 8719,name8719,20,job8719 8720,name8720,20,job8720 8721,name8721,20,job8721 8722,name8722,20,job8722 8723,name8723,20,job8723 8724,name8724,20,job8724 8725,name8725,20,job8725 8726,name8726,20,job8726 8727,name8727,20,job8727 8728,name8728,20,job8728 8729,name8729,20,job8729 8730,name8730,20,job8730 8731,name8731,20,job8731 8732,name8732,20,job8732 8733,name8733,20,job8733 8734,name8734,20,job8734 8735,name8735,20,job8735 8736,name8736,20,job8736 8737,name8737,20,job8737 8738,name8738,20,job8738 8739,name8739,20,job8739 8740,name8740,20,job8740 8741,name8741,20,job8741 8742,name8742,20,job8742 8743,name8743,20,job8743 8744,name8744,20,job8744 8745,name8745,20,job8745 8746,name8746,20,job8746 8747,name8747,20,job8747 8748,name8748,20,job8748 8749,name8749,20,job8749 8750,name8750,20,job8750 8751,name8751,20,job8751 8752,name8752,20,job8752 8753,name8753,20,job8753 8754,name8754,20,job8754 8755,name8755,20,job8755 8756,name8756,20,job8756 8757,name8757,20,job8757 8758,name8758,20,job8758 8759,name8759,20,job8759 8760,name8760,20,job8760 8761,name8761,20,job8761 8762,name8762,20,job8762 8763,name8763,20,job8763 8764,name8764,20,job8764 8765,name8765,20,job8765 8766,name8766,20,job8766 8767,name8767,20,job8767 8768,name8768,20,job8768 8769,name8769,20,job8769 8770,name8770,20,job8770 8771,name8771,20,job8771 8772,name8772,20,job8772 8773,name8773,20,job8773 8774,name8774,20,job8774 8775,name8775,20,job8775 8776,name8776,20,job8776 8777,name8777,20,job8777 8778,name8778,20,job8778 8779,name8779,20,job8779 8780,name8780,20,job8780 8781,name8781,20,job8781 8782,name8782,20,job8782 8783,name8783,20,job8783 8784,name8784,20,job8784 8785,name8785,20,job8785 8786,name8786,20,job8786 8787,name8787,20,job8787 8788,name8788,20,job8788 8789,name8789,20,job8789 8790,name8790,20,job8790 8791,name8791,20,job8791 8792,name8792,20,job8792 8793,name8793,20,job8793 8794,name8794,20,job8794 8795,name8795,20,job8795 8796,name8796,20,job8796 8797,name8797,20,job8797 8798,name8798,20,job8798 8799,name8799,20,job8799 8800,name8800,20,job8800 8801,name8801,20,job8801 8802,name8802,20,job8802 8803,name8803,20,job8803 8804,name8804,20,job8804 8805,name8805,20,job8805 8806,name8806,20,job8806 8807,name8807,20,job8807 8808,name8808,20,job8808 8809,name8809,20,job8809 8810,name8810,20,job8810 8811,name8811,20,job8811 8812,name8812,20,job8812 8813,name8813,20,job8813 8814,name8814,20,job8814 8815,name8815,20,job8815 8816,name8816,20,job8816 8817,name8817,20,job8817 8818,name8818,20,job8818 8819,name8819,20,job8819 8820,name8820,20,job8820 8821,name8821,20,job8821 8822,name8822,20,job8822 8823,name8823,20,job8823 8824,name8824,20,job8824 8825,name8825,20,job8825 8826,name8826,20,job8826 8827,name8827,20,job8827 8828,name8828,20,job8828 8829,name8829,20,job8829 8830,name8830,20,job8830 8831,name8831,20,job8831 8832,name8832,20,job8832 8833,name8833,20,job8833 8834,name8834,20,job8834 8835,name8835,20,job8835 8836,name8836,20,job8836 8837,name8837,20,job8837 8838,name8838,20,job8838 8839,name8839,20,job8839 8840,name8840,20,job8840 8841,name8841,20,job8841 8842,name8842,20,job8842 8843,name8843,20,job8843 8844,name8844,20,job8844 8845,name8845,20,job8845 8846,name8846,20,job8846 8847,name8847,20,job8847 8848,name8848,20,job8848 8849,name8849,20,job8849 8850,name8850,20,job8850 8851,name8851,20,job8851 8852,name8852,20,job8852 8853,name8853,20,job8853 8854,name8854,20,job8854 8855,name8855,20,job8855 8856,name8856,20,job8856 8857,name8857,20,job8857 8858,name8858,20,job8858 8859,name8859,20,job8859 8860,name8860,20,job8860 8861,name8861,20,job8861 8862,name8862,20,job8862 8863,name8863,20,job8863 8864,name8864,20,job8864 8865,name8865,20,job8865 8866,name8866,20,job8866 8867,name8867,20,job8867 8868,name8868,20,job8868 8869,name8869,20,job8869 8870,name8870,20,job8870 8871,name8871,20,job8871 8872,name8872,20,job8872 8873,name8873,20,job8873 8874,name8874,20,job8874 8875,name8875,20,job8875 8876,name8876,20,job8876 8877,name8877,20,job8877 8878,name8878,20,job8878 8879,name8879,20,job8879 8880,name8880,20,job8880 8881,name8881,20,job8881 8882,name8882,20,job8882 8883,name8883,20,job8883 8884,name8884,20,job8884 8885,name8885,20,job8885 8886,name8886,20,job8886 8887,name8887,20,job8887 8888,name8888,20,job8888 8889,name8889,20,job8889 8890,name8890,20,job8890 8891,name8891,20,job8891 8892,name8892,20,job8892 8893,name8893,20,job8893 8894,name8894,20,job8894 8895,name8895,20,job8895 8896,name8896,20,job8896 8897,name8897,20,job8897 8898,name8898,20,job8898 8899,name8899,20,job8899 8900,name8900,20,job8900 8901,name8901,20,job8901 8902,name8902,20,job8902 8903,name8903,20,job8903 8904,name8904,20,job8904 8905,name8905,20,job8905 8906,name8906,20,job8906 8907,name8907,20,job8907 8908,name8908,20,job8908 8909,name8909,20,job8909 8910,name8910,20,job8910 8911,name8911,20,job8911 8912,name8912,20,job8912 8913,name8913,20,job8913 8914,name8914,20,job8914 8915,name8915,20,job8915 8916,name8916,20,job8916 8917,name8917,20,job8917 8918,name8918,20,job8918 8919,name8919,20,job8919 8920,name8920,20,job8920 8921,name8921,20,job8921 8922,name8922,20,job8922 8923,name8923,20,job8923 8924,name8924,20,job8924 8925,name8925,20,job8925 8926,name8926,20,job8926 8927,name8927,20,job8927 8928,name8928,20,job8928 8929,name8929,20,job8929 8930,name8930,20,job8930 8931,name8931,20,job8931 8932,name8932,20,job8932 8933,name8933,20,job8933 8934,name8934,20,job8934 8935,name8935,20,job8935 8936,name8936,20,job8936 8937,name8937,20,job8937 8938,name8938,20,job8938 8939,name8939,20,job8939 8940,name8940,20,job8940 8941,name8941,20,job8941 8942,name8942,20,job8942 8943,name8943,20,job8943 8944,name8944,20,job8944 8945,name8945,20,job8945 8946,name8946,20,job8946 8947,name8947,20,job8947 8948,name8948,20,job8948 8949,name8949,20,job8949 8950,name8950,20,job8950 8951,name8951,20,job8951 8952,name8952,20,job8952 8953,name8953,20,job8953 8954,name8954,20,job8954 8955,name8955,20,job8955 8956,name8956,20,job8956 8957,name8957,20,job8957 8958,name8958,20,job8958 8959,name8959,20,job8959 8960,name8960,20,job8960 8961,name8961,20,job8961 8962,name8962,20,job8962 8963,name8963,20,job8963 8964,name8964,20,job8964 8965,name8965,20,job8965 8966,name8966,20,job8966 8967,name8967,20,job8967 8968,name8968,20,job8968 8969,name8969,20,job8969 8970,name8970,20,job8970 8971,name8971,20,job8971 8972,name8972,20,job8972 8973,name8973,20,job8973 8974,name8974,20,job8974 8975,name8975,20,job8975 8976,name8976,20,job8976 8977,name8977,20,job8977 8978,name8978,20,job8978 8979,name8979,20,job8979 8980,name8980,20,job8980 8981,name8981,20,job8981 8982,name8982,20,job8982 8983,name8983,20,job8983 8984,name8984,20,job8984 8985,name8985,20,job8985 8986,name8986,20,job8986 8987,name8987,20,job8987 8988,name8988,20,job8988 8989,name8989,20,job8989 8990,name8990,20,job8990 8991,name8991,20,job8991 8992,name8992,20,job8992 8993,name8993,20,job8993 8994,name8994,20,job8994 8995,name8995,20,job8995 8996,name8996,20,job8996 8997,name8997,20,job8997 8998,name8998,20,job8998 8999,name8999,20,job8999 9000,name9000,20,job9000 9001,name9001,20,job9001 9002,name9002,20,job9002 9003,name9003,20,job9003 9004,name9004,20,job9004 9005,name9005,20,job9005 9006,name9006,20,job9006 9007,name9007,20,job9007 9008,name9008,20,job9008 9009,name9009,20,job9009 9010,name9010,20,job9010 9011,name9011,20,job9011 9012,name9012,20,job9012 9013,name9013,20,job9013 9014,name9014,20,job9014 9015,name9015,20,job9015 9016,name9016,20,job9016 9017,name9017,20,job9017 9018,name9018,20,job9018 9019,name9019,20,job9019 9020,name9020,20,job9020 9021,name9021,20,job9021 9022,name9022,20,job9022 9023,name9023,20,job9023 9024,name9024,20,job9024 9025,name9025,20,job9025 9026,name9026,20,job9026 9027,name9027,20,job9027 9028,name9028,20,job9028 9029,name9029,20,job9029 9030,name9030,20,job9030 9031,name9031,20,job9031 9032,name9032,20,job9032 9033,name9033,20,job9033 9034,name9034,20,job9034 9035,name9035,20,job9035 9036,name9036,20,job9036 9037,name9037,20,job9037 9038,name9038,20,job9038 9039,name9039,20,job9039 9040,name9040,20,job9040 9041,name9041,20,job9041 9042,name9042,20,job9042 9043,name9043,20,job9043 9044,name9044,20,job9044 9045,name9045,20,job9045 9046,name9046,20,job9046 9047,name9047,20,job9047 9048,name9048,20,job9048 9049,name9049,20,job9049 9050,name9050,20,job9050 9051,name9051,20,job9051 9052,name9052,20,job9052 9053,name9053,20,job9053 9054,name9054,20,job9054 9055,name9055,20,job9055 9056,name9056,20,job9056 9057,name9057,20,job9057 9058,name9058,20,job9058 9059,name9059,20,job9059 9060,name9060,20,job9060 9061,name9061,20,job9061 9062,name9062,20,job9062 9063,name9063,20,job9063 9064,name9064,20,job9064 9065,name9065,20,job9065 9066,name9066,20,job9066 9067,name9067,20,job9067 9068,name9068,20,job9068 9069,name9069,20,job9069 9070,name9070,20,job9070 9071,name9071,20,job9071 9072,name9072,20,job9072 9073,name9073,20,job9073 9074,name9074,20,job9074 9075,name9075,20,job9075 9076,name9076,20,job9076 9077,name9077,20,job9077 9078,name9078,20,job9078 9079,name9079,20,job9079 9080,name9080,20,job9080 9081,name9081,20,job9081 9082,name9082,20,job9082 9083,name9083,20,job9083 9084,name9084,20,job9084 9085,name9085,20,job9085 9086,name9086,20,job9086 9087,name9087,20,job9087 9088,name9088,20,job9088 9089,name9089,20,job9089 9090,name9090,20,job9090 9091,name9091,20,job9091 9092,name9092,20,job9092 9093,name9093,20,job9093 9094,name9094,20,job9094 9095,name9095,20,job9095 9096,name9096,20,job9096 9097,name9097,20,job9097 9098,name9098,20,job9098 9099,name9099,20,job9099 9100,name9100,20,job9100 9101,name9101,20,job9101 9102,name9102,20,job9102 9103,name9103,20,job9103 9104,name9104,20,job9104 9105,name9105,20,job9105 9106,name9106,20,job9106 9107,name9107,20,job9107 9108,name9108,20,job9108 9109,name9109,20,job9109 9110,name9110,20,job9110 9111,name9111,20,job9111 9112,name9112,20,job9112 9113,name9113,20,job9113 9114,name9114,20,job9114 9115,name9115,20,job9115 9116,name9116,20,job9116 9117,name9117,20,job9117 9118,name9118,20,job9118 9119,name9119,20,job9119 9120,name9120,20,job9120 9121,name9121,20,job9121 9122,name9122,20,job9122 9123,name9123,20,job9123 9124,name9124,20,job9124 9125,name9125,20,job9125 9126,name9126,20,job9126 9127,name9127,20,job9127 9128,name9128,20,job9128 9129,name9129,20,job9129 9130,name9130,20,job9130 9131,name9131,20,job9131 9132,name9132,20,job9132 9133,name9133,20,job9133 9134,name9134,20,job9134 9135,name9135,20,job9135 9136,name9136,20,job9136 9137,name9137,20,job9137 9138,name9138,20,job9138 9139,name9139,20,job9139 9140,name9140,20,job9140 9141,name9141,20,job9141 9142,name9142,20,job9142 9143,name9143,20,job9143 9144,name9144,20,job9144 9145,name9145,20,job9145 9146,name9146,20,job9146 9147,name9147,20,job9147 9148,name9148,20,job9148 9149,name9149,20,job9149 9150,name9150,20,job9150 9151,name9151,20,job9151 9152,name9152,20,job9152 9153,name9153,20,job9153 9154,name9154,20,job9154 9155,name9155,20,job9155 9156,name9156,20,job9156 9157,name9157,20,job9157 9158,name9158,20,job9158 9159,name9159,20,job9159 9160,name9160,20,job9160 9161,name9161,20,job9161 9162,name9162,20,job9162 9163,name9163,20,job9163 9164,name9164,20,job9164 9165,name9165,20,job9165 9166,name9166,20,job9166 9167,name9167,20,job9167 9168,name9168,20,job9168 9169,name9169,20,job9169 9170,name9170,20,job9170 9171,name9171,20,job9171 9172,name9172,20,job9172 9173,name9173,20,job9173 9174,name9174,20,job9174 9175,name9175,20,job9175 9176,name9176,20,job9176 9177,name9177,20,job9177 9178,name9178,20,job9178 9179,name9179,20,job9179 9180,name9180,20,job9180 9181,name9181,20,job9181 9182,name9182,20,job9182 9183,name9183,20,job9183 9184,name9184,20,job9184 9185,name9185,20,job9185 9186,name9186,20,job9186 9187,name9187,20,job9187 9188,name9188,20,job9188 9189,name9189,20,job9189 9190,name9190,20,job9190 9191,name9191,20,job9191 9192,name9192,20,job9192 9193,name9193,20,job9193 9194,name9194,20,job9194 9195,name9195,20,job9195 9196,name9196,20,job9196 9197,name9197,20,job9197 9198,name9198,20,job9198 9199,name9199,20,job9199 9200,name9200,20,job9200 9201,name9201,20,job9201 9202,name9202,20,job9202 9203,name9203,20,job9203 9204,name9204,20,job9204 9205,name9205,20,job9205 9206,name9206,20,job9206 9207,name9207,20,job9207 9208,name9208,20,job9208 9209,name9209,20,job9209 9210,name9210,20,job9210 9211,name9211,20,job9211 9212,name9212,20,job9212 9213,name9213,20,job9213 9214,name9214,20,job9214 9215,name9215,20,job9215 9216,name9216,20,job9216 9217,name9217,20,job9217 9218,name9218,20,job9218 9219,name9219,20,job9219 9220,name9220,20,job9220 9221,name9221,20,job9221 9222,name9222,20,job9222 9223,name9223,20,job9223 9224,name9224,20,job9224 9225,name9225,20,job9225 9226,name9226,20,job9226 9227,name9227,20,job9227 9228,name9228,20,job9228 9229,name9229,20,job9229 9230,name9230,20,job9230 9231,name9231,20,job9231 9232,name9232,20,job9232 9233,name9233,20,job9233 9234,name9234,20,job9234 9235,name9235,20,job9235 9236,name9236,20,job9236 9237,name9237,20,job9237 9238,name9238,20,job9238 9239,name9239,20,job9239 9240,name9240,20,job9240 9241,name9241,20,job9241 9242,name9242,20,job9242 9243,name9243,20,job9243 9244,name9244,20,job9244 9245,name9245,20,job9245 9246,name9246,20,job9246 9247,name9247,20,job9247 9248,name9248,20,job9248 9249,name9249,20,job9249 9250,name9250,20,job9250 9251,name9251,20,job9251 9252,name9252,20,job9252 9253,name9253,20,job9253 9254,name9254,20,job9254 9255,name9255,20,job9255 9256,name9256,20,job9256 9257,name9257,20,job9257 9258,name9258,20,job9258 9259,name9259,20,job9259 9260,name9260,20,job9260 9261,name9261,20,job9261 9262,name9262,20,job9262 9263,name9263,20,job9263 9264,name9264,20,job9264 9265,name9265,20,job9265 9266,name9266,20,job9266 9267,name9267,20,job9267 9268,name9268,20,job9268 9269,name9269,20,job9269 9270,name9270,20,job9270 9271,name9271,20,job9271 9272,name9272,20,job9272 9273,name9273,20,job9273 9274,name9274,20,job9274 9275,name9275,20,job9275 9276,name9276,20,job9276 9277,name9277,20,job9277 9278,name9278,20,job9278 9279,name9279,20,job9279 9280,name9280,20,job9280 9281,name9281,20,job9281 9282,name9282,20,job9282 9283,name9283,20,job9283 9284,name9284,20,job9284 9285,name9285,20,job9285 9286,name9286,20,job9286 9287,name9287,20,job9287 9288,name9288,20,job9288 9289,name9289,20,job9289 9290,name9290,20,job9290 9291,name9291,20,job9291 9292,name9292,20,job9292 9293,name9293,20,job9293 9294,name9294,20,job9294 9295,name9295,20,job9295 9296,name9296,20,job9296 9297,name9297,20,job9297 9298,name9298,20,job9298 9299,name9299,20,job9299 9300,name9300,20,job9300 9301,name9301,20,job9301 9302,name9302,20,job9302 9303,name9303,20,job9303 9304,name9304,20,job9304 9305,name9305,20,job9305 9306,name9306,20,job9306 9307,name9307,20,job9307 9308,name9308,20,job9308 9309,name9309,20,job9309 9310,name9310,20,job9310 9311,name9311,20,job9311 9312,name9312,20,job9312 9313,name9313,20,job9313 9314,name9314,20,job9314 9315,name9315,20,job9315 9316,name9316,20,job9316 9317,name9317,20,job9317 9318,name9318,20,job9318 9319,name9319,20,job9319 9320,name9320,20,job9320 9321,name9321,20,job9321 9322,name9322,20,job9322 9323,name9323,20,job9323 9324,name9324,20,job9324 9325,name9325,20,job9325 9326,name9326,20,job9326 9327,name9327,20,job9327 9328,name9328,20,job9328 9329,name9329,20,job9329 9330,name9330,20,job9330 9331,name9331,20,job9331 9332,name9332,20,job9332 9333,name9333,20,job9333 9334,name9334,20,job9334 9335,name9335,20,job9335 9336,name9336,20,job9336 9337,name9337,20,job9337 9338,name9338,20,job9338 9339,name9339,20,job9339 9340,name9340,20,job9340 9341,name9341,20,job9341 9342,name9342,20,job9342 9343,name9343,20,job9343 9344,name9344,20,job9344 9345,name9345,20,job9345 9346,name9346,20,job9346 9347,name9347,20,job9347 9348,name9348,20,job9348 9349,name9349,20,job9349 9350,name9350,20,job9350 9351,name9351,20,job9351 9352,name9352,20,job9352 9353,name9353,20,job9353 9354,name9354,20,job9354 9355,name9355,20,job9355 9356,name9356,20,job9356 9357,name9357,20,job9357 9358,name9358,20,job9358 9359,name9359,20,job9359 9360,name9360,20,job9360 9361,name9361,20,job9361 9362,name9362,20,job9362 9363,name9363,20,job9363 9364,name9364,20,job9364 9365,name9365,20,job9365 9366,name9366,20,job9366 9367,name9367,20,job9367 9368,name9368,20,job9368 9369,name9369,20,job9369 9370,name9370,20,job9370 9371,name9371,20,job9371 9372,name9372,20,job9372 9373,name9373,20,job9373 9374,name9374,20,job9374 9375,name9375,20,job9375 9376,name9376,20,job9376 9377,name9377,20,job9377 9378,name9378,20,job9378 9379,name9379,20,job9379 9380,name9380,20,job9380 9381,name9381,20,job9381 9382,name9382,20,job9382 9383,name9383,20,job9383 9384,name9384,20,job9384 9385,name9385,20,job9385 9386,name9386,20,job9386 9387,name9387,20,job9387 9388,name9388,20,job9388 9389,name9389,20,job9389 9390,name9390,20,job9390 9391,name9391,20,job9391 9392,name9392,20,job9392 9393,name9393,20,job9393 9394,name9394,20,job9394 9395,name9395,20,job9395 9396,name9396,20,job9396 9397,name9397,20,job9397 9398,name9398,20,job9398 9399,name9399,20,job9399 9400,name9400,20,job9400 9401,name9401,20,job9401 9402,name9402,20,job9402 9403,name9403,20,job9403 9404,name9404,20,job9404 9405,name9405,20,job9405 9406,name9406,20,job9406 9407,name9407,20,job9407 9408,name9408,20,job9408 9409,name9409,20,job9409 9410,name9410,20,job9410 9411,name9411,20,job9411 9412,name9412,20,job9412 9413,name9413,20,job9413 9414,name9414,20,job9414 9415,name9415,20,job9415 9416,name9416,20,job9416 9417,name9417,20,job9417 9418,name9418,20,job9418 9419,name9419,20,job9419 9420,name9420,20,job9420 9421,name9421,20,job9421 9422,name9422,20,job9422 9423,name9423,20,job9423 9424,name9424,20,job9424 9425,name9425,20,job9425 9426,name9426,20,job9426 9427,name9427,20,job9427 9428,name9428,20,job9428 9429,name9429,20,job9429 9430,name9430,20,job9430 9431,name9431,20,job9431 9432,name9432,20,job9432 9433,name9433,20,job9433 9434,name9434,20,job9434 9435,name9435,20,job9435 9436,name9436,20,job9436 9437,name9437,20,job9437 9438,name9438,20,job9438 9439,name9439,20,job9439 9440,name9440,20,job9440 9441,name9441,20,job9441 9442,name9442,20,job9442 9443,name9443,20,job9443 9444,name9444,20,job9444 9445,name9445,20,job9445 9446,name9446,20,job9446 9447,name9447,20,job9447 9448,name9448,20,job9448 9449,name9449,20,job9449 9450,name9450,20,job9450 9451,name9451,20,job9451 9452,name9452,20,job9452 9453,name9453,20,job9453 9454,name9454,20,job9454 9455,name9455,20,job9455 9456,name9456,20,job9456 9457,name9457,20,job9457 9458,name9458,20,job9458 9459,name9459,20,job9459 9460,name9460,20,job9460 9461,name9461,20,job9461 9462,name9462,20,job9462 9463,name9463,20,job9463 9464,name9464,20,job9464 9465,name9465,20,job9465 9466,name9466,20,job9466 9467,name9467,20,job9467 9468,name9468,20,job9468 9469,name9469,20,job9469 9470,name9470,20,job9470 9471,name9471,20,job9471 9472,name9472,20,job9472 9473,name9473,20,job9473 9474,name9474,20,job9474 9475,name9475,20,job9475 9476,name9476,20,job9476 9477,name9477,20,job9477 9478,name9478,20,job9478 9479,name9479,20,job9479 9480,name9480,20,job9480 9481,name9481,20,job9481 9482,name9482,20,job9482 9483,name9483,20,job9483 9484,name9484,20,job9484 9485,name9485,20,job9485 9486,name9486,20,job9486 9487,name9487,20,job9487 9488,name9488,20,job9488 9489,name9489,20,job9489 9490,name9490,20,job9490 9491,name9491,20,job9491 9492,name9492,20,job9492 9493,name9493,20,job9493 9494,name9494,20,job9494 9495,name9495,20,job9495 9496,name9496,20,job9496 9497,name9497,20,job9497 9498,name9498,20,job9498 9499,name9499,20,job9499 9500,name9500,20,job9500 9501,name9501,20,job9501 9502,name9502,20,job9502 9503,name9503,20,job9503 9504,name9504,20,job9504 9505,name9505,20,job9505 9506,name9506,20,job9506 9507,name9507,20,job9507 9508,name9508,20,job9508 9509,name9509,20,job9509 9510,name9510,20,job9510 9511,name9511,20,job9511 9512,name9512,20,job9512 9513,name9513,20,job9513 9514,name9514,20,job9514 9515,name9515,20,job9515 9516,name9516,20,job9516 9517,name9517,20,job9517 9518,name9518,20,job9518 9519,name9519,20,job9519 9520,name9520,20,job9520 9521,name9521,20,job9521 9522,name9522,20,job9522 9523,name9523,20,job9523 9524,name9524,20,job9524 9525,name9525,20,job9525 9526,name9526,20,job9526 9527,name9527,20,job9527 9528,name9528,20,job9528 9529,name9529,20,job9529 9530,name9530,20,job9530 9531,name9531,20,job9531 9532,name9532,20,job9532 9533,name9533,20,job9533 9534,name9534,20,job9534 9535,name9535,20,job9535 9536,name9536,20,job9536 9537,name9537,20,job9537 9538,name9538,20,job9538 9539,name9539,20,job9539 9540,name9540,20,job9540 9541,name9541,20,job9541 9542,name9542,20,job9542 9543,name9543,20,job9543 9544,name9544,20,job9544 9545,name9545,20,job9545 9546,name9546,20,job9546 9547,name9547,20,job9547 9548,name9548,20,job9548 9549,name9549,20,job9549 9550,name9550,20,job9550 9551,name9551,20,job9551 9552,name9552,20,job9552 9553,name9553,20,job9553 9554,name9554,20,job9554 9555,name9555,20,job9555 9556,name9556,20,job9556 9557,name9557,20,job9557 9558,name9558,20,job9558 9559,name9559,20,job9559 9560,name9560,20,job9560 9561,name9561,20,job9561 9562,name9562,20,job9562 9563,name9563,20,job9563 9564,name9564,20,job9564 9565,name9565,20,job9565 9566,name9566,20,job9566 9567,name9567,20,job9567 9568,name9568,20,job9568 9569,name9569,20,job9569 9570,name9570,20,job9570 9571,name9571,20,job9571 9572,name9572,20,job9572 9573,name9573,20,job9573 9574,name9574,20,job9574 9575,name9575,20,job9575 9576,name9576,20,job9576 9577,name9577,20,job9577 9578,name9578,20,job9578 9579,name9579,20,job9579 9580,name9580,20,job9580 9581,name9581,20,job9581 9582,name9582,20,job9582 9583,name9583,20,job9583 9584,name9584,20,job9584 9585,name9585,20,job9585 9586,name9586,20,job9586 9587,name9587,20,job9587 9588,name9588,20,job9588 9589,name9589,20,job9589 9590,name9590,20,job9590 9591,name9591,20,job9591 9592,name9592,20,job9592 9593,name9593,20,job9593 9594,name9594,20,job9594 9595,name9595,20,job9595 9596,name9596,20,job9596 9597,name9597,20,job9597 9598,name9598,20,job9598 9599,name9599,20,job9599 9600,name9600,20,job9600 9601,name9601,20,job9601 9602,name9602,20,job9602 9603,name9603,20,job9603 9604,name9604,20,job9604 9605,name9605,20,job9605 9606,name9606,20,job9606 9607,name9607,20,job9607 9608,name9608,20,job9608 9609,name9609,20,job9609 9610,name9610,20,job9610 9611,name9611,20,job9611 9612,name9612,20,job9612 9613,name9613,20,job9613 9614,name9614,20,job9614 9615,name9615,20,job9615 9616,name9616,20,job9616 9617,name9617,20,job9617 9618,name9618,20,job9618 9619,name9619,20,job9619 9620,name9620,20,job9620 9621,name9621,20,job9621 9622,name9622,20,job9622 9623,name9623,20,job9623 9624,name9624,20,job9624 9625,name9625,20,job9625 9626,name9626,20,job9626 9627,name9627,20,job9627 9628,name9628,20,job9628 9629,name9629,20,job9629 9630,name9630,20,job9630 9631,name9631,20,job9631 9632,name9632,20,job9632 9633,name9633,20,job9633 9634,name9634,20,job9634 9635,name9635,20,job9635 9636,name9636,20,job9636 9637,name9637,20,job9637 9638,name9638,20,job9638 9639,name9639,20,job9639 9640,name9640,20,job9640 9641,name9641,20,job9641 9642,name9642,20,job9642 9643,name9643,20,job9643 9644,name9644,20,job9644 9645,name9645,20,job9645 9646,name9646,20,job9646 9647,name9647,20,job9647 9648,name9648,20,job9648 9649,name9649,20,job9649 9650,name9650,20,job9650 9651,name9651,20,job9651 9652,name9652,20,job9652 9653,name9653,20,job9653 9654,name9654,20,job9654 9655,name9655,20,job9655 9656,name9656,20,job9656 9657,name9657,20,job9657 9658,name9658,20,job9658 9659,name9659,20,job9659 9660,name9660,20,job9660 9661,name9661,20,job9661 9662,name9662,20,job9662 9663,name9663,20,job9663 9664,name9664,20,job9664 9665,name9665,20,job9665 9666,name9666,20,job9666 9667,name9667,20,job9667 9668,name9668,20,job9668 9669,name9669,20,job9669 9670,name9670,20,job9670 9671,name9671,20,job9671 9672,name9672,20,job9672 9673,name9673,20,job9673 9674,name9674,20,job9674 9675,name9675,20,job9675 9676,name9676,20,job9676 9677,name9677,20,job9677 9678,name9678,20,job9678 9679,name9679,20,job9679 9680,name9680,20,job9680 9681,name9681,20,job9681 9682,name9682,20,job9682 9683,name9683,20,job9683 9684,name9684,20,job9684 9685,name9685,20,job9685 9686,name9686,20,job9686 9687,name9687,20,job9687 9688,name9688,20,job9688 9689,name9689,20,job9689 9690,name9690,20,job9690 9691,name9691,20,job9691 9692,name9692,20,job9692 9693,name9693,20,job9693 9694,name9694,20,job9694 9695,name9695,20,job9695 9696,name9696,20,job9696 9697,name9697,20,job9697 9698,name9698,20,job9698 9699,name9699,20,job9699 9700,name9700,20,job9700 9701,name9701,20,job9701 9702,name9702,20,job9702 9703,name9703,20,job9703 9704,name9704,20,job9704 9705,name9705,20,job9705 9706,name9706,20,job9706 9707,name9707,20,job9707 9708,name9708,20,job9708 9709,name9709,20,job9709 9710,name9710,20,job9710 9711,name9711,20,job9711 9712,name9712,20,job9712 9713,name9713,20,job9713 9714,name9714,20,job9714 9715,name9715,20,job9715 9716,name9716,20,job9716 9717,name9717,20,job9717 9718,name9718,20,job9718 9719,name9719,20,job9719 9720,name9720,20,job9720 9721,name9721,20,job9721 9722,name9722,20,job9722 9723,name9723,20,job9723 9724,name9724,20,job9724 9725,name9725,20,job9725 9726,name9726,20,job9726 9727,name9727,20,job9727 9728,name9728,20,job9728 9729,name9729,20,job9729 9730,name9730,20,job9730 9731,name9731,20,job9731 9732,name9732,20,job9732 9733,name9733,20,job9733 9734,name9734,20,job9734 9735,name9735,20,job9735 9736,name9736,20,job9736 9737,name9737,20,job9737 9738,name9738,20,job9738 9739,name9739,20,job9739 9740,name9740,20,job9740 9741,name9741,20,job9741 9742,name9742,20,job9742 9743,name9743,20,job9743 9744,name9744,20,job9744 9745,name9745,20,job9745 9746,name9746,20,job9746 9747,name9747,20,job9747 9748,name9748,20,job9748 9749,name9749,20,job9749 9750,name9750,20,job9750 9751,name9751,20,job9751 9752,name9752,20,job9752 9753,name9753,20,job9753 9754,name9754,20,job9754 9755,name9755,20,job9755 9756,name9756,20,job9756 9757,name9757,20,job9757 9758,name9758,20,job9758 9759,name9759,20,job9759 9760,name9760,20,job9760 9761,name9761,20,job9761 9762,name9762,20,job9762 9763,name9763,20,job9763 9764,name9764,20,job9764 9765,name9765,20,job9765 9766,name9766,20,job9766 9767,name9767,20,job9767 9768,name9768,20,job9768 9769,name9769,20,job9769 9770,name9770,20,job9770 9771,name9771,20,job9771 9772,name9772,20,job9772 9773,name9773,20,job9773 9774,name9774,20,job9774 9775,name9775,20,job9775 9776,name9776,20,job9776 9777,name9777,20,job9777 9778,name9778,20,job9778 9779,name9779,20,job9779 9780,name9780,20,job9780 9781,name9781,20,job9781 9782,name9782,20,job9782 9783,name9783,20,job9783 9784,name9784,20,job9784 9785,name9785,20,job9785 9786,name9786,20,job9786 9787,name9787,20,job9787 9788,name9788,20,job9788 9789,name9789,20,job9789 9790,name9790,20,job9790 9791,name9791,20,job9791 9792,name9792,20,job9792 9793,name9793,20,job9793 9794,name9794,20,job9794 9795,name9795,20,job9795 9796,name9796,20,job9796 9797,name9797,20,job9797 9798,name9798,20,job9798 9799,name9799,20,job9799 9800,name9800,20,job9800 9801,name9801,20,job9801 9802,name9802,20,job9802 9803,name9803,20,job9803 9804,name9804,20,job9804 9805,name9805,20,job9805 9806,name9806,20,job9806 9807,name9807,20,job9807 9808,name9808,20,job9808 9809,name9809,20,job9809 9810,name9810,20,job9810 9811,name9811,20,job9811 9812,name9812,20,job9812 9813,name9813,20,job9813 9814,name9814,20,job9814 9815,name9815,20,job9815 9816,name9816,20,job9816 9817,name9817,20,job9817 9818,name9818,20,job9818 9819,name9819,20,job9819 9820,name9820,20,job9820 9821,name9821,20,job9821 9822,name9822,20,job9822 9823,name9823,20,job9823 9824,name9824,20,job9824 9825,name9825,20,job9825 9826,name9826,20,job9826 9827,name9827,20,job9827 9828,name9828,20,job9828 9829,name9829,20,job9829 9830,name9830,20,job9830 9831,name9831,20,job9831 9832,name9832,20,job9832 9833,name9833,20,job9833 9834,name9834,20,job9834 9835,name9835,20,job9835 9836,name9836,20,job9836 9837,name9837,20,job9837 9838,name9838,20,job9838 9839,name9839,20,job9839 9840,name9840,20,job9840 9841,name9841,20,job9841 9842,name9842,20,job9842 9843,name9843,20,job9843 9844,name9844,20,job9844 9845,name9845,20,job9845 9846,name9846,20,job9846 9847,name9847,20,job9847 9848,name9848,20,job9848 9849,name9849,20,job9849 9850,name9850,20,job9850 9851,name9851,20,job9851 9852,name9852,20,job9852 9853,name9853,20,job9853 9854,name9854,20,job9854 9855,name9855,20,job9855 9856,name9856,20,job9856 9857,name9857,20,job9857 9858,name9858,20,job9858 9859,name9859,20,job9859 9860,name9860,20,job9860 9861,name9861,20,job9861 9862,name9862,20,job9862 9863,name9863,20,job9863 9864,name9864,20,job9864 9865,name9865,20,job9865 9866,name9866,20,job9866 9867,name9867,20,job9867 9868,name9868,20,job9868 9869,name9869,20,job9869 9870,name9870,20,job9870 9871,name9871,20,job9871 9872,name9872,20,job9872 9873,name9873,20,job9873 9874,name9874,20,job9874 9875,name9875,20,job9875 9876,name9876,20,job9876 9877,name9877,20,job9877 9878,name9878,20,job9878 9879,name9879,20,job9879 9880,name9880,20,job9880 9881,name9881,20,job9881 9882,name9882,20,job9882 9883,name9883,20,job9883 9884,name9884,20,job9884 9885,name9885,20,job9885 9886,name9886,20,job9886 9887,name9887,20,job9887 9888,name9888,20,job9888 9889,name9889,20,job9889 9890,name9890,20,job9890 9891,name9891,20,job9891 9892,name9892,20,job9892 9893,name9893,20,job9893 9894,name9894,20,job9894 9895,name9895,20,job9895 9896,name9896,20,job9896 9897,name9897,20,job9897 9898,name9898,20,job9898 9899,name9899,20,job9899 9900,name9900,20,job9900 9901,name9901,20,job9901 9902,name9902,20,job9902 9903,name9903,20,job9903 9904,name9904,20,job9904 9905,name9905,20,job9905 9906,name9906,20,job9906 9907,name9907,20,job9907 9908,name9908,20,job9908 9909,name9909,20,job9909 9910,name9910,20,job9910 9911,name9911,20,job9911 9912,name9912,20,job9912 9913,name9913,20,job9913 9914,name9914,20,job9914 9915,name9915,20,job9915 9916,name9916,20,job9916 9917,name9917,20,job9917 9918,name9918,20,job9918 9919,name9919,20,job9919 9920,name9920,20,job9920 9921,name9921,20,job9921 9922,name9922,20,job9922 9923,name9923,20,job9923 9924,name9924,20,job9924 9925,name9925,20,job9925 9926,name9926,20,job9926 9927,name9927,20,job9927 9928,name9928,20,job9928 9929,name9929,20,job9929 9930,name9930,20,job9930 9931,name9931,20,job9931 9932,name9932,20,job9932 9933,name9933,20,job9933 9934,name9934,20,job9934 9935,name9935,20,job9935 9936,name9936,20,job9936 9937,name9937,20,job9937 9938,name9938,20,job9938 9939,name9939,20,job9939 9940,name9940,20,job9940 9941,name9941,20,job9941 9942,name9942,20,job9942 9943,name9943,20,job9943 9944,name9944,20,job9944 9945,name9945,20,job9945 9946,name9946,20,job9946 9947,name9947,20,job9947 9948,name9948,20,job9948 9949,name9949,20,job9949 9950,name9950,20,job9950 9951,name9951,20,job9951 9952,name9952,20,job9952 9953,name9953,20,job9953 9954,name9954,20,job9954 9955,name9955,20,job9955 9956,name9956,20,job9956 9957,name9957,20,job9957 9958,name9958,20,job9958 9959,name9959,20,job9959 9960,name9960,20,job9960 9961,name9961,20,job9961 9962,name9962,20,job9962 9963,name9963,20,job9963 9964,name9964,20,job9964 9965,name9965,20,job9965 9966,name9966,20,job9966 9967,name9967,20,job9967 9968,name9968,20,job9968 9969,name9969,20,job9969 9970,name9970,20,job9970 9971,name9971,20,job9971 9972,name9972,20,job9972 9973,name9973,20,job9973 9974,name9974,20,job9974 9975,name9975,20,job9975 9976,name9976,20,job9976 9977,name9977,20,job9977 9978,name9978,20,job9978 9979,name9979,20,job9979 9980,name9980,20,job9980 9981,name9981,20,job9981 9982,name9982,20,job9982 9983,name9983,20,job9983 9984,name9984,20,job9984 9985,name9985,20,job9985 9986,name9986,20,job9986 9987,name9987,20,job9987 9988,name9988,20,job9988 9989,name9989,20,job9989 9990,name9990,20,job9990 9991,name9991,20,job9991 9992,name9992,20,job9992 9993,name9993,20,job9993 9994,name9994,20,job9994 9995,name9995,20,job9995 9996,name9996,20,job9996 9997,name9997,20,job9997 9998,name9998,20,job9998 9999,name9999,20,job9999 10000,name10000,20,job10000 ================================================ FILE: SwiftCSVTests/TestData/quotes.csv ================================================ id,"name, first","name, last" 4,"Alex",Smith 5,Joe,Bloggs 9,"Person, with a ""quote"" in their name",uugh 10,"Person, with escaped comma",Jones 10,Person\ with a backslash,Jones 12,"Newlines are the best",Woo hoo ================================================ FILE: SwiftCSVTests/TestData/utf8_with_bom.csv ================================================ Part Number,Description,Unit Price,Qty 12345,Heizölrückstoßabdämpfung,"€ 100,00",2 ================================================ FILE: SwiftCSVTests/TestData/wonderland.csv ================================================ Character,Quote White Rabbit,"""Where shall I begin, please your Majesty?"" he asked." King,"""Begin at the beginning,"" the King said gravely, ""and go on till you come to the end: then stop.""" March Hare,"""Do you mean that you think you can find out the answer to it?"" said the March Hare." ================================================ FILE: SwiftCSVTests/URLTests.swift ================================================ // // URLTests.swift // SwiftCSV // // Created by Will Richardson on 8/04/16. // Copyright © 2016 Naoto Kaneko. All rights reserved. // import XCTest import SwiftCSV class URLTests: XCTestCase { var csv: CSV! func testEmptyFields() throws { let testFilePath = "TestData/empty_fields" let testFileExtension = "csv" guard let csvURL = ResourceHelper.url(forResource: testFilePath, withExtension: testFileExtension) else { XCTAssertNotNil(nil, "Could not get URL for \(testFilePath).\(testFileExtension) from Test Bundle") return } csv = try CSV(url: csvURL) let expected = [ ["id": "1", "name": "John", "age": "23"], ["id": "2", "name": "James", "age": "32"], ["id": "3", "name": "", "age": ""], ["id": "6", "name": "", "age": ""], ["id": "", "name": "", "age": ""], ["id": "", "name": "Tom", "age": ""] ] for (index, row) in csv.rows.enumerated() { XCTAssertEqual(expected[index], row) } } func testQuotes() throws { let testFilePath = "TestData/quotes" let testFileExtension = "csv" guard let csvURL = ResourceHelper.url(forResource: testFilePath, withExtension: testFileExtension) else { XCTAssertNotNil(nil, "Could not get URL for \(testFilePath).\(testFileExtension) from Test Bundle") return } csv = try CSV(url: csvURL) let expected = [ ["id": "4", "name, first": "Alex", "name, last": "Smith"], ["id": "5", "name, first": "Joe", "name, last": "Bloggs"], [ "id": "9", "name, first": "Person, with a \"quote\" in their name", "name, last": "uugh" ], [ "id": "10", "name, first": "Person, with escaped comma", "name, last": "Jones" ], [ "id": "10", "name, first": "Person\\ with a backslash", "name, last": "Jones" ], [ "id": "12", "name, first": "Newlines\nare the best", "name, last": "Woo hoo" ], [:] ] for (index, row) in csv.rows.enumerated() { XCTAssertEqual(expected[index], row) } } func testUTF8() throws { let testFilePath = "TestData/utf8_with_bom" let testFileExtension = "csv" guard let csvURL = ResourceHelper.url(forResource: testFilePath, withExtension: testFileExtension) else { XCTAssertNotNil(nil, "Could not get URL for \(testFilePath).\(testFileExtension) from Test Bundle") return } csv = try CSV(url: csvURL) XCTAssertFalse(csv.header.first!.hasPrefix("\u{FEFF}")) let expected = [ [ "Part Number": "12345", "Description": "Heizölrückstoßabdämpfung", "Unit Price": "€ 100,00", "Qty": "2" ] ] for (index, row) in csv.rows.enumerated() { XCTAssertEqual(expected[index], row) } } func testUTF8Delimited() throws { let testFilePath = "TestData/utf8_with_bom" let testFileExtension = "csv" guard let csvURL = ResourceHelper.url(forResource: testFilePath, withExtension: testFileExtension) else { XCTAssertNotNil(nil, "Could not get URL for \(testFilePath).\(testFileExtension) from Test Bundle") return } csv = try CSV(url: csvURL, delimiter: .comma) XCTAssertFalse(csv.header.first!.hasPrefix("\u{FEFF}")) let expected = [ [ "Part Number": "12345", "Description": "Heizölrückstoßabdämpfung", "Unit Price": "€ 100,00", "Qty": "2" ] ] for (index, row) in csv.rows.enumerated() { XCTAssertEqual(expected[index], row) } } func testBOMInHeadersWhenInitialisingFromString() throws { var csv: CSV? let csvString: String = """ Part Number,Description,Unit Price,Qty 12345,Heizölrückstoßabdämpfung,"€ 100,00",2" """ let csvStringWithBOM = "\u{FEFF}" + csvString // Make a CSV object do { // Create from string csv = try CSV(string: csvStringWithBOM) } catch { XCTFail("Could not convert string literal to CSV instance") } // Check that headers match let correctMatchingHeader = ["Part Number", "Description", "Unit Price", "Qty"] XCTAssertEqual(csv!.header, correctMatchingHeader) } }