From 7d26cb34a181b322716303c815c28802f4e05a3d Mon Sep 17 00:00:00 2001 From: Merith-TK Date: Tue, 9 Aug 2022 23:01:55 -0700 Subject: [PATCH] decompile with cfr --- .gitignore | 1 + Readme.md | 5 + skaiacraft_v3.jar | Bin 0 -> 5612941 bytes src/Log4j-config.xsd | 133 + src/Log4j-events.dtd | 67 + src/Log4j-events.xsd | 78 + src/Log4j-levels.xsd | 31 + src/META-INF/MANIFEST.MF | 8 + src/Minecraft_Logo.png | Bin 0 -> 30257 bytes src/cakehoohoohoo.png | Bin 0 -> 199 bytes .../mc/nbt/error/TagNotFoundException.java | 27 + .../nbt/error/UnexpectedTagTypeException.java | 27 + .../evilco/mc/nbt/stream/NbtInputStream.java | 46 + .../evilco/mc/nbt/stream/NbtOutputStream.java | 21 + src/com/evilco/mc/nbt/tag/AbstractTag.java | 86 + .../mc/nbt/tag/IAnonymousTagContainer.java | 21 + .../evilco/mc/nbt/tag/INamedTagContainer.java | 24 + src/com/evilco/mc/nbt/tag/ITag.java | 29 + src/com/evilco/mc/nbt/tag/ITagContainer.java | 12 + src/com/evilco/mc/nbt/tag/TagByte.java | 45 + src/com/evilco/mc/nbt/tag/TagByteArray.java | 51 + src/com/evilco/mc/nbt/tag/TagCompound.java | 184 + src/com/evilco/mc/nbt/tag/TagDouble.java | 45 + src/com/evilco/mc/nbt/tag/TagFloat.java | 45 + src/com/evilco/mc/nbt/tag/TagInteger.java | 45 + .../evilco/mc/nbt/tag/TagIntegerArray.java | 55 + src/com/evilco/mc/nbt/tag/TagList.java | 96 + src/com/evilco/mc/nbt/tag/TagLong.java | 45 + src/com/evilco/mc/nbt/tag/TagShort.java | 45 + src/com/evilco/mc/nbt/tag/TagString.java | 51 + src/com/evilco/mc/nbt/tag/TagType.java | 55 + src/com/google/common/annotations/Beta.java | 18 + .../common/annotations/GwtCompatible.java | 20 + .../common/annotations/GwtIncompatible.java | 19 + .../common/annotations/VisibleForTesting.java | 10 + src/com/google/common/base/Absent.java | 88 + .../google/common/base/AbstractIterator.java | 74 + src/com/google/common/base/Ascii.java | 169 + src/com/google/common/base/CaseFormat.java | 179 + src/com/google/common/base/CharMatcher.java | 1018 +++++ src/com/google/common/base/Charsets.java | 26 + src/com/google/common/base/Converter.java | 305 ++ src/com/google/common/base/Defaults.java | 40 + src/com/google/common/base/Enums.java | 115 + src/com/google/common/base/Equivalence.java | 199 + .../base/FinalizablePhantomReference.java | 17 + .../common/base/FinalizableReference.java | 8 + .../base/FinalizableReferenceQueue.java | 182 + .../common/base/FinalizableSoftReference.java | 17 + .../common/base/FinalizableWeakReference.java | 17 + src/com/google/common/base/Function.java | 15 + .../common/base/FunctionalEquivalence.java | 59 + src/com/google/common/base/Functions.java | 299 ++ src/com/google/common/base/Joiner.java | 267 ++ src/com/google/common/base/MoreObjects.java | 160 + src/com/google/common/base/Objects.java | 168 + src/com/google/common/base/Optional.java | 89 + .../common/base/PairwiseEquivalence.java | 60 + src/com/google/common/base/Platform.java | 29 + src/com/google/common/base/Preconditions.java | 154 + src/com/google/common/base/Predicate.java | 14 + src/com/google/common/base/Predicates.java | 526 +++ src/com/google/common/base/Present.java | 87 + .../google/common/base/SmallCharMatcher.java | 100 + src/com/google/common/base/Splitter.java | 308 ++ .../common/base/StandardSystemProperty.java | 62 + src/com/google/common/base/Stopwatch.java | 136 + src/com/google/common/base/Strings.java | 108 + src/com/google/common/base/Supplier.java | 11 + src/com/google/common/base/Suppliers.java | 248 ++ src/com/google/common/base/Throwables.java | 70 + src/com/google/common/base/Ticker.java | 29 + src/com/google/common/base/Utf8.java | 104 + src/com/google/common/base/Verify.java | 38 + .../google/common/base/VerifyException.java | 20 + .../common/base/internal/Finalizer.java | 107 + src/com/google/common/base/package-info.java | 8 + .../google/common/cache/AbstractCache.java | 160 + .../common/cache/AbstractLoadingCache.java | 51 + src/com/google/common/cache/Cache.java | 43 + src/com/google/common/cache/CacheBuilder.java | 402 ++ .../google/common/cache/CacheBuilderSpec.java | 378 ++ src/com/google/common/cache/CacheLoader.java | 125 + src/com/google/common/cache/CacheStats.java | 113 + .../google/common/cache/ForwardingCache.java | 103 + .../common/cache/ForwardingLoadingCache.java | 62 + src/com/google/common/cache/LoadingCache.java | 33 + src/com/google/common/cache/LocalCache.java | 3939 +++++++++++++++++ src/com/google/common/cache/LongAddable.java | 15 + src/com/google/common/cache/LongAddables.java | 68 + src/com/google/common/cache/LongAdder.java | 117 + src/com/google/common/cache/RemovalCause.java | 54 + .../google/common/cache/RemovalListener.java | 14 + .../google/common/cache/RemovalListeners.java | 34 + .../common/cache/RemovalNotification.java | 77 + src/com/google/common/cache/Striped64.java | 224 + src/com/google/common/cache/Weigher.java | 13 + src/com/google/common/cache/package-info.java | 8 + .../google/common/collect/AbstractBiMap.java | 382 ++ .../collect/AbstractIndexedListIterator.java | 64 + .../common/collect/AbstractIterator.java | 76 + .../common/collect/AbstractListMultimap.java | 62 + .../collect/AbstractMapBasedMultimap.java | 1336 ++++++ .../collect/AbstractMapBasedMultiset.java | 237 + .../common/collect/AbstractMapEntry.java | 49 + .../common/collect/AbstractMultimap.java | 222 + .../common/collect/AbstractMultiset.java | 183 + .../common/collect/AbstractNavigableMap.java | 187 + .../common/collect/AbstractRangeSet.java | 90 + .../collect/AbstractSequentialIterator.java | 43 + .../common/collect/AbstractSetMultimap.java | 67 + .../AbstractSortedKeySortedSetMultimap.java | 33 + .../collect/AbstractSortedMultiset.java | 127 + .../collect/AbstractSortedSetMultimap.java | 63 + .../google/common/collect/AbstractTable.java | 211 + .../common/collect/AllEqualOrdering.java | 51 + .../common/collect/ArrayListMultimap.java | 87 + src/com/google/common/collect/ArrayTable.java | 503 +++ src/com/google/common/collect/BiMap.java | 26 + .../common/collect/BinaryTreeTraverser.java | 174 + src/com/google/common/collect/BoundType.java | 32 + .../common/collect/ByFunctionOrdering.java | 53 + .../google/common/collect/CartesianList.java | 100 + .../common/collect/ClassToInstanceMap.java | 16 + .../common/collect/CollectPreconditions.java | 37 + .../google/common/collect/Collections2.java | 462 ++ .../common/collect/ComparatorOrdering.java | 48 + .../common/collect/ComparisonChain.java | 145 + .../common/collect/CompoundOrdering.java | 58 + .../common/collect/ComputationException.java | 17 + .../collect/ComputingConcurrentHashMap.java | 365 ++ .../collect/ConcurrentHashMultiset.java | 383 ++ src/com/google/common/collect/Constraint.java | 13 + .../google/common/collect/Constraints.java | 260 ++ .../google/common/collect/ContiguousSet.java | 112 + src/com/google/common/collect/Count.java | 54 + src/com/google/common/collect/Cut.java | 421 ++ .../common/collect/DenseImmutableTable.java | 280 ++ .../DescendingImmutableSortedMultiset.java | 70 + .../collect/DescendingImmutableSortedSet.java | 97 + .../common/collect/DescendingMultiset.java | 144 + .../google/common/collect/DiscreteDomain.java | 175 + .../common/collect/EmptyContiguousSet.java | 152 + .../common/collect/EmptyImmutableBiMap.java | 69 + .../collect/EmptyImmutableListMultimap.java | 23 + .../common/collect/EmptyImmutableSet.java | 91 + .../collect/EmptyImmutableSetMultimap.java | 23 + .../collect/EmptyImmutableSortedMap.java | 99 + .../collect/EmptyImmutableSortedMultiset.java | 103 + .../collect/EmptyImmutableSortedSet.java | 125 + src/com/google/common/collect/EnumBiMap.java | 96 + .../google/common/collect/EnumHashBiMap.java | 77 + .../google/common/collect/EnumMultiset.java | 64 + .../google/common/collect/EvictingQueue.java | 77 + .../common/collect/ExplicitOrdering.java | 67 + .../common/collect/FilteredEntryMultimap.java | 382 ++ .../collect/FilteredEntrySetMultimap.java | 52 + .../collect/FilteredKeyListMultimap.java | 40 + .../common/collect/FilteredKeyMultimap.java | 217 + .../collect/FilteredKeySetMultimap.java | 71 + .../common/collect/FilteredMultimap.java | 17 + .../collect/FilteredMultimapValues.java | 71 + .../common/collect/FilteredSetMultimap.java | 16 + .../google/common/collect/FluentIterable.java | 233 + .../collect/ForwardingBlockingDeque.java | 94 + .../common/collect/ForwardingCollection.java | 141 + .../collect/ForwardingConcurrentMap.java | 39 + .../common/collect/ForwardingDeque.java | 103 + .../ForwardingImmutableCollection.java | 12 + .../collect/ForwardingImmutableList.java | 12 + .../collect/ForwardingImmutableMap.java | 12 + .../collect/ForwardingImmutableSet.java | 12 + .../common/collect/ForwardingIterator.java | 34 + .../google/common/collect/ForwardingList.java | 130 + .../collect/ForwardingListIterator.java | 49 + .../collect/ForwardingListMultimap.java | 36 + .../google/common/collect/ForwardingMap.java | 169 + .../common/collect/ForwardingMapEntry.java | 68 + .../common/collect/ForwardingMultimap.java | 124 + .../common/collect/ForwardingMultiset.java | 155 + .../collect/ForwardingNavigableMap.java | 254 ++ .../collect/ForwardingNavigableSet.java | 135 + .../common/collect/ForwardingObject.java | 18 + .../common/collect/ForwardingQueue.java | 72 + .../google/common/collect/ForwardingSet.java | 46 + .../common/collect/ForwardingSetMultimap.java | 39 + .../common/collect/ForwardingSortedMap.java | 96 + .../collect/ForwardingSortedMultiset.java | 138 + .../common/collect/ForwardingSortedSet.java | 104 + .../collect/ForwardingSortedSetMultimap.java | 42 + .../common/collect/ForwardingTable.java | 127 + .../google/common/collect/GeneralRange.java | 192 + .../common/collect/GenericMapMaker.java | 74 + .../google/common/collect/GwtTransient.java | 18 + .../google/common/collect/HashBasedTable.java | 92 + src/com/google/common/collect/HashBiMap.java | 632 +++ .../google/common/collect/HashMultimap.java | 78 + .../google/common/collect/HashMultiset.java | 59 + src/com/google/common/collect/Hashing.java | 37 + .../common/collect/ImmutableAsList.java | 67 + .../google/common/collect/ImmutableBiMap.java | 131 + .../collect/ImmutableClassToInstanceMap.java | 79 + .../common/collect/ImmutableCollection.java | 216 + .../google/common/collect/ImmutableEntry.java | 40 + .../common/collect/ImmutableEnumMap.java | 140 + .../common/collect/ImmutableEnumSet.java | 101 + .../google/common/collect/ImmutableList.java | 434 ++ .../common/collect/ImmutableListMultimap.java | 227 + .../google/common/collect/ImmutableMap.java | 371 ++ .../common/collect/ImmutableMapEntry.java | 51 + .../common/collect/ImmutableMapEntrySet.java | 62 + .../common/collect/ImmutableMapKeySet.java | 84 + .../common/collect/ImmutableMapValues.java | 86 + .../common/collect/ImmutableMultimap.java | 456 ++ .../common/collect/ImmutableMultiset.java | 374 ++ .../common/collect/ImmutableRangeMap.java | 233 + .../common/collect/ImmutableRangeSet.java | 485 ++ .../google/common/collect/ImmutableSet.java | 263 ++ .../common/collect/ImmutableSetMultimap.java | 340 ++ .../common/collect/ImmutableSortedAsList.java | 57 + .../common/collect/ImmutableSortedMap.java | 367 ++ .../ImmutableSortedMapFauxverideShim.java | 43 + .../collect/ImmutableSortedMultiset.java | 276 ++ ...ImmutableSortedMultisetFauxverideShim.java | 53 + .../common/collect/ImmutableSortedSet.java | 365 ++ .../ImmutableSortedSetFauxverideShim.java | 53 + .../google/common/collect/ImmutableTable.java | 215 + src/com/google/common/collect/Interner.java | 11 + src/com/google/common/collect/Interners.java | 93 + src/com/google/common/collect/Iterables.java | 532 +++ src/com/google/common/collect/Iterators.java | 714 +++ .../collect/LexicographicalOrdering.java | 61 + .../common/collect/LinkedHashMultimap.java | 443 ++ .../common/collect/LinkedHashMultiset.java | 59 + .../common/collect/LinkedListMultimap.java | 659 +++ .../google/common/collect/ListMultimap.java | 30 + src/com/google/common/collect/Lists.java | 679 +++ .../google/common/collect/MapConstraint.java | 16 + .../google/common/collect/MapConstraints.java | 680 +++ .../google/common/collect/MapDifference.java | 35 + src/com/google/common/collect/MapMaker.java | 450 ++ .../common/collect/MapMakerInternalMap.java | 3192 +++++++++++++ src/com/google/common/collect/Maps.java | 2691 +++++++++++ .../common/collect/MinMaxPriorityQueue.java | 570 +++ src/com/google/common/collect/Multimap.java | 54 + .../common/collect/MultimapBuilder.java | 330 ++ src/com/google/common/collect/Multimaps.java | 1190 +++++ src/com/google/common/collect/Multiset.java | 69 + src/com/google/common/collect/Multisets.java | 810 ++++ .../collect/MutableClassToInstanceMap.java | 50 + .../common/collect/NaturalOrdering.java | 41 + .../common/collect/NullsFirstOrdering.java | 71 + .../common/collect/NullsLastOrdering.java | 71 + .../google/common/collect/ObjectArrays.java | 126 + src/com/google/common/collect/Ordering.java | 385 ++ .../common/collect/PeekingIterator.java | 19 + src/com/google/common/collect/Platform.java | 55 + src/com/google/common/collect/Queues.java | 183 + src/com/google/common/collect/Range.java | 301 ++ src/com/google/common/collect/RangeMap.java | 38 + src/com/google/common/collect/RangeSet.java | 46 + .../common/collect/RegularContiguousSet.java | 203 + .../collect/RegularImmutableAsList.java | 52 + .../common/collect/RegularImmutableBiMap.java | 308 ++ .../common/collect/RegularImmutableList.java | 85 + .../common/collect/RegularImmutableMap.java | 155 + .../collect/RegularImmutableMultiset.java | 63 + .../common/collect/RegularImmutableSet.java | 82 + .../collect/RegularImmutableSortedMap.java | 120 + .../RegularImmutableSortedMultiset.java | 90 + .../collect/RegularImmutableSortedSet.java | 248 ++ .../common/collect/RegularImmutableTable.java | 162 + .../collect/ReverseNaturalOrdering.java | 84 + .../common/collect/ReverseOrdering.java | 94 + .../google/common/collect/RowSortedTable.java | 22 + .../google/common/collect/Serialization.java | 130 + .../google/common/collect/SetMultimap.java | 33 + src/com/google/common/collect/Sets.java | 972 ++++ .../collect/SingletonImmutableBiMap.java | 81 + .../collect/SingletonImmutableList.java | 103 + .../common/collect/SingletonImmutableSet.java | 91 + .../collect/SingletonImmutableTable.java | 62 + .../google/common/collect/SortedIterable.java | 17 + .../common/collect/SortedIterables.java | 39 + .../google/common/collect/SortedLists.java | 157 + .../common/collect/SortedMapDifference.java | 24 + .../google/common/collect/SortedMultiset.java | 49 + .../common/collect/SortedMultisetBridge.java | 13 + .../common/collect/SortedMultisets.java | 143 + .../common/collect/SortedSetMultimap.java | 30 + .../common/collect/SparseImmutableTable.java | 105 + .../collect/StandardRowSortedTable.java | 97 + .../google/common/collect/StandardTable.java | 898 ++++ .../google/common/collect/Synchronized.java | 2471 +++++++++++ src/com/google/common/collect/Table.java | 67 + src/com/google/common/collect/Tables.java | 466 ++ .../common/collect/TransformedIterator.java | 35 + .../collect/TransformedListIterator.java | 52 + .../google/common/collect/TreeBasedTable.java | 245 + .../google/common/collect/TreeMultimap.java | 144 + .../google/common/collect/TreeMultiset.java | 869 ++++ .../google/common/collect/TreeRangeMap.java | 526 +++ .../google/common/collect/TreeRangeSet.java | 694 +++ .../google/common/collect/TreeTraverser.java | 158 + .../common/collect/UnmodifiableIterator.java | 20 + .../collect/UnmodifiableListIterator.java | 28 + .../collect/UnmodifiableSortedMultiset.java | 92 + .../common/collect/UsingToStringOrdering.java | 32 + .../google/common/collect/WellBehavedMap.java | 81 + .../google/common/collect/package-info.java | 8 + .../common/escape/ArrayBasedCharEscaper.java | 62 + .../common/escape/ArrayBasedEscaperMap.java | 44 + .../escape/ArrayBasedUnicodeEscaper.java | 81 + src/com/google/common/escape/CharEscaper.java | 81 + .../common/escape/CharEscaperBuilder.java | 74 + src/com/google/common/escape/Escaper.java | 29 + src/com/google/common/escape/Escapers.java | 147 + src/com/google/common/escape/Platform.java | 24 + .../google/common/escape/UnicodeEscaper.java | 119 + .../google/common/escape/package-info.java | 8 + .../eventbus/AllowConcurrentEvents.java | 16 + .../eventbus/AnnotatedSubscriberFinder.java | 114 + .../google/common/eventbus/AsyncEventBus.java | 60 + src/com/google/common/eventbus/DeadEvent.java | 26 + src/com/google/common/eventbus/EventBus.java | 214 + .../common/eventbus/EventSubscriber.java | 69 + src/com/google/common/eventbus/Subscribe.java | 16 + .../eventbus/SubscriberExceptionContext.java | 38 + .../eventbus/SubscriberExceptionHandler.java | 10 + .../eventbus/SubscriberFindingStrategy.java | 11 + .../eventbus/SynchronizedEventSubscriber.java | 26 + .../common/hash/AbstractByteHasher.java | 94 + .../hash/AbstractCompositeHashFunction.java | 146 + .../google/common/hash/AbstractHasher.java | 42 + .../AbstractNonStreamingHashFunction.java | 156 + .../hash/AbstractStreamingHashFunction.java | 195 + src/com/google/common/hash/BloomFilter.java | 213 + .../common/hash/BloomFilterStrategies.java | 164 + .../common/hash/ChecksumHashFunction.java | 71 + .../common/hash/Crc32cHashFunction.java | 49 + src/com/google/common/hash/Funnel.java | 14 + src/com/google/common/hash/Funnels.java | 220 + src/com/google/common/hash/HashCode.java | 267 ++ src/com/google/common/hash/HashFunction.java | 33 + src/com/google/common/hash/Hasher.java | 54 + src/com/google/common/hash/Hashing.java | 331 ++ .../common/hash/HashingInputStream.java | 60 + .../common/hash/HashingOutputStream.java | 45 + .../hash/MessageDigestHashFunction.java | 143 + .../common/hash/Murmur3_128HashFunction.java | 182 + .../common/hash/Murmur3_32HashFunction.java | 146 + src/com/google/common/hash/PrimitiveSink.java | 34 + .../google/common/hash/SipHashFunction.java | 134 + src/com/google/common/hash/package-info.java | 8 + src/com/google/common/html/HtmlEscapers.java | 22 + src/com/google/common/html/package-info.java | 8 + .../google/common/io/AppendableWriter.java | 88 + src/com/google/common/io/BaseEncoding.java | 610 +++ .../google/common/io/ByteArrayDataInput.java | 54 + .../google/common/io/ByteArrayDataOutput.java | 54 + src/com/google/common/io/ByteProcessor.java | 14 + src/com/google/common/io/ByteSink.java | 86 + src/com/google/common/io/ByteSource.java | 452 ++ src/com/google/common/io/ByteStreams.java | 593 +++ .../google/common/io/CharSequenceReader.java | 106 + src/com/google/common/io/CharSink.java | 80 + src/com/google/common/io/CharSource.java | 291 ++ src/com/google/common/io/CharStreams.java | 183 + src/com/google/common/io/Closeables.java | 56 + src/com/google/common/io/Closer.java | 144 + .../google/common/io/CountingInputStream.java | 68 + .../common/io/CountingOutputStream.java | 41 + .../common/io/FileBackedOutputStream.java | 157 + src/com/google/common/io/FileWriteMode.java | 9 + src/com/google/common/io/Files.java | 457 ++ src/com/google/common/io/Flushables.java | 39 + src/com/google/common/io/GwtWorkarounds.java | 190 + src/com/google/common/io/InputSupplier.java | 11 + src/com/google/common/io/LineBuffer.java | 59 + src/com/google/common/io/LineProcessor.java | 14 + src/com/google/common/io/LineReader.java | 48 + .../io/LittleEndianDataInputStream.java | 126 + .../io/LittleEndianDataOutputStream.java | 95 + .../google/common/io/MultiInputStream.java | 98 + src/com/google/common/io/MultiReader.java | 77 + src/com/google/common/io/OutputSupplier.java | 11 + .../common/io/PatternFilenameFilter.java | 30 + src/com/google/common/io/Resources.java | 97 + src/com/google/common/io/package-info.java | 8 + .../google/common/math/BigIntegerMath.java | 277 ++ src/com/google/common/math/DoubleMath.java | 260 ++ src/com/google/common/math/DoubleUtils.java | 71 + src/com/google/common/math/IntMath.java | 343 ++ src/com/google/common/math/LongMath.java | 414 ++ .../google/common/math/MathPreconditions.java | 95 + src/com/google/common/math/package-info.java | 8 + src/com/google/common/net/HostAndPort.java | 158 + src/com/google/common/net/HostSpecifier.java | 85 + src/com/google/common/net/HttpHeaders.java | 98 + src/com/google/common/net/InetAddresses.java | 480 ++ .../google/common/net/InternetDomainName.java | 179 + src/com/google/common/net/MediaType.java | 398 ++ src/com/google/common/net/PercentEscaper.java | 125 + src/com/google/common/net/UrlEscapers.java | 34 + src/com/google/common/net/package-info.java | 8 + .../google/common/primitives/Booleans.java | 290 ++ src/com/google/common/primitives/Bytes.java | 240 + src/com/google/common/primitives/Chars.java | 338 ++ src/com/google/common/primitives/Doubles.java | 371 ++ src/com/google/common/primitives/Floats.java | 356 ++ src/com/google/common/primitives/Ints.java | 438 ++ src/com/google/common/primitives/Longs.java | 389 ++ .../common/primitives/ParseRequest.java | 40 + .../google/common/primitives/Primitives.java | 63 + src/com/google/common/primitives/Shorts.java | 373 ++ .../google/common/primitives/SignedBytes.java | 93 + .../common/primitives/UnsignedBytes.java | 227 + .../common/primitives/UnsignedInteger.java | 125 + .../common/primitives/UnsignedInts.java | 132 + .../common/primitives/UnsignedLong.java | 137 + .../common/primitives/UnsignedLongs.java | 205 + .../common/primitives/package-info.java | 8 + .../reflect/AbstractInvocationHandler.java | 59 + src/com/google/common/reflect/ClassPath.java | 342 ++ src/com/google/common/reflect/Element.java | 138 + .../reflect/ImmutableTypeToInstanceMap.java | 81 + src/com/google/common/reflect/Invokable.java | 236 + .../reflect/MutableTypeToInstanceMap.java | 134 + src/com/google/common/reflect/Parameter.java | 95 + src/com/google/common/reflect/Reflection.java | 42 + .../google/common/reflect/TypeCapture.java | 19 + .../google/common/reflect/TypeParameter.java | 39 + .../google/common/reflect/TypeResolver.java | 374 ++ .../common/reflect/TypeToInstanceMap.java | 25 + src/com/google/common/reflect/TypeToken.java | 898 ++++ .../google/common/reflect/TypeVisitor.java | 68 + src/com/google/common/reflect/Types.java | 491 ++ .../google/common/reflect/package-info.java | 8 + .../concurrent/AbstractCheckedFuture.java | 58 + .../AbstractExecutionThreadService.java | 156 + .../util/concurrent/AbstractFuture.java | 185 + .../util/concurrent/AbstractIdleService.java | 145 + .../AbstractListeningExecutorService.java | 40 + .../concurrent/AbstractScheduledService.java | 334 ++ .../util/concurrent/AbstractService.java | 479 ++ .../common/util/concurrent/AsyncFunction.java | 10 + .../util/concurrent/AsyncSettableFuture.java | 59 + .../common/util/concurrent/AtomicDouble.java | 105 + .../util/concurrent/AtomicDoubleArray.java | 115 + .../common/util/concurrent/AtomicLongMap.java | 216 + .../common/util/concurrent/Atomics.java | 29 + .../common/util/concurrent/Callables.java | 85 + .../common/util/concurrent/CheckedFuture.java | 17 + .../concurrent/CycleDetectingLockFactory.java | 603 +++ .../util/concurrent/ExecutionError.java | 28 + .../common/util/concurrent/ExecutionList.java | 88 + .../util/concurrent/FakeTimeLimiter.java | 28 + .../concurrent/ForwardingBlockingQueue.java | 54 + .../concurrent/ForwardingCheckedFuture.java | 44 + .../concurrent/ForwardingExecutorService.java | 89 + .../util/concurrent/ForwardingFuture.java | 60 + .../ForwardingListenableFuture.java | 38 + .../ForwardingListeningExecutorService.java | 34 + .../util/concurrent/FutureCallback.java | 12 + .../util/concurrent/FutureFallback.java | 12 + .../common/util/concurrent/Futures.java | 931 ++++ .../util/concurrent/JdkFutureAdapters.java | 90 + .../util/concurrent/ListenableFuture.java | 12 + .../util/concurrent/ListenableFutureTask.java | 43 + .../concurrent/ListenableScheduledFuture.java | 14 + .../util/concurrent/ListenerCallQueue.java | 121 + .../concurrent/ListeningExecutorService.java | 27 + .../ListeningScheduledExecutorService.java | 24 + .../common/util/concurrent/Monitor.java | 599 +++ .../common/util/concurrent/MoreExecutors.java | 632 +++ .../common/util/concurrent/RateLimiter.java | 191 + .../common/util/concurrent/Runnables.java | 25 + .../util/concurrent/SerializingExecutor.java | 116 + .../common/util/concurrent/Service.java | 104 + .../util/concurrent/ServiceManager.java | 528 +++ .../util/concurrent/SettableFuture.java | 27 + .../util/concurrent/SimpleTimeLimiter.java | 137 + .../util/concurrent/SmoothRateLimiter.java | 121 + .../common/util/concurrent/Striped.java | 301 ++ .../util/concurrent/ThreadFactoryBuilder.java | 78 + .../common/util/concurrent/TimeLimiter.java | 15 + .../concurrent/UncaughtExceptionHandlers.java | 45 + .../UncheckedExecutionException.java | 28 + .../concurrent/UncheckedTimeoutException.java | 26 + .../util/concurrent/Uninterruptibles.java | 250 ++ .../concurrent/WrappingExecutorService.java | 117 + .../WrappingScheduledExecutorService.java | 41 + .../common/util/concurrent/package-info.java | 8 + src/com/google/common/xml/XmlEscapers.java | 51 + src/com/google/common/xml/package-info.java | 8 + .../google/gson/DefaultDateTypeAdapter.java | 114 + src/com/google/gson/ExclusionStrategy.java | 15 + src/com/google/gson/FieldAttributes.java | 59 + src/com/google/gson/FieldNamingPolicy.java | 83 + src/com/google/gson/FieldNamingStrategy.java | 10 + src/com/google/gson/Gson.java | 514 +++ src/com/google/gson/GsonBuilder.java | 204 + src/com/google/gson/InstanceCreator.java | 13 + src/com/google/gson/JsonArray.java | 158 + .../gson/JsonDeserializationContext.java | 15 + src/com/google/gson/JsonDeserializer.java | 16 + src/com/google/gson/JsonElement.java | 128 + src/com/google/gson/JsonIOException.java | 23 + src/com/google/gson/JsonNull.java | 27 + src/com/google/gson/JsonObject.java | 92 + src/com/google/gson/JsonParseException.java | 21 + src/com/google/gson/JsonParser.java | 60 + src/com/google/gson/JsonPrimitive.java | 180 + .../google/gson/JsonSerializationContext.java | 13 + src/com/google/gson/JsonSerializer.java | 15 + src/com/google/gson/JsonStreamParser.java | 78 + src/com/google/gson/JsonSyntaxException.java | 23 + .../google/gson/LongSerializationPolicy.java | 29 + src/com/google/gson/TreeTypeAdapter.java | 109 + src/com/google/gson/TypeAdapter.java | 90 + src/com/google/gson/TypeAdapterFactory.java | 15 + src/com/google/gson/annotations/Expose.java | 17 + .../gson/annotations/SerializedName.java | 15 + src/com/google/gson/annotations/Since.java | 15 + src/com/google/gson/annotations/Until.java | 15 + .../gson/internal/ConstructorConstructor.java | 208 + src/com/google/gson/internal/Excluder.java | 198 + .../internal/JsonReaderInternalAccess.java | 13 + .../gson/internal/LazilyParsedNumber.java | 55 + .../google/gson/internal/LinkedTreeMap.java | 540 +++ .../gson/internal/ObjectConstructor.java | 11 + src/com/google/gson/internal/Primitives.java | 60 + src/com/google/gson/internal/Streams.java | 96 + .../google/gson/internal/UnsafeAllocator.java | 71 + .../gson/internal/bind/ArrayTypeAdapter.java | 81 + .../bind/CollectionTypeAdapterFactory.java | 88 + .../gson/internal/bind/DateTypeAdapter.java | 81 + .../gson/internal/bind/JsonTreeReader.java | 211 + .../gson/internal/bind/JsonTreeWriter.java | 174 + .../internal/bind/MapTypeAdapterFactory.java | 176 + .../gson/internal/bind/ObjectTypeAdapter.java | 91 + .../bind/ReflectiveTypeAdapterFactory.java | 189 + .../internal/bind/SqlDateTypeAdapter.java | 53 + .../gson/internal/bind/TimeTypeAdapter.java | 54 + .../bind/TypeAdapterRuntimeTypeWrapper.java | 53 + .../gson/internal/bind/TypeAdapters.java | 838 ++++ src/com/google/gson/reflect/TypeToken.java | 181 + src/com/google/gson/stream/JsonReader.java | 1127 +++++ src/com/google/gson/stream/JsonScope.java | 18 + src/com/google/gson/stream/JsonToken.java | 21 + src/com/google/gson/stream/JsonWriter.java | 337 ++ .../gson/stream/MalformedJsonException.java | 24 + .../publicsuffix/PublicSuffixPatterns.java | 21 + .../publicsuffix/PublicSuffixType.java | 41 + .../thirdparty/publicsuffix/TrieParser.java | 71 + src/com/mojang/UUIDTypeAdapter.java | 31 + src/com/mojang/authlib/Agent.java | 28 + .../mojang/authlib/AuthenticationService.java | 17 + .../authlib/BaseAuthenticationService.java | 10 + .../authlib/BaseUserAuthentication.java | 246 + src/com/mojang/authlib/GameProfile.java | 68 + .../mojang/authlib/GameProfileRepository.java | 11 + .../authlib/HttpAuthenticationService.java | 176 + .../authlib/HttpUserAuthentication.java | 19 + .../mojang/authlib/ProfileLookupCallback.java | 12 + .../mojang/authlib/UserAuthentication.java | 44 + src/com/mojang/authlib/UserType.java | 34 + .../exceptions/AuthenticationException.java | 22 + .../AuthenticationUnavailableException.java | 24 + .../InvalidCredentialsException.java | 24 + .../exceptions/UserMigratedException.java | 24 + .../legacy/LegacyAuthenticationService.java | 38 + .../legacy/LegacyMinecraftSessionService.java | 75 + .../legacy/LegacyUserAuthentication.java | 108 + .../BaseMinecraftSessionService.java | 20 + .../HttpMinecraftSessionService.java | 19 + .../minecraft/InsecureTextureException.java | 49 + .../minecraft/MinecraftProfileTexture.java | 45 + .../minecraft/MinecraftSessionService.java | 20 + .../mojang/authlib/properties/Property.java | 62 + .../authlib/properties/PropertyMap.java | 80 + .../yggdrasil/ProfileIncompleteException.java | 22 + .../yggdrasil/ProfileNotFoundException.java | 22 + .../YggdrasilAuthenticationService.java | 156 + .../YggdrasilGameProfileRepository.java | 89 + .../YggdrasilMinecraftSessionService.java | 169 + .../YggdrasilUserAuthentication.java | 226 + .../request/AuthenticationRequest.java | 22 + .../yggdrasil/request/InvalidateRequest.java | 16 + .../request/JoinMinecraftServerRequest.java | 12 + .../yggdrasil/request/RefreshRequest.java | 24 + .../yggdrasil/request/ValidateRequest.java | 16 + .../response/AuthenticationResponse.java | 37 + .../HasJoinedMinecraftServerResponse.java | 22 + .../MinecraftProfilePropertiesResponse.java | 27 + .../response/MinecraftTexturesPayload.java | 36 + .../ProfileSearchResultsResponse.java | 50 + .../yggdrasil/response/RefreshResponse.java | 37 + .../authlib/yggdrasil/response/Response.java | 34 + .../authlib/yggdrasil/response/User.java | 19 + src/com/mojang/launcher/Http.java | 62 + src/com/mojang/launcher/Launcher.java | 87 + .../launcher/LegacyPropertyMapSerializer.java | 30 + src/com/mojang/launcher/OperatingSystem.java | 112 + .../launcher/SharedLauncherConstants.java | 9 + src/com/mojang/launcher/UserInterface.java | 28 + .../events/GameOutputLogProcessor.java | 10 + .../events/RefreshedVersionsListener.java | 10 + .../launcher/game/GameInstanceStatus.java | 27 + .../game/process/AbstractGameProcess.java | 44 + .../launcher/game/process/GameProcess.java | 27 + .../game/process/GameProcessBuilder.java | 86 + .../game/process/GameProcessFactory.java | 12 + .../game/process/GameProcessRunnable.java | 10 + .../process/direct/DirectGameProcess.java | 68 + .../direct/DirectGameProcessFactory.java | 20 + .../direct/DirectProcessInputMonitor.java | 55 + .../game/runner/AbstractGameRunner.java | 229 + .../launcher/game/runner/GameRunner.java | 18 + .../game/runner/GameRunnerListener.java | 11 + .../launcher/updater/DateTypeAdapter.java | 84 + .../launcher/updater/DownloadProgress.java | 34 + .../ExceptionalThreadPoolExecutor.java | 80 + .../launcher/updater/FileTypeAdapter.java | 31 + .../LowerCaseEnumTypeAdapterFactory.java | 54 + .../launcher/updater/VersionFilter.java | 55 + .../launcher/updater/VersionManager.java | 49 + .../launcher/updater/VersionSyncInfo.java | 70 + .../download/ChecksummedDownloadable.java | 118 + .../updater/download/DownloadJob.java | 172 + .../updater/download/DownloadListener.java | 12 + .../updater/download/Downloadable.java | 192 + .../updater/download/EtagDownloadable.java | 75 + .../download/MonitoringInputStream.java | 55 + .../updater/download/ProgressContainer.java | 63 + .../download/assets/AssetDownloadable.java | 142 + .../updater/download/assets/AssetIndex.java | 95 + .../launcher/versions/CompatibilityRule.java | 112 + .../launcher/versions/CompleteVersion.java | 33 + .../launcher/versions/ExtractRules.java | 41 + .../mojang/launcher/versions/ReleaseType.java | 8 + .../versions/ReleaseTypeAdapterFactory.java | 30 + .../launcher/versions/ReleaseTypeFactory.java | 15 + src/com/mojang/launcher/versions/Version.java | 17 + src/com/mojang/util/QueueLogAppender.java | 77 + src/com/mojang/util/UUIDTypeAdapter.java | 31 + src/dirt.png | Bin 0 -> 789 bytes src/favicon.png | Bin 0 -> 6036 bytes src/javax/annotation/CheckForNull.java | 18 + src/javax/annotation/CheckForSigned.java | 18 + src/javax/annotation/CheckReturnValue.java | 18 + src/javax/annotation/Detainted.java | 18 + src/javax/annotation/MatchesPattern.java | 38 + src/javax/annotation/Nonnegative.java | 46 + src/javax/annotation/Nonnull.java | 32 + src/javax/annotation/Nullable.java | 18 + .../OverridingMethodsMustInvokeSuper.java | 16 + .../ParametersAreNonnullByDefault.java | 18 + .../ParametersAreNullableByDefault.java | 18 + src/javax/annotation/PropertyKey.java | 17 + src/javax/annotation/RegEx.java | 42 + src/javax/annotation/Signed.java | 18 + src/javax/annotation/Syntax.java | 19 + src/javax/annotation/Tainted.java | 18 + src/javax/annotation/Untainted.java | 17 + src/javax/annotation/WillClose.java | 13 + src/javax/annotation/WillCloseWhenClosed.java | 13 + src/javax/annotation/WillNotClose.java | 13 + .../annotation/concurrent/GuardedBy.java | 15 + .../annotation/concurrent/Immutable.java | 16 + .../annotation/concurrent/NotThreadSafe.java | 16 + .../annotation/concurrent/ThreadSafe.java | 16 + src/javax/annotation/meta/Exclusive.java | 13 + src/javax/annotation/meta/Exhaustive.java | 13 + src/javax/annotation/meta/TypeQualifier.java | 20 + .../annotation/meta/TypeQualifierDefault.java | 17 + .../meta/TypeQualifierNickname.java | 13 + .../meta/TypeQualifierValidator.java | 16 + src/javax/annotation/meta/When.java | 15 + src/javax/xml/namespace/QName.java | 90 + src/joptsimple/AbstractOptionSpec.java | 134 + src/joptsimple/AlternativeLongOptionSpec.java | 30 + .../ArgumentAcceptingOptionSpec.java | 186 + src/joptsimple/ArgumentList.java | 31 + src/joptsimple/BuiltinHelpFormatter.java | 200 + src/joptsimple/HelpFormatter.java | 14 + .../IllegalOptionSpecificationException.java | 20 + .../MissingRequiredOptionException.java | 24 + .../MultipleArgumentsForOptionException.java | 24 + src/joptsimple/NoArgumentOptionSpec.java | 65 + src/joptsimple/NonOptionArgumentSpec.java | 95 + .../OptionArgumentConversionException.java | 28 + src/joptsimple/OptionDescriptor.java | 30 + src/joptsimple/OptionException.java | 57 + ...ptionMissingRequiredArgumentException.java | 24 + src/joptsimple/OptionParser.java | 297 ++ src/joptsimple/OptionParserState.java | 60 + src/joptsimple/OptionSet.java | 154 + src/joptsimple/OptionSpec.java | 21 + src/joptsimple/OptionSpecBuilder.java | 66 + src/joptsimple/OptionSpecTokenizer.java | 95 + .../OptionalArgumentOptionSpec.java | 49 + src/joptsimple/ParserRules.java | 60 + .../RequiredArgumentOptionSpec.java | 33 + ...acceptableNumberOfNonOptionsException.java | 26 + .../UnconfiguredOptionException.java | 29 + .../UnrecognizedOptionException.java | 20 + src/joptsimple/ValueConversionException.java | 17 + src/joptsimple/ValueConverter.java | 15 + src/joptsimple/internal/AbbreviationMap.java | 139 + src/joptsimple/internal/Classes.java | 38 + src/joptsimple/internal/Columns.java | 77 + .../ConstructorInvokingValueConverter.java | 35 + .../MethodInvokingValueConverter.java | 37 + src/joptsimple/internal/Objects.java | 16 + src/joptsimple/internal/Reflection.java | 98 + .../internal/ReflectionException.java | 13 + src/joptsimple/internal/Row.java | 29 + src/joptsimple/internal/Rows.java | 73 + src/joptsimple/internal/Strings.java | 52 + src/joptsimple/util/DateConverter.java | 60 + src/joptsimple/util/InetAddressConverter.java | 35 + src/joptsimple/util/KeyValuePair.java | 40 + src/joptsimple/util/RegexMatcher.java | 42 + src/langs/cs.yml | 90 + src/langs/de.yml | 90 + src/langs/ea.yml | 83 + src/langs/en.yml | 90 + src/langs/es.yml | 90 + src/langs/et.yml | 77 + src/langs/fi.yml | 90 + src/langs/fr.yml | 90 + src/langs/hr.yml | 90 + src/langs/hu.yml | 90 + src/langs/it.yml | 92 + src/langs/pl.yml | 90 + src/langs/pt.yml | 90 + src/langs/ru.yml | 79 + src/langs/tl.yml | 90 + src/langs/tr.yml | 92 + src/langs/vi.yml | 94 + src/launcher_properties.json | 1 + src/log4j2.xml | 20 + src/net/mc/main/DarkTheme.java | 55 + src/net/mc/main/InstallDirSettings.java | 68 + src/net/mc/main/Main.java | 264 ++ src/net/mc/main/Util.java | 201 + src/net/miginfocom/layout/AC.java | 243 + src/net/miginfocom/layout/BoundSize.java | 157 + src/net/miginfocom/layout/CC.java | 838 ++++ .../miginfocom/layout/ComponentWrapper.java | 85 + .../miginfocom/layout/ConstraintParser.java | 1106 +++++ .../miginfocom/layout/ContainerWrapper.java | 19 + src/net/miginfocom/layout/DimConstraint.java | 214 + src/net/miginfocom/layout/Grid.java | 1894 ++++++++ .../miginfocom/layout/InCellGapProvider.java | 11 + src/net/miginfocom/layout/LC.java | 439 ++ src/net/miginfocom/layout/LayoutCallback.java | 21 + src/net/miginfocom/layout/LayoutUtil.java | 339 ++ src/net/miginfocom/layout/LinkHandler.java | 130 + .../miginfocom/layout/PlatformDefaults.java | 430 ++ .../miginfocom/layout/ResizeConstraint.java | 44 + src/net/miginfocom/layout/UnitConverter.java | 13 + src/net/miginfocom/layout/UnitValue.java | 461 ++ src/net/miginfocom/swing/MigLayout.java | 537 +++ .../swing/SwingComponentWrapper.java | 405 ++ .../swing/SwingContainerWrapper.java | 71 + .../minecraft/launcher/CompatibilityRule.java | 134 + .../launcher/CurrentLaunchFeatureMatcher.java | 27 + src/net/minecraft/launcher/Language.java | 112 + src/net/minecraft/launcher/Launcher.java | 511 +++ .../minecraft/launcher/LauncherConstants.java | 118 + .../launcher/MinecraftUserInterface.java | 19 + .../minecraft/launcher/NetLauncherMain.java | 108 + .../minecraft/launcher/OptionsManager.java | 121 + src/net/minecraft/launcher/PackageEditor.java | 48 + src/net/minecraft/launcher/ServerManager.java | 67 + .../minecraft/launcher/StorageManager.java | 209 + .../launcher/SwingUserInterface.java | 344 ++ .../launcher/game/GameLaunchDispatcher.java | 196 + .../launcher/game/MinecraftGameRunner.java | 490 ++ .../launcher/game/MinecraftReleaseType.java | 66 + .../game/MinecraftReleaseTypeFactory.java | 37 + src/net/minecraft/launcher/game/SkaiaNet.java | 10 + .../profile/AuthenticationDatabase.java | 158 + .../profile/LauncherVisibilityRule.java | 24 + .../minecraft/launcher/profile/Profile.java | 177 + .../launcher/profile/ProfileManager.java | 250 ++ .../profile/RefreshedProfilesListener.java | 10 + .../launcher/profile/UserChangedListener.java | 10 + .../minecraft/launcher/ui/BottomBarPanel.java | 66 + .../minecraft/launcher/ui/LauncherPanel.java | 119 + .../minecraft/launcher/ui/TexturedPanel.java | 72 + .../ui/bottombar/PlayButtonPanel.java | 133 + .../ui/bottombar/PlayerInfoPanel.java | 166 + .../ui/bottombar/ProfileSelectionPanel.java | 166 + .../ui/bottombar/SidebarGridForm.java | 36 + .../ui/bottombar/StatusPanelForm.java | 62 + .../ui/popups/login/AuthErrorForm.java | 103 + .../launcher/ui/popups/login/ComboItem.java | 26 + .../ui/popups/login/ExistingUserListForm.java | 160 + .../launcher/ui/popups/login/LogInForm.java | 379 ++ .../launcher/ui/popups/login/LogInPopup.java | 134 + .../ui/popups/profile/ProfileEditorPopup.java | 144 + .../ui/popups/profile/ProfileInfoPanel.java | 270 ++ .../ui/popups/profile/ProfileJavaPanel.java | 167 + .../popups/profile/ProfileVersionPanel.java | 210 + .../launcher/ui/tabs/ConsoleTab.java | 96 + .../launcher/ui/tabs/GameOutputTab.java | 129 + .../launcher/ui/tabs/LauncherTabPanel.java | 71 + .../launcher/ui/tabs/ProfileListTab.java | 261 ++ .../launcher/ui/tabs/ServerListTab.java | 262 ++ .../launcher/ui/tabs/WebsiteTab.java | 95 + .../launcher/ui/tabs/website/Browser.java | 15 + .../launcher/ui/tabs/website/JFXBrowser.java | 163 + .../ui/tabs/website/LegacySwingBrowser.java | 67 + .../minecraft/launcher/updater/Argument.java | 108 + .../launcher/updater/ArgumentType.java | 10 + .../launcher/updater/AssetIndexInfo.java | 35 + .../updater/CompleteMinecraftVersion.java | 364 ++ .../launcher/updater/DownloadInfo.java | 33 + .../launcher/updater/DownloadType.java | 13 + .../updater/FileBasedVersionList.java | 39 + .../minecraft/launcher/updater/Library.java | 183 + .../launcher/updater/LibraryDownloadInfo.java | 33 + .../launcher/updater/LocalVersionList.java | 114 + .../updater/MinecraftVersionManager.java | 365 ++ .../launcher/updater/PartialVersion.java | 94 + .../updater/PreHashedDownloadable.java | 63 + .../launcher/updater/RemoteVersionList.java | 101 + .../launcher/updater/VersionList.java | 149 + src/org.jivesoftware.smack/jul.properties | 3 + src/org.jivesoftware.smack/smack-config.xml | 24 + src/org.jivesoftware.smack/version | 1 + .../apache/commons/codec/BinaryDecoder.java | 12 + .../apache/commons/codec/BinaryEncoder.java | 12 + .../apache/commons/codec/CharEncoding.java | 13 + src/org/apache/commons/codec/Charsets.java | 29 + src/org/apache/commons/codec/Decoder.java | 10 + .../commons/codec/DecoderException.java | 24 + src/org/apache/commons/codec/Encoder.java | 10 + .../commons/codec/EncoderException.java | 24 + .../apache/commons/codec/StringDecoder.java | 12 + .../apache/commons/codec/StringEncoder.java | 12 + .../codec/StringEncoderComparator.java | 35 + .../apache/commons/codec/binary/Base32.java | 256 ++ .../codec/binary/Base32InputStream.java | 23 + .../codec/binary/Base32OutputStream.java | 23 + .../apache/commons/codec/binary/Base64.java | 284 ++ .../codec/binary/Base64InputStream.java | 23 + .../codec/binary/Base64OutputStream.java | 23 + .../commons/codec/binary/BaseNCodec.java | 212 + .../codec/binary/BaseNCodecInputStream.java | 100 + .../codec/binary/BaseNCodecOutputStream.java | 78 + .../commons/codec/binary/BinaryCodec.java | 147 + .../codec/binary/CharSequenceUtils.java | 26 + src/org/apache/commons/codec/binary/Hex.java | 126 + .../commons/codec/binary/StringUtils.java | 111 + src/org/apache/commons/codec/digest/B64.java | 30 + .../apache/commons/codec/digest/Crypt.java | 39 + .../commons/codec/digest/DigestUtils.java | 251 ++ .../commons/codec/digest/HmacAlgorithms.java | 22 + .../commons/codec/digest/HmacUtils.java | 228 + .../apache/commons/codec/digest/Md5Crypt.java | 118 + .../codec/digest/MessageDigestAlgorithms.java | 16 + .../commons/codec/digest/Sha2Crypt.java | 181 + .../commons/codec/digest/UnixCrypt.java | 193 + .../codec/language/AbstractCaverphone.java | 22 + .../commons/codec/language/Caverphone.java | 35 + .../commons/codec/language/Caverphone1.java | 77 + .../commons/codec/language/Caverphone2.java | 80 + .../codec/language/ColognePhonetic.java | 182 + .../codec/language/DaitchMokotoffSoundex.java | 317 ++ .../codec/language/DoubleMetaphone.java | 704 +++ .../language/MatchRatingApproachEncoder.java | 181 + .../commons/codec/language/Metaphone.java | 277 ++ .../apache/commons/codec/language/Nysiis.java | 142 + .../codec/language/RefinedSoundex.java | 74 + .../commons/codec/language/Soundex.java | 104 + .../commons/codec/language/SoundexUtils.java | 47 + .../codec/language/bm/BeiderMorseEncoder.java | 59 + .../commons/codec/language/bm/Lang.java | 122 + .../commons/codec/language/bm/Languages.java | 237 + .../commons/codec/language/bm/NameType.java | 20 + .../codec/language/bm/PhoneticEngine.java | 299 ++ .../codec/language/bm/ResourceConstants.java | 14 + .../commons/codec/language/bm/Rule.java | 492 ++ .../commons/codec/language/bm/RuleType.java | 20 + .../codec/language/bm/ash_approx_any.txt | 155 + .../codec/language/bm/ash_approx_common.txt | 225 + .../codec/language/bm/ash_approx_cyrillic.txt | 18 + .../codec/language/bm/ash_approx_english.txt | 47 + .../codec/language/bm/ash_approx_french.txt | 40 + .../codec/language/bm/ash_approx_german.txt | 72 + .../codec/language/bm/ash_approx_hebrew.txt | 18 + .../language/bm/ash_approx_hungarian.txt | 18 + .../codec/language/bm/ash_approx_polish.txt | 83 + .../codec/language/bm/ash_approx_romanian.txt | 18 + .../codec/language/bm/ash_approx_russian.txt | 47 + .../codec/language/bm/ash_approx_spanish.txt | 18 + .../codec/language/bm/ash_exact_any.txt | 52 + .../language/bm/ash_exact_approx_common.txt | 82 + .../codec/language/bm/ash_exact_common.txt | 33 + .../codec/language/bm/ash_exact_cyrillic.txt | 18 + .../codec/language/bm/ash_exact_english.txt | 18 + .../codec/language/bm/ash_exact_french.txt | 18 + .../codec/language/bm/ash_exact_german.txt | 18 + .../codec/language/bm/ash_exact_hebrew.txt | 18 + .../codec/language/bm/ash_exact_hungarian.txt | 18 + .../codec/language/bm/ash_exact_polish.txt | 23 + .../codec/language/bm/ash_exact_romanian.txt | 18 + .../codec/language/bm/ash_exact_russian.txt | 19 + .../codec/language/bm/ash_exact_spanish.txt | 18 + .../codec/language/bm/ash_hebrew_common.txt | 123 + .../commons/codec/language/bm/ash_lang.txt | 206 + .../codec/language/bm/ash_languages.txt | 28 + .../codec/language/bm/ash_rules_any.txt | 332 ++ .../codec/language/bm/ash_rules_cyrillic.txt | 100 + .../codec/language/bm/ash_rules_english.txt | 107 + .../codec/language/bm/ash_rules_french.txt | 91 + .../codec/language/bm/ash_rules_german.txt | 128 + .../codec/language/bm/ash_rules_hebrew.txt | 62 + .../codec/language/bm/ash_rules_hungarian.txt | 84 + .../codec/language/bm/ash_rules_polish.txt | 185 + .../codec/language/bm/ash_rules_romanian.txt | 66 + .../codec/language/bm/ash_rules_russian.txt | 164 + .../codec/language/bm/ash_rules_spanish.txt | 77 + .../codec/language/bm/gen_approx_any.txt | 131 + .../codec/language/bm/gen_approx_arabic.txt | 26 + .../codec/language/bm/gen_approx_common.txt | 233 + .../codec/language/bm/gen_approx_cyrillic.txt | 18 + .../codec/language/bm/gen_approx_czech.txt | 18 + .../codec/language/bm/gen_approx_dutch.txt | 18 + .../codec/language/bm/gen_approx_english.txt | 47 + .../codec/language/bm/gen_approx_french.txt | 25 + .../codec/language/bm/gen_approx_german.txt | 73 + .../codec/language/bm/gen_approx_greek.txt | 18 + .../language/bm/gen_approx_greeklatin.txt | 20 + .../codec/language/bm/gen_approx_hebrew.txt | 18 + .../language/bm/gen_approx_hungarian.txt | 18 + .../codec/language/bm/gen_approx_italian.txt | 18 + .../codec/language/bm/gen_approx_polish.txt | 84 + .../language/bm/gen_approx_portuguese.txt | 18 + .../codec/language/bm/gen_approx_romanian.txt | 18 + .../codec/language/bm/gen_approx_russian.txt | 48 + .../codec/language/bm/gen_approx_spanish.txt | 21 + .../codec/language/bm/gen_approx_turkish.txt | 18 + .../codec/language/bm/gen_exact_any.txt | 40 + .../language/bm/gen_exact_approx_common.txt | 79 + .../codec/language/bm/gen_exact_arabic.txt | 18 + .../codec/language/bm/gen_exact_common.txt | 32 + .../codec/language/bm/gen_exact_cyrillic.txt | 18 + .../codec/language/bm/gen_exact_czech.txt | 18 + .../codec/language/bm/gen_exact_dutch.txt | 18 + .../codec/language/bm/gen_exact_english.txt | 18 + .../codec/language/bm/gen_exact_french.txt | 18 + .../codec/language/bm/gen_exact_german.txt | 18 + .../codec/language/bm/gen_exact_greek.txt | 18 + .../language/bm/gen_exact_greeklatin.txt | 18 + .../codec/language/bm/gen_exact_hebrew.txt | 18 + .../codec/language/bm/gen_exact_hungarian.txt | 18 + .../codec/language/bm/gen_exact_italian.txt | 18 + .../codec/language/bm/gen_exact_polish.txt | 23 + .../language/bm/gen_exact_portuguese.txt | 18 + .../codec/language/bm/gen_exact_romanian.txt | 18 + .../codec/language/bm/gen_exact_russian.txt | 19 + .../codec/language/bm/gen_exact_spanish.txt | 19 + .../codec/language/bm/gen_exact_turkish.txt | 18 + .../codec/language/bm/gen_hebrew_common.txt | 113 + .../commons/codec/language/bm/gen_lang.txt | 295 ++ .../codec/language/bm/gen_languages.txt | 36 + .../codec/language/bm/gen_rules_any.txt | 367 ++ .../codec/language/bm/gen_rules_arabic.txt | 76 + .../codec/language/bm/gen_rules_cyrillic.txt | 99 + .../codec/language/bm/gen_rules_czech.txt | 67 + .../codec/language/bm/gen_rules_dutch.txt | 78 + .../codec/language/bm/gen_rules_english.txt | 113 + .../codec/language/bm/gen_rules_french.txt | 114 + .../codec/language/bm/gen_rules_german.txt | 129 + .../codec/language/bm/gen_rules_greek.txt | 97 + .../language/bm/gen_rules_greeklatin.txt | 118 + .../codec/language/bm/gen_rules_hebrew.txt | 62 + .../codec/language/bm/gen_rules_hungarian.txt | 83 + .../codec/language/bm/gen_rules_italian.txt | 77 + .../codec/language/bm/gen_rules_polish.txt | 185 + .../language/bm/gen_rules_portuguese.txt | 105 + .../codec/language/bm/gen_rules_romanian.txt | 64 + .../codec/language/bm/gen_rules_russian.txt | 142 + .../codec/language/bm/gen_rules_spanish.txt | 85 + .../codec/language/bm/gen_rules_turkish.txt | 50 + .../apache/commons/codec/language/bm/lang.txt | 16 + .../codec/language/bm/sep_approx_any.txt | 20 + .../codec/language/bm/sep_approx_common.txt | 115 + .../codec/language/bm/sep_approx_french.txt | 18 + .../codec/language/bm/sep_approx_hebrew.txt | 18 + .../codec/language/bm/sep_approx_italian.txt | 18 + .../language/bm/sep_approx_portuguese.txt | 18 + .../codec/language/bm/sep_approx_spanish.txt | 18 + .../codec/language/bm/sep_exact_any.txt | 18 + .../language/bm/sep_exact_approx_common.txt | 79 + .../codec/language/bm/sep_exact_common.txt | 32 + .../codec/language/bm/sep_exact_french.txt | 18 + .../codec/language/bm/sep_exact_hebrew.txt | 18 + .../codec/language/bm/sep_exact_italian.txt | 18 + .../language/bm/sep_exact_portuguese.txt | 18 + .../codec/language/bm/sep_exact_spanish.txt | 18 + .../codec/language/bm/sep_hebrew_common.txt | 86 + .../commons/codec/language/bm/sep_lang.txt | 105 + .../codec/language/bm/sep_languages.txt | 23 + .../codec/language/bm/sep_rules_any.txt | 155 + .../codec/language/bm/sep_rules_french.txt | 91 + .../codec/language/bm/sep_rules_hebrew.txt | 62 + .../codec/language/bm/sep_rules_italian.txt | 76 + .../language/bm/sep_rules_portuguese.txt | 104 + .../codec/language/bm/sep_rules_spanish.txt | 95 + .../apache/commons/codec/language/dmrules.txt | 200 + src/org/apache/commons/codec/net/BCodec.java | 124 + src/org/apache/commons/codec/net/QCodec.java | 202 + .../codec/net/QuotedPrintableCodec.java | 269 ++ .../commons/codec/net/RFC1522Codec.java | 80 + .../apache/commons/codec/net/URLCodec.java | 198 + src/org/apache/commons/codec/net/Utils.java | 19 + src/org/apache/commons/io/ByteOrderMark.java | 90 + src/org/apache/commons/io/Charsets.java | 23 + src/org/apache/commons/io/CopyUtils.java | 82 + .../apache/commons/io/DirectoryWalker.java | 146 + src/org/apache/commons/io/EndianUtils.java | 177 + src/org/apache/commons/io/FileCleaner.java | 47 + .../commons/io/FileCleaningTracker.java | 120 + .../apache/commons/io/FileDeleteStrategy.java | 57 + .../commons/io/FileExistsException.java | 23 + .../apache/commons/io/FileSystemUtils.java | 264 ++ src/org/apache/commons/io/FileUtils.java | 1271 ++++++ src/org/apache/commons/io/FilenameUtils.java | 511 +++ src/org/apache/commons/io/HexDump.java | 66 + src/org/apache/commons/io/IOCase.java | 89 + .../commons/io/IOExceptionWithCause.java | 21 + src/org/apache/commons/io/IOUtils.java | 766 ++++ src/org/apache/commons/io/LineIterator.java | 84 + .../apache/commons/io/TaggedIOException.java | 38 + src/org/apache/commons/io/ThreadMonitor.java | 47 + .../io/comparator/AbstractFileComparator.java | 34 + .../comparator/CompositeFileComparator.java | 64 + .../io/comparator/DefaultFileComparator.java | 22 + .../comparator/DirectoryFileComparator.java | 29 + .../comparator/ExtensionFileComparator.java | 44 + .../LastModifiedFileComparator.java | 29 + .../io/comparator/NameFileComparator.java | 41 + .../io/comparator/PathFileComparator.java | 41 + .../io/comparator/ReverseComparator.java | 32 + .../io/comparator/SizeFileComparator.java | 50 + .../io/filefilter/AbstractFileFilter.java | 24 + .../commons/io/filefilter/AgeFileFilter.java | 54 + .../commons/io/filefilter/AndFileFilter.java | 100 + .../io/filefilter/CanReadFileFilter.java | 28 + .../io/filefilter/CanWriteFileFilter.java | 25 + .../io/filefilter/ConditionalFileFilter.java | 17 + .../io/filefilter/DelegateFileFilter.java | 55 + .../io/filefilter/DirectoryFileFilter.java | 28 + .../io/filefilter/EmptyFileFilter.java | 29 + .../io/filefilter/FalseFileFilter.java | 32 + .../commons/io/filefilter/FileFileFilter.java | 23 + .../io/filefilter/FileFilterUtils.java | 259 ++ .../io/filefilter/HiddenFileFilter.java | 25 + .../commons/io/filefilter/IOFileFilter.java | 18 + .../io/filefilter/MagicNumberFileFilter.java | 108 + .../commons/io/filefilter/NameFileFilter.java | 90 + .../commons/io/filefilter/NotFileFilter.java | 37 + .../commons/io/filefilter/OrFileFilter.java | 94 + .../io/filefilter/PrefixFileFilter.java | 90 + .../io/filefilter/RegexFileFilter.java | 53 + .../commons/io/filefilter/SizeFileFilter.java | 40 + .../io/filefilter/SuffixFileFilter.java | 90 + .../commons/io/filefilter/TrueFileFilter.java | 32 + .../io/filefilter/WildcardFileFilter.java | 91 + .../commons/io/filefilter/WildcardFilter.java | 63 + .../io/input/AutoCloseInputStream.java | 34 + .../commons/io/input/BOMInputStream.java | 170 + .../commons/io/input/BoundedInputStream.java | 106 + .../commons/io/input/BrokenInputStream.java | 45 + .../io/input/CharSequenceInputStream.java | 135 + .../commons/io/input/CharSequenceReader.java | 89 + .../input/ClassLoaderObjectInputStream.java | 44 + .../io/input/CloseShieldInputStream.java | 20 + .../commons/io/input/ClosedInputStream.java | 16 + .../commons/io/input/CountingInputStream.java | 57 + .../commons/io/input/DemuxInputStream.java | 35 + .../commons/io/input/NullInputStream.java | 152 + .../apache/commons/io/input/NullReader.java | 140 + .../commons/io/input/ProxyInputStream.java | 119 + .../apache/commons/io/input/ProxyReader.java | 139 + .../commons/io/input/ReaderInputStream.java | 123 + .../io/input/ReversedLinesFileReader.java | 186 + .../io/input/SwappedDataInputStream.java | 100 + .../commons/io/input/TaggedInputStream.java | 33 + src/org/apache/commons/io/input/Tailer.java | 215 + .../commons/io/input/TailerListener.java | 18 + .../io/input/TailerListenerAdapter.java | 30 + .../commons/io/input/TeeInputStream.java | 67 + .../commons/io/input/XmlStreamReader.java | 337 ++ .../io/input/XmlStreamReaderException.java | 49 + .../io/monitor/FileAlterationListener.java | 25 + .../FileAlterationListenerAdaptor.java | 43 + .../io/monitor/FileAlterationMonitor.java | 106 + .../io/monitor/FileAlterationObserver.java | 219 + .../apache/commons/io/monitor/FileEntry.java | 110 + .../commons/io/output/BrokenOutputStream.java | 35 + .../io/output/ByteArrayOutputStream.java | 187 + .../io/output/CloseShieldOutputStream.java | 20 + .../commons/io/output/ClosedOutputStream.java | 17 + .../io/output/CountingOutputStream.java | 47 + .../io/output/DeferredFileOutputStream.java | 103 + .../commons/io/output/DemuxOutputStream.java | 42 + .../io/output/FileWriterWithEncoding.java | 136 + .../commons/io/output/LockableFileWriter.java | 173 + .../commons/io/output/NullOutputStream.java | 24 + .../apache/commons/io/output/NullWriter.java | 54 + .../commons/io/output/ProxyOutputStream.java | 82 + .../apache/commons/io/output/ProxyWriter.java | 156 + .../io/output/StringBuilderWriter.java | 73 + .../commons/io/output/TaggedOutputStream.java | 33 + .../commons/io/output/TeeOutputStream.java | 55 + .../io/output/ThresholdingOutputStream.java | 83 + .../commons/io/output/WriterOutputStream.java | 111 + .../commons/io/output/XmlStreamWriter.java | 113 + .../apache/commons/lang3/AnnotationUtils.java | 231 + src/org/apache/commons/lang3/ArrayUtils.java | 2431 ++++++++++ src/org/apache/commons/lang3/BitField.java | 90 + .../apache/commons/lang3/BooleanUtils.java | 400 ++ .../apache/commons/lang3/CharEncoding.java | 28 + src/org/apache/commons/lang3/CharRange.java | 184 + .../commons/lang3/CharSequenceUtils.java | 85 + src/org/apache/commons/lang3/CharSet.java | 111 + .../apache/commons/lang3/CharSetUtils.java | 92 + src/org/apache/commons/lang3/CharUtils.java | 154 + .../apache/commons/lang3/ClassPathUtils.java | 43 + src/org/apache/commons/lang3/ClassUtils.java | 624 +++ src/org/apache/commons/lang3/Conversion.java | 896 ++++ src/org/apache/commons/lang3/EnumUtils.java | 137 + src/org/apache/commons/lang3/JavaVersion.java | 105 + src/org/apache/commons/lang3/LocaleUtils.java | 168 + .../lang3/NotImplementedException.java | 41 + src/org/apache/commons/lang3/ObjectUtils.java | 308 ++ .../commons/lang3/RandomStringUtils.java | 113 + src/org/apache/commons/lang3/RandomUtils.java | 54 + src/org/apache/commons/lang3/Range.java | 207 + .../commons/lang3/SerializationException.java | 24 + .../commons/lang3/SerializationUtils.java | 166 + .../commons/lang3/StringEscapeUtils.java | 165 + src/org/apache/commons/lang3/StringUtils.java | 2518 +++++++++++ src/org/apache/commons/lang3/SystemUtils.java | 186 + src/org/apache/commons/lang3/Validate.java | 328 ++ .../apache/commons/lang3/builder/Builder.java | 11 + .../lang3/builder/CompareToBuilder.java | 435 ++ .../apache/commons/lang3/builder/Diff.java | 41 + .../commons/lang3/builder/DiffBuilder.java | 524 +++ .../commons/lang3/builder/DiffResult.java | 74 + .../commons/lang3/builder/Diffable.java | 13 + .../commons/lang3/builder/EqualsBuilder.java | 474 ++ .../lang3/builder/HashCodeBuilder.java | 328 ++ .../apache/commons/lang3/builder/IDKey.java | 29 + .../MultilineRecursiveToStringStyle.java | 129 + .../lang3/builder/RecursiveToStringStyle.java | 37 + .../builder/ReflectionToStringBuilder.java | 185 + .../lang3/builder/StandardToStringStyle.java | 171 + .../lang3/builder/ToStringBuilder.java | 343 ++ .../commons/lang3/builder/ToStringStyle.java | 1091 +++++ .../lang3/concurrent/AtomicInitializer.java | 27 + .../concurrent/AtomicSafeInitializer.java | 29 + .../concurrent/BackgroundInitializer.java | 129 + .../lang3/concurrent/BasicThreadFactory.java | 134 + .../CallableBackgroundInitializer.java | 38 + .../lang3/concurrent/ConcurrentException.java | 22 + .../concurrent/ConcurrentInitializer.java | 13 + .../ConcurrentRuntimeException.java | 22 + .../lang3/concurrent/ConcurrentUtils.java | 147 + .../lang3/concurrent/ConstantInitializer.java | 49 + .../lang3/concurrent/LazyInitializer.java | 35 + .../MultiBackgroundInitializer.java | 136 + .../lang3/concurrent/TimedSemaphore.java | 137 + .../lang3/event/EventListenerSupport.java | 119 + .../commons/lang3/event/EventUtils.java | 65 + .../lang3/exception/CloneFailedException.java | 21 + .../lang3/exception/ContextedException.java | 93 + .../exception/ContextedRuntimeException.java | 93 + .../exception/DefaultExceptionContext.java | 115 + .../lang3/exception/ExceptionContext.java | 27 + .../lang3/exception/ExceptionUtils.java | 271 ++ .../apache/commons/lang3/math/Fraction.java | 439 ++ .../commons/lang3/math/IEEE754rUtils.java | 112 + .../commons/lang3/math/NumberUtils.java | 741 ++++ .../apache/commons/lang3/mutable/Mutable.java | 13 + .../commons/lang3/mutable/MutableBoolean.java | 89 + .../commons/lang3/mutable/MutableByte.java | 121 + .../commons/lang3/mutable/MutableDouble.java | 121 + .../commons/lang3/mutable/MutableFloat.java | 120 + .../commons/lang3/mutable/MutableInt.java | 116 + .../commons/lang3/mutable/MutableLong.java | 116 + .../commons/lang3/mutable/MutableObject.java | 56 + .../commons/lang3/mutable/MutableShort.java | 121 + .../lang3/reflect/ConstructorUtils.java | 91 + .../commons/lang3/reflect/FieldUtils.java | 280 ++ .../lang3/reflect/InheritanceUtils.java | 26 + .../commons/lang3/reflect/MemberUtils.java | 96 + .../commons/lang3/reflect/MethodUtils.java | 220 + .../commons/lang3/reflect/TypeLiteral.java | 47 + .../commons/lang3/reflect/TypeUtils.java | 947 ++++ .../apache/commons/lang3/reflect/Typed.java | 13 + .../commons/lang3/text/CompositeFormat.java | 41 + .../lang3/text/ExtendedMessageFormat.java | 326 ++ .../commons/lang3/text/FormatFactory.java | 11 + .../commons/lang3/text/FormattableUtils.java | 44 + .../apache/commons/lang3/text/StrBuilder.java | 1553 +++++++ .../apache/commons/lang3/text/StrLookup.java | 78 + .../apache/commons/lang3/text/StrMatcher.java | 167 + .../commons/lang3/text/StrSubstitutor.java | 473 ++ .../commons/lang3/text/StrTokenizer.java | 480 ++ .../apache/commons/lang3/text/WordUtils.java | 194 + .../text/translate/AggregateTranslator.java | 27 + .../translate/CharSequenceTranslator.java | 67 + .../text/translate/CodePointTranslator.java | 19 + .../lang3/text/translate/EntityArrays.java | 66 + .../text/translate/JavaUnicodeEscaper.java | 34 + .../text/translate/LookupTranslator.java | 54 + .../text/translate/NumericEntityEscaper.java | 51 + .../translate/NumericEntityUnescaper.java | 77 + .../lang3/text/translate/OctalUnescaper.java | 39 + .../lang3/text/translate/UnicodeEscaper.java | 61 + .../text/translate/UnicodeUnescaper.java | 36 + .../UnicodeUnpairedSurrogateRemover.java | 15 + .../commons/lang3/time/DateFormatUtils.java | 89 + .../apache/commons/lang3/time/DateParser.java | 26 + .../commons/lang3/time/DatePrinter.java | 32 + .../apache/commons/lang3/time/DateUtils.java | 645 +++ .../lang3/time/DurationFormatUtils.java | 386 ++ .../commons/lang3/time/FastDateFormat.java | 191 + .../commons/lang3/time/FastDateParser.java | 571 +++ .../commons/lang3/time/FastDatePrinter.java | 792 ++++ .../commons/lang3/time/FormatCache.java | 114 + .../apache/commons/lang3/time/StopWatch.java | 209 + .../commons/lang3/tuple/ImmutablePair.java | 40 + .../commons/lang3/tuple/ImmutableTriple.java | 42 + .../commons/lang3/tuple/MutablePair.java | 53 + .../commons/lang3/tuple/MutableTriple.java | 57 + src/org/apache/commons/lang3/tuple/Pair.java | 68 + .../apache/commons/lang3/tuple/Triple.java | 56 + src/org/apache/logging/log4j/EventLogger.java | 29 + src/org/apache/logging/log4j/Level.java | 142 + src/org/apache/logging/log4j/LogManager.java | 187 + src/org/apache/logging/log4j/Logger.java | 261 ++ .../logging/log4j/LoggingException.java | 21 + src/org/apache/logging/log4j/Marker.java | 25 + .../apache/logging/log4j/MarkerManager.java | 281 ++ .../apache/logging/log4j/ThreadContext.java | 316 ++ .../logging/log4j/core/AbstractLifeCycle.java | 70 + .../logging/log4j/core/AbstractLogEvent.java | 96 + .../apache/logging/log4j/core/Appender.java | 25 + .../logging/log4j/core/ErrorHandler.java | 14 + src/org/apache/logging/log4j/core/Filter.java | 42 + src/org/apache/logging/log4j/core/Layout.java | 22 + .../apache/logging/log4j/core/LifeCycle.java | 23 + .../logging/log4j/core/LifeCycleState.java | 13 + .../apache/logging/log4j/core/LogEvent.java | 47 + .../logging/log4j/core/LogEventListener.java | 28 + src/org/apache/logging/log4j/core/Logger.java | 241 + .../logging/log4j/core/LoggerContext.java | 343 ++ .../log4j/core/appender/AbstractAppender.java | 92 + .../log4j/core/appender/AbstractManager.java | 95 + .../AbstractOutputStreamAppender.java | 72 + .../appender/AppenderLoggingException.java | 23 + .../log4j/core/appender/AsyncAppender.java | 252 ++ .../log4j/core/appender/ConsoleAppender.java | 171 + .../core/appender/DefaultErrorHandler.java | 58 + .../log4j/core/appender/FailoverAppender.java | 158 + .../log4j/core/appender/FailoversPlugin.java | 31 + .../log4j/core/appender/FileAppender.java | 91 + .../log4j/core/appender/FileManager.java | 141 + .../log4j/core/appender/ManagerFactory.java | 8 + .../core/appender/OutputStreamManager.java | 112 + .../appender/RandomAccessFileAppender.java | 90 + .../appender/RandomAccessFileManager.java | 168 + .../core/appender/RollingFileAppender.java | 110 + .../RollingRandomAccessFileAppender.java | 112 + .../log4j/core/appender/SmtpAppender.java | 68 + .../log4j/core/appender/SocketAppender.java | 98 + .../log4j/core/appender/SyslogAppender.java | 50 + .../log4j/core/appender/TlsSyslogFrame.java | 55 + .../appender/db/AbstractDatabaseAppender.java | 93 + .../appender/db/AbstractDatabaseManager.java | 129 + .../core/appender/db/jdbc/ColumnConfig.java | 92 + .../appender/db/jdbc/ConnectionSource.java | 13 + .../db/jdbc/DataSourceConnectionSource.java | 61 + .../jdbc/FactoryMethodConnectionSource.java | 128 + .../core/appender/db/jdbc/JdbcAppender.java | 51 + .../appender/db/jdbc/JdbcDatabaseManager.java | 200 + .../db/jpa/AbstractLogEventWrapperEntity.java | 109 + .../appender/db/jpa/BasicLogEventEntity.java | 115 + .../core/appender/db/jpa/JpaAppender.java | 73 + .../appender/db/jpa/JpaDatabaseManager.java | 155 + .../ContextMapAttributeConverter.java | 27 + .../ContextMapJsonAttributeConverter.java | 50 + .../ContextStackAttributeConverter.java | 34 + .../ContextStackJsonAttributeConverter.java | 53 + .../converter/LevelAttributeConverter.java | 31 + .../converter/MarkerAttributeConverter.java | 33 + .../converter/MessageAttributeConverter.java | 34 + .../StackTraceElementAttributeConverter.java | 58 + .../ThrowableAttributeConverter.java | 200 + .../core/appender/jms/JmsQueueAppender.java | 56 + .../core/appender/jms/JmsTopicAppender.java | 56 + .../appender/rewrite/MapRewritePolicy.java | 118 + .../rewrite/PropertiesRewritePolicy.java | 73 + .../appender/rewrite/RewriteAppender.java | 81 + .../core/appender/rewrite/RewritePolicy.java | 10 + .../rolling/AbstractRolloverStrategy.java | 13 + .../rolling/CompositeTriggeringPolicy.java | 55 + .../rolling/DefaultRolloverStrategy.java | 247 ++ .../rolling/OnStartupTriggeringPolicy.java | 63 + .../appender/rolling/PatternProcessor.java | 214 + .../appender/rolling/RollingFileManager.java | 236 + .../RollingRandomAccessFileManager.java | 200 + .../appender/rolling/RolloverDescription.java | 16 + .../rolling/RolloverDescriptionImpl.java | 45 + .../appender/rolling/RolloverFrequency.java | 16 + .../appender/rolling/RolloverStrategy.java | 11 + .../rolling/SizeBasedTriggeringPolicy.java | 94 + .../rolling/TimeBasedTriggeringPolicy.java | 57 + .../appender/rolling/TriggeringPolicy.java | 13 + .../rolling/action/AbstractAction.java | 49 + .../core/appender/rolling/action/Action.java | 15 + .../rolling/action/CompositeAction.java | 63 + .../rolling/action/FileRenameAction.java | 108 + .../rolling/action/GzCompressAction.java | 67 + .../rolling/action/ZipCompressAction.java | 71 + .../log4j/core/appender/routing/Route.java | 71 + .../log4j/core/appender/routing/Routes.java | 58 + .../appender/routing/RoutingAppender.java | 151 + .../logging/log4j/core/async/AsyncLogger.java | 258 ++ .../log4j/core/async/AsyncLoggerConfig.java | 119 + .../core/async/AsyncLoggerConfigHelper.java | 262 ++ .../log4j/core/async/AsyncLoggerContext.java | 40 + .../async/AsyncLoggerContextSelector.java | 38 + .../log4j/core/async/DaemonThreadFactory.java | 32 + .../log4j/core/async/RingBufferLogEvent.java | 195 + .../core/async/RingBufferLogEventHandler.java | 32 + .../async/RingBufferLogEventTranslator.java | 56 + .../core/config/AbstractConfiguration.java | 562 +++ .../log4j/core/config/AppenderControl.java | 79 + .../log4j/core/config/AppenderRef.java | 54 + .../log4j/core/config/AppendersPlugin.java | 26 + .../log4j/core/config/Configuration.java | 71 + .../core/config/ConfigurationException.java | 17 + .../core/config/ConfigurationFactory.java | 347 ++ .../core/config/ConfigurationListener.java | 10 + .../core/config/ConfigurationMonitor.java | 8 + .../core/config/ConfigurationSource.java | 99 + .../log4j/core/config/Configurator.java | 91 + .../log4j/core/config/DefaultAdvertiser.java | 21 + .../core/config/DefaultConfiguration.java | 37 + .../config/DefaultConfigurationMonitor.java | 13 + .../core/config/FileConfigurationMonitor.java | 78 + .../log4j/core/config/LoggerConfig.java | 321 ++ .../logging/log4j/core/config/Loggers.java | 25 + .../log4j/core/config/LoggersPlugin.java | 31 + .../logging/log4j/core/config/Node.java | 95 + .../log4j/core/config/NullConfiguration.java | 21 + .../logging/log4j/core/config/Order.java | 15 + .../log4j/core/config/PropertiesPlugin.java | 33 + .../logging/log4j/core/config/Property.java | 43 + .../log4j/core/config/Reconfigurable.java | 10 + .../core/config/json/JsonConfiguration.java | 258 ++ .../config/json/JsonConfigurationFactory.java | 49 + .../log4j/core/config/plugins/Plugin.java | 27 + .../core/config/plugins/PluginAliases.java | 17 + .../core/config/plugins/PluginAttribute.java | 42 + .../plugins/PluginBuilderAttribute.java | 22 + .../config/plugins/PluginBuilderFactory.java | 16 + .../config/plugins/PluginConfiguration.java | 19 + .../core/config/plugins/PluginElement.java | 20 + .../core/config/plugins/PluginFactory.java | 16 + .../log4j/core/config/plugins/PluginNode.java | 19 + .../core/config/plugins/PluginValue.java | 20 + .../config/plugins/PluginVisitorStrategy.java | 19 + .../core/config/plugins/osgi/Activator.java | 64 + .../config/plugins/processor/PluginCache.java | 87 + .../config/plugins/processor/PluginEntry.java | 65 + .../plugins/processor/PluginProcessor.java | 144 + .../config/plugins/util/PluginBuilder.java | 204 + .../config/plugins/util/PluginManager.java | 239 + .../config/plugins/util/PluginRegistry.java | 47 + .../core/config/plugins/util/PluginType.java | 42 + .../config/plugins/util/ResolverUtil.java | 258 ++ .../config/plugins/util/TypeConverter.java | 8 + .../config/plugins/util/TypeConverters.java | 322 ++ .../visitors/AbstractPluginVisitor.java | 88 + .../visitors/PluginAttributeVisitor.java | 63 + .../PluginBuilderAttributeVisitor.java | 32 + .../visitors/PluginConfigurationVisitor.java | 30 + .../visitors/PluginElementVisitor.java | 81 + .../plugins/visitors/PluginNodeVisitor.java | 27 + .../plugins/visitors/PluginValueVisitor.java | 26 + .../plugins/visitors/PluginVisitor.java | 25 + .../plugins/visitors/PluginVisitors.java | 33 + .../config/status/StatusConfiguration.java | 149 + .../core/config/xml/XmlConfiguration.java | 320 ++ .../config/xml/XmlConfigurationFactory.java | 28 + .../core/config/yaml/YamlConfiguration.java | 29 + .../config/yaml/YamlConfigurationFactory.java | 49 + .../log4j/core/filter/AbstractFilter.java | 62 + .../log4j/core/filter/AbstractFilterable.java | 86 + .../log4j/core/filter/BurstFilter.java | 152 + .../log4j/core/filter/CompositeFilter.java | 169 + .../core/filter/DynamicThresholdFilter.java | 108 + .../logging/log4j/core/filter/Filterable.java | 21 + .../logging/log4j/core/filter/MapFilter.java | 130 + .../log4j/core/filter/MarkerFilter.java | 64 + .../log4j/core/filter/RegexFilter.java | 115 + .../core/filter/StructuredDataFilter.java | 109 + .../core/filter/ThreadContextMapFilter.java | 122 + .../log4j/core/filter/ThresholdFilter.java | 63 + .../logging/log4j/core/filter/TimeFilter.java | 79 + .../log4j/core/impl/ContextAnchor.java | 13 + .../core/impl/DefaultLogEventFactory.java | 21 + .../log4j/core/impl/ExtendedClassInfo.java | 74 + .../core/impl/ExtendedStackTraceElement.java | 96 + .../log4j/core/impl/Log4jContextFactory.java | 99 + .../log4j/core/impl/Log4jLogEvent.java | 363 ++ .../log4j/core/impl/LogEventFactory.java | 15 + .../impl/ReflectiveCallerClassUtility.java | 91 + .../core/impl/ThrowableFormatOptions.java | 132 + .../log4j/core/impl/ThrowableProxy.java | 452 ++ .../ExtendedStackTraceElementMixIn.java | 66 + .../log4j/core/jackson/Initializers.java | 56 + .../log4j/core/jackson/JsonConstants.java | 17 + .../log4j/core/jackson/LevelMixIn.java | 30 + .../jackson/ListOfMapEntryDeserializer.java | 40 + .../jackson/ListOfMapEntrySerializer.java | 36 + .../log4j/core/jackson/Log4jJsonModule.java | 29 + .../core/jackson/Log4jJsonObjectMapper.java | 24 + .../Log4jStackTraceElementDeserializer.java | 71 + .../log4j/core/jackson/Log4jXmlModule.java | 28 + .../core/jackson/Log4jXmlObjectMapper.java | 24 + .../log4j/core/jackson/LogEventMixIn.java | 131 + .../logging/log4j/core/jackson/MapEntry.java | 76 + .../log4j/core/jackson/MarkerMixIn.java | 40 + .../log4j/core/jackson/MessageSerializer.java | 28 + ...MutableThreadContextStackDeserializer.java | 34 + .../jackson/SimpleMessageDeserializer.java | 30 + .../core/jackson/StackTraceElementMixIn.java | 38 + .../core/jackson/ThrowableProxyMixIn.java | 64 + .../log4j/core/jackson/XmlConstants.java | 22 + .../logging/log4j/core/jmx/AppenderAdmin.java | 64 + .../log4j/core/jmx/AppenderAdminMBean.java | 18 + .../log4j/core/jmx/AsyncAppenderAdmin.java | 90 + .../core/jmx/AsyncAppenderAdminMBean.java | 30 + .../log4j/core/jmx/ContextSelectorAdmin.java | 36 + .../core/jmx/ContextSelectorAdminMBean.java | 10 + .../log4j/core/jmx/LoggerConfigAdmin.java | 86 + .../core/jmx/LoggerConfigAdminMBean.java | 24 + .../log4j/core/jmx/LoggerContextAdmin.java | 223 + .../core/jmx/LoggerContextAdminMBean.java | 40 + .../log4j/core/jmx/RingBufferAdmin.java | 56 + .../log4j/core/jmx/RingBufferAdminMBean.java | 13 + .../apache/logging/log4j/core/jmx/Server.java | 274 ++ .../log4j/core/jmx/StatusLoggerAdmin.java | 110 + .../core/jmx/StatusLoggerAdminMBean.java | 26 + .../core/layout/AbstractJacksonLayout.java | 43 + .../log4j/core/layout/AbstractLayout.java | 31 + .../core/layout/AbstractStringLayout.java | 37 + .../logging/log4j/core/layout/HtmlLayout.java | 334 ++ .../log4j/core/layout/JacksonFactory.java | 120 + .../logging/log4j/core/layout/JsonLayout.java | 62 + .../log4j/core/layout/LoggerFields.java | 58 + .../log4j/core/layout/PatternLayout.java | 204 + .../log4j/core/layout/Rfc5424Layout.java | 579 +++ .../log4j/core/layout/SerializedLayout.java | 95 + .../log4j/core/layout/SyslogLayout.java | 83 + .../logging/log4j/core/layout/XmlLayout.java | 71 + .../log4j/core/lookup/ContextMapLookup.java | 23 + .../logging/log4j/core/lookup/DateLookup.java | 45 + .../log4j/core/lookup/EnvironmentLookup.java | 22 + .../log4j/core/lookup/Interpolator.java | 117 + .../logging/log4j/core/lookup/JndiLookup.java | 52 + .../logging/log4j/core/lookup/MapLookup.java | 51 + .../core/lookup/ResourceBundleLookup.java | 39 + .../logging/log4j/core/lookup/StrLookup.java | 12 + .../logging/log4j/core/lookup/StrMatcher.java | 172 + .../log4j/core/lookup/StrSubstitutor.java | 502 +++ .../core/lookup/StructuredDataLookup.java | 33 + .../core/lookup/SystemPropertiesLookup.java | 32 + .../log4j/core/net/AbstractSocketManager.java | 34 + .../logging/log4j/core/net/Advertiser.java | 12 + .../log4j/core/net/DatagramOutputStream.java | 109 + .../log4j/core/net/DatagramSocketManager.java | 75 + .../logging/log4j/core/net/Facility.java | 55 + .../log4j/core/net/MimeMessageBuilder.java | 80 + .../core/net/MulticastDnsAdvertiser.java | 183 + .../logging/log4j/core/net/Priority.java | 38 + .../logging/log4j/core/net/Protocol.java | 15 + .../logging/log4j/core/net/Severity.java | 61 + .../logging/log4j/core/net/SmtpManager.java | 323 ++ .../log4j/core/net/SslSocketManager.java | 138 + .../log4j/core/net/TcpSocketManager.java | 230 + .../core/net/jms/AbstractJmsManager.java | 93 + .../core/net/jms/AbstractJmsReceiver.java | 58 + .../log4j/core/net/jms/JmsQueueManager.java | 189 + .../log4j/core/net/jms/JmsQueueReceiver.java | 76 + .../log4j/core/net/jms/JmsTopicManager.java | 189 + .../log4j/core/net/jms/JmsTopicReceiver.java | 76 + .../net/server/AbstractLogEventBridge.java | 21 + .../core/net/server/AbstractSocketServer.java | 96 + .../net/server/InputStreamLogEventBridge.java | 72 + .../server/JsonInputStreamLogEventBridge.java | 64 + .../log4j/core/net/server/LogEventBridge.java | 14 + .../ObjectInputStreamLogEventBridge.java | 29 + .../net/server/SecureTcpSocketServer.java | 17 + .../core/net/server/TcpSocketServer.java | 169 + .../core/net/server/UdpSocketServer.java | 114 + .../server/XmlInputStreamLogEventBridge.java | 39 + .../ssl/AbstractKeyStoreConfiguration.java | 77 + .../core/net/ssl/KeyStoreConfiguration.java | 36 + .../ssl/KeyStoreConfigurationException.java | 15 + .../log4j/core/net/ssl/SslConfiguration.java | 208 + .../net/ssl/SslConfigurationDefaults.java | 9 + .../net/ssl/SslConfigurationException.java | 13 + .../core/net/ssl/StoreConfiguration.java | 67 + .../net/ssl/StoreConfigurationException.java | 17 + .../core/net/ssl/TrustStoreConfiguration.java | 35 + .../ssl/TrustStoreConfigurationException.java | 15 + .../pattern/AbstractPatternConverter.java | 30 + .../pattern/AbstractStyleNameConverter.java | 204 + .../log4j/core/pattern/AnsiConverter.java | 7 + .../log4j/core/pattern/AnsiEscape.java | 106 + .../core/pattern/ArrayPatternConverter.java | 11 + .../log4j/core/pattern/CachedDateFormat.java | 144 + .../pattern/ClassNamePatternConverter.java | 34 + .../log4j/core/pattern/ConverterKeys.java | 15 + .../core/pattern/DatePatternConverter.java | 182 + .../pattern/EncodingPatternConverter.java | 88 + .../ExtendedThrowablePatternConverter.java | 58 + .../pattern/FileDatePatternConverter.java | 23 + .../pattern/FileLocationPatternConverter.java | 32 + .../log4j/core/pattern/FormattingInfo.java | 68 + .../pattern/FullLocationPatternConverter.java | 32 + .../core/pattern/HighlightConverter.java | 122 + .../core/pattern/IntegerPatternConverter.java | 44 + .../core/pattern/LevelPatternConverter.java | 92 + .../pattern/LineLocationPatternConverter.java | 32 + .../LineSeparatorPatternConverter.java | 31 + .../core/pattern/LiteralPatternConverter.java | 44 + .../pattern/LogEventPatternConverter.java | 27 + .../core/pattern/LoggerPatternConverter.java | 32 + .../core/pattern/MapPatternConverter.java | 58 + .../core/pattern/MarkerPatternConverter.java | 31 + .../core/pattern/MdcPatternConverter.java | 51 + .../core/pattern/MessagePatternConverter.java | 43 + .../MethodLocationPatternConverter.java | 32 + .../log4j/core/pattern/NameAbbreviator.java | 135 + .../core/pattern/NamePatternConverter.java | 21 + .../core/pattern/NdcPatternConverter.java | 29 + .../log4j/core/pattern/PatternConverter.java | 12 + .../log4j/core/pattern/PatternFormatter.java | 47 + .../log4j/core/pattern/PatternParser.java | 352 ++ .../log4j/core/pattern/RegexReplacement.java | 43 + .../pattern/RegexReplacementConverter.java | 63 + .../pattern/RelativeTimePatternConverter.java | 43 + .../RootThrowablePatternConverter.java | 58 + .../SequenceNumberPatternConverter.java | 31 + .../log4j/core/pattern/StyleConverter.java | 96 + .../core/pattern/ThreadPatternConverter.java | 29 + .../pattern/ThrowablePatternConverter.java | 103 + .../core/pattern/UuidPatternConverter.java | 39 + .../core/selector/BasicContextSelector.java | 44 + .../selector/ClassLoaderContextSelector.java | 208 + .../log4j/core/selector/ContextSelector.java | 18 + .../core/selector/JndiContextSelector.java | 102 + .../core/selector/NamedContextSelector.java | 15 + .../logging/log4j/core/tools/Generate.java | 205 + .../logging/log4j/core/util/Assert.java | 16 + .../logging/log4j/core/util/Booleans.java | 13 + .../logging/log4j/core/util/Builder.java | 8 + .../log4j/core/util/BundleResourceLoader.java | 42 + .../logging/log4j/core/util/CachedClock.java | 44 + .../logging/log4j/core/util/Charsets.java | 32 + .../core/util/ClassLoaderResourceLoader.java | 37 + .../apache/logging/log4j/core/util/Clock.java | 8 + .../logging/log4j/core/util/ClockFactory.java | 49 + .../logging/log4j/core/util/Closer.java | 92 + .../log4j/core/util/CoarseCachedClock.java | 37 + .../logging/log4j/core/util/Constants.java | 18 + .../logging/log4j/core/util/CyclicBuffer.java | 55 + .../logging/log4j/core/util/FileUtils.java | 77 + .../logging/log4j/core/util/Integers.java | 19 + .../logging/log4j/core/util/JndiCloser.java | 24 + .../logging/log4j/core/util/KeyValuePair.java | 36 + .../logging/log4j/core/util/Loader.java | 203 + .../logging/log4j/core/util/NameUtil.java | 41 + .../logging/log4j/core/util/NetUtils.java | 47 + .../log4j/core/util/OptionConverter.java | 212 + .../logging/log4j/core/util/Patterns.java | 16 + .../log4j/core/util/ResourceLoader.java | 16 + .../log4j/core/util/SecretKeyProvider.java | 10 + .../logging/log4j/core/util/SetUtils.java | 21 + .../logging/log4j/core/util/SystemClock.java | 14 + .../logging/log4j/core/util/Throwables.java | 111 + .../logging/log4j/core/util/Transform.java | 131 + .../logging/log4j/core/util/UuidUtil.java | 130 + .../log4j/message/AbstractMessageFactory.java | 29 + .../log4j/message/BasicThreadInformation.java | 73 + .../message/ExtendedThreadInformation.java | 151 + .../log4j/message/FormattedMessage.java | 158 + .../message/FormattedMessageFactory.java | 18 + .../log4j/message/LocalizedMessage.java | 221 + .../message/LocalizedMessageFactory.java | 42 + .../log4j/message/LoggerNameAwareMessage.java | 10 + .../logging/log4j/message/MapMessage.java | 215 + .../apache/logging/log4j/message/Message.java | 17 + .../logging/log4j/message/MessageFactory.java | 14 + .../log4j/message/MessageFormatMessage.java | 119 + .../message/MessageFormatMessageFactory.java | 18 + .../log4j/message/MultiformatMessage.java | 13 + .../logging/log4j/message/ObjectMessage.java | 76 + .../log4j/message/ParameterizedMessage.java | 348 ++ .../message/ParameterizedMessageFactory.java | 19 + .../logging/log4j/message/SimpleMessage.java | 59 + .../log4j/message/StringFormattedMessage.java | 118 + .../StringFormatterMessageFactory.java | 19 + .../log4j/message/StructuredDataId.java | 111 + .../log4j/message/StructuredDataMessage.java | 234 + .../log4j/message/ThreadDumpMessage.java | 151 + .../log4j/message/ThreadInformation.java | 10 + .../log4j/message/TimestampMessage.java | 8 + .../logging/log4j/simple/SimpleLogger.java | 129 + .../log4j/simple/SimpleLoggerContext.java | 87 + .../simple/SimpleLoggerContextFactory.java | 28 + .../logging/log4j/spi/AbstractLogger.java | 813 ++++ .../log4j/spi/DefaultThreadContextMap.java | 129 + .../log4j/spi/DefaultThreadContextStack.java | 281 ++ .../logging/log4j/spi/ExtendedLogger.java | 34 + .../log4j/spi/ExtendedLoggerWrapper.java | 57 + .../logging/log4j/spi/LoggerContext.java | 17 + .../log4j/spi/LoggerContextFactory.java | 15 + .../log4j/spi/MutableThreadContextStack.java | 207 + .../apache/logging/log4j/spi/Provider.java | 81 + .../logging/log4j/spi/StandardLevel.java | 43 + .../logging/log4j/spi/ThreadContextMap.java | 24 + .../logging/log4j/spi/ThreadContextStack.java | 10 + .../log4j/status/StatusConsoleListener.java | 68 + .../logging/log4j/status/StatusData.java | 68 + .../logging/log4j/status/StatusListener.java | 17 + .../logging/log4j/status/StatusLogger.java | 252 ++ .../apache/logging/log4j/util/Activator.java | 97 + .../logging/log4j/util/EnglishEnums.java | 19 + .../apache/logging/log4j/util/LoaderUtil.java | 37 + .../logging/log4j/util/PropertiesUtil.java | 205 + .../logging/log4j/util/ProviderUtil.java | 80 + .../apache/logging/log4j/util/Strings.java | 24 + .../AbstractConnectionClosedListener.java | 21 + .../smack/AbstractConnectionListener.java | 38 + .../smack/AbstractXMPPConnection.java | 1145 +++++ .../smack/ConnectionConfiguration.java | 285 ++ .../smack/ConnectionCreationListener.java | 10 + .../smack/ConnectionListener.java | 22 + .../jivesoftware/smack/ExceptionCallback.java | 8 + src/org/jivesoftware/smack/Manager.java | 21 + .../jivesoftware/smack/MessageListener.java | 10 + .../jivesoftware/smack/PacketCollector.java | 150 + .../jivesoftware/smack/PacketListener.java | 11 + .../jivesoftware/smack/PresenceListener.java | 10 + .../smack/ReconnectionManager.java | 189 + .../smack/SASLAuthentication.java | 271 ++ .../smack/SmackConfiguration.java | 154 + .../jivesoftware/smack/SmackException.java | 210 + .../smack/SmackInitialization.java | 189 + .../jivesoftware/smack/StanzaListener.java | 11 + .../smack/SynchronizationPoint.java | 191 + .../jivesoftware/smack/XMPPConnection.java | 126 + .../smack/XMPPConnectionRegistry.java | 26 + src/org/jivesoftware/smack/XMPPException.java | 79 + .../smack/compress/packet/Compress.java | 75 + .../smack/compress/packet/Compressed.java | 31 + .../Java7ZlibInputOutputStream.java | 92 + .../compression/XMPPInputOutputStream.java | 37 + .../smack/debugger/AbstractDebugger.java | 153 + .../smack/debugger/ConsoleDebugger.java | 33 + .../smack/debugger/JulDebugger.java | 24 + .../debugger/ReflectionDebuggerFactory.java | 86 + .../smack/debugger/SmackDebugger.java | 25 + .../smack/debugger/SmackDebuggerFactory.java | 13 + .../smack/filter/AbstractListFilter.java | 48 + .../jivesoftware/smack/filter/AndFilter.java | 28 + .../filter/FlexibleStanzaTypeFilter.java | 36 + .../smack/filter/FromMatchesFilter.java | 49 + .../smack/filter/IQReplyFilter.java | 75 + .../smack/filter/IQResultReplyFilter.java | 33 + .../smack/filter/IQTypeFilter.java | 35 + .../smack/filter/MessageTypeFilter.java | 36 + .../smack/filter/MessageWithBodiesFilter.java | 27 + .../filter/MessageWithSubjectFilter.java | 27 + .../jivesoftware/smack/filter/NotFilter.java | 22 + .../jivesoftware/smack/filter/OrFilter.java | 28 + .../smack/filter/PacketExtensionFilter.java | 39 + .../smack/filter/PacketFilter.java | 11 + .../smack/filter/PacketIDFilter.java | 34 + .../smack/filter/PacketTypeFilter.java | 30 + .../smack/filter/PresenceTypeFilter.java | 36 + .../smack/filter/StanzaExtensionFilter.java | 38 + .../smack/filter/StanzaFilter.java | 10 + .../smack/filter/StanzaIdFilter.java | 30 + .../smack/filter/StanzaTypeFilter.java | 31 + .../smack/filter/ThreadFilter.java | 30 + .../jivesoftware/smack/filter/ToFilter.java | 30 + .../smack/initializer/SmackInitializer.java | 10 + .../smack/initializer/UrlInitializer.java | 66 + .../smack/initializer/VmArgInitializer.java | 23 + .../iqrequest/AbstractIqRequestHandler.java | 54 + .../smack/iqrequest/IQRequestHandler.java | 24 + .../smack/packet/AbstractError.java | 62 + src/org/jivesoftware/smack/packet/Bind.java | 71 + .../smack/packet/DefaultExtensionElement.java | 66 + .../jivesoftware/smack/packet/Element.java | 8 + .../smack/packet/EmptyResultIQ.java | 29 + .../jivesoftware/smack/packet/ErrorIQ.java | 21 + .../smack/packet/ExtensionElement.java | 11 + .../smack/packet/FullStreamElement.java | 12 + src/org/jivesoftware/smack/packet/IQ.java | 153 + .../jivesoftware/smack/packet/Mechanisms.java | 51 + .../jivesoftware/smack/packet/Message.java | 345 ++ .../smack/packet/NamedElement.java | 11 + src/org/jivesoftware/smack/packet/Packet.java | 66 + .../smack/packet/PacketExtension.java | 11 + .../smack/packet/PlainStreamElement.java | 10 + .../jivesoftware/smack/packet/Presence.java | 139 + .../jivesoftware/smack/packet/Session.java | 57 + .../jivesoftware/smack/packet/SimpleIQ.java | 19 + src/org/jivesoftware/smack/packet/Stanza.java | 269 ++ .../jivesoftware/smack/packet/StartTls.java | 45 + .../smack/packet/StreamError.java | 107 + .../jivesoftware/smack/packet/StreamOpen.java | 78 + .../smack/packet/TopLevelStreamElement.java | 10 + .../jivesoftware/smack/packet/UnparsedIQ.java | 25 + .../jivesoftware/smack/packet/XMPPError.java | 203 + .../smack/packet/id/StanzaIdUtil.java | 16 + .../parsing/ExceptionLoggingCallback.java | 20 + .../parsing/ExceptionThrowingCallback.java | 15 + .../parsing/ParsingExceptionCallback.java | 11 + .../smack/parsing/UnparsablePacket.java | 22 + .../smack/provider/AbstractProviderInfo.java | 28 + .../smack/provider/BindIQProvider.java | 48 + .../provider/EmbeddedExtensionProvider.java | 39 + .../provider/ExtensionElementProvider.java | 11 + .../smack/provider/ExtensionProviderInfo.java | 15 + .../smack/provider/IQProvider.java | 11 + .../smack/provider/IQProviderInfo.java | 15 + .../smack/provider/IntrospectionProvider.java | 115 + .../jivesoftware/smack/provider/Provider.java | 23 + .../smack/provider/ProviderFileLoader.java | 131 + .../smack/provider/ProviderLoader.java | 17 + .../smack/provider/ProviderManager.java | 129 + .../provider/StreamFeatureProviderInfo.java | 15 + .../smack/proxy/DirectSocketFactory.java | 39 + .../smack/proxy/HTTPProxySocketFactory.java | 104 + .../smack/proxy/ProxyException.java | 24 + .../jivesoftware/smack/proxy/ProxyInfo.java | 90 + .../smack/proxy/Socks4ProxySocketFactory.java | 118 + .../smack/proxy/Socks5ProxySocketFactory.java | 164 + .../smack/sasl/SASLAnonymous.java | 41 + .../jivesoftware/smack/sasl/SASLError.java | 43 + .../smack/sasl/SASLErrorException.java | 40 + .../smack/sasl/SASLMechanism.java | 106 + .../smack/sasl/core/SASLXOauth2Mechanism.java | 43 + .../smack/sasl/core/SCRAMSHA1Mechanism.java | 248 ++ .../smack/sasl/packet/SaslStreamElements.java | 154 + .../util/ArrayBlockingQueueWithShutdown.java | 497 +++ src/org/jivesoftware/smack/util/Async.java | 25 + .../jivesoftware/smack/util/ByteUtils.java | 14 + src/org/jivesoftware/smack/util/DNSUtil.java | 169 + .../jivesoftware/smack/util/EventManger.java | 58 + .../jivesoftware/smack/util/FileUtils.java | 115 + .../smack/util/LazyStringBuilder.java | 90 + src/org/jivesoftware/smack/util/MAC.java | 33 + src/org/jivesoftware/smack/util/MD5.java | 37 + src/org/jivesoftware/smack/util/MultiMap.java | 163 + .../jivesoftware/smack/util/NumberUtil.java | 15 + src/org/jivesoftware/smack/util/Objects.java | 13 + .../smack/util/ObservableReader.java | 106 + .../smack/util/ObservableWriter.java | 102 + .../smack/util/PacketParserUtils.java | 765 ++++ .../jivesoftware/smack/util/PacketUtil.java | 22 + .../jivesoftware/smack/util/ParserUtils.java | 106 + .../smack/util/ReaderListener.java | 8 + src/org/jivesoftware/smack/util/SHA1.java | 38 + .../util/SmackExecutorThreadFactory.java | 26 + .../smack/util/StringTransformer.java | 8 + .../jivesoftware/smack/util/StringUtils.java | 174 + src/org/jivesoftware/smack/util/TLSUtils.java | 102 + .../smack/util/WriterListener.java | 8 + .../smack/util/XmlStringBuilder.java | 335 ++ .../smack/util/dns/DNSResolver.java | 11 + .../smack/util/dns/HostAddress.java | 72 + .../smack/util/dns/SRVRecord.java | 47 + .../smack/util/stringencoder/Base32.java | 152 + .../smack/util/stringencoder/Base64.java | 95 + .../stringencoder/Base64UrlSafeEncoder.java | 28 + .../util/stringencoder/StringEncoder.java | 10 + src/org/jxmpp/jid/BareJid.java | 12 + src/org/jxmpp/jid/DomainBareJid.java | 10 + src/org/jxmpp/jid/DomainFullJid.java | 12 + src/org/jxmpp/jid/FullJid.java | 19 + src/org/jxmpp/jid/Jid.java | 84 + src/org/jxmpp/jid/JidWithLocalpart.java | 15 + src/org/jxmpp/jid/JidWithResource.java | 12 + src/org/jxmpp/jid/impl/AbstractJid.java | 141 + .../jid/impl/DomainAndResourcepartJid.java | 135 + src/org/jxmpp/jid/impl/DomainpartJid.java | 121 + src/org/jxmpp/jid/impl/JidCreate.java | 205 + .../jxmpp/jid/impl/LocalAndDomainpartJid.java | 146 + .../impl/LocalDomainAndResourcepartJid.java | 168 + src/org/jxmpp/jid/parts/Domainpart.java | 24 + src/org/jxmpp/jid/parts/Localpart.java | 21 + src/org/jxmpp/jid/parts/Part.java | 56 + src/org/jxmpp/jid/parts/Resourcepart.java | 23 + src/org/jxmpp/jid/util/JidUtil.java | 180 + .../jxmpp/stringprep/XmppStringPrepUtil.java | 74 + src/org/jxmpp/stringprep/XmppStringprep.java | 14 + .../stringprep/XmppStringprepException.java | 27 + .../simple/SimpleXmppStringprep.java | 60 + src/org/jxmpp/util/XmppDateTime.java | 274 ++ src/org/jxmpp/util/XmppStringUtils.java | 267 ++ src/org/jxmpp/util/cache/Cache.java | 14 + src/org/jxmpp/util/cache/ExpirationCache.java | 184 + src/org/jxmpp/util/cache/LruCache.java | 133 + src/org/xmlpull/mxp1/MXParser.java | 2408 ++++++++++ .../xmlpull/mxp1/MXParserCachingStrings.java | 241 + src/org/xmlpull/mxp1/MXParserFactory.java | 45 + .../xmlpull/mxp1/MXParserNonValidating.java | 206 + .../xmlpull/mxp1_serializer/MXSerializer.java | 884 ++++ src/org/xmlpull/v1/XmlPullParser.java | 103 + .../xmlpull/v1/XmlPullParserException.java | 54 + src/org/xmlpull/v1/XmlPullParserFactory.java | 187 + src/org/xmlpull/v1/XmlSerializer.java | 60 + src/org/xmlpull/v1/builder/Iterable.java | 10 + src/org/xmlpull/v1/builder/XmlAttribute.java | 26 + .../v1/builder/XmlBuilderException.java | 66 + src/org/xmlpull/v1/builder/XmlCharacters.java | 13 + src/org/xmlpull/v1/builder/XmlComment.java | 12 + src/org/xmlpull/v1/builder/XmlContained.java | 12 + src/org/xmlpull/v1/builder/XmlContainer.java | 7 + src/org/xmlpull/v1/builder/XmlDoctype.java | 24 + src/org/xmlpull/v1/builder/XmlDocument.java | 75 + src/org/xmlpull/v1/builder/XmlElement.java | 149 + .../xmlpull/v1/builder/XmlInfosetBuilder.java | 242 + src/org/xmlpull/v1/builder/XmlNamespace.java | 10 + src/org/xmlpull/v1/builder/XmlNotation.java | 14 + .../v1/builder/XmlProcessingInstruction.java | 19 + .../xmlpull/v1/builder/XmlSerializable.java | 11 + .../builder/XmlUnexpandedEntityReference.java | 18 + .../xmlpull/v1/builder/XmlUnparsedEntity.java | 20 + .../builder/adapter/XmlAttributeAdapter.java | 51 + .../builder/adapter/XmlDocumentAdapter.java | 150 + .../v1/builder/adapter/XmlElementAdapter.java | 406 ++ .../v1/builder/impl/XmlAttributeImpl.java | 104 + .../v1/builder/impl/XmlCommentImpl.java | 29 + .../v1/builder/impl/XmlDocumentImpl.java | 228 + .../v1/builder/impl/XmlElementImpl.java | 754 ++++ .../builder/impl/XmlInfosetBuilderImpl.java | 354 ++ .../v1/builder/impl/XmlNamespaceImpl.java | 57 + .../v1/dom2_builder/DOM2XmlPullBuilder.java | 164 + .../v1/parser_pool/XmlPullParserPool.java | 74 + src/org/xmlpull/v1/sax2/Driver.java | 379 ++ src/org/xmlpull/v1/util/XmlPullUtil.java | 142 + .../v1/wrapper/XmlPullParserWrapper.java | 46 + .../v1/wrapper/XmlPullWrapperFactory.java | 81 + .../v1/wrapper/XmlSerializerWrapper.java | 38 + .../classic/StaticXmlPullParserWrapper.java | 239 + .../classic/StaticXmlSerializerWrapper.java | 342 ++ .../classic/XmlPullParserDelegate.java | 167 + .../classic/XmlSerializerDelegate.java | 118 + src/org/yaml/snakeyaml/Dumper.java | 29 + src/org/yaml/snakeyaml/DumperOptions.java | 304 ++ src/org/yaml/snakeyaml/JavaBeanDumper.java | 94 + src/org/yaml/snakeyaml/JavaBeanLoader.java | 64 + src/org/yaml/snakeyaml/Loader.java | 21 + src/org/yaml/snakeyaml/LoaderOptions.java | 26 + src/org/yaml/snakeyaml/TypeDescription.java | 76 + src/org/yaml/snakeyaml/Yaml.java | 395 ++ src/org/yaml/snakeyaml/composer/Composer.java | 173 + .../snakeyaml/composer/ComposerException.java | 16 + .../constructor/AbstractConstruct.java | 18 + .../constructor/BaseConstructor.java | 333 ++ .../yaml/snakeyaml/constructor/Construct.java | 12 + .../snakeyaml/constructor/Constructor.java | 549 +++ .../constructor/ConstructorException.java | 20 + .../CustomClassLoaderConstructor.java | 31 + .../constructor/SafeConstructor.java | 457 ++ src/org/yaml/snakeyaml/emitter/Emitable.java | 11 + src/org/yaml/snakeyaml/emitter/Emitter.java | 1335 ++++++ .../snakeyaml/emitter/EmitterException.java | 15 + .../yaml/snakeyaml/emitter/EmitterState.java | 10 + .../snakeyaml/emitter/ScalarAnalysis.java | 24 + src/org/yaml/snakeyaml/error/Mark.java | 101 + .../snakeyaml/error/MarkedYAMLException.java | 83 + .../yaml/snakeyaml/error/YAMLException.java | 21 + src/org/yaml/snakeyaml/events/AliasEvent.java | 19 + .../snakeyaml/events/CollectionEndEvent.java | 14 + .../events/CollectionStartEvent.java | 37 + .../snakeyaml/events/DocumentEndEvent.java | 25 + .../snakeyaml/events/DocumentStartEvent.java | 43 + src/org/yaml/snakeyaml/events/Event.java | 62 + .../yaml/snakeyaml/events/ImplicitTuple.java | 30 + .../snakeyaml/events/MappingEndEvent.java | 19 + .../snakeyaml/events/MappingStartEvent.java | 19 + src/org/yaml/snakeyaml/events/NodeEvent.java | 25 + .../yaml/snakeyaml/events/ScalarEvent.java | 49 + .../snakeyaml/events/SequenceEndEvent.java | 19 + .../snakeyaml/events/SequenceStartEvent.java | 19 + .../yaml/snakeyaml/events/StreamEndEvent.java | 18 + .../snakeyaml/events/StreamStartEvent.java | 18 + .../compactnotation/CompactConstructor.java | 197 + .../compactnotation/CompactData.java | 38 + .../PackageCompactConstructor.java | 32 + .../external/biz/base64Coder/Base64Coder.java | 160 + .../gdata/util/common/base/Escaper.java | 10 + .../util/common/base/PercentEscaper.java | 128 + .../util/common/base/UnicodeEscaper.java | 195 + .../snakeyaml/introspector/BeanAccess.java | 14 + .../snakeyaml/introspector/FieldProperty.java | 32 + .../introspector/GenericProperty.java | 71 + .../introspector/MethodProperty.java | 44 + .../introspector/MissingProperty.java | 30 + .../yaml/snakeyaml/introspector/Property.java | 61 + .../snakeyaml/introspector/PropertyUtils.java | 138 + src/org/yaml/snakeyaml/nodes/AnchorNode.java | 25 + .../yaml/snakeyaml/nodes/CollectionNode.java | 30 + src/org/yaml/snakeyaml/nodes/MappingNode.java | 84 + src/org/yaml/snakeyaml/nodes/Node.java | 96 + src/org/yaml/snakeyaml/nodes/NodeId.java | 15 + src/org/yaml/snakeyaml/nodes/NodeTuple.java | 31 + src/org/yaml/snakeyaml/nodes/ScalarNode.java | 45 + .../yaml/snakeyaml/nodes/SequenceNode.java | 51 + src/org/yaml/snakeyaml/nodes/Tag.java | 146 + src/org/yaml/snakeyaml/parser/Parser.java | 14 + .../snakeyaml/parser/ParserException.java | 16 + src/org/yaml/snakeyaml/parser/ParserImpl.java | 657 +++ src/org/yaml/snakeyaml/parser/Production.java | 10 + .../snakeyaml/parser/VersionTagsTuple.java | 32 + .../snakeyaml/reader/ReaderException.java | 37 + .../yaml/snakeyaml/reader/StreamReader.java | 160 + .../yaml/snakeyaml/reader/UnicodeReader.java | 69 + .../representer/BaseRepresenter.java | 176 + .../yaml/snakeyaml/representer/Represent.java | 10 + .../snakeyaml/representer/Representer.java | 163 + .../representer/SafeRepresenter.java | 437 ++ src/org/yaml/snakeyaml/resolver/Resolver.java | 107 + .../snakeyaml/resolver/ResolverTuple.java | 29 + src/org/yaml/snakeyaml/scanner/Constant.java | 61 + src/org/yaml/snakeyaml/scanner/Scanner.java | 14 + .../snakeyaml/scanner/ScannerException.java | 20 + .../yaml/snakeyaml/scanner/ScannerImpl.java | 1234 ++++++ src/org/yaml/snakeyaml/scanner/SimpleKey.java | 52 + .../yaml/snakeyaml/serializer/Serializer.java | 202 + .../serializer/SerializerException.java | 15 + src/org/yaml/snakeyaml/tokens/AliasToken.java | 29 + .../yaml/snakeyaml/tokens/AnchorToken.java | 29 + .../yaml/snakeyaml/tokens/BlockEndToken.java | 18 + .../snakeyaml/tokens/BlockEntryToken.java | 18 + .../tokens/BlockMappingStartToken.java | 18 + .../tokens/BlockSequenceStartToken.java | 18 + .../yaml/snakeyaml/tokens/DirectiveToken.java | 48 + .../snakeyaml/tokens/DocumentEndToken.java | 18 + .../snakeyaml/tokens/DocumentStartToken.java | 18 + .../yaml/snakeyaml/tokens/FlowEntryToken.java | 18 + .../snakeyaml/tokens/FlowMappingEndToken.java | 18 + .../tokens/FlowMappingStartToken.java | 18 + .../tokens/FlowSequenceEndToken.java | 18 + .../tokens/FlowSequenceStartToken.java | 18 + src/org/yaml/snakeyaml/tokens/KeyToken.java | 18 + .../yaml/snakeyaml/tokens/ScalarToken.java | 45 + .../yaml/snakeyaml/tokens/StreamEndToken.java | 18 + .../snakeyaml/tokens/StreamStartToken.java | 18 + src/org/yaml/snakeyaml/tokens/TagToken.java | 30 + src/org/yaml/snakeyaml/tokens/TagTuple.java | 25 + src/org/yaml/snakeyaml/tokens/Token.java | 76 + src/org/yaml/snakeyaml/tokens/ValueToken.java | 18 + src/org/yaml/snakeyaml/util/ArrayStack.java | 33 + src/org/yaml/snakeyaml/util/UriEncoder.java | 40 + src/prismarine.png | Bin 0 -> 789 bytes 1987 files changed, 238867 insertions(+) create mode 100644 .gitignore create mode 100644 Readme.md create mode 100644 skaiacraft_v3.jar create mode 100644 src/Log4j-config.xsd create mode 100644 src/Log4j-events.dtd create mode 100644 src/Log4j-events.xsd create mode 100644 src/Log4j-levels.xsd create mode 100644 src/META-INF/MANIFEST.MF create mode 100644 src/Minecraft_Logo.png create mode 100644 src/cakehoohoohoo.png create mode 100644 src/com/evilco/mc/nbt/error/TagNotFoundException.java create mode 100644 src/com/evilco/mc/nbt/error/UnexpectedTagTypeException.java create mode 100644 src/com/evilco/mc/nbt/stream/NbtInputStream.java create mode 100644 src/com/evilco/mc/nbt/stream/NbtOutputStream.java create mode 100644 src/com/evilco/mc/nbt/tag/AbstractTag.java create mode 100644 src/com/evilco/mc/nbt/tag/IAnonymousTagContainer.java create mode 100644 src/com/evilco/mc/nbt/tag/INamedTagContainer.java create mode 100644 src/com/evilco/mc/nbt/tag/ITag.java create mode 100644 src/com/evilco/mc/nbt/tag/ITagContainer.java create mode 100644 src/com/evilco/mc/nbt/tag/TagByte.java create mode 100644 src/com/evilco/mc/nbt/tag/TagByteArray.java create mode 100644 src/com/evilco/mc/nbt/tag/TagCompound.java create mode 100644 src/com/evilco/mc/nbt/tag/TagDouble.java create mode 100644 src/com/evilco/mc/nbt/tag/TagFloat.java create mode 100644 src/com/evilco/mc/nbt/tag/TagInteger.java create mode 100644 src/com/evilco/mc/nbt/tag/TagIntegerArray.java create mode 100644 src/com/evilco/mc/nbt/tag/TagList.java create mode 100644 src/com/evilco/mc/nbt/tag/TagLong.java create mode 100644 src/com/evilco/mc/nbt/tag/TagShort.java create mode 100644 src/com/evilco/mc/nbt/tag/TagString.java create mode 100644 src/com/evilco/mc/nbt/tag/TagType.java create mode 100644 src/com/google/common/annotations/Beta.java create mode 100644 src/com/google/common/annotations/GwtCompatible.java create mode 100644 src/com/google/common/annotations/GwtIncompatible.java create mode 100644 src/com/google/common/annotations/VisibleForTesting.java create mode 100644 src/com/google/common/base/Absent.java create mode 100644 src/com/google/common/base/AbstractIterator.java create mode 100644 src/com/google/common/base/Ascii.java create mode 100644 src/com/google/common/base/CaseFormat.java create mode 100644 src/com/google/common/base/CharMatcher.java create mode 100644 src/com/google/common/base/Charsets.java create mode 100644 src/com/google/common/base/Converter.java create mode 100644 src/com/google/common/base/Defaults.java create mode 100644 src/com/google/common/base/Enums.java create mode 100644 src/com/google/common/base/Equivalence.java create mode 100644 src/com/google/common/base/FinalizablePhantomReference.java create mode 100644 src/com/google/common/base/FinalizableReference.java create mode 100644 src/com/google/common/base/FinalizableReferenceQueue.java create mode 100644 src/com/google/common/base/FinalizableSoftReference.java create mode 100644 src/com/google/common/base/FinalizableWeakReference.java create mode 100644 src/com/google/common/base/Function.java create mode 100644 src/com/google/common/base/FunctionalEquivalence.java create mode 100644 src/com/google/common/base/Functions.java create mode 100644 src/com/google/common/base/Joiner.java create mode 100644 src/com/google/common/base/MoreObjects.java create mode 100644 src/com/google/common/base/Objects.java create mode 100644 src/com/google/common/base/Optional.java create mode 100644 src/com/google/common/base/PairwiseEquivalence.java create mode 100644 src/com/google/common/base/Platform.java create mode 100644 src/com/google/common/base/Preconditions.java create mode 100644 src/com/google/common/base/Predicate.java create mode 100644 src/com/google/common/base/Predicates.java create mode 100644 src/com/google/common/base/Present.java create mode 100644 src/com/google/common/base/SmallCharMatcher.java create mode 100644 src/com/google/common/base/Splitter.java create mode 100644 src/com/google/common/base/StandardSystemProperty.java create mode 100644 src/com/google/common/base/Stopwatch.java create mode 100644 src/com/google/common/base/Strings.java create mode 100644 src/com/google/common/base/Supplier.java create mode 100644 src/com/google/common/base/Suppliers.java create mode 100644 src/com/google/common/base/Throwables.java create mode 100644 src/com/google/common/base/Ticker.java create mode 100644 src/com/google/common/base/Utf8.java create mode 100644 src/com/google/common/base/Verify.java create mode 100644 src/com/google/common/base/VerifyException.java create mode 100644 src/com/google/common/base/internal/Finalizer.java create mode 100644 src/com/google/common/base/package-info.java create mode 100644 src/com/google/common/cache/AbstractCache.java create mode 100644 src/com/google/common/cache/AbstractLoadingCache.java create mode 100644 src/com/google/common/cache/Cache.java create mode 100644 src/com/google/common/cache/CacheBuilder.java create mode 100644 src/com/google/common/cache/CacheBuilderSpec.java create mode 100644 src/com/google/common/cache/CacheLoader.java create mode 100644 src/com/google/common/cache/CacheStats.java create mode 100644 src/com/google/common/cache/ForwardingCache.java create mode 100644 src/com/google/common/cache/ForwardingLoadingCache.java create mode 100644 src/com/google/common/cache/LoadingCache.java create mode 100644 src/com/google/common/cache/LocalCache.java create mode 100644 src/com/google/common/cache/LongAddable.java create mode 100644 src/com/google/common/cache/LongAddables.java create mode 100644 src/com/google/common/cache/LongAdder.java create mode 100644 src/com/google/common/cache/RemovalCause.java create mode 100644 src/com/google/common/cache/RemovalListener.java create mode 100644 src/com/google/common/cache/RemovalListeners.java create mode 100644 src/com/google/common/cache/RemovalNotification.java create mode 100644 src/com/google/common/cache/Striped64.java create mode 100644 src/com/google/common/cache/Weigher.java create mode 100644 src/com/google/common/cache/package-info.java create mode 100644 src/com/google/common/collect/AbstractBiMap.java create mode 100644 src/com/google/common/collect/AbstractIndexedListIterator.java create mode 100644 src/com/google/common/collect/AbstractIterator.java create mode 100644 src/com/google/common/collect/AbstractListMultimap.java create mode 100644 src/com/google/common/collect/AbstractMapBasedMultimap.java create mode 100644 src/com/google/common/collect/AbstractMapBasedMultiset.java create mode 100644 src/com/google/common/collect/AbstractMapEntry.java create mode 100644 src/com/google/common/collect/AbstractMultimap.java create mode 100644 src/com/google/common/collect/AbstractMultiset.java create mode 100644 src/com/google/common/collect/AbstractNavigableMap.java create mode 100644 src/com/google/common/collect/AbstractRangeSet.java create mode 100644 src/com/google/common/collect/AbstractSequentialIterator.java create mode 100644 src/com/google/common/collect/AbstractSetMultimap.java create mode 100644 src/com/google/common/collect/AbstractSortedKeySortedSetMultimap.java create mode 100644 src/com/google/common/collect/AbstractSortedMultiset.java create mode 100644 src/com/google/common/collect/AbstractSortedSetMultimap.java create mode 100644 src/com/google/common/collect/AbstractTable.java create mode 100644 src/com/google/common/collect/AllEqualOrdering.java create mode 100644 src/com/google/common/collect/ArrayListMultimap.java create mode 100644 src/com/google/common/collect/ArrayTable.java create mode 100644 src/com/google/common/collect/BiMap.java create mode 100644 src/com/google/common/collect/BinaryTreeTraverser.java create mode 100644 src/com/google/common/collect/BoundType.java create mode 100644 src/com/google/common/collect/ByFunctionOrdering.java create mode 100644 src/com/google/common/collect/CartesianList.java create mode 100644 src/com/google/common/collect/ClassToInstanceMap.java create mode 100644 src/com/google/common/collect/CollectPreconditions.java create mode 100644 src/com/google/common/collect/Collections2.java create mode 100644 src/com/google/common/collect/ComparatorOrdering.java create mode 100644 src/com/google/common/collect/ComparisonChain.java create mode 100644 src/com/google/common/collect/CompoundOrdering.java create mode 100644 src/com/google/common/collect/ComputationException.java create mode 100644 src/com/google/common/collect/ComputingConcurrentHashMap.java create mode 100644 src/com/google/common/collect/ConcurrentHashMultiset.java create mode 100644 src/com/google/common/collect/Constraint.java create mode 100644 src/com/google/common/collect/Constraints.java create mode 100644 src/com/google/common/collect/ContiguousSet.java create mode 100644 src/com/google/common/collect/Count.java create mode 100644 src/com/google/common/collect/Cut.java create mode 100644 src/com/google/common/collect/DenseImmutableTable.java create mode 100644 src/com/google/common/collect/DescendingImmutableSortedMultiset.java create mode 100644 src/com/google/common/collect/DescendingImmutableSortedSet.java create mode 100644 src/com/google/common/collect/DescendingMultiset.java create mode 100644 src/com/google/common/collect/DiscreteDomain.java create mode 100644 src/com/google/common/collect/EmptyContiguousSet.java create mode 100644 src/com/google/common/collect/EmptyImmutableBiMap.java create mode 100644 src/com/google/common/collect/EmptyImmutableListMultimap.java create mode 100644 src/com/google/common/collect/EmptyImmutableSet.java create mode 100644 src/com/google/common/collect/EmptyImmutableSetMultimap.java create mode 100644 src/com/google/common/collect/EmptyImmutableSortedMap.java create mode 100644 src/com/google/common/collect/EmptyImmutableSortedMultiset.java create mode 100644 src/com/google/common/collect/EmptyImmutableSortedSet.java create mode 100644 src/com/google/common/collect/EnumBiMap.java create mode 100644 src/com/google/common/collect/EnumHashBiMap.java create mode 100644 src/com/google/common/collect/EnumMultiset.java create mode 100644 src/com/google/common/collect/EvictingQueue.java create mode 100644 src/com/google/common/collect/ExplicitOrdering.java create mode 100644 src/com/google/common/collect/FilteredEntryMultimap.java create mode 100644 src/com/google/common/collect/FilteredEntrySetMultimap.java create mode 100644 src/com/google/common/collect/FilteredKeyListMultimap.java create mode 100644 src/com/google/common/collect/FilteredKeyMultimap.java create mode 100644 src/com/google/common/collect/FilteredKeySetMultimap.java create mode 100644 src/com/google/common/collect/FilteredMultimap.java create mode 100644 src/com/google/common/collect/FilteredMultimapValues.java create mode 100644 src/com/google/common/collect/FilteredSetMultimap.java create mode 100644 src/com/google/common/collect/FluentIterable.java create mode 100644 src/com/google/common/collect/ForwardingBlockingDeque.java create mode 100644 src/com/google/common/collect/ForwardingCollection.java create mode 100644 src/com/google/common/collect/ForwardingConcurrentMap.java create mode 100644 src/com/google/common/collect/ForwardingDeque.java create mode 100644 src/com/google/common/collect/ForwardingImmutableCollection.java create mode 100644 src/com/google/common/collect/ForwardingImmutableList.java create mode 100644 src/com/google/common/collect/ForwardingImmutableMap.java create mode 100644 src/com/google/common/collect/ForwardingImmutableSet.java create mode 100644 src/com/google/common/collect/ForwardingIterator.java create mode 100644 src/com/google/common/collect/ForwardingList.java create mode 100644 src/com/google/common/collect/ForwardingListIterator.java create mode 100644 src/com/google/common/collect/ForwardingListMultimap.java create mode 100644 src/com/google/common/collect/ForwardingMap.java create mode 100644 src/com/google/common/collect/ForwardingMapEntry.java create mode 100644 src/com/google/common/collect/ForwardingMultimap.java create mode 100644 src/com/google/common/collect/ForwardingMultiset.java create mode 100644 src/com/google/common/collect/ForwardingNavigableMap.java create mode 100644 src/com/google/common/collect/ForwardingNavigableSet.java create mode 100644 src/com/google/common/collect/ForwardingObject.java create mode 100644 src/com/google/common/collect/ForwardingQueue.java create mode 100644 src/com/google/common/collect/ForwardingSet.java create mode 100644 src/com/google/common/collect/ForwardingSetMultimap.java create mode 100644 src/com/google/common/collect/ForwardingSortedMap.java create mode 100644 src/com/google/common/collect/ForwardingSortedMultiset.java create mode 100644 src/com/google/common/collect/ForwardingSortedSet.java create mode 100644 src/com/google/common/collect/ForwardingSortedSetMultimap.java create mode 100644 src/com/google/common/collect/ForwardingTable.java create mode 100644 src/com/google/common/collect/GeneralRange.java create mode 100644 src/com/google/common/collect/GenericMapMaker.java create mode 100644 src/com/google/common/collect/GwtTransient.java create mode 100644 src/com/google/common/collect/HashBasedTable.java create mode 100644 src/com/google/common/collect/HashBiMap.java create mode 100644 src/com/google/common/collect/HashMultimap.java create mode 100644 src/com/google/common/collect/HashMultiset.java create mode 100644 src/com/google/common/collect/Hashing.java create mode 100644 src/com/google/common/collect/ImmutableAsList.java create mode 100644 src/com/google/common/collect/ImmutableBiMap.java create mode 100644 src/com/google/common/collect/ImmutableClassToInstanceMap.java create mode 100644 src/com/google/common/collect/ImmutableCollection.java create mode 100644 src/com/google/common/collect/ImmutableEntry.java create mode 100644 src/com/google/common/collect/ImmutableEnumMap.java create mode 100644 src/com/google/common/collect/ImmutableEnumSet.java create mode 100644 src/com/google/common/collect/ImmutableList.java create mode 100644 src/com/google/common/collect/ImmutableListMultimap.java create mode 100644 src/com/google/common/collect/ImmutableMap.java create mode 100644 src/com/google/common/collect/ImmutableMapEntry.java create mode 100644 src/com/google/common/collect/ImmutableMapEntrySet.java create mode 100644 src/com/google/common/collect/ImmutableMapKeySet.java create mode 100644 src/com/google/common/collect/ImmutableMapValues.java create mode 100644 src/com/google/common/collect/ImmutableMultimap.java create mode 100644 src/com/google/common/collect/ImmutableMultiset.java create mode 100644 src/com/google/common/collect/ImmutableRangeMap.java create mode 100644 src/com/google/common/collect/ImmutableRangeSet.java create mode 100644 src/com/google/common/collect/ImmutableSet.java create mode 100644 src/com/google/common/collect/ImmutableSetMultimap.java create mode 100644 src/com/google/common/collect/ImmutableSortedAsList.java create mode 100644 src/com/google/common/collect/ImmutableSortedMap.java create mode 100644 src/com/google/common/collect/ImmutableSortedMapFauxverideShim.java create mode 100644 src/com/google/common/collect/ImmutableSortedMultiset.java create mode 100644 src/com/google/common/collect/ImmutableSortedMultisetFauxverideShim.java create mode 100644 src/com/google/common/collect/ImmutableSortedSet.java create mode 100644 src/com/google/common/collect/ImmutableSortedSetFauxverideShim.java create mode 100644 src/com/google/common/collect/ImmutableTable.java create mode 100644 src/com/google/common/collect/Interner.java create mode 100644 src/com/google/common/collect/Interners.java create mode 100644 src/com/google/common/collect/Iterables.java create mode 100644 src/com/google/common/collect/Iterators.java create mode 100644 src/com/google/common/collect/LexicographicalOrdering.java create mode 100644 src/com/google/common/collect/LinkedHashMultimap.java create mode 100644 src/com/google/common/collect/LinkedHashMultiset.java create mode 100644 src/com/google/common/collect/LinkedListMultimap.java create mode 100644 src/com/google/common/collect/ListMultimap.java create mode 100644 src/com/google/common/collect/Lists.java create mode 100644 src/com/google/common/collect/MapConstraint.java create mode 100644 src/com/google/common/collect/MapConstraints.java create mode 100644 src/com/google/common/collect/MapDifference.java create mode 100644 src/com/google/common/collect/MapMaker.java create mode 100644 src/com/google/common/collect/MapMakerInternalMap.java create mode 100644 src/com/google/common/collect/Maps.java create mode 100644 src/com/google/common/collect/MinMaxPriorityQueue.java create mode 100644 src/com/google/common/collect/Multimap.java create mode 100644 src/com/google/common/collect/MultimapBuilder.java create mode 100644 src/com/google/common/collect/Multimaps.java create mode 100644 src/com/google/common/collect/Multiset.java create mode 100644 src/com/google/common/collect/Multisets.java create mode 100644 src/com/google/common/collect/MutableClassToInstanceMap.java create mode 100644 src/com/google/common/collect/NaturalOrdering.java create mode 100644 src/com/google/common/collect/NullsFirstOrdering.java create mode 100644 src/com/google/common/collect/NullsLastOrdering.java create mode 100644 src/com/google/common/collect/ObjectArrays.java create mode 100644 src/com/google/common/collect/Ordering.java create mode 100644 src/com/google/common/collect/PeekingIterator.java create mode 100644 src/com/google/common/collect/Platform.java create mode 100644 src/com/google/common/collect/Queues.java create mode 100644 src/com/google/common/collect/Range.java create mode 100644 src/com/google/common/collect/RangeMap.java create mode 100644 src/com/google/common/collect/RangeSet.java create mode 100644 src/com/google/common/collect/RegularContiguousSet.java create mode 100644 src/com/google/common/collect/RegularImmutableAsList.java create mode 100644 src/com/google/common/collect/RegularImmutableBiMap.java create mode 100644 src/com/google/common/collect/RegularImmutableList.java create mode 100644 src/com/google/common/collect/RegularImmutableMap.java create mode 100644 src/com/google/common/collect/RegularImmutableMultiset.java create mode 100644 src/com/google/common/collect/RegularImmutableSet.java create mode 100644 src/com/google/common/collect/RegularImmutableSortedMap.java create mode 100644 src/com/google/common/collect/RegularImmutableSortedMultiset.java create mode 100644 src/com/google/common/collect/RegularImmutableSortedSet.java create mode 100644 src/com/google/common/collect/RegularImmutableTable.java create mode 100644 src/com/google/common/collect/ReverseNaturalOrdering.java create mode 100644 src/com/google/common/collect/ReverseOrdering.java create mode 100644 src/com/google/common/collect/RowSortedTable.java create mode 100644 src/com/google/common/collect/Serialization.java create mode 100644 src/com/google/common/collect/SetMultimap.java create mode 100644 src/com/google/common/collect/Sets.java create mode 100644 src/com/google/common/collect/SingletonImmutableBiMap.java create mode 100644 src/com/google/common/collect/SingletonImmutableList.java create mode 100644 src/com/google/common/collect/SingletonImmutableSet.java create mode 100644 src/com/google/common/collect/SingletonImmutableTable.java create mode 100644 src/com/google/common/collect/SortedIterable.java create mode 100644 src/com/google/common/collect/SortedIterables.java create mode 100644 src/com/google/common/collect/SortedLists.java create mode 100644 src/com/google/common/collect/SortedMapDifference.java create mode 100644 src/com/google/common/collect/SortedMultiset.java create mode 100644 src/com/google/common/collect/SortedMultisetBridge.java create mode 100644 src/com/google/common/collect/SortedMultisets.java create mode 100644 src/com/google/common/collect/SortedSetMultimap.java create mode 100644 src/com/google/common/collect/SparseImmutableTable.java create mode 100644 src/com/google/common/collect/StandardRowSortedTable.java create mode 100644 src/com/google/common/collect/StandardTable.java create mode 100644 src/com/google/common/collect/Synchronized.java create mode 100644 src/com/google/common/collect/Table.java create mode 100644 src/com/google/common/collect/Tables.java create mode 100644 src/com/google/common/collect/TransformedIterator.java create mode 100644 src/com/google/common/collect/TransformedListIterator.java create mode 100644 src/com/google/common/collect/TreeBasedTable.java create mode 100644 src/com/google/common/collect/TreeMultimap.java create mode 100644 src/com/google/common/collect/TreeMultiset.java create mode 100644 src/com/google/common/collect/TreeRangeMap.java create mode 100644 src/com/google/common/collect/TreeRangeSet.java create mode 100644 src/com/google/common/collect/TreeTraverser.java create mode 100644 src/com/google/common/collect/UnmodifiableIterator.java create mode 100644 src/com/google/common/collect/UnmodifiableListIterator.java create mode 100644 src/com/google/common/collect/UnmodifiableSortedMultiset.java create mode 100644 src/com/google/common/collect/UsingToStringOrdering.java create mode 100644 src/com/google/common/collect/WellBehavedMap.java create mode 100644 src/com/google/common/collect/package-info.java create mode 100644 src/com/google/common/escape/ArrayBasedCharEscaper.java create mode 100644 src/com/google/common/escape/ArrayBasedEscaperMap.java create mode 100644 src/com/google/common/escape/ArrayBasedUnicodeEscaper.java create mode 100644 src/com/google/common/escape/CharEscaper.java create mode 100644 src/com/google/common/escape/CharEscaperBuilder.java create mode 100644 src/com/google/common/escape/Escaper.java create mode 100644 src/com/google/common/escape/Escapers.java create mode 100644 src/com/google/common/escape/Platform.java create mode 100644 src/com/google/common/escape/UnicodeEscaper.java create mode 100644 src/com/google/common/escape/package-info.java create mode 100644 src/com/google/common/eventbus/AllowConcurrentEvents.java create mode 100644 src/com/google/common/eventbus/AnnotatedSubscriberFinder.java create mode 100644 src/com/google/common/eventbus/AsyncEventBus.java create mode 100644 src/com/google/common/eventbus/DeadEvent.java create mode 100644 src/com/google/common/eventbus/EventBus.java create mode 100644 src/com/google/common/eventbus/EventSubscriber.java create mode 100644 src/com/google/common/eventbus/Subscribe.java create mode 100644 src/com/google/common/eventbus/SubscriberExceptionContext.java create mode 100644 src/com/google/common/eventbus/SubscriberExceptionHandler.java create mode 100644 src/com/google/common/eventbus/SubscriberFindingStrategy.java create mode 100644 src/com/google/common/eventbus/SynchronizedEventSubscriber.java create mode 100644 src/com/google/common/hash/AbstractByteHasher.java create mode 100644 src/com/google/common/hash/AbstractCompositeHashFunction.java create mode 100644 src/com/google/common/hash/AbstractHasher.java create mode 100644 src/com/google/common/hash/AbstractNonStreamingHashFunction.java create mode 100644 src/com/google/common/hash/AbstractStreamingHashFunction.java create mode 100644 src/com/google/common/hash/BloomFilter.java create mode 100644 src/com/google/common/hash/BloomFilterStrategies.java create mode 100644 src/com/google/common/hash/ChecksumHashFunction.java create mode 100644 src/com/google/common/hash/Crc32cHashFunction.java create mode 100644 src/com/google/common/hash/Funnel.java create mode 100644 src/com/google/common/hash/Funnels.java create mode 100644 src/com/google/common/hash/HashCode.java create mode 100644 src/com/google/common/hash/HashFunction.java create mode 100644 src/com/google/common/hash/Hasher.java create mode 100644 src/com/google/common/hash/Hashing.java create mode 100644 src/com/google/common/hash/HashingInputStream.java create mode 100644 src/com/google/common/hash/HashingOutputStream.java create mode 100644 src/com/google/common/hash/MessageDigestHashFunction.java create mode 100644 src/com/google/common/hash/Murmur3_128HashFunction.java create mode 100644 src/com/google/common/hash/Murmur3_32HashFunction.java create mode 100644 src/com/google/common/hash/PrimitiveSink.java create mode 100644 src/com/google/common/hash/SipHashFunction.java create mode 100644 src/com/google/common/hash/package-info.java create mode 100644 src/com/google/common/html/HtmlEscapers.java create mode 100644 src/com/google/common/html/package-info.java create mode 100644 src/com/google/common/io/AppendableWriter.java create mode 100644 src/com/google/common/io/BaseEncoding.java create mode 100644 src/com/google/common/io/ByteArrayDataInput.java create mode 100644 src/com/google/common/io/ByteArrayDataOutput.java create mode 100644 src/com/google/common/io/ByteProcessor.java create mode 100644 src/com/google/common/io/ByteSink.java create mode 100644 src/com/google/common/io/ByteSource.java create mode 100644 src/com/google/common/io/ByteStreams.java create mode 100644 src/com/google/common/io/CharSequenceReader.java create mode 100644 src/com/google/common/io/CharSink.java create mode 100644 src/com/google/common/io/CharSource.java create mode 100644 src/com/google/common/io/CharStreams.java create mode 100644 src/com/google/common/io/Closeables.java create mode 100644 src/com/google/common/io/Closer.java create mode 100644 src/com/google/common/io/CountingInputStream.java create mode 100644 src/com/google/common/io/CountingOutputStream.java create mode 100644 src/com/google/common/io/FileBackedOutputStream.java create mode 100644 src/com/google/common/io/FileWriteMode.java create mode 100644 src/com/google/common/io/Files.java create mode 100644 src/com/google/common/io/Flushables.java create mode 100644 src/com/google/common/io/GwtWorkarounds.java create mode 100644 src/com/google/common/io/InputSupplier.java create mode 100644 src/com/google/common/io/LineBuffer.java create mode 100644 src/com/google/common/io/LineProcessor.java create mode 100644 src/com/google/common/io/LineReader.java create mode 100644 src/com/google/common/io/LittleEndianDataInputStream.java create mode 100644 src/com/google/common/io/LittleEndianDataOutputStream.java create mode 100644 src/com/google/common/io/MultiInputStream.java create mode 100644 src/com/google/common/io/MultiReader.java create mode 100644 src/com/google/common/io/OutputSupplier.java create mode 100644 src/com/google/common/io/PatternFilenameFilter.java create mode 100644 src/com/google/common/io/Resources.java create mode 100644 src/com/google/common/io/package-info.java create mode 100644 src/com/google/common/math/BigIntegerMath.java create mode 100644 src/com/google/common/math/DoubleMath.java create mode 100644 src/com/google/common/math/DoubleUtils.java create mode 100644 src/com/google/common/math/IntMath.java create mode 100644 src/com/google/common/math/LongMath.java create mode 100644 src/com/google/common/math/MathPreconditions.java create mode 100644 src/com/google/common/math/package-info.java create mode 100644 src/com/google/common/net/HostAndPort.java create mode 100644 src/com/google/common/net/HostSpecifier.java create mode 100644 src/com/google/common/net/HttpHeaders.java create mode 100644 src/com/google/common/net/InetAddresses.java create mode 100644 src/com/google/common/net/InternetDomainName.java create mode 100644 src/com/google/common/net/MediaType.java create mode 100644 src/com/google/common/net/PercentEscaper.java create mode 100644 src/com/google/common/net/UrlEscapers.java create mode 100644 src/com/google/common/net/package-info.java create mode 100644 src/com/google/common/primitives/Booleans.java create mode 100644 src/com/google/common/primitives/Bytes.java create mode 100644 src/com/google/common/primitives/Chars.java create mode 100644 src/com/google/common/primitives/Doubles.java create mode 100644 src/com/google/common/primitives/Floats.java create mode 100644 src/com/google/common/primitives/Ints.java create mode 100644 src/com/google/common/primitives/Longs.java create mode 100644 src/com/google/common/primitives/ParseRequest.java create mode 100644 src/com/google/common/primitives/Primitives.java create mode 100644 src/com/google/common/primitives/Shorts.java create mode 100644 src/com/google/common/primitives/SignedBytes.java create mode 100644 src/com/google/common/primitives/UnsignedBytes.java create mode 100644 src/com/google/common/primitives/UnsignedInteger.java create mode 100644 src/com/google/common/primitives/UnsignedInts.java create mode 100644 src/com/google/common/primitives/UnsignedLong.java create mode 100644 src/com/google/common/primitives/UnsignedLongs.java create mode 100644 src/com/google/common/primitives/package-info.java create mode 100644 src/com/google/common/reflect/AbstractInvocationHandler.java create mode 100644 src/com/google/common/reflect/ClassPath.java create mode 100644 src/com/google/common/reflect/Element.java create mode 100644 src/com/google/common/reflect/ImmutableTypeToInstanceMap.java create mode 100644 src/com/google/common/reflect/Invokable.java create mode 100644 src/com/google/common/reflect/MutableTypeToInstanceMap.java create mode 100644 src/com/google/common/reflect/Parameter.java create mode 100644 src/com/google/common/reflect/Reflection.java create mode 100644 src/com/google/common/reflect/TypeCapture.java create mode 100644 src/com/google/common/reflect/TypeParameter.java create mode 100644 src/com/google/common/reflect/TypeResolver.java create mode 100644 src/com/google/common/reflect/TypeToInstanceMap.java create mode 100644 src/com/google/common/reflect/TypeToken.java create mode 100644 src/com/google/common/reflect/TypeVisitor.java create mode 100644 src/com/google/common/reflect/Types.java create mode 100644 src/com/google/common/reflect/package-info.java create mode 100644 src/com/google/common/util/concurrent/AbstractCheckedFuture.java create mode 100644 src/com/google/common/util/concurrent/AbstractExecutionThreadService.java create mode 100644 src/com/google/common/util/concurrent/AbstractFuture.java create mode 100644 src/com/google/common/util/concurrent/AbstractIdleService.java create mode 100644 src/com/google/common/util/concurrent/AbstractListeningExecutorService.java create mode 100644 src/com/google/common/util/concurrent/AbstractScheduledService.java create mode 100644 src/com/google/common/util/concurrent/AbstractService.java create mode 100644 src/com/google/common/util/concurrent/AsyncFunction.java create mode 100644 src/com/google/common/util/concurrent/AsyncSettableFuture.java create mode 100644 src/com/google/common/util/concurrent/AtomicDouble.java create mode 100644 src/com/google/common/util/concurrent/AtomicDoubleArray.java create mode 100644 src/com/google/common/util/concurrent/AtomicLongMap.java create mode 100644 src/com/google/common/util/concurrent/Atomics.java create mode 100644 src/com/google/common/util/concurrent/Callables.java create mode 100644 src/com/google/common/util/concurrent/CheckedFuture.java create mode 100644 src/com/google/common/util/concurrent/CycleDetectingLockFactory.java create mode 100644 src/com/google/common/util/concurrent/ExecutionError.java create mode 100644 src/com/google/common/util/concurrent/ExecutionList.java create mode 100644 src/com/google/common/util/concurrent/FakeTimeLimiter.java create mode 100644 src/com/google/common/util/concurrent/ForwardingBlockingQueue.java create mode 100644 src/com/google/common/util/concurrent/ForwardingCheckedFuture.java create mode 100644 src/com/google/common/util/concurrent/ForwardingExecutorService.java create mode 100644 src/com/google/common/util/concurrent/ForwardingFuture.java create mode 100644 src/com/google/common/util/concurrent/ForwardingListenableFuture.java create mode 100644 src/com/google/common/util/concurrent/ForwardingListeningExecutorService.java create mode 100644 src/com/google/common/util/concurrent/FutureCallback.java create mode 100644 src/com/google/common/util/concurrent/FutureFallback.java create mode 100644 src/com/google/common/util/concurrent/Futures.java create mode 100644 src/com/google/common/util/concurrent/JdkFutureAdapters.java create mode 100644 src/com/google/common/util/concurrent/ListenableFuture.java create mode 100644 src/com/google/common/util/concurrent/ListenableFutureTask.java create mode 100644 src/com/google/common/util/concurrent/ListenableScheduledFuture.java create mode 100644 src/com/google/common/util/concurrent/ListenerCallQueue.java create mode 100644 src/com/google/common/util/concurrent/ListeningExecutorService.java create mode 100644 src/com/google/common/util/concurrent/ListeningScheduledExecutorService.java create mode 100644 src/com/google/common/util/concurrent/Monitor.java create mode 100644 src/com/google/common/util/concurrent/MoreExecutors.java create mode 100644 src/com/google/common/util/concurrent/RateLimiter.java create mode 100644 src/com/google/common/util/concurrent/Runnables.java create mode 100644 src/com/google/common/util/concurrent/SerializingExecutor.java create mode 100644 src/com/google/common/util/concurrent/Service.java create mode 100644 src/com/google/common/util/concurrent/ServiceManager.java create mode 100644 src/com/google/common/util/concurrent/SettableFuture.java create mode 100644 src/com/google/common/util/concurrent/SimpleTimeLimiter.java create mode 100644 src/com/google/common/util/concurrent/SmoothRateLimiter.java create mode 100644 src/com/google/common/util/concurrent/Striped.java create mode 100644 src/com/google/common/util/concurrent/ThreadFactoryBuilder.java create mode 100644 src/com/google/common/util/concurrent/TimeLimiter.java create mode 100644 src/com/google/common/util/concurrent/UncaughtExceptionHandlers.java create mode 100644 src/com/google/common/util/concurrent/UncheckedExecutionException.java create mode 100644 src/com/google/common/util/concurrent/UncheckedTimeoutException.java create mode 100644 src/com/google/common/util/concurrent/Uninterruptibles.java create mode 100644 src/com/google/common/util/concurrent/WrappingExecutorService.java create mode 100644 src/com/google/common/util/concurrent/WrappingScheduledExecutorService.java create mode 100644 src/com/google/common/util/concurrent/package-info.java create mode 100644 src/com/google/common/xml/XmlEscapers.java create mode 100644 src/com/google/common/xml/package-info.java create mode 100644 src/com/google/gson/DefaultDateTypeAdapter.java create mode 100644 src/com/google/gson/ExclusionStrategy.java create mode 100644 src/com/google/gson/FieldAttributes.java create mode 100644 src/com/google/gson/FieldNamingPolicy.java create mode 100644 src/com/google/gson/FieldNamingStrategy.java create mode 100644 src/com/google/gson/Gson.java create mode 100644 src/com/google/gson/GsonBuilder.java create mode 100644 src/com/google/gson/InstanceCreator.java create mode 100644 src/com/google/gson/JsonArray.java create mode 100644 src/com/google/gson/JsonDeserializationContext.java create mode 100644 src/com/google/gson/JsonDeserializer.java create mode 100644 src/com/google/gson/JsonElement.java create mode 100644 src/com/google/gson/JsonIOException.java create mode 100644 src/com/google/gson/JsonNull.java create mode 100644 src/com/google/gson/JsonObject.java create mode 100644 src/com/google/gson/JsonParseException.java create mode 100644 src/com/google/gson/JsonParser.java create mode 100644 src/com/google/gson/JsonPrimitive.java create mode 100644 src/com/google/gson/JsonSerializationContext.java create mode 100644 src/com/google/gson/JsonSerializer.java create mode 100644 src/com/google/gson/JsonStreamParser.java create mode 100644 src/com/google/gson/JsonSyntaxException.java create mode 100644 src/com/google/gson/LongSerializationPolicy.java create mode 100644 src/com/google/gson/TreeTypeAdapter.java create mode 100644 src/com/google/gson/TypeAdapter.java create mode 100644 src/com/google/gson/TypeAdapterFactory.java create mode 100644 src/com/google/gson/annotations/Expose.java create mode 100644 src/com/google/gson/annotations/SerializedName.java create mode 100644 src/com/google/gson/annotations/Since.java create mode 100644 src/com/google/gson/annotations/Until.java create mode 100644 src/com/google/gson/internal/ConstructorConstructor.java create mode 100644 src/com/google/gson/internal/Excluder.java create mode 100644 src/com/google/gson/internal/JsonReaderInternalAccess.java create mode 100644 src/com/google/gson/internal/LazilyParsedNumber.java create mode 100644 src/com/google/gson/internal/LinkedTreeMap.java create mode 100644 src/com/google/gson/internal/ObjectConstructor.java create mode 100644 src/com/google/gson/internal/Primitives.java create mode 100644 src/com/google/gson/internal/Streams.java create mode 100644 src/com/google/gson/internal/UnsafeAllocator.java create mode 100644 src/com/google/gson/internal/bind/ArrayTypeAdapter.java create mode 100644 src/com/google/gson/internal/bind/CollectionTypeAdapterFactory.java create mode 100644 src/com/google/gson/internal/bind/DateTypeAdapter.java create mode 100644 src/com/google/gson/internal/bind/JsonTreeReader.java create mode 100644 src/com/google/gson/internal/bind/JsonTreeWriter.java create mode 100644 src/com/google/gson/internal/bind/MapTypeAdapterFactory.java create mode 100644 src/com/google/gson/internal/bind/ObjectTypeAdapter.java create mode 100644 src/com/google/gson/internal/bind/ReflectiveTypeAdapterFactory.java create mode 100644 src/com/google/gson/internal/bind/SqlDateTypeAdapter.java create mode 100644 src/com/google/gson/internal/bind/TimeTypeAdapter.java create mode 100644 src/com/google/gson/internal/bind/TypeAdapterRuntimeTypeWrapper.java create mode 100644 src/com/google/gson/internal/bind/TypeAdapters.java create mode 100644 src/com/google/gson/reflect/TypeToken.java create mode 100644 src/com/google/gson/stream/JsonReader.java create mode 100644 src/com/google/gson/stream/JsonScope.java create mode 100644 src/com/google/gson/stream/JsonToken.java create mode 100644 src/com/google/gson/stream/JsonWriter.java create mode 100644 src/com/google/gson/stream/MalformedJsonException.java create mode 100644 src/com/google/thirdparty/publicsuffix/PublicSuffixPatterns.java create mode 100644 src/com/google/thirdparty/publicsuffix/PublicSuffixType.java create mode 100644 src/com/google/thirdparty/publicsuffix/TrieParser.java create mode 100644 src/com/mojang/UUIDTypeAdapter.java create mode 100644 src/com/mojang/authlib/Agent.java create mode 100644 src/com/mojang/authlib/AuthenticationService.java create mode 100644 src/com/mojang/authlib/BaseAuthenticationService.java create mode 100644 src/com/mojang/authlib/BaseUserAuthentication.java create mode 100644 src/com/mojang/authlib/GameProfile.java create mode 100644 src/com/mojang/authlib/GameProfileRepository.java create mode 100644 src/com/mojang/authlib/HttpAuthenticationService.java create mode 100644 src/com/mojang/authlib/HttpUserAuthentication.java create mode 100644 src/com/mojang/authlib/ProfileLookupCallback.java create mode 100644 src/com/mojang/authlib/UserAuthentication.java create mode 100644 src/com/mojang/authlib/UserType.java create mode 100644 src/com/mojang/authlib/exceptions/AuthenticationException.java create mode 100644 src/com/mojang/authlib/exceptions/AuthenticationUnavailableException.java create mode 100644 src/com/mojang/authlib/exceptions/InvalidCredentialsException.java create mode 100644 src/com/mojang/authlib/exceptions/UserMigratedException.java create mode 100644 src/com/mojang/authlib/legacy/LegacyAuthenticationService.java create mode 100644 src/com/mojang/authlib/legacy/LegacyMinecraftSessionService.java create mode 100644 src/com/mojang/authlib/legacy/LegacyUserAuthentication.java create mode 100644 src/com/mojang/authlib/minecraft/BaseMinecraftSessionService.java create mode 100644 src/com/mojang/authlib/minecraft/HttpMinecraftSessionService.java create mode 100644 src/com/mojang/authlib/minecraft/InsecureTextureException.java create mode 100644 src/com/mojang/authlib/minecraft/MinecraftProfileTexture.java create mode 100644 src/com/mojang/authlib/minecraft/MinecraftSessionService.java create mode 100644 src/com/mojang/authlib/properties/Property.java create mode 100644 src/com/mojang/authlib/properties/PropertyMap.java create mode 100644 src/com/mojang/authlib/yggdrasil/ProfileIncompleteException.java create mode 100644 src/com/mojang/authlib/yggdrasil/ProfileNotFoundException.java create mode 100644 src/com/mojang/authlib/yggdrasil/YggdrasilAuthenticationService.java create mode 100644 src/com/mojang/authlib/yggdrasil/YggdrasilGameProfileRepository.java create mode 100644 src/com/mojang/authlib/yggdrasil/YggdrasilMinecraftSessionService.java create mode 100644 src/com/mojang/authlib/yggdrasil/YggdrasilUserAuthentication.java create mode 100644 src/com/mojang/authlib/yggdrasil/request/AuthenticationRequest.java create mode 100644 src/com/mojang/authlib/yggdrasil/request/InvalidateRequest.java create mode 100644 src/com/mojang/authlib/yggdrasil/request/JoinMinecraftServerRequest.java create mode 100644 src/com/mojang/authlib/yggdrasil/request/RefreshRequest.java create mode 100644 src/com/mojang/authlib/yggdrasil/request/ValidateRequest.java create mode 100644 src/com/mojang/authlib/yggdrasil/response/AuthenticationResponse.java create mode 100644 src/com/mojang/authlib/yggdrasil/response/HasJoinedMinecraftServerResponse.java create mode 100644 src/com/mojang/authlib/yggdrasil/response/MinecraftProfilePropertiesResponse.java create mode 100644 src/com/mojang/authlib/yggdrasil/response/MinecraftTexturesPayload.java create mode 100644 src/com/mojang/authlib/yggdrasil/response/ProfileSearchResultsResponse.java create mode 100644 src/com/mojang/authlib/yggdrasil/response/RefreshResponse.java create mode 100644 src/com/mojang/authlib/yggdrasil/response/Response.java create mode 100644 src/com/mojang/authlib/yggdrasil/response/User.java create mode 100644 src/com/mojang/launcher/Http.java create mode 100644 src/com/mojang/launcher/Launcher.java create mode 100644 src/com/mojang/launcher/LegacyPropertyMapSerializer.java create mode 100644 src/com/mojang/launcher/OperatingSystem.java create mode 100644 src/com/mojang/launcher/SharedLauncherConstants.java create mode 100644 src/com/mojang/launcher/UserInterface.java create mode 100644 src/com/mojang/launcher/events/GameOutputLogProcessor.java create mode 100644 src/com/mojang/launcher/events/RefreshedVersionsListener.java create mode 100644 src/com/mojang/launcher/game/GameInstanceStatus.java create mode 100644 src/com/mojang/launcher/game/process/AbstractGameProcess.java create mode 100644 src/com/mojang/launcher/game/process/GameProcess.java create mode 100644 src/com/mojang/launcher/game/process/GameProcessBuilder.java create mode 100644 src/com/mojang/launcher/game/process/GameProcessFactory.java create mode 100644 src/com/mojang/launcher/game/process/GameProcessRunnable.java create mode 100644 src/com/mojang/launcher/game/process/direct/DirectGameProcess.java create mode 100644 src/com/mojang/launcher/game/process/direct/DirectGameProcessFactory.java create mode 100644 src/com/mojang/launcher/game/process/direct/DirectProcessInputMonitor.java create mode 100644 src/com/mojang/launcher/game/runner/AbstractGameRunner.java create mode 100644 src/com/mojang/launcher/game/runner/GameRunner.java create mode 100644 src/com/mojang/launcher/game/runner/GameRunnerListener.java create mode 100644 src/com/mojang/launcher/updater/DateTypeAdapter.java create mode 100644 src/com/mojang/launcher/updater/DownloadProgress.java create mode 100644 src/com/mojang/launcher/updater/ExceptionalThreadPoolExecutor.java create mode 100644 src/com/mojang/launcher/updater/FileTypeAdapter.java create mode 100644 src/com/mojang/launcher/updater/LowerCaseEnumTypeAdapterFactory.java create mode 100644 src/com/mojang/launcher/updater/VersionFilter.java create mode 100644 src/com/mojang/launcher/updater/VersionManager.java create mode 100644 src/com/mojang/launcher/updater/VersionSyncInfo.java create mode 100644 src/com/mojang/launcher/updater/download/ChecksummedDownloadable.java create mode 100644 src/com/mojang/launcher/updater/download/DownloadJob.java create mode 100644 src/com/mojang/launcher/updater/download/DownloadListener.java create mode 100644 src/com/mojang/launcher/updater/download/Downloadable.java create mode 100644 src/com/mojang/launcher/updater/download/EtagDownloadable.java create mode 100644 src/com/mojang/launcher/updater/download/MonitoringInputStream.java create mode 100644 src/com/mojang/launcher/updater/download/ProgressContainer.java create mode 100644 src/com/mojang/launcher/updater/download/assets/AssetDownloadable.java create mode 100644 src/com/mojang/launcher/updater/download/assets/AssetIndex.java create mode 100644 src/com/mojang/launcher/versions/CompatibilityRule.java create mode 100644 src/com/mojang/launcher/versions/CompleteVersion.java create mode 100644 src/com/mojang/launcher/versions/ExtractRules.java create mode 100644 src/com/mojang/launcher/versions/ReleaseType.java create mode 100644 src/com/mojang/launcher/versions/ReleaseTypeAdapterFactory.java create mode 100644 src/com/mojang/launcher/versions/ReleaseTypeFactory.java create mode 100644 src/com/mojang/launcher/versions/Version.java create mode 100644 src/com/mojang/util/QueueLogAppender.java create mode 100644 src/com/mojang/util/UUIDTypeAdapter.java create mode 100644 src/dirt.png create mode 100644 src/favicon.png create mode 100644 src/javax/annotation/CheckForNull.java create mode 100644 src/javax/annotation/CheckForSigned.java create mode 100644 src/javax/annotation/CheckReturnValue.java create mode 100644 src/javax/annotation/Detainted.java create mode 100644 src/javax/annotation/MatchesPattern.java create mode 100644 src/javax/annotation/Nonnegative.java create mode 100644 src/javax/annotation/Nonnull.java create mode 100644 src/javax/annotation/Nullable.java create mode 100644 src/javax/annotation/OverridingMethodsMustInvokeSuper.java create mode 100644 src/javax/annotation/ParametersAreNonnullByDefault.java create mode 100644 src/javax/annotation/ParametersAreNullableByDefault.java create mode 100644 src/javax/annotation/PropertyKey.java create mode 100644 src/javax/annotation/RegEx.java create mode 100644 src/javax/annotation/Signed.java create mode 100644 src/javax/annotation/Syntax.java create mode 100644 src/javax/annotation/Tainted.java create mode 100644 src/javax/annotation/Untainted.java create mode 100644 src/javax/annotation/WillClose.java create mode 100644 src/javax/annotation/WillCloseWhenClosed.java create mode 100644 src/javax/annotation/WillNotClose.java create mode 100644 src/javax/annotation/concurrent/GuardedBy.java create mode 100644 src/javax/annotation/concurrent/Immutable.java create mode 100644 src/javax/annotation/concurrent/NotThreadSafe.java create mode 100644 src/javax/annotation/concurrent/ThreadSafe.java create mode 100644 src/javax/annotation/meta/Exclusive.java create mode 100644 src/javax/annotation/meta/Exhaustive.java create mode 100644 src/javax/annotation/meta/TypeQualifier.java create mode 100644 src/javax/annotation/meta/TypeQualifierDefault.java create mode 100644 src/javax/annotation/meta/TypeQualifierNickname.java create mode 100644 src/javax/annotation/meta/TypeQualifierValidator.java create mode 100644 src/javax/annotation/meta/When.java create mode 100644 src/javax/xml/namespace/QName.java create mode 100644 src/joptsimple/AbstractOptionSpec.java create mode 100644 src/joptsimple/AlternativeLongOptionSpec.java create mode 100644 src/joptsimple/ArgumentAcceptingOptionSpec.java create mode 100644 src/joptsimple/ArgumentList.java create mode 100644 src/joptsimple/BuiltinHelpFormatter.java create mode 100644 src/joptsimple/HelpFormatter.java create mode 100644 src/joptsimple/IllegalOptionSpecificationException.java create mode 100644 src/joptsimple/MissingRequiredOptionException.java create mode 100644 src/joptsimple/MultipleArgumentsForOptionException.java create mode 100644 src/joptsimple/NoArgumentOptionSpec.java create mode 100644 src/joptsimple/NonOptionArgumentSpec.java create mode 100644 src/joptsimple/OptionArgumentConversionException.java create mode 100644 src/joptsimple/OptionDescriptor.java create mode 100644 src/joptsimple/OptionException.java create mode 100644 src/joptsimple/OptionMissingRequiredArgumentException.java create mode 100644 src/joptsimple/OptionParser.java create mode 100644 src/joptsimple/OptionParserState.java create mode 100644 src/joptsimple/OptionSet.java create mode 100644 src/joptsimple/OptionSpec.java create mode 100644 src/joptsimple/OptionSpecBuilder.java create mode 100644 src/joptsimple/OptionSpecTokenizer.java create mode 100644 src/joptsimple/OptionalArgumentOptionSpec.java create mode 100644 src/joptsimple/ParserRules.java create mode 100644 src/joptsimple/RequiredArgumentOptionSpec.java create mode 100644 src/joptsimple/UnacceptableNumberOfNonOptionsException.java create mode 100644 src/joptsimple/UnconfiguredOptionException.java create mode 100644 src/joptsimple/UnrecognizedOptionException.java create mode 100644 src/joptsimple/ValueConversionException.java create mode 100644 src/joptsimple/ValueConverter.java create mode 100644 src/joptsimple/internal/AbbreviationMap.java create mode 100644 src/joptsimple/internal/Classes.java create mode 100644 src/joptsimple/internal/Columns.java create mode 100644 src/joptsimple/internal/ConstructorInvokingValueConverter.java create mode 100644 src/joptsimple/internal/MethodInvokingValueConverter.java create mode 100644 src/joptsimple/internal/Objects.java create mode 100644 src/joptsimple/internal/Reflection.java create mode 100644 src/joptsimple/internal/ReflectionException.java create mode 100644 src/joptsimple/internal/Row.java create mode 100644 src/joptsimple/internal/Rows.java create mode 100644 src/joptsimple/internal/Strings.java create mode 100644 src/joptsimple/util/DateConverter.java create mode 100644 src/joptsimple/util/InetAddressConverter.java create mode 100644 src/joptsimple/util/KeyValuePair.java create mode 100644 src/joptsimple/util/RegexMatcher.java create mode 100644 src/langs/cs.yml create mode 100644 src/langs/de.yml create mode 100644 src/langs/ea.yml create mode 100644 src/langs/en.yml create mode 100644 src/langs/es.yml create mode 100644 src/langs/et.yml create mode 100644 src/langs/fi.yml create mode 100644 src/langs/fr.yml create mode 100644 src/langs/hr.yml create mode 100644 src/langs/hu.yml create mode 100644 src/langs/it.yml create mode 100644 src/langs/pl.yml create mode 100644 src/langs/pt.yml create mode 100644 src/langs/ru.yml create mode 100644 src/langs/tl.yml create mode 100644 src/langs/tr.yml create mode 100644 src/langs/vi.yml create mode 100644 src/launcher_properties.json create mode 100644 src/log4j2.xml create mode 100644 src/net/mc/main/DarkTheme.java create mode 100644 src/net/mc/main/InstallDirSettings.java create mode 100644 src/net/mc/main/Main.java create mode 100644 src/net/mc/main/Util.java create mode 100644 src/net/miginfocom/layout/AC.java create mode 100644 src/net/miginfocom/layout/BoundSize.java create mode 100644 src/net/miginfocom/layout/CC.java create mode 100644 src/net/miginfocom/layout/ComponentWrapper.java create mode 100644 src/net/miginfocom/layout/ConstraintParser.java create mode 100644 src/net/miginfocom/layout/ContainerWrapper.java create mode 100644 src/net/miginfocom/layout/DimConstraint.java create mode 100644 src/net/miginfocom/layout/Grid.java create mode 100644 src/net/miginfocom/layout/InCellGapProvider.java create mode 100644 src/net/miginfocom/layout/LC.java create mode 100644 src/net/miginfocom/layout/LayoutCallback.java create mode 100644 src/net/miginfocom/layout/LayoutUtil.java create mode 100644 src/net/miginfocom/layout/LinkHandler.java create mode 100644 src/net/miginfocom/layout/PlatformDefaults.java create mode 100644 src/net/miginfocom/layout/ResizeConstraint.java create mode 100644 src/net/miginfocom/layout/UnitConverter.java create mode 100644 src/net/miginfocom/layout/UnitValue.java create mode 100644 src/net/miginfocom/swing/MigLayout.java create mode 100644 src/net/miginfocom/swing/SwingComponentWrapper.java create mode 100644 src/net/miginfocom/swing/SwingContainerWrapper.java create mode 100644 src/net/minecraft/launcher/CompatibilityRule.java create mode 100644 src/net/minecraft/launcher/CurrentLaunchFeatureMatcher.java create mode 100644 src/net/minecraft/launcher/Language.java create mode 100644 src/net/minecraft/launcher/Launcher.java create mode 100644 src/net/minecraft/launcher/LauncherConstants.java create mode 100644 src/net/minecraft/launcher/MinecraftUserInterface.java create mode 100644 src/net/minecraft/launcher/NetLauncherMain.java create mode 100644 src/net/minecraft/launcher/OptionsManager.java create mode 100644 src/net/minecraft/launcher/PackageEditor.java create mode 100644 src/net/minecraft/launcher/ServerManager.java create mode 100644 src/net/minecraft/launcher/StorageManager.java create mode 100644 src/net/minecraft/launcher/SwingUserInterface.java create mode 100644 src/net/minecraft/launcher/game/GameLaunchDispatcher.java create mode 100644 src/net/minecraft/launcher/game/MinecraftGameRunner.java create mode 100644 src/net/minecraft/launcher/game/MinecraftReleaseType.java create mode 100644 src/net/minecraft/launcher/game/MinecraftReleaseTypeFactory.java create mode 100644 src/net/minecraft/launcher/game/SkaiaNet.java create mode 100644 src/net/minecraft/launcher/profile/AuthenticationDatabase.java create mode 100644 src/net/minecraft/launcher/profile/LauncherVisibilityRule.java create mode 100644 src/net/minecraft/launcher/profile/Profile.java create mode 100644 src/net/minecraft/launcher/profile/ProfileManager.java create mode 100644 src/net/minecraft/launcher/profile/RefreshedProfilesListener.java create mode 100644 src/net/minecraft/launcher/profile/UserChangedListener.java create mode 100644 src/net/minecraft/launcher/ui/BottomBarPanel.java create mode 100644 src/net/minecraft/launcher/ui/LauncherPanel.java create mode 100644 src/net/minecraft/launcher/ui/TexturedPanel.java create mode 100644 src/net/minecraft/launcher/ui/bottombar/PlayButtonPanel.java create mode 100644 src/net/minecraft/launcher/ui/bottombar/PlayerInfoPanel.java create mode 100644 src/net/minecraft/launcher/ui/bottombar/ProfileSelectionPanel.java create mode 100644 src/net/minecraft/launcher/ui/bottombar/SidebarGridForm.java create mode 100644 src/net/minecraft/launcher/ui/bottombar/StatusPanelForm.java create mode 100644 src/net/minecraft/launcher/ui/popups/login/AuthErrorForm.java create mode 100644 src/net/minecraft/launcher/ui/popups/login/ComboItem.java create mode 100644 src/net/minecraft/launcher/ui/popups/login/ExistingUserListForm.java create mode 100644 src/net/minecraft/launcher/ui/popups/login/LogInForm.java create mode 100644 src/net/minecraft/launcher/ui/popups/login/LogInPopup.java create mode 100644 src/net/minecraft/launcher/ui/popups/profile/ProfileEditorPopup.java create mode 100644 src/net/minecraft/launcher/ui/popups/profile/ProfileInfoPanel.java create mode 100644 src/net/minecraft/launcher/ui/popups/profile/ProfileJavaPanel.java create mode 100644 src/net/minecraft/launcher/ui/popups/profile/ProfileVersionPanel.java create mode 100644 src/net/minecraft/launcher/ui/tabs/ConsoleTab.java create mode 100644 src/net/minecraft/launcher/ui/tabs/GameOutputTab.java create mode 100644 src/net/minecraft/launcher/ui/tabs/LauncherTabPanel.java create mode 100644 src/net/minecraft/launcher/ui/tabs/ProfileListTab.java create mode 100644 src/net/minecraft/launcher/ui/tabs/ServerListTab.java create mode 100644 src/net/minecraft/launcher/ui/tabs/WebsiteTab.java create mode 100644 src/net/minecraft/launcher/ui/tabs/website/Browser.java create mode 100644 src/net/minecraft/launcher/ui/tabs/website/JFXBrowser.java create mode 100644 src/net/minecraft/launcher/ui/tabs/website/LegacySwingBrowser.java create mode 100644 src/net/minecraft/launcher/updater/Argument.java create mode 100644 src/net/minecraft/launcher/updater/ArgumentType.java create mode 100644 src/net/minecraft/launcher/updater/AssetIndexInfo.java create mode 100644 src/net/minecraft/launcher/updater/CompleteMinecraftVersion.java create mode 100644 src/net/minecraft/launcher/updater/DownloadInfo.java create mode 100644 src/net/minecraft/launcher/updater/DownloadType.java create mode 100644 src/net/minecraft/launcher/updater/FileBasedVersionList.java create mode 100644 src/net/minecraft/launcher/updater/Library.java create mode 100644 src/net/minecraft/launcher/updater/LibraryDownloadInfo.java create mode 100644 src/net/minecraft/launcher/updater/LocalVersionList.java create mode 100644 src/net/minecraft/launcher/updater/MinecraftVersionManager.java create mode 100644 src/net/minecraft/launcher/updater/PartialVersion.java create mode 100644 src/net/minecraft/launcher/updater/PreHashedDownloadable.java create mode 100644 src/net/minecraft/launcher/updater/RemoteVersionList.java create mode 100644 src/net/minecraft/launcher/updater/VersionList.java create mode 100644 src/org.jivesoftware.smack/jul.properties create mode 100644 src/org.jivesoftware.smack/smack-config.xml create mode 100644 src/org.jivesoftware.smack/version create mode 100644 src/org/apache/commons/codec/BinaryDecoder.java create mode 100644 src/org/apache/commons/codec/BinaryEncoder.java create mode 100644 src/org/apache/commons/codec/CharEncoding.java create mode 100644 src/org/apache/commons/codec/Charsets.java create mode 100644 src/org/apache/commons/codec/Decoder.java create mode 100644 src/org/apache/commons/codec/DecoderException.java create mode 100644 src/org/apache/commons/codec/Encoder.java create mode 100644 src/org/apache/commons/codec/EncoderException.java create mode 100644 src/org/apache/commons/codec/StringDecoder.java create mode 100644 src/org/apache/commons/codec/StringEncoder.java create mode 100644 src/org/apache/commons/codec/StringEncoderComparator.java create mode 100644 src/org/apache/commons/codec/binary/Base32.java create mode 100644 src/org/apache/commons/codec/binary/Base32InputStream.java create mode 100644 src/org/apache/commons/codec/binary/Base32OutputStream.java create mode 100644 src/org/apache/commons/codec/binary/Base64.java create mode 100644 src/org/apache/commons/codec/binary/Base64InputStream.java create mode 100644 src/org/apache/commons/codec/binary/Base64OutputStream.java create mode 100644 src/org/apache/commons/codec/binary/BaseNCodec.java create mode 100644 src/org/apache/commons/codec/binary/BaseNCodecInputStream.java create mode 100644 src/org/apache/commons/codec/binary/BaseNCodecOutputStream.java create mode 100644 src/org/apache/commons/codec/binary/BinaryCodec.java create mode 100644 src/org/apache/commons/codec/binary/CharSequenceUtils.java create mode 100644 src/org/apache/commons/codec/binary/Hex.java create mode 100644 src/org/apache/commons/codec/binary/StringUtils.java create mode 100644 src/org/apache/commons/codec/digest/B64.java create mode 100644 src/org/apache/commons/codec/digest/Crypt.java create mode 100644 src/org/apache/commons/codec/digest/DigestUtils.java create mode 100644 src/org/apache/commons/codec/digest/HmacAlgorithms.java create mode 100644 src/org/apache/commons/codec/digest/HmacUtils.java create mode 100644 src/org/apache/commons/codec/digest/Md5Crypt.java create mode 100644 src/org/apache/commons/codec/digest/MessageDigestAlgorithms.java create mode 100644 src/org/apache/commons/codec/digest/Sha2Crypt.java create mode 100644 src/org/apache/commons/codec/digest/UnixCrypt.java create mode 100644 src/org/apache/commons/codec/language/AbstractCaverphone.java create mode 100644 src/org/apache/commons/codec/language/Caverphone.java create mode 100644 src/org/apache/commons/codec/language/Caverphone1.java create mode 100644 src/org/apache/commons/codec/language/Caverphone2.java create mode 100644 src/org/apache/commons/codec/language/ColognePhonetic.java create mode 100644 src/org/apache/commons/codec/language/DaitchMokotoffSoundex.java create mode 100644 src/org/apache/commons/codec/language/DoubleMetaphone.java create mode 100644 src/org/apache/commons/codec/language/MatchRatingApproachEncoder.java create mode 100644 src/org/apache/commons/codec/language/Metaphone.java create mode 100644 src/org/apache/commons/codec/language/Nysiis.java create mode 100644 src/org/apache/commons/codec/language/RefinedSoundex.java create mode 100644 src/org/apache/commons/codec/language/Soundex.java create mode 100644 src/org/apache/commons/codec/language/SoundexUtils.java create mode 100644 src/org/apache/commons/codec/language/bm/BeiderMorseEncoder.java create mode 100644 src/org/apache/commons/codec/language/bm/Lang.java create mode 100644 src/org/apache/commons/codec/language/bm/Languages.java create mode 100644 src/org/apache/commons/codec/language/bm/NameType.java create mode 100644 src/org/apache/commons/codec/language/bm/PhoneticEngine.java create mode 100644 src/org/apache/commons/codec/language/bm/ResourceConstants.java create mode 100644 src/org/apache/commons/codec/language/bm/Rule.java create mode 100644 src/org/apache/commons/codec/language/bm/RuleType.java create mode 100644 src/org/apache/commons/codec/language/bm/ash_approx_any.txt create mode 100644 src/org/apache/commons/codec/language/bm/ash_approx_common.txt create mode 100644 src/org/apache/commons/codec/language/bm/ash_approx_cyrillic.txt create mode 100644 src/org/apache/commons/codec/language/bm/ash_approx_english.txt create mode 100644 src/org/apache/commons/codec/language/bm/ash_approx_french.txt create mode 100644 src/org/apache/commons/codec/language/bm/ash_approx_german.txt create mode 100644 src/org/apache/commons/codec/language/bm/ash_approx_hebrew.txt create mode 100644 src/org/apache/commons/codec/language/bm/ash_approx_hungarian.txt create mode 100644 src/org/apache/commons/codec/language/bm/ash_approx_polish.txt create mode 100644 src/org/apache/commons/codec/language/bm/ash_approx_romanian.txt create mode 100644 src/org/apache/commons/codec/language/bm/ash_approx_russian.txt create mode 100644 src/org/apache/commons/codec/language/bm/ash_approx_spanish.txt create mode 100644 src/org/apache/commons/codec/language/bm/ash_exact_any.txt create mode 100644 src/org/apache/commons/codec/language/bm/ash_exact_approx_common.txt create mode 100644 src/org/apache/commons/codec/language/bm/ash_exact_common.txt create mode 100644 src/org/apache/commons/codec/language/bm/ash_exact_cyrillic.txt create mode 100644 src/org/apache/commons/codec/language/bm/ash_exact_english.txt create mode 100644 src/org/apache/commons/codec/language/bm/ash_exact_french.txt create mode 100644 src/org/apache/commons/codec/language/bm/ash_exact_german.txt create mode 100644 src/org/apache/commons/codec/language/bm/ash_exact_hebrew.txt create mode 100644 src/org/apache/commons/codec/language/bm/ash_exact_hungarian.txt create mode 100644 src/org/apache/commons/codec/language/bm/ash_exact_polish.txt create mode 100644 src/org/apache/commons/codec/language/bm/ash_exact_romanian.txt create mode 100644 src/org/apache/commons/codec/language/bm/ash_exact_russian.txt create mode 100644 src/org/apache/commons/codec/language/bm/ash_exact_spanish.txt create mode 100644 src/org/apache/commons/codec/language/bm/ash_hebrew_common.txt create mode 100644 src/org/apache/commons/codec/language/bm/ash_lang.txt create mode 100644 src/org/apache/commons/codec/language/bm/ash_languages.txt create mode 100644 src/org/apache/commons/codec/language/bm/ash_rules_any.txt create mode 100644 src/org/apache/commons/codec/language/bm/ash_rules_cyrillic.txt create mode 100644 src/org/apache/commons/codec/language/bm/ash_rules_english.txt create mode 100644 src/org/apache/commons/codec/language/bm/ash_rules_french.txt create mode 100644 src/org/apache/commons/codec/language/bm/ash_rules_german.txt create mode 100644 src/org/apache/commons/codec/language/bm/ash_rules_hebrew.txt create mode 100644 src/org/apache/commons/codec/language/bm/ash_rules_hungarian.txt create mode 100644 src/org/apache/commons/codec/language/bm/ash_rules_polish.txt create mode 100644 src/org/apache/commons/codec/language/bm/ash_rules_romanian.txt create mode 100644 src/org/apache/commons/codec/language/bm/ash_rules_russian.txt create mode 100644 src/org/apache/commons/codec/language/bm/ash_rules_spanish.txt create mode 100644 src/org/apache/commons/codec/language/bm/gen_approx_any.txt create mode 100644 src/org/apache/commons/codec/language/bm/gen_approx_arabic.txt create mode 100644 src/org/apache/commons/codec/language/bm/gen_approx_common.txt create mode 100644 src/org/apache/commons/codec/language/bm/gen_approx_cyrillic.txt create mode 100644 src/org/apache/commons/codec/language/bm/gen_approx_czech.txt create mode 100644 src/org/apache/commons/codec/language/bm/gen_approx_dutch.txt create mode 100644 src/org/apache/commons/codec/language/bm/gen_approx_english.txt create mode 100644 src/org/apache/commons/codec/language/bm/gen_approx_french.txt create mode 100644 src/org/apache/commons/codec/language/bm/gen_approx_german.txt create mode 100644 src/org/apache/commons/codec/language/bm/gen_approx_greek.txt create mode 100644 src/org/apache/commons/codec/language/bm/gen_approx_greeklatin.txt create mode 100644 src/org/apache/commons/codec/language/bm/gen_approx_hebrew.txt create mode 100644 src/org/apache/commons/codec/language/bm/gen_approx_hungarian.txt create mode 100644 src/org/apache/commons/codec/language/bm/gen_approx_italian.txt create mode 100644 src/org/apache/commons/codec/language/bm/gen_approx_polish.txt create mode 100644 src/org/apache/commons/codec/language/bm/gen_approx_portuguese.txt create mode 100644 src/org/apache/commons/codec/language/bm/gen_approx_romanian.txt create mode 100644 src/org/apache/commons/codec/language/bm/gen_approx_russian.txt create mode 100644 src/org/apache/commons/codec/language/bm/gen_approx_spanish.txt create mode 100644 src/org/apache/commons/codec/language/bm/gen_approx_turkish.txt create mode 100644 src/org/apache/commons/codec/language/bm/gen_exact_any.txt create mode 100644 src/org/apache/commons/codec/language/bm/gen_exact_approx_common.txt create mode 100644 src/org/apache/commons/codec/language/bm/gen_exact_arabic.txt create mode 100644 src/org/apache/commons/codec/language/bm/gen_exact_common.txt create mode 100644 src/org/apache/commons/codec/language/bm/gen_exact_cyrillic.txt create mode 100644 src/org/apache/commons/codec/language/bm/gen_exact_czech.txt create mode 100644 src/org/apache/commons/codec/language/bm/gen_exact_dutch.txt create mode 100644 src/org/apache/commons/codec/language/bm/gen_exact_english.txt create mode 100644 src/org/apache/commons/codec/language/bm/gen_exact_french.txt create mode 100644 src/org/apache/commons/codec/language/bm/gen_exact_german.txt create mode 100644 src/org/apache/commons/codec/language/bm/gen_exact_greek.txt create mode 100644 src/org/apache/commons/codec/language/bm/gen_exact_greeklatin.txt create mode 100644 src/org/apache/commons/codec/language/bm/gen_exact_hebrew.txt create mode 100644 src/org/apache/commons/codec/language/bm/gen_exact_hungarian.txt create mode 100644 src/org/apache/commons/codec/language/bm/gen_exact_italian.txt create mode 100644 src/org/apache/commons/codec/language/bm/gen_exact_polish.txt create mode 100644 src/org/apache/commons/codec/language/bm/gen_exact_portuguese.txt create mode 100644 src/org/apache/commons/codec/language/bm/gen_exact_romanian.txt create mode 100644 src/org/apache/commons/codec/language/bm/gen_exact_russian.txt create mode 100644 src/org/apache/commons/codec/language/bm/gen_exact_spanish.txt create mode 100644 src/org/apache/commons/codec/language/bm/gen_exact_turkish.txt create mode 100644 src/org/apache/commons/codec/language/bm/gen_hebrew_common.txt create mode 100644 src/org/apache/commons/codec/language/bm/gen_lang.txt create mode 100644 src/org/apache/commons/codec/language/bm/gen_languages.txt create mode 100644 src/org/apache/commons/codec/language/bm/gen_rules_any.txt create mode 100644 src/org/apache/commons/codec/language/bm/gen_rules_arabic.txt create mode 100644 src/org/apache/commons/codec/language/bm/gen_rules_cyrillic.txt create mode 100644 src/org/apache/commons/codec/language/bm/gen_rules_czech.txt create mode 100644 src/org/apache/commons/codec/language/bm/gen_rules_dutch.txt create mode 100644 src/org/apache/commons/codec/language/bm/gen_rules_english.txt create mode 100644 src/org/apache/commons/codec/language/bm/gen_rules_french.txt create mode 100644 src/org/apache/commons/codec/language/bm/gen_rules_german.txt create mode 100644 src/org/apache/commons/codec/language/bm/gen_rules_greek.txt create mode 100644 src/org/apache/commons/codec/language/bm/gen_rules_greeklatin.txt create mode 100644 src/org/apache/commons/codec/language/bm/gen_rules_hebrew.txt create mode 100644 src/org/apache/commons/codec/language/bm/gen_rules_hungarian.txt create mode 100644 src/org/apache/commons/codec/language/bm/gen_rules_italian.txt create mode 100644 src/org/apache/commons/codec/language/bm/gen_rules_polish.txt create mode 100644 src/org/apache/commons/codec/language/bm/gen_rules_portuguese.txt create mode 100644 src/org/apache/commons/codec/language/bm/gen_rules_romanian.txt create mode 100644 src/org/apache/commons/codec/language/bm/gen_rules_russian.txt create mode 100644 src/org/apache/commons/codec/language/bm/gen_rules_spanish.txt create mode 100644 src/org/apache/commons/codec/language/bm/gen_rules_turkish.txt create mode 100644 src/org/apache/commons/codec/language/bm/lang.txt create mode 100644 src/org/apache/commons/codec/language/bm/sep_approx_any.txt create mode 100644 src/org/apache/commons/codec/language/bm/sep_approx_common.txt create mode 100644 src/org/apache/commons/codec/language/bm/sep_approx_french.txt create mode 100644 src/org/apache/commons/codec/language/bm/sep_approx_hebrew.txt create mode 100644 src/org/apache/commons/codec/language/bm/sep_approx_italian.txt create mode 100644 src/org/apache/commons/codec/language/bm/sep_approx_portuguese.txt create mode 100644 src/org/apache/commons/codec/language/bm/sep_approx_spanish.txt create mode 100644 src/org/apache/commons/codec/language/bm/sep_exact_any.txt create mode 100644 src/org/apache/commons/codec/language/bm/sep_exact_approx_common.txt create mode 100644 src/org/apache/commons/codec/language/bm/sep_exact_common.txt create mode 100644 src/org/apache/commons/codec/language/bm/sep_exact_french.txt create mode 100644 src/org/apache/commons/codec/language/bm/sep_exact_hebrew.txt create mode 100644 src/org/apache/commons/codec/language/bm/sep_exact_italian.txt create mode 100644 src/org/apache/commons/codec/language/bm/sep_exact_portuguese.txt create mode 100644 src/org/apache/commons/codec/language/bm/sep_exact_spanish.txt create mode 100644 src/org/apache/commons/codec/language/bm/sep_hebrew_common.txt create mode 100644 src/org/apache/commons/codec/language/bm/sep_lang.txt create mode 100644 src/org/apache/commons/codec/language/bm/sep_languages.txt create mode 100644 src/org/apache/commons/codec/language/bm/sep_rules_any.txt create mode 100644 src/org/apache/commons/codec/language/bm/sep_rules_french.txt create mode 100644 src/org/apache/commons/codec/language/bm/sep_rules_hebrew.txt create mode 100644 src/org/apache/commons/codec/language/bm/sep_rules_italian.txt create mode 100644 src/org/apache/commons/codec/language/bm/sep_rules_portuguese.txt create mode 100644 src/org/apache/commons/codec/language/bm/sep_rules_spanish.txt create mode 100644 src/org/apache/commons/codec/language/dmrules.txt create mode 100644 src/org/apache/commons/codec/net/BCodec.java create mode 100644 src/org/apache/commons/codec/net/QCodec.java create mode 100644 src/org/apache/commons/codec/net/QuotedPrintableCodec.java create mode 100644 src/org/apache/commons/codec/net/RFC1522Codec.java create mode 100644 src/org/apache/commons/codec/net/URLCodec.java create mode 100644 src/org/apache/commons/codec/net/Utils.java create mode 100644 src/org/apache/commons/io/ByteOrderMark.java create mode 100644 src/org/apache/commons/io/Charsets.java create mode 100644 src/org/apache/commons/io/CopyUtils.java create mode 100644 src/org/apache/commons/io/DirectoryWalker.java create mode 100644 src/org/apache/commons/io/EndianUtils.java create mode 100644 src/org/apache/commons/io/FileCleaner.java create mode 100644 src/org/apache/commons/io/FileCleaningTracker.java create mode 100644 src/org/apache/commons/io/FileDeleteStrategy.java create mode 100644 src/org/apache/commons/io/FileExistsException.java create mode 100644 src/org/apache/commons/io/FileSystemUtils.java create mode 100644 src/org/apache/commons/io/FileUtils.java create mode 100644 src/org/apache/commons/io/FilenameUtils.java create mode 100644 src/org/apache/commons/io/HexDump.java create mode 100644 src/org/apache/commons/io/IOCase.java create mode 100644 src/org/apache/commons/io/IOExceptionWithCause.java create mode 100644 src/org/apache/commons/io/IOUtils.java create mode 100644 src/org/apache/commons/io/LineIterator.java create mode 100644 src/org/apache/commons/io/TaggedIOException.java create mode 100644 src/org/apache/commons/io/ThreadMonitor.java create mode 100644 src/org/apache/commons/io/comparator/AbstractFileComparator.java create mode 100644 src/org/apache/commons/io/comparator/CompositeFileComparator.java create mode 100644 src/org/apache/commons/io/comparator/DefaultFileComparator.java create mode 100644 src/org/apache/commons/io/comparator/DirectoryFileComparator.java create mode 100644 src/org/apache/commons/io/comparator/ExtensionFileComparator.java create mode 100644 src/org/apache/commons/io/comparator/LastModifiedFileComparator.java create mode 100644 src/org/apache/commons/io/comparator/NameFileComparator.java create mode 100644 src/org/apache/commons/io/comparator/PathFileComparator.java create mode 100644 src/org/apache/commons/io/comparator/ReverseComparator.java create mode 100644 src/org/apache/commons/io/comparator/SizeFileComparator.java create mode 100644 src/org/apache/commons/io/filefilter/AbstractFileFilter.java create mode 100644 src/org/apache/commons/io/filefilter/AgeFileFilter.java create mode 100644 src/org/apache/commons/io/filefilter/AndFileFilter.java create mode 100644 src/org/apache/commons/io/filefilter/CanReadFileFilter.java create mode 100644 src/org/apache/commons/io/filefilter/CanWriteFileFilter.java create mode 100644 src/org/apache/commons/io/filefilter/ConditionalFileFilter.java create mode 100644 src/org/apache/commons/io/filefilter/DelegateFileFilter.java create mode 100644 src/org/apache/commons/io/filefilter/DirectoryFileFilter.java create mode 100644 src/org/apache/commons/io/filefilter/EmptyFileFilter.java create mode 100644 src/org/apache/commons/io/filefilter/FalseFileFilter.java create mode 100644 src/org/apache/commons/io/filefilter/FileFileFilter.java create mode 100644 src/org/apache/commons/io/filefilter/FileFilterUtils.java create mode 100644 src/org/apache/commons/io/filefilter/HiddenFileFilter.java create mode 100644 src/org/apache/commons/io/filefilter/IOFileFilter.java create mode 100644 src/org/apache/commons/io/filefilter/MagicNumberFileFilter.java create mode 100644 src/org/apache/commons/io/filefilter/NameFileFilter.java create mode 100644 src/org/apache/commons/io/filefilter/NotFileFilter.java create mode 100644 src/org/apache/commons/io/filefilter/OrFileFilter.java create mode 100644 src/org/apache/commons/io/filefilter/PrefixFileFilter.java create mode 100644 src/org/apache/commons/io/filefilter/RegexFileFilter.java create mode 100644 src/org/apache/commons/io/filefilter/SizeFileFilter.java create mode 100644 src/org/apache/commons/io/filefilter/SuffixFileFilter.java create mode 100644 src/org/apache/commons/io/filefilter/TrueFileFilter.java create mode 100644 src/org/apache/commons/io/filefilter/WildcardFileFilter.java create mode 100644 src/org/apache/commons/io/filefilter/WildcardFilter.java create mode 100644 src/org/apache/commons/io/input/AutoCloseInputStream.java create mode 100644 src/org/apache/commons/io/input/BOMInputStream.java create mode 100644 src/org/apache/commons/io/input/BoundedInputStream.java create mode 100644 src/org/apache/commons/io/input/BrokenInputStream.java create mode 100644 src/org/apache/commons/io/input/CharSequenceInputStream.java create mode 100644 src/org/apache/commons/io/input/CharSequenceReader.java create mode 100644 src/org/apache/commons/io/input/ClassLoaderObjectInputStream.java create mode 100644 src/org/apache/commons/io/input/CloseShieldInputStream.java create mode 100644 src/org/apache/commons/io/input/ClosedInputStream.java create mode 100644 src/org/apache/commons/io/input/CountingInputStream.java create mode 100644 src/org/apache/commons/io/input/DemuxInputStream.java create mode 100644 src/org/apache/commons/io/input/NullInputStream.java create mode 100644 src/org/apache/commons/io/input/NullReader.java create mode 100644 src/org/apache/commons/io/input/ProxyInputStream.java create mode 100644 src/org/apache/commons/io/input/ProxyReader.java create mode 100644 src/org/apache/commons/io/input/ReaderInputStream.java create mode 100644 src/org/apache/commons/io/input/ReversedLinesFileReader.java create mode 100644 src/org/apache/commons/io/input/SwappedDataInputStream.java create mode 100644 src/org/apache/commons/io/input/TaggedInputStream.java create mode 100644 src/org/apache/commons/io/input/Tailer.java create mode 100644 src/org/apache/commons/io/input/TailerListener.java create mode 100644 src/org/apache/commons/io/input/TailerListenerAdapter.java create mode 100644 src/org/apache/commons/io/input/TeeInputStream.java create mode 100644 src/org/apache/commons/io/input/XmlStreamReader.java create mode 100644 src/org/apache/commons/io/input/XmlStreamReaderException.java create mode 100644 src/org/apache/commons/io/monitor/FileAlterationListener.java create mode 100644 src/org/apache/commons/io/monitor/FileAlterationListenerAdaptor.java create mode 100644 src/org/apache/commons/io/monitor/FileAlterationMonitor.java create mode 100644 src/org/apache/commons/io/monitor/FileAlterationObserver.java create mode 100644 src/org/apache/commons/io/monitor/FileEntry.java create mode 100644 src/org/apache/commons/io/output/BrokenOutputStream.java create mode 100644 src/org/apache/commons/io/output/ByteArrayOutputStream.java create mode 100644 src/org/apache/commons/io/output/CloseShieldOutputStream.java create mode 100644 src/org/apache/commons/io/output/ClosedOutputStream.java create mode 100644 src/org/apache/commons/io/output/CountingOutputStream.java create mode 100644 src/org/apache/commons/io/output/DeferredFileOutputStream.java create mode 100644 src/org/apache/commons/io/output/DemuxOutputStream.java create mode 100644 src/org/apache/commons/io/output/FileWriterWithEncoding.java create mode 100644 src/org/apache/commons/io/output/LockableFileWriter.java create mode 100644 src/org/apache/commons/io/output/NullOutputStream.java create mode 100644 src/org/apache/commons/io/output/NullWriter.java create mode 100644 src/org/apache/commons/io/output/ProxyOutputStream.java create mode 100644 src/org/apache/commons/io/output/ProxyWriter.java create mode 100644 src/org/apache/commons/io/output/StringBuilderWriter.java create mode 100644 src/org/apache/commons/io/output/TaggedOutputStream.java create mode 100644 src/org/apache/commons/io/output/TeeOutputStream.java create mode 100644 src/org/apache/commons/io/output/ThresholdingOutputStream.java create mode 100644 src/org/apache/commons/io/output/WriterOutputStream.java create mode 100644 src/org/apache/commons/io/output/XmlStreamWriter.java create mode 100644 src/org/apache/commons/lang3/AnnotationUtils.java create mode 100644 src/org/apache/commons/lang3/ArrayUtils.java create mode 100644 src/org/apache/commons/lang3/BitField.java create mode 100644 src/org/apache/commons/lang3/BooleanUtils.java create mode 100644 src/org/apache/commons/lang3/CharEncoding.java create mode 100644 src/org/apache/commons/lang3/CharRange.java create mode 100644 src/org/apache/commons/lang3/CharSequenceUtils.java create mode 100644 src/org/apache/commons/lang3/CharSet.java create mode 100644 src/org/apache/commons/lang3/CharSetUtils.java create mode 100644 src/org/apache/commons/lang3/CharUtils.java create mode 100644 src/org/apache/commons/lang3/ClassPathUtils.java create mode 100644 src/org/apache/commons/lang3/ClassUtils.java create mode 100644 src/org/apache/commons/lang3/Conversion.java create mode 100644 src/org/apache/commons/lang3/EnumUtils.java create mode 100644 src/org/apache/commons/lang3/JavaVersion.java create mode 100644 src/org/apache/commons/lang3/LocaleUtils.java create mode 100644 src/org/apache/commons/lang3/NotImplementedException.java create mode 100644 src/org/apache/commons/lang3/ObjectUtils.java create mode 100644 src/org/apache/commons/lang3/RandomStringUtils.java create mode 100644 src/org/apache/commons/lang3/RandomUtils.java create mode 100644 src/org/apache/commons/lang3/Range.java create mode 100644 src/org/apache/commons/lang3/SerializationException.java create mode 100644 src/org/apache/commons/lang3/SerializationUtils.java create mode 100644 src/org/apache/commons/lang3/StringEscapeUtils.java create mode 100644 src/org/apache/commons/lang3/StringUtils.java create mode 100644 src/org/apache/commons/lang3/SystemUtils.java create mode 100644 src/org/apache/commons/lang3/Validate.java create mode 100644 src/org/apache/commons/lang3/builder/Builder.java create mode 100644 src/org/apache/commons/lang3/builder/CompareToBuilder.java create mode 100644 src/org/apache/commons/lang3/builder/Diff.java create mode 100644 src/org/apache/commons/lang3/builder/DiffBuilder.java create mode 100644 src/org/apache/commons/lang3/builder/DiffResult.java create mode 100644 src/org/apache/commons/lang3/builder/Diffable.java create mode 100644 src/org/apache/commons/lang3/builder/EqualsBuilder.java create mode 100644 src/org/apache/commons/lang3/builder/HashCodeBuilder.java create mode 100644 src/org/apache/commons/lang3/builder/IDKey.java create mode 100644 src/org/apache/commons/lang3/builder/MultilineRecursiveToStringStyle.java create mode 100644 src/org/apache/commons/lang3/builder/RecursiveToStringStyle.java create mode 100644 src/org/apache/commons/lang3/builder/ReflectionToStringBuilder.java create mode 100644 src/org/apache/commons/lang3/builder/StandardToStringStyle.java create mode 100644 src/org/apache/commons/lang3/builder/ToStringBuilder.java create mode 100644 src/org/apache/commons/lang3/builder/ToStringStyle.java create mode 100644 src/org/apache/commons/lang3/concurrent/AtomicInitializer.java create mode 100644 src/org/apache/commons/lang3/concurrent/AtomicSafeInitializer.java create mode 100644 src/org/apache/commons/lang3/concurrent/BackgroundInitializer.java create mode 100644 src/org/apache/commons/lang3/concurrent/BasicThreadFactory.java create mode 100644 src/org/apache/commons/lang3/concurrent/CallableBackgroundInitializer.java create mode 100644 src/org/apache/commons/lang3/concurrent/ConcurrentException.java create mode 100644 src/org/apache/commons/lang3/concurrent/ConcurrentInitializer.java create mode 100644 src/org/apache/commons/lang3/concurrent/ConcurrentRuntimeException.java create mode 100644 src/org/apache/commons/lang3/concurrent/ConcurrentUtils.java create mode 100644 src/org/apache/commons/lang3/concurrent/ConstantInitializer.java create mode 100644 src/org/apache/commons/lang3/concurrent/LazyInitializer.java create mode 100644 src/org/apache/commons/lang3/concurrent/MultiBackgroundInitializer.java create mode 100644 src/org/apache/commons/lang3/concurrent/TimedSemaphore.java create mode 100644 src/org/apache/commons/lang3/event/EventListenerSupport.java create mode 100644 src/org/apache/commons/lang3/event/EventUtils.java create mode 100644 src/org/apache/commons/lang3/exception/CloneFailedException.java create mode 100644 src/org/apache/commons/lang3/exception/ContextedException.java create mode 100644 src/org/apache/commons/lang3/exception/ContextedRuntimeException.java create mode 100644 src/org/apache/commons/lang3/exception/DefaultExceptionContext.java create mode 100644 src/org/apache/commons/lang3/exception/ExceptionContext.java create mode 100644 src/org/apache/commons/lang3/exception/ExceptionUtils.java create mode 100644 src/org/apache/commons/lang3/math/Fraction.java create mode 100644 src/org/apache/commons/lang3/math/IEEE754rUtils.java create mode 100644 src/org/apache/commons/lang3/math/NumberUtils.java create mode 100644 src/org/apache/commons/lang3/mutable/Mutable.java create mode 100644 src/org/apache/commons/lang3/mutable/MutableBoolean.java create mode 100644 src/org/apache/commons/lang3/mutable/MutableByte.java create mode 100644 src/org/apache/commons/lang3/mutable/MutableDouble.java create mode 100644 src/org/apache/commons/lang3/mutable/MutableFloat.java create mode 100644 src/org/apache/commons/lang3/mutable/MutableInt.java create mode 100644 src/org/apache/commons/lang3/mutable/MutableLong.java create mode 100644 src/org/apache/commons/lang3/mutable/MutableObject.java create mode 100644 src/org/apache/commons/lang3/mutable/MutableShort.java create mode 100644 src/org/apache/commons/lang3/reflect/ConstructorUtils.java create mode 100644 src/org/apache/commons/lang3/reflect/FieldUtils.java create mode 100644 src/org/apache/commons/lang3/reflect/InheritanceUtils.java create mode 100644 src/org/apache/commons/lang3/reflect/MemberUtils.java create mode 100644 src/org/apache/commons/lang3/reflect/MethodUtils.java create mode 100644 src/org/apache/commons/lang3/reflect/TypeLiteral.java create mode 100644 src/org/apache/commons/lang3/reflect/TypeUtils.java create mode 100644 src/org/apache/commons/lang3/reflect/Typed.java create mode 100644 src/org/apache/commons/lang3/text/CompositeFormat.java create mode 100644 src/org/apache/commons/lang3/text/ExtendedMessageFormat.java create mode 100644 src/org/apache/commons/lang3/text/FormatFactory.java create mode 100644 src/org/apache/commons/lang3/text/FormattableUtils.java create mode 100644 src/org/apache/commons/lang3/text/StrBuilder.java create mode 100644 src/org/apache/commons/lang3/text/StrLookup.java create mode 100644 src/org/apache/commons/lang3/text/StrMatcher.java create mode 100644 src/org/apache/commons/lang3/text/StrSubstitutor.java create mode 100644 src/org/apache/commons/lang3/text/StrTokenizer.java create mode 100644 src/org/apache/commons/lang3/text/WordUtils.java create mode 100644 src/org/apache/commons/lang3/text/translate/AggregateTranslator.java create mode 100644 src/org/apache/commons/lang3/text/translate/CharSequenceTranslator.java create mode 100644 src/org/apache/commons/lang3/text/translate/CodePointTranslator.java create mode 100644 src/org/apache/commons/lang3/text/translate/EntityArrays.java create mode 100644 src/org/apache/commons/lang3/text/translate/JavaUnicodeEscaper.java create mode 100644 src/org/apache/commons/lang3/text/translate/LookupTranslator.java create mode 100644 src/org/apache/commons/lang3/text/translate/NumericEntityEscaper.java create mode 100644 src/org/apache/commons/lang3/text/translate/NumericEntityUnescaper.java create mode 100644 src/org/apache/commons/lang3/text/translate/OctalUnescaper.java create mode 100644 src/org/apache/commons/lang3/text/translate/UnicodeEscaper.java create mode 100644 src/org/apache/commons/lang3/text/translate/UnicodeUnescaper.java create mode 100644 src/org/apache/commons/lang3/text/translate/UnicodeUnpairedSurrogateRemover.java create mode 100644 src/org/apache/commons/lang3/time/DateFormatUtils.java create mode 100644 src/org/apache/commons/lang3/time/DateParser.java create mode 100644 src/org/apache/commons/lang3/time/DatePrinter.java create mode 100644 src/org/apache/commons/lang3/time/DateUtils.java create mode 100644 src/org/apache/commons/lang3/time/DurationFormatUtils.java create mode 100644 src/org/apache/commons/lang3/time/FastDateFormat.java create mode 100644 src/org/apache/commons/lang3/time/FastDateParser.java create mode 100644 src/org/apache/commons/lang3/time/FastDatePrinter.java create mode 100644 src/org/apache/commons/lang3/time/FormatCache.java create mode 100644 src/org/apache/commons/lang3/time/StopWatch.java create mode 100644 src/org/apache/commons/lang3/tuple/ImmutablePair.java create mode 100644 src/org/apache/commons/lang3/tuple/ImmutableTriple.java create mode 100644 src/org/apache/commons/lang3/tuple/MutablePair.java create mode 100644 src/org/apache/commons/lang3/tuple/MutableTriple.java create mode 100644 src/org/apache/commons/lang3/tuple/Pair.java create mode 100644 src/org/apache/commons/lang3/tuple/Triple.java create mode 100644 src/org/apache/logging/log4j/EventLogger.java create mode 100644 src/org/apache/logging/log4j/Level.java create mode 100644 src/org/apache/logging/log4j/LogManager.java create mode 100644 src/org/apache/logging/log4j/Logger.java create mode 100644 src/org/apache/logging/log4j/LoggingException.java create mode 100644 src/org/apache/logging/log4j/Marker.java create mode 100644 src/org/apache/logging/log4j/MarkerManager.java create mode 100644 src/org/apache/logging/log4j/ThreadContext.java create mode 100644 src/org/apache/logging/log4j/core/AbstractLifeCycle.java create mode 100644 src/org/apache/logging/log4j/core/AbstractLogEvent.java create mode 100644 src/org/apache/logging/log4j/core/Appender.java create mode 100644 src/org/apache/logging/log4j/core/ErrorHandler.java create mode 100644 src/org/apache/logging/log4j/core/Filter.java create mode 100644 src/org/apache/logging/log4j/core/Layout.java create mode 100644 src/org/apache/logging/log4j/core/LifeCycle.java create mode 100644 src/org/apache/logging/log4j/core/LifeCycleState.java create mode 100644 src/org/apache/logging/log4j/core/LogEvent.java create mode 100644 src/org/apache/logging/log4j/core/LogEventListener.java create mode 100644 src/org/apache/logging/log4j/core/Logger.java create mode 100644 src/org/apache/logging/log4j/core/LoggerContext.java create mode 100644 src/org/apache/logging/log4j/core/appender/AbstractAppender.java create mode 100644 src/org/apache/logging/log4j/core/appender/AbstractManager.java create mode 100644 src/org/apache/logging/log4j/core/appender/AbstractOutputStreamAppender.java create mode 100644 src/org/apache/logging/log4j/core/appender/AppenderLoggingException.java create mode 100644 src/org/apache/logging/log4j/core/appender/AsyncAppender.java create mode 100644 src/org/apache/logging/log4j/core/appender/ConsoleAppender.java create mode 100644 src/org/apache/logging/log4j/core/appender/DefaultErrorHandler.java create mode 100644 src/org/apache/logging/log4j/core/appender/FailoverAppender.java create mode 100644 src/org/apache/logging/log4j/core/appender/FailoversPlugin.java create mode 100644 src/org/apache/logging/log4j/core/appender/FileAppender.java create mode 100644 src/org/apache/logging/log4j/core/appender/FileManager.java create mode 100644 src/org/apache/logging/log4j/core/appender/ManagerFactory.java create mode 100644 src/org/apache/logging/log4j/core/appender/OutputStreamManager.java create mode 100644 src/org/apache/logging/log4j/core/appender/RandomAccessFileAppender.java create mode 100644 src/org/apache/logging/log4j/core/appender/RandomAccessFileManager.java create mode 100644 src/org/apache/logging/log4j/core/appender/RollingFileAppender.java create mode 100644 src/org/apache/logging/log4j/core/appender/RollingRandomAccessFileAppender.java create mode 100644 src/org/apache/logging/log4j/core/appender/SmtpAppender.java create mode 100644 src/org/apache/logging/log4j/core/appender/SocketAppender.java create mode 100644 src/org/apache/logging/log4j/core/appender/SyslogAppender.java create mode 100644 src/org/apache/logging/log4j/core/appender/TlsSyslogFrame.java create mode 100644 src/org/apache/logging/log4j/core/appender/db/AbstractDatabaseAppender.java create mode 100644 src/org/apache/logging/log4j/core/appender/db/AbstractDatabaseManager.java create mode 100644 src/org/apache/logging/log4j/core/appender/db/jdbc/ColumnConfig.java create mode 100644 src/org/apache/logging/log4j/core/appender/db/jdbc/ConnectionSource.java create mode 100644 src/org/apache/logging/log4j/core/appender/db/jdbc/DataSourceConnectionSource.java create mode 100644 src/org/apache/logging/log4j/core/appender/db/jdbc/FactoryMethodConnectionSource.java create mode 100644 src/org/apache/logging/log4j/core/appender/db/jdbc/JdbcAppender.java create mode 100644 src/org/apache/logging/log4j/core/appender/db/jdbc/JdbcDatabaseManager.java create mode 100644 src/org/apache/logging/log4j/core/appender/db/jpa/AbstractLogEventWrapperEntity.java create mode 100644 src/org/apache/logging/log4j/core/appender/db/jpa/BasicLogEventEntity.java create mode 100644 src/org/apache/logging/log4j/core/appender/db/jpa/JpaAppender.java create mode 100644 src/org/apache/logging/log4j/core/appender/db/jpa/JpaDatabaseManager.java create mode 100644 src/org/apache/logging/log4j/core/appender/db/jpa/converter/ContextMapAttributeConverter.java create mode 100644 src/org/apache/logging/log4j/core/appender/db/jpa/converter/ContextMapJsonAttributeConverter.java create mode 100644 src/org/apache/logging/log4j/core/appender/db/jpa/converter/ContextStackAttributeConverter.java create mode 100644 src/org/apache/logging/log4j/core/appender/db/jpa/converter/ContextStackJsonAttributeConverter.java create mode 100644 src/org/apache/logging/log4j/core/appender/db/jpa/converter/LevelAttributeConverter.java create mode 100644 src/org/apache/logging/log4j/core/appender/db/jpa/converter/MarkerAttributeConverter.java create mode 100644 src/org/apache/logging/log4j/core/appender/db/jpa/converter/MessageAttributeConverter.java create mode 100644 src/org/apache/logging/log4j/core/appender/db/jpa/converter/StackTraceElementAttributeConverter.java create mode 100644 src/org/apache/logging/log4j/core/appender/db/jpa/converter/ThrowableAttributeConverter.java create mode 100644 src/org/apache/logging/log4j/core/appender/jms/JmsQueueAppender.java create mode 100644 src/org/apache/logging/log4j/core/appender/jms/JmsTopicAppender.java create mode 100644 src/org/apache/logging/log4j/core/appender/rewrite/MapRewritePolicy.java create mode 100644 src/org/apache/logging/log4j/core/appender/rewrite/PropertiesRewritePolicy.java create mode 100644 src/org/apache/logging/log4j/core/appender/rewrite/RewriteAppender.java create mode 100644 src/org/apache/logging/log4j/core/appender/rewrite/RewritePolicy.java create mode 100644 src/org/apache/logging/log4j/core/appender/rolling/AbstractRolloverStrategy.java create mode 100644 src/org/apache/logging/log4j/core/appender/rolling/CompositeTriggeringPolicy.java create mode 100644 src/org/apache/logging/log4j/core/appender/rolling/DefaultRolloverStrategy.java create mode 100644 src/org/apache/logging/log4j/core/appender/rolling/OnStartupTriggeringPolicy.java create mode 100644 src/org/apache/logging/log4j/core/appender/rolling/PatternProcessor.java create mode 100644 src/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java create mode 100644 src/org/apache/logging/log4j/core/appender/rolling/RollingRandomAccessFileManager.java create mode 100644 src/org/apache/logging/log4j/core/appender/rolling/RolloverDescription.java create mode 100644 src/org/apache/logging/log4j/core/appender/rolling/RolloverDescriptionImpl.java create mode 100644 src/org/apache/logging/log4j/core/appender/rolling/RolloverFrequency.java create mode 100644 src/org/apache/logging/log4j/core/appender/rolling/RolloverStrategy.java create mode 100644 src/org/apache/logging/log4j/core/appender/rolling/SizeBasedTriggeringPolicy.java create mode 100644 src/org/apache/logging/log4j/core/appender/rolling/TimeBasedTriggeringPolicy.java create mode 100644 src/org/apache/logging/log4j/core/appender/rolling/TriggeringPolicy.java create mode 100644 src/org/apache/logging/log4j/core/appender/rolling/action/AbstractAction.java create mode 100644 src/org/apache/logging/log4j/core/appender/rolling/action/Action.java create mode 100644 src/org/apache/logging/log4j/core/appender/rolling/action/CompositeAction.java create mode 100644 src/org/apache/logging/log4j/core/appender/rolling/action/FileRenameAction.java create mode 100644 src/org/apache/logging/log4j/core/appender/rolling/action/GzCompressAction.java create mode 100644 src/org/apache/logging/log4j/core/appender/rolling/action/ZipCompressAction.java create mode 100644 src/org/apache/logging/log4j/core/appender/routing/Route.java create mode 100644 src/org/apache/logging/log4j/core/appender/routing/Routes.java create mode 100644 src/org/apache/logging/log4j/core/appender/routing/RoutingAppender.java create mode 100644 src/org/apache/logging/log4j/core/async/AsyncLogger.java create mode 100644 src/org/apache/logging/log4j/core/async/AsyncLoggerConfig.java create mode 100644 src/org/apache/logging/log4j/core/async/AsyncLoggerConfigHelper.java create mode 100644 src/org/apache/logging/log4j/core/async/AsyncLoggerContext.java create mode 100644 src/org/apache/logging/log4j/core/async/AsyncLoggerContextSelector.java create mode 100644 src/org/apache/logging/log4j/core/async/DaemonThreadFactory.java create mode 100644 src/org/apache/logging/log4j/core/async/RingBufferLogEvent.java create mode 100644 src/org/apache/logging/log4j/core/async/RingBufferLogEventHandler.java create mode 100644 src/org/apache/logging/log4j/core/async/RingBufferLogEventTranslator.java create mode 100644 src/org/apache/logging/log4j/core/config/AbstractConfiguration.java create mode 100644 src/org/apache/logging/log4j/core/config/AppenderControl.java create mode 100644 src/org/apache/logging/log4j/core/config/AppenderRef.java create mode 100644 src/org/apache/logging/log4j/core/config/AppendersPlugin.java create mode 100644 src/org/apache/logging/log4j/core/config/Configuration.java create mode 100644 src/org/apache/logging/log4j/core/config/ConfigurationException.java create mode 100644 src/org/apache/logging/log4j/core/config/ConfigurationFactory.java create mode 100644 src/org/apache/logging/log4j/core/config/ConfigurationListener.java create mode 100644 src/org/apache/logging/log4j/core/config/ConfigurationMonitor.java create mode 100644 src/org/apache/logging/log4j/core/config/ConfigurationSource.java create mode 100644 src/org/apache/logging/log4j/core/config/Configurator.java create mode 100644 src/org/apache/logging/log4j/core/config/DefaultAdvertiser.java create mode 100644 src/org/apache/logging/log4j/core/config/DefaultConfiguration.java create mode 100644 src/org/apache/logging/log4j/core/config/DefaultConfigurationMonitor.java create mode 100644 src/org/apache/logging/log4j/core/config/FileConfigurationMonitor.java create mode 100644 src/org/apache/logging/log4j/core/config/LoggerConfig.java create mode 100644 src/org/apache/logging/log4j/core/config/Loggers.java create mode 100644 src/org/apache/logging/log4j/core/config/LoggersPlugin.java create mode 100644 src/org/apache/logging/log4j/core/config/Node.java create mode 100644 src/org/apache/logging/log4j/core/config/NullConfiguration.java create mode 100644 src/org/apache/logging/log4j/core/config/Order.java create mode 100644 src/org/apache/logging/log4j/core/config/PropertiesPlugin.java create mode 100644 src/org/apache/logging/log4j/core/config/Property.java create mode 100644 src/org/apache/logging/log4j/core/config/Reconfigurable.java create mode 100644 src/org/apache/logging/log4j/core/config/json/JsonConfiguration.java create mode 100644 src/org/apache/logging/log4j/core/config/json/JsonConfigurationFactory.java create mode 100644 src/org/apache/logging/log4j/core/config/plugins/Plugin.java create mode 100644 src/org/apache/logging/log4j/core/config/plugins/PluginAliases.java create mode 100644 src/org/apache/logging/log4j/core/config/plugins/PluginAttribute.java create mode 100644 src/org/apache/logging/log4j/core/config/plugins/PluginBuilderAttribute.java create mode 100644 src/org/apache/logging/log4j/core/config/plugins/PluginBuilderFactory.java create mode 100644 src/org/apache/logging/log4j/core/config/plugins/PluginConfiguration.java create mode 100644 src/org/apache/logging/log4j/core/config/plugins/PluginElement.java create mode 100644 src/org/apache/logging/log4j/core/config/plugins/PluginFactory.java create mode 100644 src/org/apache/logging/log4j/core/config/plugins/PluginNode.java create mode 100644 src/org/apache/logging/log4j/core/config/plugins/PluginValue.java create mode 100644 src/org/apache/logging/log4j/core/config/plugins/PluginVisitorStrategy.java create mode 100644 src/org/apache/logging/log4j/core/config/plugins/osgi/Activator.java create mode 100644 src/org/apache/logging/log4j/core/config/plugins/processor/PluginCache.java create mode 100644 src/org/apache/logging/log4j/core/config/plugins/processor/PluginEntry.java create mode 100644 src/org/apache/logging/log4j/core/config/plugins/processor/PluginProcessor.java create mode 100644 src/org/apache/logging/log4j/core/config/plugins/util/PluginBuilder.java create mode 100644 src/org/apache/logging/log4j/core/config/plugins/util/PluginManager.java create mode 100644 src/org/apache/logging/log4j/core/config/plugins/util/PluginRegistry.java create mode 100644 src/org/apache/logging/log4j/core/config/plugins/util/PluginType.java create mode 100644 src/org/apache/logging/log4j/core/config/plugins/util/ResolverUtil.java create mode 100644 src/org/apache/logging/log4j/core/config/plugins/util/TypeConverter.java create mode 100644 src/org/apache/logging/log4j/core/config/plugins/util/TypeConverters.java create mode 100644 src/org/apache/logging/log4j/core/config/plugins/visitors/AbstractPluginVisitor.java create mode 100644 src/org/apache/logging/log4j/core/config/plugins/visitors/PluginAttributeVisitor.java create mode 100644 src/org/apache/logging/log4j/core/config/plugins/visitors/PluginBuilderAttributeVisitor.java create mode 100644 src/org/apache/logging/log4j/core/config/plugins/visitors/PluginConfigurationVisitor.java create mode 100644 src/org/apache/logging/log4j/core/config/plugins/visitors/PluginElementVisitor.java create mode 100644 src/org/apache/logging/log4j/core/config/plugins/visitors/PluginNodeVisitor.java create mode 100644 src/org/apache/logging/log4j/core/config/plugins/visitors/PluginValueVisitor.java create mode 100644 src/org/apache/logging/log4j/core/config/plugins/visitors/PluginVisitor.java create mode 100644 src/org/apache/logging/log4j/core/config/plugins/visitors/PluginVisitors.java create mode 100644 src/org/apache/logging/log4j/core/config/status/StatusConfiguration.java create mode 100644 src/org/apache/logging/log4j/core/config/xml/XmlConfiguration.java create mode 100644 src/org/apache/logging/log4j/core/config/xml/XmlConfigurationFactory.java create mode 100644 src/org/apache/logging/log4j/core/config/yaml/YamlConfiguration.java create mode 100644 src/org/apache/logging/log4j/core/config/yaml/YamlConfigurationFactory.java create mode 100644 src/org/apache/logging/log4j/core/filter/AbstractFilter.java create mode 100644 src/org/apache/logging/log4j/core/filter/AbstractFilterable.java create mode 100644 src/org/apache/logging/log4j/core/filter/BurstFilter.java create mode 100644 src/org/apache/logging/log4j/core/filter/CompositeFilter.java create mode 100644 src/org/apache/logging/log4j/core/filter/DynamicThresholdFilter.java create mode 100644 src/org/apache/logging/log4j/core/filter/Filterable.java create mode 100644 src/org/apache/logging/log4j/core/filter/MapFilter.java create mode 100644 src/org/apache/logging/log4j/core/filter/MarkerFilter.java create mode 100644 src/org/apache/logging/log4j/core/filter/RegexFilter.java create mode 100644 src/org/apache/logging/log4j/core/filter/StructuredDataFilter.java create mode 100644 src/org/apache/logging/log4j/core/filter/ThreadContextMapFilter.java create mode 100644 src/org/apache/logging/log4j/core/filter/ThresholdFilter.java create mode 100644 src/org/apache/logging/log4j/core/filter/TimeFilter.java create mode 100644 src/org/apache/logging/log4j/core/impl/ContextAnchor.java create mode 100644 src/org/apache/logging/log4j/core/impl/DefaultLogEventFactory.java create mode 100644 src/org/apache/logging/log4j/core/impl/ExtendedClassInfo.java create mode 100644 src/org/apache/logging/log4j/core/impl/ExtendedStackTraceElement.java create mode 100644 src/org/apache/logging/log4j/core/impl/Log4jContextFactory.java create mode 100644 src/org/apache/logging/log4j/core/impl/Log4jLogEvent.java create mode 100644 src/org/apache/logging/log4j/core/impl/LogEventFactory.java create mode 100644 src/org/apache/logging/log4j/core/impl/ReflectiveCallerClassUtility.java create mode 100644 src/org/apache/logging/log4j/core/impl/ThrowableFormatOptions.java create mode 100644 src/org/apache/logging/log4j/core/impl/ThrowableProxy.java create mode 100644 src/org/apache/logging/log4j/core/jackson/ExtendedStackTraceElementMixIn.java create mode 100644 src/org/apache/logging/log4j/core/jackson/Initializers.java create mode 100644 src/org/apache/logging/log4j/core/jackson/JsonConstants.java create mode 100644 src/org/apache/logging/log4j/core/jackson/LevelMixIn.java create mode 100644 src/org/apache/logging/log4j/core/jackson/ListOfMapEntryDeserializer.java create mode 100644 src/org/apache/logging/log4j/core/jackson/ListOfMapEntrySerializer.java create mode 100644 src/org/apache/logging/log4j/core/jackson/Log4jJsonModule.java create mode 100644 src/org/apache/logging/log4j/core/jackson/Log4jJsonObjectMapper.java create mode 100644 src/org/apache/logging/log4j/core/jackson/Log4jStackTraceElementDeserializer.java create mode 100644 src/org/apache/logging/log4j/core/jackson/Log4jXmlModule.java create mode 100644 src/org/apache/logging/log4j/core/jackson/Log4jXmlObjectMapper.java create mode 100644 src/org/apache/logging/log4j/core/jackson/LogEventMixIn.java create mode 100644 src/org/apache/logging/log4j/core/jackson/MapEntry.java create mode 100644 src/org/apache/logging/log4j/core/jackson/MarkerMixIn.java create mode 100644 src/org/apache/logging/log4j/core/jackson/MessageSerializer.java create mode 100644 src/org/apache/logging/log4j/core/jackson/MutableThreadContextStackDeserializer.java create mode 100644 src/org/apache/logging/log4j/core/jackson/SimpleMessageDeserializer.java create mode 100644 src/org/apache/logging/log4j/core/jackson/StackTraceElementMixIn.java create mode 100644 src/org/apache/logging/log4j/core/jackson/ThrowableProxyMixIn.java create mode 100644 src/org/apache/logging/log4j/core/jackson/XmlConstants.java create mode 100644 src/org/apache/logging/log4j/core/jmx/AppenderAdmin.java create mode 100644 src/org/apache/logging/log4j/core/jmx/AppenderAdminMBean.java create mode 100644 src/org/apache/logging/log4j/core/jmx/AsyncAppenderAdmin.java create mode 100644 src/org/apache/logging/log4j/core/jmx/AsyncAppenderAdminMBean.java create mode 100644 src/org/apache/logging/log4j/core/jmx/ContextSelectorAdmin.java create mode 100644 src/org/apache/logging/log4j/core/jmx/ContextSelectorAdminMBean.java create mode 100644 src/org/apache/logging/log4j/core/jmx/LoggerConfigAdmin.java create mode 100644 src/org/apache/logging/log4j/core/jmx/LoggerConfigAdminMBean.java create mode 100644 src/org/apache/logging/log4j/core/jmx/LoggerContextAdmin.java create mode 100644 src/org/apache/logging/log4j/core/jmx/LoggerContextAdminMBean.java create mode 100644 src/org/apache/logging/log4j/core/jmx/RingBufferAdmin.java create mode 100644 src/org/apache/logging/log4j/core/jmx/RingBufferAdminMBean.java create mode 100644 src/org/apache/logging/log4j/core/jmx/Server.java create mode 100644 src/org/apache/logging/log4j/core/jmx/StatusLoggerAdmin.java create mode 100644 src/org/apache/logging/log4j/core/jmx/StatusLoggerAdminMBean.java create mode 100644 src/org/apache/logging/log4j/core/layout/AbstractJacksonLayout.java create mode 100644 src/org/apache/logging/log4j/core/layout/AbstractLayout.java create mode 100644 src/org/apache/logging/log4j/core/layout/AbstractStringLayout.java create mode 100644 src/org/apache/logging/log4j/core/layout/HtmlLayout.java create mode 100644 src/org/apache/logging/log4j/core/layout/JacksonFactory.java create mode 100644 src/org/apache/logging/log4j/core/layout/JsonLayout.java create mode 100644 src/org/apache/logging/log4j/core/layout/LoggerFields.java create mode 100644 src/org/apache/logging/log4j/core/layout/PatternLayout.java create mode 100644 src/org/apache/logging/log4j/core/layout/Rfc5424Layout.java create mode 100644 src/org/apache/logging/log4j/core/layout/SerializedLayout.java create mode 100644 src/org/apache/logging/log4j/core/layout/SyslogLayout.java create mode 100644 src/org/apache/logging/log4j/core/layout/XmlLayout.java create mode 100644 src/org/apache/logging/log4j/core/lookup/ContextMapLookup.java create mode 100644 src/org/apache/logging/log4j/core/lookup/DateLookup.java create mode 100644 src/org/apache/logging/log4j/core/lookup/EnvironmentLookup.java create mode 100644 src/org/apache/logging/log4j/core/lookup/Interpolator.java create mode 100644 src/org/apache/logging/log4j/core/lookup/JndiLookup.java create mode 100644 src/org/apache/logging/log4j/core/lookup/MapLookup.java create mode 100644 src/org/apache/logging/log4j/core/lookup/ResourceBundleLookup.java create mode 100644 src/org/apache/logging/log4j/core/lookup/StrLookup.java create mode 100644 src/org/apache/logging/log4j/core/lookup/StrMatcher.java create mode 100644 src/org/apache/logging/log4j/core/lookup/StrSubstitutor.java create mode 100644 src/org/apache/logging/log4j/core/lookup/StructuredDataLookup.java create mode 100644 src/org/apache/logging/log4j/core/lookup/SystemPropertiesLookup.java create mode 100644 src/org/apache/logging/log4j/core/net/AbstractSocketManager.java create mode 100644 src/org/apache/logging/log4j/core/net/Advertiser.java create mode 100644 src/org/apache/logging/log4j/core/net/DatagramOutputStream.java create mode 100644 src/org/apache/logging/log4j/core/net/DatagramSocketManager.java create mode 100644 src/org/apache/logging/log4j/core/net/Facility.java create mode 100644 src/org/apache/logging/log4j/core/net/MimeMessageBuilder.java create mode 100644 src/org/apache/logging/log4j/core/net/MulticastDnsAdvertiser.java create mode 100644 src/org/apache/logging/log4j/core/net/Priority.java create mode 100644 src/org/apache/logging/log4j/core/net/Protocol.java create mode 100644 src/org/apache/logging/log4j/core/net/Severity.java create mode 100644 src/org/apache/logging/log4j/core/net/SmtpManager.java create mode 100644 src/org/apache/logging/log4j/core/net/SslSocketManager.java create mode 100644 src/org/apache/logging/log4j/core/net/TcpSocketManager.java create mode 100644 src/org/apache/logging/log4j/core/net/jms/AbstractJmsManager.java create mode 100644 src/org/apache/logging/log4j/core/net/jms/AbstractJmsReceiver.java create mode 100644 src/org/apache/logging/log4j/core/net/jms/JmsQueueManager.java create mode 100644 src/org/apache/logging/log4j/core/net/jms/JmsQueueReceiver.java create mode 100644 src/org/apache/logging/log4j/core/net/jms/JmsTopicManager.java create mode 100644 src/org/apache/logging/log4j/core/net/jms/JmsTopicReceiver.java create mode 100644 src/org/apache/logging/log4j/core/net/server/AbstractLogEventBridge.java create mode 100644 src/org/apache/logging/log4j/core/net/server/AbstractSocketServer.java create mode 100644 src/org/apache/logging/log4j/core/net/server/InputStreamLogEventBridge.java create mode 100644 src/org/apache/logging/log4j/core/net/server/JsonInputStreamLogEventBridge.java create mode 100644 src/org/apache/logging/log4j/core/net/server/LogEventBridge.java create mode 100644 src/org/apache/logging/log4j/core/net/server/ObjectInputStreamLogEventBridge.java create mode 100644 src/org/apache/logging/log4j/core/net/server/SecureTcpSocketServer.java create mode 100644 src/org/apache/logging/log4j/core/net/server/TcpSocketServer.java create mode 100644 src/org/apache/logging/log4j/core/net/server/UdpSocketServer.java create mode 100644 src/org/apache/logging/log4j/core/net/server/XmlInputStreamLogEventBridge.java create mode 100644 src/org/apache/logging/log4j/core/net/ssl/AbstractKeyStoreConfiguration.java create mode 100644 src/org/apache/logging/log4j/core/net/ssl/KeyStoreConfiguration.java create mode 100644 src/org/apache/logging/log4j/core/net/ssl/KeyStoreConfigurationException.java create mode 100644 src/org/apache/logging/log4j/core/net/ssl/SslConfiguration.java create mode 100644 src/org/apache/logging/log4j/core/net/ssl/SslConfigurationDefaults.java create mode 100644 src/org/apache/logging/log4j/core/net/ssl/SslConfigurationException.java create mode 100644 src/org/apache/logging/log4j/core/net/ssl/StoreConfiguration.java create mode 100644 src/org/apache/logging/log4j/core/net/ssl/StoreConfigurationException.java create mode 100644 src/org/apache/logging/log4j/core/net/ssl/TrustStoreConfiguration.java create mode 100644 src/org/apache/logging/log4j/core/net/ssl/TrustStoreConfigurationException.java create mode 100644 src/org/apache/logging/log4j/core/pattern/AbstractPatternConverter.java create mode 100644 src/org/apache/logging/log4j/core/pattern/AbstractStyleNameConverter.java create mode 100644 src/org/apache/logging/log4j/core/pattern/AnsiConverter.java create mode 100644 src/org/apache/logging/log4j/core/pattern/AnsiEscape.java create mode 100644 src/org/apache/logging/log4j/core/pattern/ArrayPatternConverter.java create mode 100644 src/org/apache/logging/log4j/core/pattern/CachedDateFormat.java create mode 100644 src/org/apache/logging/log4j/core/pattern/ClassNamePatternConverter.java create mode 100644 src/org/apache/logging/log4j/core/pattern/ConverterKeys.java create mode 100644 src/org/apache/logging/log4j/core/pattern/DatePatternConverter.java create mode 100644 src/org/apache/logging/log4j/core/pattern/EncodingPatternConverter.java create mode 100644 src/org/apache/logging/log4j/core/pattern/ExtendedThrowablePatternConverter.java create mode 100644 src/org/apache/logging/log4j/core/pattern/FileDatePatternConverter.java create mode 100644 src/org/apache/logging/log4j/core/pattern/FileLocationPatternConverter.java create mode 100644 src/org/apache/logging/log4j/core/pattern/FormattingInfo.java create mode 100644 src/org/apache/logging/log4j/core/pattern/FullLocationPatternConverter.java create mode 100644 src/org/apache/logging/log4j/core/pattern/HighlightConverter.java create mode 100644 src/org/apache/logging/log4j/core/pattern/IntegerPatternConverter.java create mode 100644 src/org/apache/logging/log4j/core/pattern/LevelPatternConverter.java create mode 100644 src/org/apache/logging/log4j/core/pattern/LineLocationPatternConverter.java create mode 100644 src/org/apache/logging/log4j/core/pattern/LineSeparatorPatternConverter.java create mode 100644 src/org/apache/logging/log4j/core/pattern/LiteralPatternConverter.java create mode 100644 src/org/apache/logging/log4j/core/pattern/LogEventPatternConverter.java create mode 100644 src/org/apache/logging/log4j/core/pattern/LoggerPatternConverter.java create mode 100644 src/org/apache/logging/log4j/core/pattern/MapPatternConverter.java create mode 100644 src/org/apache/logging/log4j/core/pattern/MarkerPatternConverter.java create mode 100644 src/org/apache/logging/log4j/core/pattern/MdcPatternConverter.java create mode 100644 src/org/apache/logging/log4j/core/pattern/MessagePatternConverter.java create mode 100644 src/org/apache/logging/log4j/core/pattern/MethodLocationPatternConverter.java create mode 100644 src/org/apache/logging/log4j/core/pattern/NameAbbreviator.java create mode 100644 src/org/apache/logging/log4j/core/pattern/NamePatternConverter.java create mode 100644 src/org/apache/logging/log4j/core/pattern/NdcPatternConverter.java create mode 100644 src/org/apache/logging/log4j/core/pattern/PatternConverter.java create mode 100644 src/org/apache/logging/log4j/core/pattern/PatternFormatter.java create mode 100644 src/org/apache/logging/log4j/core/pattern/PatternParser.java create mode 100644 src/org/apache/logging/log4j/core/pattern/RegexReplacement.java create mode 100644 src/org/apache/logging/log4j/core/pattern/RegexReplacementConverter.java create mode 100644 src/org/apache/logging/log4j/core/pattern/RelativeTimePatternConverter.java create mode 100644 src/org/apache/logging/log4j/core/pattern/RootThrowablePatternConverter.java create mode 100644 src/org/apache/logging/log4j/core/pattern/SequenceNumberPatternConverter.java create mode 100644 src/org/apache/logging/log4j/core/pattern/StyleConverter.java create mode 100644 src/org/apache/logging/log4j/core/pattern/ThreadPatternConverter.java create mode 100644 src/org/apache/logging/log4j/core/pattern/ThrowablePatternConverter.java create mode 100644 src/org/apache/logging/log4j/core/pattern/UuidPatternConverter.java create mode 100644 src/org/apache/logging/log4j/core/selector/BasicContextSelector.java create mode 100644 src/org/apache/logging/log4j/core/selector/ClassLoaderContextSelector.java create mode 100644 src/org/apache/logging/log4j/core/selector/ContextSelector.java create mode 100644 src/org/apache/logging/log4j/core/selector/JndiContextSelector.java create mode 100644 src/org/apache/logging/log4j/core/selector/NamedContextSelector.java create mode 100644 src/org/apache/logging/log4j/core/tools/Generate.java create mode 100644 src/org/apache/logging/log4j/core/util/Assert.java create mode 100644 src/org/apache/logging/log4j/core/util/Booleans.java create mode 100644 src/org/apache/logging/log4j/core/util/Builder.java create mode 100644 src/org/apache/logging/log4j/core/util/BundleResourceLoader.java create mode 100644 src/org/apache/logging/log4j/core/util/CachedClock.java create mode 100644 src/org/apache/logging/log4j/core/util/Charsets.java create mode 100644 src/org/apache/logging/log4j/core/util/ClassLoaderResourceLoader.java create mode 100644 src/org/apache/logging/log4j/core/util/Clock.java create mode 100644 src/org/apache/logging/log4j/core/util/ClockFactory.java create mode 100644 src/org/apache/logging/log4j/core/util/Closer.java create mode 100644 src/org/apache/logging/log4j/core/util/CoarseCachedClock.java create mode 100644 src/org/apache/logging/log4j/core/util/Constants.java create mode 100644 src/org/apache/logging/log4j/core/util/CyclicBuffer.java create mode 100644 src/org/apache/logging/log4j/core/util/FileUtils.java create mode 100644 src/org/apache/logging/log4j/core/util/Integers.java create mode 100644 src/org/apache/logging/log4j/core/util/JndiCloser.java create mode 100644 src/org/apache/logging/log4j/core/util/KeyValuePair.java create mode 100644 src/org/apache/logging/log4j/core/util/Loader.java create mode 100644 src/org/apache/logging/log4j/core/util/NameUtil.java create mode 100644 src/org/apache/logging/log4j/core/util/NetUtils.java create mode 100644 src/org/apache/logging/log4j/core/util/OptionConverter.java create mode 100644 src/org/apache/logging/log4j/core/util/Patterns.java create mode 100644 src/org/apache/logging/log4j/core/util/ResourceLoader.java create mode 100644 src/org/apache/logging/log4j/core/util/SecretKeyProvider.java create mode 100644 src/org/apache/logging/log4j/core/util/SetUtils.java create mode 100644 src/org/apache/logging/log4j/core/util/SystemClock.java create mode 100644 src/org/apache/logging/log4j/core/util/Throwables.java create mode 100644 src/org/apache/logging/log4j/core/util/Transform.java create mode 100644 src/org/apache/logging/log4j/core/util/UuidUtil.java create mode 100644 src/org/apache/logging/log4j/message/AbstractMessageFactory.java create mode 100644 src/org/apache/logging/log4j/message/BasicThreadInformation.java create mode 100644 src/org/apache/logging/log4j/message/ExtendedThreadInformation.java create mode 100644 src/org/apache/logging/log4j/message/FormattedMessage.java create mode 100644 src/org/apache/logging/log4j/message/FormattedMessageFactory.java create mode 100644 src/org/apache/logging/log4j/message/LocalizedMessage.java create mode 100644 src/org/apache/logging/log4j/message/LocalizedMessageFactory.java create mode 100644 src/org/apache/logging/log4j/message/LoggerNameAwareMessage.java create mode 100644 src/org/apache/logging/log4j/message/MapMessage.java create mode 100644 src/org/apache/logging/log4j/message/Message.java create mode 100644 src/org/apache/logging/log4j/message/MessageFactory.java create mode 100644 src/org/apache/logging/log4j/message/MessageFormatMessage.java create mode 100644 src/org/apache/logging/log4j/message/MessageFormatMessageFactory.java create mode 100644 src/org/apache/logging/log4j/message/MultiformatMessage.java create mode 100644 src/org/apache/logging/log4j/message/ObjectMessage.java create mode 100644 src/org/apache/logging/log4j/message/ParameterizedMessage.java create mode 100644 src/org/apache/logging/log4j/message/ParameterizedMessageFactory.java create mode 100644 src/org/apache/logging/log4j/message/SimpleMessage.java create mode 100644 src/org/apache/logging/log4j/message/StringFormattedMessage.java create mode 100644 src/org/apache/logging/log4j/message/StringFormatterMessageFactory.java create mode 100644 src/org/apache/logging/log4j/message/StructuredDataId.java create mode 100644 src/org/apache/logging/log4j/message/StructuredDataMessage.java create mode 100644 src/org/apache/logging/log4j/message/ThreadDumpMessage.java create mode 100644 src/org/apache/logging/log4j/message/ThreadInformation.java create mode 100644 src/org/apache/logging/log4j/message/TimestampMessage.java create mode 100644 src/org/apache/logging/log4j/simple/SimpleLogger.java create mode 100644 src/org/apache/logging/log4j/simple/SimpleLoggerContext.java create mode 100644 src/org/apache/logging/log4j/simple/SimpleLoggerContextFactory.java create mode 100644 src/org/apache/logging/log4j/spi/AbstractLogger.java create mode 100644 src/org/apache/logging/log4j/spi/DefaultThreadContextMap.java create mode 100644 src/org/apache/logging/log4j/spi/DefaultThreadContextStack.java create mode 100644 src/org/apache/logging/log4j/spi/ExtendedLogger.java create mode 100644 src/org/apache/logging/log4j/spi/ExtendedLoggerWrapper.java create mode 100644 src/org/apache/logging/log4j/spi/LoggerContext.java create mode 100644 src/org/apache/logging/log4j/spi/LoggerContextFactory.java create mode 100644 src/org/apache/logging/log4j/spi/MutableThreadContextStack.java create mode 100644 src/org/apache/logging/log4j/spi/Provider.java create mode 100644 src/org/apache/logging/log4j/spi/StandardLevel.java create mode 100644 src/org/apache/logging/log4j/spi/ThreadContextMap.java create mode 100644 src/org/apache/logging/log4j/spi/ThreadContextStack.java create mode 100644 src/org/apache/logging/log4j/status/StatusConsoleListener.java create mode 100644 src/org/apache/logging/log4j/status/StatusData.java create mode 100644 src/org/apache/logging/log4j/status/StatusListener.java create mode 100644 src/org/apache/logging/log4j/status/StatusLogger.java create mode 100644 src/org/apache/logging/log4j/util/Activator.java create mode 100644 src/org/apache/logging/log4j/util/EnglishEnums.java create mode 100644 src/org/apache/logging/log4j/util/LoaderUtil.java create mode 100644 src/org/apache/logging/log4j/util/PropertiesUtil.java create mode 100644 src/org/apache/logging/log4j/util/ProviderUtil.java create mode 100644 src/org/apache/logging/log4j/util/Strings.java create mode 100644 src/org/jivesoftware/smack/AbstractConnectionClosedListener.java create mode 100644 src/org/jivesoftware/smack/AbstractConnectionListener.java create mode 100644 src/org/jivesoftware/smack/AbstractXMPPConnection.java create mode 100644 src/org/jivesoftware/smack/ConnectionConfiguration.java create mode 100644 src/org/jivesoftware/smack/ConnectionCreationListener.java create mode 100644 src/org/jivesoftware/smack/ConnectionListener.java create mode 100644 src/org/jivesoftware/smack/ExceptionCallback.java create mode 100644 src/org/jivesoftware/smack/Manager.java create mode 100644 src/org/jivesoftware/smack/MessageListener.java create mode 100644 src/org/jivesoftware/smack/PacketCollector.java create mode 100644 src/org/jivesoftware/smack/PacketListener.java create mode 100644 src/org/jivesoftware/smack/PresenceListener.java create mode 100644 src/org/jivesoftware/smack/ReconnectionManager.java create mode 100644 src/org/jivesoftware/smack/SASLAuthentication.java create mode 100644 src/org/jivesoftware/smack/SmackConfiguration.java create mode 100644 src/org/jivesoftware/smack/SmackException.java create mode 100644 src/org/jivesoftware/smack/SmackInitialization.java create mode 100644 src/org/jivesoftware/smack/StanzaListener.java create mode 100644 src/org/jivesoftware/smack/SynchronizationPoint.java create mode 100644 src/org/jivesoftware/smack/XMPPConnection.java create mode 100644 src/org/jivesoftware/smack/XMPPConnectionRegistry.java create mode 100644 src/org/jivesoftware/smack/XMPPException.java create mode 100644 src/org/jivesoftware/smack/compress/packet/Compress.java create mode 100644 src/org/jivesoftware/smack/compress/packet/Compressed.java create mode 100644 src/org/jivesoftware/smack/compression/Java7ZlibInputOutputStream.java create mode 100644 src/org/jivesoftware/smack/compression/XMPPInputOutputStream.java create mode 100644 src/org/jivesoftware/smack/debugger/AbstractDebugger.java create mode 100644 src/org/jivesoftware/smack/debugger/ConsoleDebugger.java create mode 100644 src/org/jivesoftware/smack/debugger/JulDebugger.java create mode 100644 src/org/jivesoftware/smack/debugger/ReflectionDebuggerFactory.java create mode 100644 src/org/jivesoftware/smack/debugger/SmackDebugger.java create mode 100644 src/org/jivesoftware/smack/debugger/SmackDebuggerFactory.java create mode 100644 src/org/jivesoftware/smack/filter/AbstractListFilter.java create mode 100644 src/org/jivesoftware/smack/filter/AndFilter.java create mode 100644 src/org/jivesoftware/smack/filter/FlexibleStanzaTypeFilter.java create mode 100644 src/org/jivesoftware/smack/filter/FromMatchesFilter.java create mode 100644 src/org/jivesoftware/smack/filter/IQReplyFilter.java create mode 100644 src/org/jivesoftware/smack/filter/IQResultReplyFilter.java create mode 100644 src/org/jivesoftware/smack/filter/IQTypeFilter.java create mode 100644 src/org/jivesoftware/smack/filter/MessageTypeFilter.java create mode 100644 src/org/jivesoftware/smack/filter/MessageWithBodiesFilter.java create mode 100644 src/org/jivesoftware/smack/filter/MessageWithSubjectFilter.java create mode 100644 src/org/jivesoftware/smack/filter/NotFilter.java create mode 100644 src/org/jivesoftware/smack/filter/OrFilter.java create mode 100644 src/org/jivesoftware/smack/filter/PacketExtensionFilter.java create mode 100644 src/org/jivesoftware/smack/filter/PacketFilter.java create mode 100644 src/org/jivesoftware/smack/filter/PacketIDFilter.java create mode 100644 src/org/jivesoftware/smack/filter/PacketTypeFilter.java create mode 100644 src/org/jivesoftware/smack/filter/PresenceTypeFilter.java create mode 100644 src/org/jivesoftware/smack/filter/StanzaExtensionFilter.java create mode 100644 src/org/jivesoftware/smack/filter/StanzaFilter.java create mode 100644 src/org/jivesoftware/smack/filter/StanzaIdFilter.java create mode 100644 src/org/jivesoftware/smack/filter/StanzaTypeFilter.java create mode 100644 src/org/jivesoftware/smack/filter/ThreadFilter.java create mode 100644 src/org/jivesoftware/smack/filter/ToFilter.java create mode 100644 src/org/jivesoftware/smack/initializer/SmackInitializer.java create mode 100644 src/org/jivesoftware/smack/initializer/UrlInitializer.java create mode 100644 src/org/jivesoftware/smack/initializer/VmArgInitializer.java create mode 100644 src/org/jivesoftware/smack/iqrequest/AbstractIqRequestHandler.java create mode 100644 src/org/jivesoftware/smack/iqrequest/IQRequestHandler.java create mode 100644 src/org/jivesoftware/smack/packet/AbstractError.java create mode 100644 src/org/jivesoftware/smack/packet/Bind.java create mode 100644 src/org/jivesoftware/smack/packet/DefaultExtensionElement.java create mode 100644 src/org/jivesoftware/smack/packet/Element.java create mode 100644 src/org/jivesoftware/smack/packet/EmptyResultIQ.java create mode 100644 src/org/jivesoftware/smack/packet/ErrorIQ.java create mode 100644 src/org/jivesoftware/smack/packet/ExtensionElement.java create mode 100644 src/org/jivesoftware/smack/packet/FullStreamElement.java create mode 100644 src/org/jivesoftware/smack/packet/IQ.java create mode 100644 src/org/jivesoftware/smack/packet/Mechanisms.java create mode 100644 src/org/jivesoftware/smack/packet/Message.java create mode 100644 src/org/jivesoftware/smack/packet/NamedElement.java create mode 100644 src/org/jivesoftware/smack/packet/Packet.java create mode 100644 src/org/jivesoftware/smack/packet/PacketExtension.java create mode 100644 src/org/jivesoftware/smack/packet/PlainStreamElement.java create mode 100644 src/org/jivesoftware/smack/packet/Presence.java create mode 100644 src/org/jivesoftware/smack/packet/Session.java create mode 100644 src/org/jivesoftware/smack/packet/SimpleIQ.java create mode 100644 src/org/jivesoftware/smack/packet/Stanza.java create mode 100644 src/org/jivesoftware/smack/packet/StartTls.java create mode 100644 src/org/jivesoftware/smack/packet/StreamError.java create mode 100644 src/org/jivesoftware/smack/packet/StreamOpen.java create mode 100644 src/org/jivesoftware/smack/packet/TopLevelStreamElement.java create mode 100644 src/org/jivesoftware/smack/packet/UnparsedIQ.java create mode 100644 src/org/jivesoftware/smack/packet/XMPPError.java create mode 100644 src/org/jivesoftware/smack/packet/id/StanzaIdUtil.java create mode 100644 src/org/jivesoftware/smack/parsing/ExceptionLoggingCallback.java create mode 100644 src/org/jivesoftware/smack/parsing/ExceptionThrowingCallback.java create mode 100644 src/org/jivesoftware/smack/parsing/ParsingExceptionCallback.java create mode 100644 src/org/jivesoftware/smack/parsing/UnparsablePacket.java create mode 100644 src/org/jivesoftware/smack/provider/AbstractProviderInfo.java create mode 100644 src/org/jivesoftware/smack/provider/BindIQProvider.java create mode 100644 src/org/jivesoftware/smack/provider/EmbeddedExtensionProvider.java create mode 100644 src/org/jivesoftware/smack/provider/ExtensionElementProvider.java create mode 100644 src/org/jivesoftware/smack/provider/ExtensionProviderInfo.java create mode 100644 src/org/jivesoftware/smack/provider/IQProvider.java create mode 100644 src/org/jivesoftware/smack/provider/IQProviderInfo.java create mode 100644 src/org/jivesoftware/smack/provider/IntrospectionProvider.java create mode 100644 src/org/jivesoftware/smack/provider/Provider.java create mode 100644 src/org/jivesoftware/smack/provider/ProviderFileLoader.java create mode 100644 src/org/jivesoftware/smack/provider/ProviderLoader.java create mode 100644 src/org/jivesoftware/smack/provider/ProviderManager.java create mode 100644 src/org/jivesoftware/smack/provider/StreamFeatureProviderInfo.java create mode 100644 src/org/jivesoftware/smack/proxy/DirectSocketFactory.java create mode 100644 src/org/jivesoftware/smack/proxy/HTTPProxySocketFactory.java create mode 100644 src/org/jivesoftware/smack/proxy/ProxyException.java create mode 100644 src/org/jivesoftware/smack/proxy/ProxyInfo.java create mode 100644 src/org/jivesoftware/smack/proxy/Socks4ProxySocketFactory.java create mode 100644 src/org/jivesoftware/smack/proxy/Socks5ProxySocketFactory.java create mode 100644 src/org/jivesoftware/smack/sasl/SASLAnonymous.java create mode 100644 src/org/jivesoftware/smack/sasl/SASLError.java create mode 100644 src/org/jivesoftware/smack/sasl/SASLErrorException.java create mode 100644 src/org/jivesoftware/smack/sasl/SASLMechanism.java create mode 100644 src/org/jivesoftware/smack/sasl/core/SASLXOauth2Mechanism.java create mode 100644 src/org/jivesoftware/smack/sasl/core/SCRAMSHA1Mechanism.java create mode 100644 src/org/jivesoftware/smack/sasl/packet/SaslStreamElements.java create mode 100644 src/org/jivesoftware/smack/util/ArrayBlockingQueueWithShutdown.java create mode 100644 src/org/jivesoftware/smack/util/Async.java create mode 100644 src/org/jivesoftware/smack/util/ByteUtils.java create mode 100644 src/org/jivesoftware/smack/util/DNSUtil.java create mode 100644 src/org/jivesoftware/smack/util/EventManger.java create mode 100644 src/org/jivesoftware/smack/util/FileUtils.java create mode 100644 src/org/jivesoftware/smack/util/LazyStringBuilder.java create mode 100644 src/org/jivesoftware/smack/util/MAC.java create mode 100644 src/org/jivesoftware/smack/util/MD5.java create mode 100644 src/org/jivesoftware/smack/util/MultiMap.java create mode 100644 src/org/jivesoftware/smack/util/NumberUtil.java create mode 100644 src/org/jivesoftware/smack/util/Objects.java create mode 100644 src/org/jivesoftware/smack/util/ObservableReader.java create mode 100644 src/org/jivesoftware/smack/util/ObservableWriter.java create mode 100644 src/org/jivesoftware/smack/util/PacketParserUtils.java create mode 100644 src/org/jivesoftware/smack/util/PacketUtil.java create mode 100644 src/org/jivesoftware/smack/util/ParserUtils.java create mode 100644 src/org/jivesoftware/smack/util/ReaderListener.java create mode 100644 src/org/jivesoftware/smack/util/SHA1.java create mode 100644 src/org/jivesoftware/smack/util/SmackExecutorThreadFactory.java create mode 100644 src/org/jivesoftware/smack/util/StringTransformer.java create mode 100644 src/org/jivesoftware/smack/util/StringUtils.java create mode 100644 src/org/jivesoftware/smack/util/TLSUtils.java create mode 100644 src/org/jivesoftware/smack/util/WriterListener.java create mode 100644 src/org/jivesoftware/smack/util/XmlStringBuilder.java create mode 100644 src/org/jivesoftware/smack/util/dns/DNSResolver.java create mode 100644 src/org/jivesoftware/smack/util/dns/HostAddress.java create mode 100644 src/org/jivesoftware/smack/util/dns/SRVRecord.java create mode 100644 src/org/jivesoftware/smack/util/stringencoder/Base32.java create mode 100644 src/org/jivesoftware/smack/util/stringencoder/Base64.java create mode 100644 src/org/jivesoftware/smack/util/stringencoder/Base64UrlSafeEncoder.java create mode 100644 src/org/jivesoftware/smack/util/stringencoder/StringEncoder.java create mode 100644 src/org/jxmpp/jid/BareJid.java create mode 100644 src/org/jxmpp/jid/DomainBareJid.java create mode 100644 src/org/jxmpp/jid/DomainFullJid.java create mode 100644 src/org/jxmpp/jid/FullJid.java create mode 100644 src/org/jxmpp/jid/Jid.java create mode 100644 src/org/jxmpp/jid/JidWithLocalpart.java create mode 100644 src/org/jxmpp/jid/JidWithResource.java create mode 100644 src/org/jxmpp/jid/impl/AbstractJid.java create mode 100644 src/org/jxmpp/jid/impl/DomainAndResourcepartJid.java create mode 100644 src/org/jxmpp/jid/impl/DomainpartJid.java create mode 100644 src/org/jxmpp/jid/impl/JidCreate.java create mode 100644 src/org/jxmpp/jid/impl/LocalAndDomainpartJid.java create mode 100644 src/org/jxmpp/jid/impl/LocalDomainAndResourcepartJid.java create mode 100644 src/org/jxmpp/jid/parts/Domainpart.java create mode 100644 src/org/jxmpp/jid/parts/Localpart.java create mode 100644 src/org/jxmpp/jid/parts/Part.java create mode 100644 src/org/jxmpp/jid/parts/Resourcepart.java create mode 100644 src/org/jxmpp/jid/util/JidUtil.java create mode 100644 src/org/jxmpp/stringprep/XmppStringPrepUtil.java create mode 100644 src/org/jxmpp/stringprep/XmppStringprep.java create mode 100644 src/org/jxmpp/stringprep/XmppStringprepException.java create mode 100644 src/org/jxmpp/stringprep/simple/SimpleXmppStringprep.java create mode 100644 src/org/jxmpp/util/XmppDateTime.java create mode 100644 src/org/jxmpp/util/XmppStringUtils.java create mode 100644 src/org/jxmpp/util/cache/Cache.java create mode 100644 src/org/jxmpp/util/cache/ExpirationCache.java create mode 100644 src/org/jxmpp/util/cache/LruCache.java create mode 100644 src/org/xmlpull/mxp1/MXParser.java create mode 100644 src/org/xmlpull/mxp1/MXParserCachingStrings.java create mode 100644 src/org/xmlpull/mxp1/MXParserFactory.java create mode 100644 src/org/xmlpull/mxp1/MXParserNonValidating.java create mode 100644 src/org/xmlpull/mxp1_serializer/MXSerializer.java create mode 100644 src/org/xmlpull/v1/XmlPullParser.java create mode 100644 src/org/xmlpull/v1/XmlPullParserException.java create mode 100644 src/org/xmlpull/v1/XmlPullParserFactory.java create mode 100644 src/org/xmlpull/v1/XmlSerializer.java create mode 100644 src/org/xmlpull/v1/builder/Iterable.java create mode 100644 src/org/xmlpull/v1/builder/XmlAttribute.java create mode 100644 src/org/xmlpull/v1/builder/XmlBuilderException.java create mode 100644 src/org/xmlpull/v1/builder/XmlCharacters.java create mode 100644 src/org/xmlpull/v1/builder/XmlComment.java create mode 100644 src/org/xmlpull/v1/builder/XmlContained.java create mode 100644 src/org/xmlpull/v1/builder/XmlContainer.java create mode 100644 src/org/xmlpull/v1/builder/XmlDoctype.java create mode 100644 src/org/xmlpull/v1/builder/XmlDocument.java create mode 100644 src/org/xmlpull/v1/builder/XmlElement.java create mode 100644 src/org/xmlpull/v1/builder/XmlInfosetBuilder.java create mode 100644 src/org/xmlpull/v1/builder/XmlNamespace.java create mode 100644 src/org/xmlpull/v1/builder/XmlNotation.java create mode 100644 src/org/xmlpull/v1/builder/XmlProcessingInstruction.java create mode 100644 src/org/xmlpull/v1/builder/XmlSerializable.java create mode 100644 src/org/xmlpull/v1/builder/XmlUnexpandedEntityReference.java create mode 100644 src/org/xmlpull/v1/builder/XmlUnparsedEntity.java create mode 100644 src/org/xmlpull/v1/builder/adapter/XmlAttributeAdapter.java create mode 100644 src/org/xmlpull/v1/builder/adapter/XmlDocumentAdapter.java create mode 100644 src/org/xmlpull/v1/builder/adapter/XmlElementAdapter.java create mode 100644 src/org/xmlpull/v1/builder/impl/XmlAttributeImpl.java create mode 100644 src/org/xmlpull/v1/builder/impl/XmlCommentImpl.java create mode 100644 src/org/xmlpull/v1/builder/impl/XmlDocumentImpl.java create mode 100644 src/org/xmlpull/v1/builder/impl/XmlElementImpl.java create mode 100644 src/org/xmlpull/v1/builder/impl/XmlInfosetBuilderImpl.java create mode 100644 src/org/xmlpull/v1/builder/impl/XmlNamespaceImpl.java create mode 100644 src/org/xmlpull/v1/dom2_builder/DOM2XmlPullBuilder.java create mode 100644 src/org/xmlpull/v1/parser_pool/XmlPullParserPool.java create mode 100644 src/org/xmlpull/v1/sax2/Driver.java create mode 100644 src/org/xmlpull/v1/util/XmlPullUtil.java create mode 100644 src/org/xmlpull/v1/wrapper/XmlPullParserWrapper.java create mode 100644 src/org/xmlpull/v1/wrapper/XmlPullWrapperFactory.java create mode 100644 src/org/xmlpull/v1/wrapper/XmlSerializerWrapper.java create mode 100644 src/org/xmlpull/v1/wrapper/classic/StaticXmlPullParserWrapper.java create mode 100644 src/org/xmlpull/v1/wrapper/classic/StaticXmlSerializerWrapper.java create mode 100644 src/org/xmlpull/v1/wrapper/classic/XmlPullParserDelegate.java create mode 100644 src/org/xmlpull/v1/wrapper/classic/XmlSerializerDelegate.java create mode 100644 src/org/yaml/snakeyaml/Dumper.java create mode 100644 src/org/yaml/snakeyaml/DumperOptions.java create mode 100644 src/org/yaml/snakeyaml/JavaBeanDumper.java create mode 100644 src/org/yaml/snakeyaml/JavaBeanLoader.java create mode 100644 src/org/yaml/snakeyaml/Loader.java create mode 100644 src/org/yaml/snakeyaml/LoaderOptions.java create mode 100644 src/org/yaml/snakeyaml/TypeDescription.java create mode 100644 src/org/yaml/snakeyaml/Yaml.java create mode 100644 src/org/yaml/snakeyaml/composer/Composer.java create mode 100644 src/org/yaml/snakeyaml/composer/ComposerException.java create mode 100644 src/org/yaml/snakeyaml/constructor/AbstractConstruct.java create mode 100644 src/org/yaml/snakeyaml/constructor/BaseConstructor.java create mode 100644 src/org/yaml/snakeyaml/constructor/Construct.java create mode 100644 src/org/yaml/snakeyaml/constructor/Constructor.java create mode 100644 src/org/yaml/snakeyaml/constructor/ConstructorException.java create mode 100644 src/org/yaml/snakeyaml/constructor/CustomClassLoaderConstructor.java create mode 100644 src/org/yaml/snakeyaml/constructor/SafeConstructor.java create mode 100644 src/org/yaml/snakeyaml/emitter/Emitable.java create mode 100644 src/org/yaml/snakeyaml/emitter/Emitter.java create mode 100644 src/org/yaml/snakeyaml/emitter/EmitterException.java create mode 100644 src/org/yaml/snakeyaml/emitter/EmitterState.java create mode 100644 src/org/yaml/snakeyaml/emitter/ScalarAnalysis.java create mode 100644 src/org/yaml/snakeyaml/error/Mark.java create mode 100644 src/org/yaml/snakeyaml/error/MarkedYAMLException.java create mode 100644 src/org/yaml/snakeyaml/error/YAMLException.java create mode 100644 src/org/yaml/snakeyaml/events/AliasEvent.java create mode 100644 src/org/yaml/snakeyaml/events/CollectionEndEvent.java create mode 100644 src/org/yaml/snakeyaml/events/CollectionStartEvent.java create mode 100644 src/org/yaml/snakeyaml/events/DocumentEndEvent.java create mode 100644 src/org/yaml/snakeyaml/events/DocumentStartEvent.java create mode 100644 src/org/yaml/snakeyaml/events/Event.java create mode 100644 src/org/yaml/snakeyaml/events/ImplicitTuple.java create mode 100644 src/org/yaml/snakeyaml/events/MappingEndEvent.java create mode 100644 src/org/yaml/snakeyaml/events/MappingStartEvent.java create mode 100644 src/org/yaml/snakeyaml/events/NodeEvent.java create mode 100644 src/org/yaml/snakeyaml/events/ScalarEvent.java create mode 100644 src/org/yaml/snakeyaml/events/SequenceEndEvent.java create mode 100644 src/org/yaml/snakeyaml/events/SequenceStartEvent.java create mode 100644 src/org/yaml/snakeyaml/events/StreamEndEvent.java create mode 100644 src/org/yaml/snakeyaml/events/StreamStartEvent.java create mode 100644 src/org/yaml/snakeyaml/extensions/compactnotation/CompactConstructor.java create mode 100644 src/org/yaml/snakeyaml/extensions/compactnotation/CompactData.java create mode 100644 src/org/yaml/snakeyaml/extensions/compactnotation/PackageCompactConstructor.java create mode 100644 src/org/yaml/snakeyaml/external/biz/base64Coder/Base64Coder.java create mode 100644 src/org/yaml/snakeyaml/external/com/google/gdata/util/common/base/Escaper.java create mode 100644 src/org/yaml/snakeyaml/external/com/google/gdata/util/common/base/PercentEscaper.java create mode 100644 src/org/yaml/snakeyaml/external/com/google/gdata/util/common/base/UnicodeEscaper.java create mode 100644 src/org/yaml/snakeyaml/introspector/BeanAccess.java create mode 100644 src/org/yaml/snakeyaml/introspector/FieldProperty.java create mode 100644 src/org/yaml/snakeyaml/introspector/GenericProperty.java create mode 100644 src/org/yaml/snakeyaml/introspector/MethodProperty.java create mode 100644 src/org/yaml/snakeyaml/introspector/MissingProperty.java create mode 100644 src/org/yaml/snakeyaml/introspector/Property.java create mode 100644 src/org/yaml/snakeyaml/introspector/PropertyUtils.java create mode 100644 src/org/yaml/snakeyaml/nodes/AnchorNode.java create mode 100644 src/org/yaml/snakeyaml/nodes/CollectionNode.java create mode 100644 src/org/yaml/snakeyaml/nodes/MappingNode.java create mode 100644 src/org/yaml/snakeyaml/nodes/Node.java create mode 100644 src/org/yaml/snakeyaml/nodes/NodeId.java create mode 100644 src/org/yaml/snakeyaml/nodes/NodeTuple.java create mode 100644 src/org/yaml/snakeyaml/nodes/ScalarNode.java create mode 100644 src/org/yaml/snakeyaml/nodes/SequenceNode.java create mode 100644 src/org/yaml/snakeyaml/nodes/Tag.java create mode 100644 src/org/yaml/snakeyaml/parser/Parser.java create mode 100644 src/org/yaml/snakeyaml/parser/ParserException.java create mode 100644 src/org/yaml/snakeyaml/parser/ParserImpl.java create mode 100644 src/org/yaml/snakeyaml/parser/Production.java create mode 100644 src/org/yaml/snakeyaml/parser/VersionTagsTuple.java create mode 100644 src/org/yaml/snakeyaml/reader/ReaderException.java create mode 100644 src/org/yaml/snakeyaml/reader/StreamReader.java create mode 100644 src/org/yaml/snakeyaml/reader/UnicodeReader.java create mode 100644 src/org/yaml/snakeyaml/representer/BaseRepresenter.java create mode 100644 src/org/yaml/snakeyaml/representer/Represent.java create mode 100644 src/org/yaml/snakeyaml/representer/Representer.java create mode 100644 src/org/yaml/snakeyaml/representer/SafeRepresenter.java create mode 100644 src/org/yaml/snakeyaml/resolver/Resolver.java create mode 100644 src/org/yaml/snakeyaml/resolver/ResolverTuple.java create mode 100644 src/org/yaml/snakeyaml/scanner/Constant.java create mode 100644 src/org/yaml/snakeyaml/scanner/Scanner.java create mode 100644 src/org/yaml/snakeyaml/scanner/ScannerException.java create mode 100644 src/org/yaml/snakeyaml/scanner/ScannerImpl.java create mode 100644 src/org/yaml/snakeyaml/scanner/SimpleKey.java create mode 100644 src/org/yaml/snakeyaml/serializer/Serializer.java create mode 100644 src/org/yaml/snakeyaml/serializer/SerializerException.java create mode 100644 src/org/yaml/snakeyaml/tokens/AliasToken.java create mode 100644 src/org/yaml/snakeyaml/tokens/AnchorToken.java create mode 100644 src/org/yaml/snakeyaml/tokens/BlockEndToken.java create mode 100644 src/org/yaml/snakeyaml/tokens/BlockEntryToken.java create mode 100644 src/org/yaml/snakeyaml/tokens/BlockMappingStartToken.java create mode 100644 src/org/yaml/snakeyaml/tokens/BlockSequenceStartToken.java create mode 100644 src/org/yaml/snakeyaml/tokens/DirectiveToken.java create mode 100644 src/org/yaml/snakeyaml/tokens/DocumentEndToken.java create mode 100644 src/org/yaml/snakeyaml/tokens/DocumentStartToken.java create mode 100644 src/org/yaml/snakeyaml/tokens/FlowEntryToken.java create mode 100644 src/org/yaml/snakeyaml/tokens/FlowMappingEndToken.java create mode 100644 src/org/yaml/snakeyaml/tokens/FlowMappingStartToken.java create mode 100644 src/org/yaml/snakeyaml/tokens/FlowSequenceEndToken.java create mode 100644 src/org/yaml/snakeyaml/tokens/FlowSequenceStartToken.java create mode 100644 src/org/yaml/snakeyaml/tokens/KeyToken.java create mode 100644 src/org/yaml/snakeyaml/tokens/ScalarToken.java create mode 100644 src/org/yaml/snakeyaml/tokens/StreamEndToken.java create mode 100644 src/org/yaml/snakeyaml/tokens/StreamStartToken.java create mode 100644 src/org/yaml/snakeyaml/tokens/TagToken.java create mode 100644 src/org/yaml/snakeyaml/tokens/TagTuple.java create mode 100644 src/org/yaml/snakeyaml/tokens/Token.java create mode 100644 src/org/yaml/snakeyaml/tokens/ValueToken.java create mode 100644 src/org/yaml/snakeyaml/util/ArrayStack.java create mode 100644 src/org/yaml/snakeyaml/util/UriEncoder.java create mode 100644 src/prismarine.png diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..afc0f2b --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +cfr.jar \ No newline at end of file diff --git a/Readme.md b/Readme.md new file mode 100644 index 0000000..f2874b1 --- /dev/null +++ b/Readme.md @@ -0,0 +1,5 @@ +decompiled SkaiaCraft launcher with personal tweaks and bugfixes + +## Disclaimer +* Decompiled with [CFR](http://www.benf.org/other/cfr/) + * Made easier with [My CFR Helper](https://github.com/Merith-TK/cfr) \ No newline at end of file diff --git a/skaiacraft_v3.jar b/skaiacraft_v3.jar new file mode 100644 index 0000000000000000000000000000000000000000..74d2af1b1775afc7739ae141fbe78bca70076469 GIT binary patch literal 5612941 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%0DAQ0jaF*)LwT9klde-a!fd^ka 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

-q>#bvPE0ElW9GS8FCV)x8r4E5|VuGr35WS+7 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

gPQCe-) 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

JmwkRGBw(a@C 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%0Ad8}luHEhNKL=uSU`tM9=% znaIcAXr>`OPP7)D0iU&>*-)w!0bgy)m&G>+YLA4S@9K_sX3egtKdj;#Is2KGC$pUx zItGap_egCJS1Ke<`};ipEir8o!+!qbt4^W+O5Xkl4D+A1h`h99@0Vdx`^Xl|Eay+U z^`lk#mwXA7B(jw#gy2=&t{S8h*<#KFVitbv_s4E^<8MVG8SBFf^B4d+HYW7HEaTzj z4rH=h1c9uK{hRFp6N=pjW`<6%e4F={)LD?u_<|xFnDZ1SRUfRhvcNa{3{+u_J|{Q` z|Cxj&?}RclP#+JxMaM^l3myrKAud26qzV6q1o00G&oAK%sbX~sEeT>$?aWvEZN4Be zTGyq+P@%b1+<+ZuS+LPA+5Wh03zkd>tYYD_(AA%lMPj+`D_PfTgPp%@#5AD-*XMFXc6;xnb8vpP_{Evz4UH2g_j9}_!e2XJN14E{ zZdA^?WzxMnJxX#DGvAireWHrhh~d?Y3WLgup#PmGCFm(yRzSe4;>LyJz&7iY)TE%6 z0Ps!Fl_Edrl~5LmUu^bXY41tmIopOJJkEjVV*Jl70a5)HAafFVy6KD|PRE5w4Mc~k z0LI_wG&n0dWiX=&_Acy%YFDb1%oX_9pNeqanJB&36qD=(M)Wy=iRFexW6AjFqp`?6 z(%kt@;MUaaaRM+Ud#oRotd^UPR!h&qyvE1JX>h4)tsW@cA%@$+lj9$&U1!m5}}ZXGobG21d#Tm6Xb^#vVp2##@xM9Kd-BeDF) zNTU+HUmESP1OI|jk74vnmzu3ArN2Tp0&1DVwp9w;xfm0$xQ5qAICZx_{+4L4vmUyz zmcdrX#9A+}{o(2BE^-$soCHPIf$m^8o#3?wRk9PtiS%bOeG|GJ>wSPJ&3qj%2Oi@R zFE1ht>Mtr=_Q(Mu&%NEKsFX@zya*Q>>2{EF2QuU@B!No=H=+NHr1zhq8%n396g(2d zJ%-g&{V)QOcySG9t6)Q0L=oxqDOk(|ivZr`FiA;(PZ3(RMlI67x)3E1BDl2{E z$n#!Q@|bxkdqvW>DK_N-L^4FcUt!We(c&*{%Nx{9_@v7(Kxtkm?P-{>&Fkj$9{imG zTFDCo&v4IZzsTayi@$H1f5$tuZpC~Q34eh*-FyM-RR?k6VLB4i z_petGB;MQi4+>kh2f02$w1d-gp8r6J8YliQC}sG21nfxv7nFwo-%uj^7nF!nLcX9R z_`jfpYEp3f&rtIJ3rc%{OnRj0ri*_;2~3B|=nG2b0#jnNda`R^ZX%B9w%N+DZ9aDb z@lhw-(G&A!FvyMpvF?JHSgu&KI7|+ono1pm_1tdR&n)%76B&*Q?-+-qET$Afm(f!& ztuixkYn`ha%X*1^<-u)1vOU`+tS;qAWm=wget)aNY*~Zp=1$r;GgGjr31h)Bm0={M$rdENioBD4sKod4y1C?!Y414%MLb zzFV4z-3Y8!bxQVAnG<1yY%`tKv zw_CqGfo+vCo3$TJFm10MWo8Uo{Rgsu~Bj2FxW3CpuEAGb=+BKk!*!VTQ-5>jAfzU&OIO zt#3TYR<}yBYA<`G9V}Osuzj{qF-{KmsNH8+3F6*Qkxo5-4@|6Cve6pc+_N$Jqgh`k zyYPV>STlAav(EZ16Pgqw+(6jDzB-bv|NKy@dkh*lE>BXeM_;CdVZ76e%2sBxrBqO6 zM=?-e=wz)HPLYl+=tE&u*o;`|o7zWoqEl$N{D`B{irl-Jh)EuptTA|>UQpf=D6^W4 zWZhbEnA)-1tW?wkA$vgo^SRv+JVs(XjG4!e}pxXd6m}U! zfCPX!32g3Wxr3_E<2u$aTq%(h8QDQah>zb+1|Z~f(-!c_j>Na*39OsH(lXmus%CMZ zC;_*&94!mfVRlurqTV7R)xIR}-#krS8{j{7tq-0F?K3XCLU2`q$23BoJ4Kqkk19kFm4j*S zVPXDThWeTdY=TP zEIdvXnN0Y(*&-(+q!5yaF!DEiDT3}KjK5|o7XQe^`!$*Vrf+RYZ)|OCY+*?M_1Dtc zie4X}Z(>OQZ}>`?+B+Cp{ih`uFZWlFMM*2KufD$B8ZXVlbLfvvl9S_)2J>&&>(E|k zB3&jwCi`HA|M=z=_k>05ix%=bIeD-xec9vF#RJ$T;QU+a_Xd!bJ+Oi-jeVfPz~BM_ zBO!Gwl3CxhIf);boR4d=4TVVNZj`W$u|ZK1Xb)sX^sBP_Vwv2wpMiM z#G6XVP-pZ-6`n9RBQE{?gOV1F^dBi9#ws{nAAY3xH|z4chmW;fKtQx(5hl=OS>tZ; z%Fwtfzi7HN{Ivgs5!N~mz;695h=PEydI$2AXB>Zh|IaD=KZ&INzaH<`$ofA+>v%=& zuMq?r)ozz)_cTNsU@f6(<5gAtQG?-?$}VbU-npFNq%oa8)U|*EE@;xK9Hc3Lp9s?$*r)F$7C-kYg~i}@Fu&X zwOseAc zlPR}!QrG%$ZmV@u4YHWwpek{?kJ;BvUn9s_l0yb=th_+zXTNTHUMh)T8vZut!Z3Yj zU)6Qj2nd<>PX^p>u)kj7Hl24i5f~hWX#%J&PLkwUj-g%Vk`-;-Hxm#E#98yLcc$*- z3unPh@l7sc%0SH%b-Q0k)3(UhZgDsS&6B;mG{w|9v?A*NQ{@-vcR>j{;h4iqdj|e(arm33WP2ekFw-Nx$H1Js@dhWRE2} zeQpD8{Re?P<7Ba*lqcXf`2ptD6(zj0265www2Vvc!#gd{_m2RI60JoEHLK!hzuy7(tB^Sn+6Soge#UfO4#Ek88U}zb@|95 ze70>k)al=YWl9&Qa}S3a-Wwc8)){Q~1AK>ZONX4Fsk50=T3;S3&C!+CJ&xU|5Nh57 z0&yMny4b3HLLiYBrL;shgubULE$undDzg}kb}=Kbx=iSj4lxV%o=K6J_dW77GwUFK>NU^_nTf-oFl#6&z|58$(!5# zi8F@?cK*Z6CJzd99qZfr9Bv(%;vMZ4*!vfWF7a?b`NckR?FHKlxy$bP}fy^I&l~gI( zP-)sgfJIxbDA_!Ez;Y>)Ef}9G%t#`LKpp@1>UJo1IA4sRJy2n8z$<5{Ew!nDsB4Ib~Rb=52+Nx7zr z=zZxfU-#5a%_CoVzZQ1*9F4~1kVMPRkE5BV+_s}_p>GSmk(MU1FD$BRgi6`rOud5%KIk&|R@A zl0QnFc#%FwE=h`VLGfG*3>_FzrO&g0=#mcX{kQ&A#~hcgpG?`}yDd54=SnLui8?NM(&FSZj>lO+#(45Z!G! z)Ex_TOjcP=>S#JH^iS2$H>b=wYMp0CxVjPVSVv&xhvNlMv)B*KQ2RWukXJu z*(8v2lx=As%~92}&QN9^_nR*cZ;0u&h~qTIOmkVu?zRdx{Pc21;g8a+(+7Kj7 z3BG&}=^sa$jQ@Avld*O%H8Rx)IG9>n{mcEnCYp*UqA0w*d`6hy_@y}}EZqp&Xg1xt zNFc#YIs7_MEr=|^y$m$Ot<0wvG-ey|zYx8Aen}}Spmz6_^tnqYdn!;>&hp0kXfGg9 z9u1za7EYf3wu1M1yS=6VCbMl0YuPj%=9h##-WHJBl)ppF_^c)flUdYMPUwS8g~oz4 zjyt7mruK)lKvJ)TJMqP6EOsvxv!< zlrl7^pXVB;CM%S3a4a(OY>^5FHy@y-Uuwhg7L>Xd5S=R3tJT27tTMfyPQrGftt?g1J`7M z-d)?=2vstEk1^Xay9Qk)s)VI|>k>C7LT1xAuDnEVM^Yf_g6Lj3F4~$Irc=xVsB)%O z8WSc>HmcE%J{M+vrDv#574_mWRl467WvUJ7?(fpiDtZ&J;hD==Vii7?Ps0B4gN}m2 zD`lFrsSCoIV%NIB{pl#L&qyFEnD#2zZOFK=4mH$f#l)qTk> zx(*IGWxEJ)r!K&O%1RC{y6?^wqH$ai+tRp~TiT%HY*za%ip2>MR>=bCbn1q#S4SSR zRKY$WCBE&jbW(%AG32UCcJVGwG5WkCMln>o<7KateSz;yxqsC|hoT*OMc5(^p>uWg zsgAv>@otX1v`NtJV{P>N%2zX~jwBp&g*rtMqz@fHG4|g|$1n61Z5=_& zz124TAd?JXZ!RxXom;wi!IsY&x$M8287<|C^K8@QbhS<b}Xe)MXa zQVs$5)4qfu`5E-|NVwX>0w?Cwa*0rNT3&r8&Vi=$&6&_!5~7K@( zc;`Yo6Q!)_y@voUiNOP^>&Ae_ucn0w*3Z31POib9Z?hfx^e8i%_t{GY7W1bh89u$eXoKGTbx`#W<9=|W5-GSLh zaHl(?l^FXs%k0FT6I+R>3Ot}wP!ORu-wA@KOd*%PBlantZCAqd zj;cYqCSpK;{@{mNXmuIDDl-;tpXZaY4{cy#ny=WX|D``AbI7Uyx8ij1_7;(Wr$W3(?zK6IKwF9?Ua_!mMJ!pl+8nw+NFWaz_TmZ6gzb7v$m8tCeR~&t>c-1~KB=Pq5)ws+VbHwF&(Ov)<*BUo zn_U;FtvBb(8%QNFe0kKPX%QD9n-kj4Fv$0bx73H*b+4jGNA5|y9EQQy_xrg-S(W$o zGYyr;kZ?&Lnf+v?*5ZhszJZ!9(}gXF3J=G1nD;tV=Dig_U<8?b4eIG#^CQ86tYcP6 zNp&P2{kW@xoeZy8zXGkf;8CBau@#ow#81*V{|8Q8jO6kE(F8IUGG^A=vtN~J-6i1 zN=Tzyb!-7y%eL^flfKgCwK!G_?Ki|mvVij8V|PaDdI0KePWYPxpiRvr_X_xhx%&f` zm%gL1PuBY54Yhp}?xFq9E%tR8O(1;J6G4J*FqB9ilSn^rTt5_l7Ts z>vl(YJ3cls=E+?9{O~@D{*BlrFBcSfe9A^UM4Zyc%l98yt2t{8(D@HFZ8xYE!>KkUJ0)?p&pRN4wpZuwT`2L-{ zH5$R+gli7tA-Ea`A=o#L(fS;DCp6`ifjJ`C$PMO;WSB_B?r!nA1Ju)`<)Evmp{en# zh%~pXfjqdNlRFbs@D`?`6GE1~aE389IAFUKry;rn+W?B8R4O%{ewyDp%ZOyfsFSR; zR+bR8YS0$H;syr642f*@=rMNC3iAS#_%c0-%0pyhnwVIm)nxjZGGa*d-`;FX9}7W}|^WmeCWg%o`48)E6&d+wQ#BY@0f!gp6W#V*9ZgGw5x8`A^Sa+~qW4 zs_9K6n9{y#YsEc-$pDsqvai70?dJJ>uQR2@N(pSFD^GBwhX!BJqxO0 z?&(Fu3$CK>xq$dhbQXSP@@J5U2M_S;4><~6{G{l%cg^lydXFgsObnZN!`)Fbyl(Qx zV^BLObpSI7HYL~=2GO!GUr3L-!MFVMTr(Eyv_b!(1)h|tpGj-{Jhgs8pIvlV8*}m0 z#dhTL`NQva;#x}kc}6j4g$n90qW-_4X(uN`H# z86BhFUQ|FIXL#TUvn%-cHNWBH$PpgUrGq-0%;uE{k*{6K72<~L#+C80=))w6VHZwj zh5R;79BvWF3|LZxRZXQlPB~!+tiyuN%}o`{J_P@(c!JYfb>a9zcAWL&xC`_D zQjV-VeriGYbQgqtDF~cuM7gu{e~ln&66WnFwc(DhJLhsbZki7zaB{ikb^kSJ$z`=@ z8;I@fCLge_GuEZe<(b8DF=g90BRcb&p$PBsYNu^oAKAh_~d7I71QDq~nYMgE=HA({&3gMnPNVXCzXaeCCj`KF>Cxx z%`umYIj27XS2UH>(ZqS7u?i|=^_CvL=EkD5D=m&KHj2vPQ9gM|WTv5x_q}Rk`dAFg zzOLLApS$&`7(W`XtZ!t`Q$k?;Qzf3h`D8%gr;jChl_u+C29Y3RQX?v-+=(&aMHUY| zuP__!jVK#s;u5LkMbP1**PuF_?c0X&6#v2eWxl+mh! z4Y3UFFSnv@8AEeQ*ti&6RcA0F(aWE;H#0W}y&#QtsW7;iQ7y6KE}gNWD1i*?4p;ug z)DhHhAC5A!XYWr_Y?bxGJGY*3CM#T4kVJGFd0^p_!yYBD(q+ejsTL3l%d$fR{93iy zMGEDH01iXb69@~lo#hj`l?w*9O$aP$lkJnAC2apg&5?rC18iZ72^gMw+I-q-i$Mjm zXiyIr7HTm>83*E%{QFtlqpEX9geVM82=Q5u{S95x<99`J3SRTUl@B4Z1@mxD8f&SC z!CYqK;juBT?f!}yh?yWEE;N8tKsfnGrm6g16W^zpeY0kOkc*jCs z%8(-U;N0qobn3EjsAdgwu?>%hJ<;vg4dnO(L~Sbv!*?Gub6x@IxbU zj?qZi^{|!^yE<{8L`biYtAS9gF*8k5)eSGVGmGvrmzvhS)$gU|G^%i;&Xg`is!|Pd z2=w5R!Im6__#+)2!s46CD{bL{fc%7MY2CC8oD_|a;L!f~G}hugJMLmKmk&-sZ_|P* z$uhAt$Y8eqGLBq1W*;B@_`DiLMuS*IWx&kC=0=2;+bs2FEWbAU?hWsPz9reFve~oK zUbhmf+S3NY0UbQL&E&O!O9>W)7QUk3fDR}2nPYJ{y>je`4z{IxF_vq2JZa}qdM+fq{AQHMsY~%7(e_sk1(NG?Uq_6Oh#SA5O7@x{$9X}D zrC{ZVDthWZFBp42PpIKeSVMjfLYdepmD8D{@s=CS8s8 zPbK`OIh=k=xKmEux&Ef-wEWIf?*vfvon4yRJGA%$(+DBXJ**V7Kn_+nRuqb1S)S}X zY}Sc4v27sSgV@RWt>CxED_yx)i`XpOThJ~}xf~`S?sv2?ws@8C8fm)p@4g=Q zk``UHPaqkB?4JIfX?YEsHQ^b9R&Nn*zqV9+@r&+3ar#1CK)m))pNu7b2P1t*R3tvX zV(WBoUbE>ScK_(}SMBfmk&jY2Z1E;}u)B#g;AKF$NcN_xaowU7z;5zk!MOR>V-sekL0r2@VPGavI(GQoG)cPXgY5w&SLRy( zazpUVlLCn>p+Fj4rMzrHq9q@bK7?>Bb3l|o9jgz7W2~xR`5Tw|F10+tayzJs*{MC28?h_XClLrChd#$E&F{;H`CLdD04pBk zD310*#5t(64QDz2yf*)s#;rQ_ri`96K!l?{PVS9$nc92WY+EA(X(YdR4n4avtGouX&BA=EZ-xF9h&Bo3+J(VrXPt8$Y>9G^AypdE zpG4u~L{o~G<0Lx6qA1KH^8KQ1&upb7(%G&m72TM08FZkxnvNbgH$ zT;Y8jI%asi1^HJM`zX(n^3J6El>1_#b-+v)kB(4hLbjR;pr&s5Au&pF-3F75*(LO; z8dMXqzvgj|l(*@Tz00<3+qP}nwzbQ)ZQHhuUAA}G_Fw1gbGjq`+vkh! zdoxyMu87RYh+Hw(h&jjmykml_IayKK?U&1E6tAP)?6Cv6_fF5Ra#Hr@e@-3)zjIN` ztvn8t=I%B;4S1tDf_a4!Kw)HhT2GqW%?HSQTg!|zh+ z7ftR597YC2?t&9C!cotOcvksoi~S1tT9Ds@0%Sd_)y?}n*~xl^TVwm9+8%3{t{*=LN2>$Q0z)q%l_5DXDQ+>QgX_=G*^kQ zAE(g)$v;!R^aiY3pH?G?(DB~Qky+QM)V;4nj^95;68K8M zkM{fX{{|cR=P&UaI667#8#)P?OY7VHrw13w57AEtC;VmBqydQ{yCVR{3ex2l?hk3d z`@JiQg=D&zB6lVv>`vYwdG!YSz+?{WudTBWHvlyP82I2&u(`2KiXzvxxxhJ!2WMjC zu4&j?4%!24gka5z$h)>FnD*{g$Izep#aiSHM+^nPIYkXr!)D46xWh*LKk&CSD=MPm zwk&1EFzV@ko9v~cybGm%f=dlYTJCCE+tfnN>O;>SZXSiP2}VhJ{DseWTpb2geE-Ya z@8`e24*zD)(f{^3{I%JrqOsF|aUNMJ){5&Qa6Z$tqb@>r;IYNz3*uQjEe2bsB=kja z0MZr-h0I0JC+q6nV188c;>E_Vl54!PHAca5YiWN#4@8~YNjc>Le*fe$+_Z4LYTG<= zxw=2i>Cpj59aO;rOpS|)K|~w0!XkVo@^hs}9qgnTdyh!8BU(?i7O(Ngu)Z0CQcNe)Gv;e|xDg_QN_?q2#~3;q(|X&LShuNJ z>dPjqTMyb5OOql69d+s%2{Bc-iVdr{yD6#l<%47$FQx5VyYbZoit^Zt$G}fK!$}rQ z>|VO6zFEz?)@E@_*ZLS^v8)Gaz%;)1uYJ=o7oR8RbJ!p)0^?Qk`DUlxLMY0` z15Jo-#T#xPxjuOXIn_MBTA*z5S>?)!GF7i+g$*Yl+w;O^tX+hatOe-uvV)sSWwaGJ z`r!O<=|rVe1&e-#IKga;6E5aaIX1{R2&-VppNIW)K1+w_Br`blO_{_##cjKh=Sz=c z0&8Q8PZ5=ZQ_Wm9YPZJ_6z9yr_u?xYuEIBUgk}x{*HD@=vSw!j>xC4_-mHo0kUtVk zb9`3B2yJ_M`tq9F&`d|OlOglm3980anWdp*F@d+sW!$~S9IK=Fv5vwz3q7?7f%4Y6<-~fceM(4Iv1jprL+Q!l> z$T5(6V&%qRWHZ6P>JB)!mu``k`NQ=yJs#fD_BsTif*pSHJ+qhfi_JHH-YQJ&f{c|X z&V^*4717TZjlIq;v;dL$9gPuK&u!ocbd2mkeECIW`$o9zKrr}t@o{hvtkp{41EF8h z0!=)^ja?9~Z9D!TmQ^_aaia@Ab>$N2DR%H=zspJ%w+#>eR1w!R_ePXigT0dvMfpYg zDxfxv+lDCSfNKjM4ZCI?igXKlOnd&CHf~f+D1tAIH&$$yByE_QL^ooS*KZ?O%iyvS znPXOt?LaC|9%bnNyL^^STwzr9bClBanA!Q5Sy*SD$8UGnk9`UMXyAZ*uXAB_l5qOT z{)FwQP0=3bSFa1O@z%W(th}oV@*$MO>fMpQw)(7Cg*o*pP6chXLlFw%RtX} zf}0&qPjRfUI+qDD)}X67R)40ORsuckAS43?M0{&rZuk%rLM!>gb_tz7F>p(5WvsIF zaCoFLdW-RfzL<*jwztL+Pe8lT`bL#n`;mRjPbhnuM4<|N>=+MCy?lg)$@LYdjj*7G@rYU8jzow|HMAOTADEaW{> zQ;jbcmYx9}maoCW@q)}FvsJ;D>3iG=5(GbkBLLrKrsM$jH)CaSe+6P=)sS5uP;Y7; z_9!M8zVveln}X7Y+y!xSl)sy-wIerq=l7_KDk9QsySTXhkSz*VjM3yb_BTwnVU=uQ z#Zibg!Yp8f8gSNS#er8zTsaoS-5g%j(a-su^kLzG&sA{MsP03Z%GK9Sq6lwTST46# zi#A=GLcX+R&!D*6%MP!h&)cKKQnbgKr+}DMlG=@r9U3{V#E7�!v`z0mS!v8LH;llHxfD*IJX{8rs2}?fVe8t( zW}1>)vCT|8IN*^sCvqOx$xi8Dkf!@M zG+fqs`~f}>dLthEHGzDdVq*%L2VmIl3u$Tz2VD}5R8f>TqAWkeBx!6YAW0(})ATh= znD*#B#quZrtslz+L>a2JD5#K)6@q&52--YA$UeT%fn6k47UU`OYSBcCv*>yg6@n-v zI`K28c%ZX9+b>vk4-oQ4j!{*g048WRw8C*dD9^CnvSl_r2uk3(s0f)_U?a7l>PSqs zv2wN%6ix#w5qg|FF_U9bKGVn{vSB$_KPS|HEtsO3hV#zWf_%E80-nL9o>+Iku62wn zbAGN{eBl?};Ur(5fC@h+pzV0qSj@idezKE#u&;P{=^c)4vBJ;40K?-`^3$$wvv&mS z?<9id|3V`ELm;YDJryyPk-j$hvZV?c@`yJ3hJVJqv}^=$DEZ0sIlO)c(m{Cb!ZaxBs06fP@*`mwR^8;^ z83@%z%ce27liwNu*TD}K^Bs5Eq-jcq6XO{>Y15Z5x2Y+G1Hgrn4WSDwLev+52_2~( zO0#$AmuaM5#y|$9EcnxCVv>k|utfLzzAXtY+VksNHQ7oV(MFp(?kC)n!qr}u4sG%K z4SH>q*tarwxG-Xdby0Xs)Db~)Zun}R8PC>v%#F)qlnOvs zDgBjaU+EL0)WyZloD9Q588*!b)%Z7z+A!Ef(ov z!Tzp2%TO$(XwtGDmZ75`Hp0EKrTXCjUcRZg=Ej&&RAoxQ*{sWjZfc(IM4ZU#B&p&| zp{ozZloX?wE@B?4%Fe7^&b>H$0TjWtTwSt~)x+HvnAMZg$*(@zx~pKk`Wj|pX!ROM zc}inlS6{j|fp-b6Rnc>HcDae~$@hE-d&@u+%h50C*Jiqr%{=K@-qbF%LVwotjzd{Nc*j~3Eg$Hua5nNY~uYck=nQk4+RR>dFuhDj(l6<8OGE-E&iGV#Q#~RANEsV?Z(|u6_PdN@-bJB0O`3a>(H78gFrA1)hiF(&;YKk-k(hDLi4SdR00>c###k zVRWE2SB+hL9q+br+2|1iC9S<`O3^05Y%cx*IozR{>#QAim_!JJv+6L;Fu-(a zsccmd6bk3cR@zhj#OdMMg4(g>5;~D0n^A36kk^6ZBqa%!dIRp>@K2$)M^RCbX2`Lj zQ@#wrm^sI0ZbHmswb3cP*BGgp7zu9Q6H-*iH6)kF4!$_%tf*z6EkwFue+XL^aer=# z7@oN2_|Qp7S6qkRR&6$UeC?#{u^%Y%=nuxA9*F54*y*d@BrI{nnDh<$U(^f^V~eFzq}1JGq}SwwPwT1H;8G@VC3H&zQ}MzX&^f({b>L_#iI<76m9hqBSYnjw+a(x zSQ-bWXVFJycvOVKS@)dxh3w z;=+^kL;}AIQ}H$uC6{#Lx)jMP#q+m@)JYvY&A0e1t!*{2UOPoanuIn64D zI<$;EauEi8OzW>1d-U?tjG0gr=a5=7$KMN!s-{ZW%5n=^b%<;#B(>WKYolGQlCL`w zY1tdWpwo&*FB2TW*c|}S;2e(vPpV?6#YQj4$qsF`(zY73_{!I)@b2J(G!!_OQI84>z=~T?9EGOGFkgvSLtF^7t>vcDomfL-V^%X9)Xu^3D9ekZ*At z7h?y(UoD;PA`%PG< zY;wKja~fek>0O5X=0HbGzrN+0HG>!vAlQWDX^Xq3`zo9Ji0E6sk92>S=mo(KXrRGY zh8#EI%g7EYfbElaBdnS3-8-XYJd03mOSsVtZVO*`%?js+7Lnx*!ZEsQD>nkvWR&Oe zj?vQ9ibBn0=4B-3YXS>fUjN919XQqyY+0a~IrA(pLt*BrISVdQJFsFfN|yZY_@s{v zA7*r_#PASdXBg$$Xu0JWv%Ht;RuAsY{-M{}ZlGqLb;m$EqRc&A0WDp3Y=sf!5mti! zYO1W=^argz>=4^nc8rNid4fyDVwEP9Sa9BLYHBso2`JDrbt(r*Y7@#Ar|BVUM_uA3nb8s1F)?i$i}XxOHZiCJ zB2S)kQ$D3iflOsG0%;(Rqt=Z`K#{f1n)Y4|+Hh8HdcG<{#Spf`BuPvJnpa1^S8YW& zfZ{BWwfGxa^FC_2@hPE^rY2q$o59B zH5_#vDW|DRW?Nd#^-fLR^(a|xrVR*#6v673?vpKo8RP03h!^n{1A|wqF6XPK4X}Ba z_*b1Rq=`l~6Eu>Uo#|Tk4yPwK9SChB$1c^*b?;qg&Y*~L?j|l3^PhNzKm`WwLvK%=aTFOMS_-2xPj5X%&?iE(KL?J z^_(to2)>hvJ|-3^XfR=Tv`rDM-gV@ZFARv3;nAuJk+- zvc>S=Fc<#l*fNc!x-9iG&U+*);0lD?|G{o52>7l&s*tZq2TSxSB&J0IPu` zQ0`N3k7T%@4KTmO2*WMg2l$82zoC(yfyXHKH%YXskk_X-hDpy!0AJR+iE!rOC%$5L zj{!daax}k(G=1zZrdwcgAPl=2 zC;!UYONt(NqZkmCxb$;u;b$QrPz-{%Okw2558gL;hPN_kj#B~A8}LiE+4`*MQb6yN zZl8D~&h2}upwZUj9q;c*ZoiUjSZ^8%=BekOgxSUQHHEbbXDBpv*e1XgX5b*r?{6TS^c|+MdNFQH+kH)!OvpbrY^w^qAPu}Ew zeO@E_vYSCn?^MBST#||D%l9E9i`t{wLYfP!U4fr;$BrAgi(;vY%J%^R!`6{FT@Byp zV4XqHKS35SYa5NKFnM;&HeM8$p^9xZQ?E%WE^qW36dZDBIi^H{dX)&_PGKhR($H;; zLVYMVPs6D~ zpnCojS3cL++Hn@ky=jSR26=$AD3!$twHsNgFgf>~TzbG8ce5#N!whK|HG(8f{ua8? ze9tZ4z(Xilf9hZz0gx0H^{f_AJZ8s(sHgkbz-ToQpafp8+^|gS=uu0m55+WjB!q$r zx(`{9n=7YfqozY<&5@Uffl+;Fx9s9!sg&#?&_g$Cr`6}Ey;L1LgOlN(6kag?<2wZ$ z)9u(L10qRB3YmCm(|0(>!Yb;B8zyc&)v}~;-y0`{y3(xuIbZDnCS4;!N zFda={h5dq3XN(6HCIwG#VK`-L`JSMb;td#X*)tkDa!%->qSWwBTDbb;&`ldeba41Y zY9XF1s|VC_h*bDiUS5PVfkg@}a+qcMmWA{T@`;K~&fX$~Q_|NXaR(Apl_tYbpowOF zmL_&{hQIX%67>@AWk9f3<)MRRf<^Nd`lW9*w=wvp12%7~(Q?Ot-ODPzJYHfyS&_1h ztT7Fv85yVyMe*?!vG6Ztsw4zy(RlyZV}6VlaE_{3a-znz_b0H!Y=U>{tZ)AegAjKI zjCQu%qu$@KmG5ncW{P-?FdrFQTrYWyz-ny66%3oeA&_iZLnS7VH^tkmDz%4h1h^v@XDL7|(s6kZI~Lb67heBz@cjF5V||{;s!Q4zG{_ zVf~dc8QHKos1I@IcIc&R`2jAD^4gc00{Drs7U?m}Ng&ab+b%;;qWXc+*l9dB$%^Qs zr^SP+FTqlAD1HoPe7<4FLUWe@OOFpD5i*D)d6(8N-hc`>0M)vXh-|VkflaZk-esJV@w*=Iq}k2a04ET;n=b~PWr>~f1+ ziFbvn27Ib={GoBG$hQgQ&R9#QQb{*O!r(ZtMwDSEG$!|@ZFPGibR2`tHd5@eAD7KV zDQ^C%0vz`Nn*n{RO!;?p>fcuZ{x^$i6@4pbZglHf)D`TtAd$Il~wuS@mdP&Eg`BOnS z5JqR%C!)DjJ9d?^{884fa?~_Frsdu}<63TH=2lg?;1aB_T!gk^rLMoc(S%I0=oX`) zf2&(U%Q6~GwD_Y@ZIkY-Jr&n#f-&f%UA5Y_niOn(lkP37xi=#u$Ir;rF>0p(j+Io# zAoOQaxkPSCE+xZ~vRrwWlEd63WfEh#V&nJVs-lRHIaFAAD{0as9yLa=#negXoZJ`# zHq(n4q`w93eaV{Jk_0OvQk7g=8tP`oF`sm0^GL1am=)%rUQ6}jXP`+1N{e*Gy6N0} z!c1RwFp9tiiz#)4E#0{?LyVSa7Usi7RT8NZhdY@Bth4PhnQI=1hX!E`1+u}3fU!wO zTPc|3u(SAz$!arGfsE&J`Ify)(*gZK$3o`1=@irLCOnQ8mL!y3E3Vf*fbB?PLuMXo zg1;1fJj0a04z#cWDt)Ap{Zg^kkn+GcIiN8yH{Z;_0yO>9_hr<6I+SaUdt)FQL_sxp z?oY^OTK^>t#wFzne(Z2=W!6k5@Wonc)$==Ul3>DL!^BLl6t9^x4s{vg{s91R71VG^f{8;!r=ktYOqJszIB1UP% z5w*hLoR9U;=#GiHoICmJJNY=7o>7K{1;%%Jk~o!A5?ey=+z3!tvFFp*RfGYZ)B)!c zcK%L=a-EM>$lYN|tmjXBL6EJHs&xV|Vc45)yjY$5%L4<53Ml(VxR0y9t=GpM zBW2^5{Ip_z7hNjx1|-tV%!847_C7cdc*8)kK78#6amskw<=5%A)YAh%>7=9IN9GwDpakdPmdC8=u@#3rGeU^vhaCina>ghf9ZVdMJR}?{skVxg{;v~P5vugu4C&WHWX3J2G5mdY;dkKf;Z{X*TWr*UFZFU*9 zs*6I6@3HtN*0fb@0p9l2_Gu1Mz^RcnYVpmPiJ%Bg1~K-+Kn$r2_lympPmD;AnUni{ zvu=boP8E(D<@yX!sWL#2ZXbvY`>FT94FyfC2F0wG@MZJTAI8WU7xNgG9Og}}V;c6Y zC5v57%Fv)V^F>`(=G|XVA0tg^r+UG$Tr>7Uqdgmgif`u3ZEEAO6`|zIA@44n=Or@B z92r|y^NPvw)ihg=>V@#yH$yM^h$tJy0O%hE%_fH9B=JfM%ukaAwy>pi6z{<@`+fRHi3N!8#c}&zqC}uQekt*Pd$s2gS1)(VE$p(Z>PejUuB^SK_`Dse=VLN$zV}I&+csNT1MnV!Sl2|4~1yN}M z^yWGx(_uq5SaUaDIWu>7r~%?Km;?}nVH)zXcw*>=F3`a^UgJn&SB%nZurq^X6kiLg za^|uFwP`9xhYXuS;q3_Gpn3xREt`3u<^JBId4_@NAC3`4UVJx$n0JukwEg@o@#HW$ z^dPmhW_6)_SD}$>YyNK2S!MU6L8p+45|>(dk?FzN{*7=o(_q*Y2PTr%2hU2?ROvZE z=cnNz5~fm;MZAP*sM)5LRk})fPVx|%4@=~rBh*zT2ihlf^n_z}W3b51uemr;7$;8q z^-C(dZN#QgErTy#@c;j5A&Vg{t9o1Q;f3B{>%ycto9Q4oG?p^8M6K~~x zioBVqPpa2tGPm5z9~cMhNvt7jJb3ojkLjR6PYMPFw3x*pNQK70k1Zk*DkK1~E6OvfhUvxc4+!*Q;$@hPmCVT}sf&r(nq zzc7r=N<=KpdFvBIX67Nq3NX4xM|JZ7A+nT+hRmK#IC9A$K-$Babj7)k-y|33KHdDo z!$k`gy_%X9DpqCbM7R<>S8Ld!Y>GbKZR|pah;?{KjI%ile6UAi;#?xw>AF88qJ>(Y z768Kk;MFjYEwCl+hGw&9uoOWxGSs!6^IpIpW)c4Ce-#+WkC^au_!N+?!NL5-E$i7Q zwQ;sjWTH%lceKrh>$P*tqB;wxeEOL7td}JnYwXNLL<#F!8%f{{G6XK~H*Aaa?xU&a zouutY=w1#N7VS&dAMQa6S$kg*_C{b2TwFuK&f7ptV<%1Hy}Y3pB&-kejGa(kPAFuE zpBuSx+lB?T#pp+gr`s`)!01i8AkG%6A22GH+n2hOL{VosCYK@}f*Rp_klD5ad%Bsl zg&tOpOQzU5(HgW5h-Dm+cfoH%2&Y8Fxe59F<#OWU!^m;J|w-#Fg!yCmpTcT%pDSM^{N)mvZafE|1-egxSqf|?xC zEl~N6`jtEIDT9-Rr$Xz`K$nmI98%JTQEmY|h2Dwb!smAm@HZdte^OY*2MyP?dIY;k zm&O~i9a~?e_`$diA1U^yb;gPoASmRCFo=s5j_YW(Bw7N8!3=Y{;F*<@95Z>yUhh?Xr@D(P0#xrre4yrXdP8@>5 zDUl+*Awld8d)hwe0_G`!WdTctq*UQGNcPx{1DFmb3|0F_V}xHFvW*K5mKE`aCE^y- z5vg~yk9YLlqqO}NkLWzli2GaN9Z3-38>I?a5@q5GCDKSn*zk!$*%O`5s!@M}whR_h zhrFBUq_I;E;5aQ~Z*pft)wFtx;XRT`>8HY$2)Qg8i$kEvruOx)eM+l?s8-uqlywVr z%HFMx(yj}CdmMN}Ll}S<+7@^@g;R0i#L7=mIX(}%8MVUo@6!R_d*h68Cx3?&U&Ryq zot6E|{9G?#KJ_nJIh@OND>(_wz&CU)G*|_0G!dUH?$JAS)3-mbk8|fHIty4u36JvX zcX=->;JA70V18{l7+hj^FT$RIvP4C(UT90$;`5` zEh-0OoK(sE;@~8=fN>yFq;rQ0Vz!0CjVb-3-(5mUV&JNTeARvg%MgIht8UnUY0-XC z=6KoKFf=;XnE9;we*i-yt~Wq(Ozwh&(^;_Z(xP9a%y}}lfV!|HjA!Nvj9K=?6Oy|G z)SAaLOx1b#AZb26aPW41edpJ2hluJj@Z-36sTD1u!keH^5`%TvX@%T)v_5f`CELKQ zHLqh~S)Y9$fhIWghEtseF32W4Dbdc+e;oo1RNNiL3a$AHG|n9uM$2s9Im`N*gc}C9 zrtRQ+M=B1m=APG{S~r^eeAV{IAe=syL}Vxx@g*2JB+C+Wwqvjsu)ik795w2nm%v8S z3l-DxE>N^RnNk67+&v4$|Ak4SvSVQVNs5PMDvq(fhI z{B&SKDs!Fd0B&~yb?3xsQzS4QSi8SMCb4mK(kp-R8;{1GxhpKY|2%?QYF1#~1H&~% zyI?SSqP=_8CM}c4H&>yjwR(gh;JPeqb4sbGOJgmnOC!xAdq>wOl!ZVd*_NHjm0b(z zN@~=t?}8|?D)6Y~cJw}wPY)o`n}d7$5fK7Ap9YpFMk8l6!&l;KI_56Ym8d2{I$-H> z%T=H=-aMlsUSVOi$dP2jf4)Ir?+s?!f-;0WzGs2Z+TV*z5qu`T;eHxuSH%ue4ZCk; zEw2?vRc+#D32rAGzU%SR^_%S1>Kf^NheIb%5qW`AN6kc8YUXhM1_)d{M8=Yw~l zCLN~nUFp=WwuQcZ<9UCu6Vk6>Gq?CnK;$O7sRH4@<5GwyO^UVD+N$JFt=R`UuZzg=( zGmCa@;F*&_3eky$C7Iud6DM0&WZ;T@@awAQn@0~xzxKrOLETMZw#^kiUi`dG`3vg7 zx`vJ-{A< z3IVKs05n#7b1n$3?U2`gq-~dAZyaY+aj*#@j)eo zVlGL24H`z0%d}^W0QlRSG?1!F{aW-ut?S<9+~u^{Sjt3F3ffHVkw>f^8{YD6z3SBY zShaoUZTJfm?MTIGk1+omf~U4rQlW6GSam21r|c@b9O@QKcorD{%y(ZN1JTvxcvNz`D5esCT@OnLJQ6TF4@222a z#XGPzH~kagr+Sb;{PJ_#j2_7l?DVv!@ITYsF7g zg0CUnNMoR9N)l40OrRBnD>Yd6aeK0>S$3=w$1tbTN_f&(N=!0M8tw#6rkEyeOWAmr%BH{0rm_NY6ovx|GBIb>QP~mdMFVRZ{5PmqM2yHYD7w z6L6MzT6pkx0yfNjVr+y2TD)V7gqsNZt<~r&BK>Qmu0BRj-|UleRXk5M0!4T=AQRHu zVT`bdGJCE8X#KVYQoDaeAdNZ~#CRk98S-8a-UG;=KlmVD&6U#mn+!g=KDzifo+)>k z7M4j$o>JD8Pj)d6_Aw83XS4NlM7#wM)w>=GM*!++RGyI+u0pX9F?L#vOA> z*4+LRVy!7(_^VIcwP`#nllEf@67?C}@#xxP@!s+1O;riRj^gzg;*al@@yPA*)FQG2 zjYzv8`4{(esoqecGukn^qDXKeNeS{4$Lf@DYcljdv>Kd2 zh^RhLrhEcmd7nRgkPMch_yF+bi9AiV+>S2pCcmRI4}p3~E)(VZ4iT`FB$2e~?Z*0) z0jt^7Tx$Dk51({|&DkvOQhZ8>Kjq5ukVvp9QZo|?q&_Zu;w^BBrI|EL$qxiaWJ^0Hx60`7cIf_ z{_#7wp*t?!BEq^57J$LfpzIo=6MPDy6*E*3{OXmvEDM7f(lKH~@j-Q4o{b9>!IDT4 zx~Zl99f!fD=DgF<8pMoBoT$AZ=UNxN4z<`rX;E( zKCU*|+KWrh6*4MwFt{RnIy4!E2-}!q~{lEIp z|2d)*o%Eglg#{>D%g)Oo`Ous#*(AEM0Ksp|wd6&rZnJi+tn*4My>v?06m6Gd67LQO&s zX+ogV3{5iDUfHeETns{MITqnrZXmH&lmdrQNH-~>h$IjGy4PT~qT2FB6XwdLie^A! z>Yk&m`KSq-QnUtphS&~k0?J`Xh4s1(T?ugF$nR)o0?9qtt*h>XWwIg>0_RQh&yYBs>YF*rqh8E~vDctrwPVEf4(3N#b( z4q-BxeAq{HK+#Yyf~Z}LvD8N8(O)pjf?v*1qcs7Da`n1!-2MarATq!kcxAX9yCg|) zF6k8FaR%t{9zU2n=sZJLK6(32o~6ktUTf@cTckzGk2lLgT%n@jG+N7Rz2G zE8$1PM#%#z2Z5zR$rTd)v4&Yqef}EXC*lDRUf=B|_{%=wd|BYh)lV?_5w_R7l z`rKfXPVnfGQeRz*vK|Ux+DvbvL$f4@mgeZMZ)DQ{Jq+lu(Xdous2bf6F{r}_76u9u zni91>A2=A!MA3{NyOYHWaf3ZlXwC>Ho#;4y_4z?_bTHH7^MT!qG!726Cxr!i?SKX7 zCY(Jzez*uUt7$v6UhvC1b(a2 zdf_Y|XTTkJuHN?9-?OVt7FoI_S>1V4S<}d^vJHlH9i=#DOy#WGG}WgMHG8)s8)rp^ zQV!dGUbVKzZK~DA$Z9}+ib|zsF0kHhRl^yoXLruMPyxThbJ&6ESF(}CIYQLYCi3`e zL^7d7l!me!a)AZp$uu+cTl}tiJWN`7kI5o(<_4ftFxJ}1>C!OoCCSr{Y4EY>No9%$ zCbVv%e_=vdT}ctPbQJK|a8N_N8?)(iu>VTBye$U(9VNtLozI_FVM9V7#vRWVic7DK zCmY!XOcvPFV7M~~nn|T;=irQw7^*FMi_36lW-%{UlCb*qYpFWDv13q|BToE%GBkA? zwr*ua;G=fsmSf^GHX2OZHW*C%Q}Vnh>!8UO%x zU`UMc*3!H{VQ5J=%>nXAOE(-^Gqyl|=m`bpD0|=$e*h-0iRr`*hXJjL^?VX6-e2=b zm<*Nv_g}UZ{$X9pG4m}UoD5|<_c}F5BgKts?zZeXQ`#nH-_9SGs6M_X*&j!Udl^^d z0vZO%Y&vbzAqdU{y5+z&oL5Cf)dTH}r3qH5ZLR%Daaxc0h^_nlklg!UfQt_{euC#7 zl*xuGeQ*iUAY_aCUQQq{F3vX-(;%eHQMS`!c07@2N~_)u(eVvJI5|XSC!}(}HIF?4 zM`a5M*@l~9IAaThQMxu_B&UjbL~gKLy+MzFa?2f5G;S2c3?iLW;i}+7A{gVx#l{Cz zN`ZuX-vV7bsHHjyr8?1z4}IjO4N@mn^WLmpO@*4_x?)nld(uZ~kGBM*7;pPeA3iLqi13Tq3BGsrLNDSI}UB}2U_hah!Aa)HPYPVLK zGXL^8#a!cCT%E{bX-|jzTr$~8S1ydRA(?!N`j}P9n8njeQ zkPJ#svo36f&%6kz6j&io1-l=qBx`ce2xJ2A8KT?IRp%JGwbRc1g0W5O^J|iBk|+V- zfxz?Xz2s{BOMhnj>+^=xmwdtDc)$UM(rvVamWXT5J1K=(XUV$+AI>S;MC;_&|TSfgo3fi}vv$MZPtMOUdsmvkVmB;F#R1&4M~0UN0#Um7PcNuCpa+WvO+mgWaj82u=V%~~M};g+?M)R)(1LmgK$)<4p6MC`a+c}qqk#9yu+(( zpc4F%txTtPt#PmvxTdpFKJ~kDan)Vv_xcblz`tokX(W;olAm5z7E7y$v(sA$r1z($ zj5^MNw6o{BU6lgr?P;npfKux=8u)fo9k7K8`-Pp*Mf!FFbj|rB(uZ|0@bq(|=j=2`qI;1PM5?pU z);9O9VKVRx)<$v#0}snS{rPR^{;C8Cl|wbcB(w>Qdg?s#C)xn^6z43hm&|zvoIAYi z=WFGoUvPv^%3Mr~Ij@888P%*SCy7Haz1YXh2YultlP2w+sa_)PpV};cn1@*{1kAr`lRANHX(94+rB>Ka{ z584NPWLOheH&4GJIbz_6Iw?ZKwiqq8c|n-oNZMu+G=|!8Vi`M{3GoS|HTQh z1by9WW=1Zl^Qct+*bpXLx@?WNSowRl*xt}KHHVQXYju6s98$%k|TiFf|O zmr;-}lC_ zQed$f(*EYT;V3vN51Z1`$-BeKds1t({CldsfC77dxV>EqNxz57*D_S=RAcxB%Z#o@G&uRfD2ySB92|Z z%excE>~MSD1djA;^Nc0ee74`3P_kVF09E(_4OPSb`gN#7d(tfEVMe{8@u`Q|5Up6Z zL=1QAC#ispzI_+Nbz;rLvWonZ2>@@bxbhHD3F}xgG0hbDt@=ok6!Y^^j9hmfZ|}Zu z@gsR(E{(F3>m_MR=HY!lv@p`(pL-f?I}8PPs{zX-c65bx^_W5Q%jyDNQ-q*(RU3w` z&i%EDcq!9TCYAw693Zh8&Z@@Zcse4*e3W06{_M<6PNXn}5(RAMkXwm-ae{6uL(9;1(ADf zcdLfQ0NGz=-jhu#rdw^v{HS*HstvPvMu)FG14qPF?di>h2r!wY7{n(8VKY0!6oJ5qj>x76r?3ft8ZMgtg91zN#MSR!V-1A7DSph7b);a9oxA4 zxm^8jJ9505{QSJT1LFgiG{4v900azz3Qrxoey9smM{M@Zd)zRwkYyt1Y%0*2)4UAy)s)w(lkIDu0?#{X44NDSp#!fu6C zavEf>!id3Nh!MwdBa~~qsk)oj>(Jdv3tM<0-eb~Jah_oGLdCG@PjKkLQs!t+hn|3& zC8!7K3VgwC|qDK!QBVXgXTfvY@Na|nTD`dQ($jC6Q_0U zAQ%Fe=U%SWkhsA}?WIPEnxz3*NPp4&@RTP?dj(2*Agk$8wJZ1JwMkm^0=R=j0wvpE z%Rh_~<@ac+n~DBULKGXlK-0XGtig}pf@rFi2J(8xnaGgeSPmK8&hZZPVW0x=`LNxm z(OHZ=iv7EROZ}~ww)5G8*vY``660(U0^)lD+WSbTl}bvyN<8e@*!-&O88bqs->1M0 zrBL28b{K74!q8kUqJk(|uC;jvzUnv3uZPM2a!Z&@s~O=x+>SQ(TQ@=}G++F~%b#oI-^E=)N^l zATag#UZtM@?J8CBe`M7EA0o={_>Yi;zh3{*lWT75_)i2`McZ*+1c@6{Gr4MX@MnB7 z%I{bVJ1Y!Q66>ECjeXL+QPLV%@y)iDb!hVH<6;bq@3GzYtk*vn<#Mx5?%R0F=R4vJ z2u9>imoVH_U9Ykoc~xKUYIJ{r%JsRT8`+Bw&{vi}D+vPRn8pqqifi>LLn|*ZDYOZ4n-lXBn;;Xbwy zXHAd8MOtBQD3-;0*J0a!ENA6WgoqSd7~?iHk69rP1 zVtw=0<>)85D(Wviy=bY+IO1}0)%(nlgGK^@eG`#1{_ql!bX6(|zVy8Bup1g-j`CTV?b(uho`yfu2NdE6ou&MxSJ56hO~GlbY@gqi48H$U=6D{!}UeF@e9H z*G_gcXAefO;Kq&5@PD7&B^HcJId33ZPS|6vAs4bUL+GUx+ev@~WL-gJkgfvrM(Nuk zM=i|y3hjA9eE^RdJUE8V{3Sl|fc?N3E%D9gzYy_HNgA2X=@1N~x+Yy17D6rbGh|hc zqByAV6VddQVa1JQM1>&Xo2>$kgc+Qp7yp7Ky={4bV5*E!YJY}~ho#TGCMC6E($7r9 zR2mbf9-m2oE=rI}QBwt>J`!s1M}vt)W11(`CTW@n(LyKk>}!-0Z$fn&I)ISJh&8DI zH3A#9ph32eisO)pqnYF-&4r~8{yz?CA z8$LTMlI^selA5uXfB?DzU&{#O=Q>%Ba@5$>YB(Jcy2-r_=`fxGtQO`83Lp~4K+=mS#&dfvG zseUoe>B9rL!u(Xo2irK1>C2v5&^G{o?>Ytya1z-6X)h$9OXqAum15f2jQqXhSx zQ6o*84oUG zEXAd%y3q0tYHE}xc7)L6ZZpH=f>Gd{(Kua9?9jIJa}B>ci*~`e4}i6#s_Oig!WT?w zhW@(}_|iE*`4;Mcux~2G$1N{-f6I2!dPW}m>axbbnc9={P$a-h$@}cvY=3Jrdq zb>jVp`Vm`%2~%~CF5!Y`N-o@=U7%P!3DO`94=O<&O#x+1k+esuAF&)q407j!_{U6@ z(y&T96~g5)lm|p}Arm)J=xjtJbCY<|CO}H3hI7yIIKcPEJ3#21Df_U#gqouh&AE_F zE`X;_o(=2&UA?ow$x1Flz=jMQ#M9o6?=)bv(cdoepXYiU6Qc9 zBIpeCKv=2NW%j>!;tpyaI|V=3DcN->*cYKyKYm5mH^`#!Np9=TBi(YS3=We>ASeF# z1p9}Yx{!5@TKtBSihm0yy#EV0`EQa+P0J4Z5be{)LXEm|IZ6R%J!U0W7)-+@Z-F#M zlWf2q$IuY_cO*zdgU)z(=cuGrLwU>$%uG^~{0W-5#rPpuih-LSCM5g>LkD9&2*LzE z{_8?$AFTI@6uxGN)by%OwOSo&1V;4NILDVSVEbiSqw{0c$`%M?XrA&ySYhy6&zYFJ z1CNHBq)gL)uv-wIL`9R}M$z0m1dZT&*EAPGf`g~(c79hjwlUAWQMd;?#k3E=D}(mQ z$qNRGIU}N8nSqQ3B&bi5bqY@D|}ur%8?+YboT4+J$WJJdju} zIjPbiY--M?Xh(}*g(_~7-?P#xl07T_>$Ui+k{g!-vcPn*usY zJ;?-BXPz#4Y7!lO1|P~LS%$n`ZD*`BPiKsN^)b%mz(S*LoW&je&Il$-Yc`zj4|f6A z(4Nzx!(?1B52Iz0%#&YFtTi?8SqEkcdd$$JNFeU7@geEP27TqD2e5F8Q_A)dt$UBb z18@F>6(9fDp9y9ii17%UjRDhD6;ON&0m@MvVy@F^54#u1puvGN3KbY_Rt%qJW^igd zc^CW#$g$ASSH;$MvXD5HX3c2`hbXYy3{Cx zKP2_9`h~*t6rPl;#tlPRsOYNl9w68PXM$ZQCL_F5N-}a&ZDZB9y{uRVr4Bdw zyazFt*EXI`E?@&bJS8u%!KtBHidYaHn@q>x>L14sks%$ZmChiO`OW6#*$*7l%`aCp zT^JBzfyc}<{C0=a8$JX^sZ8pUZWyi^$fkY{4$<5D0f(@smY^0Hp?VV&5_)R|CuW}* zux;LgH_Rfv>jKw3c+K*T=R0!)iMMFSyv`mN5VFr+w8IEjpE7?V_WtK}P_5phQi;kf zF9vxDNdAelKo(C&>;Uf?(%WPkDrXjjvIfZ`a zw0X89Y0G+k9m?C@exeSPZi;nQYF6>D;jCT8#0|sZ?+;q<2Wf}?lW%`lorkSX5|2F6 zS?9vojI~AWu{G?xgVR4A9imTnbOM_j<3(#^D2CZ2pB(^|Qh;+xq2l79EZTurE@j^2 z>y3w6F8x#H1HwQ_nS5qo584*p`syfJ%o6Sc-*3Xa%c4c(N&B?s18_b6kWN)w+Gw;u)&~c2R8Ht<` zo3Z96O4`E@&O(IPBwoSf2m0xN40_6j9KITUAuI?+QLOfyJ;d3)ER|#ryT1^sFU3Rs zN}+$a1Rh8R$i=DIkwK3+2dE;rqp5H$5m}jr@IN{+kX6*3LHbYkA z-Gf%r5%n*{wnS8fKIn}dd?7*Oqd;dHhCX02%^hQq#XOD^1&oRR9uxPIgy6x!Ps9!C zWvR?7i2z-C`)8Z`3d(Jk3b~^A&+bg(t6Lj8%qOrJGQ&6QsHYs_x9EcO9pYmSB!Qkn zQl6B5t(aTbYApNOG3AC4pf|*=f^*wOVIFTyfdHF8IT>pteh;(ABN0Vf?>KE|b25N! z@kL~6!>l`G!tbkHg{;(>+**z zi7j&OCuo;eG8>d0wFK{sy2F=Rg0!pmc{jplI{JzC-FkfKAB|@$1rPJaahNaJ0FV|e z)<<$h)MOJcImyp|N&OJ-ilmXg2X|WktqCRfe|GswIQ`E!-nZo+u?V712&{(q&s}!i zsQz#YJCfZfyOB=FAG?SwA?S%Cr!Q?mgf!N5%5}N$JRf;#ujn0oJLr6FDtQBSG~Zdc zH0`cJ;&i=KN~p{{n>?G--19u?-Cr*sazIKo>$9P3z$e2FK-6x`znfzq_iRX3YsUJq z5YB&C@8BkF!RMRnC?#sfe>&a#3aZ@SowZG<2x)wvv^hPqQGTCgCZ>0 z_bIsd*WLs3l)nwdB2jY|p>fSmK{wc@rDp7+-b>~UV$hm=NFsXpRtG^j39T2|A2Bv!IqayA@I$dK$_@v*PHzmB?Bu`n|EPNs=bUTG$b*-)UJpiZEDf6 zyAxf@t>0pUwlu3W=P+GjKlrd`HsibpcI}@8{cR03Lh2d%e69V<(XumTQ}rdG*5=!& zK^A){DVEJ$M^zGB+L{!HbG4JqA!=qyGlZj(6|1(hpH(tTo0YCZ;r>7Q}orZCPN|KF_LFDq;?I`taZQ> zdy&3%15j2~>fDFN@2hKaNqo4MAFdNoY4GTV2uRJjBZv^UT3@|C3qF1^zoIL!om00zqUR8t zZ|2O`PTVvxPO-W?D|Y~UFg(p zTBp%f+oZQ_5?_7>Nq3J8iS;eDgpSG2q}8vC#8RzznQk*E4&m)WAIMjR#yQtN&`}2h zui#At!o-WZCLc_Z${~q=AtUouK9}3uS_&ipgrmq1Y_C!T2$r=E-E>hrA&NKST?Iv6;ftjh89m zz=lD|EV@+kQ}Z%+1grfzWRRU@G1urOFR;TtfqkI_{EJUWICjSP_~ZEmUwwc>4QPBG zlY+}Sa@#rx>FKXpKf9>Az@`KuC099)@tx?3jPm1-DT_Ma+j{g))FY#kZ-D3XY8OVw z=uAU0)+Ad7l7Q%0=z%X^(Kh+i_&tJn0_dU{3A%e~-jU<)7>^E?>27!>`S_dJ!dqb6 z^3NcTn_9yzFBo`#w=#v_8y6(!Pwee8g&W~zjRWJ&;T6e0MIBKNQhMNXmlIs>OU7=` zEc%4&zJLv5Ne_B0-D%bzm$nZqV)Wy({HJ~O2sHR6rm`n6FHG$XA z1{8s6LKTJaB_GPHxYVz&ZZhog?W3D5q?T2J7~KZ$lk+``abz_^#p0JT17kjJc3y8e zUbSC$H2Z#htX~6>89W*Q*_Mk@{!vPi++`_RG!h+_IqXUl1a6K`8EhX*n`f*p+CJ~6 z*ped*c0hKm$*Bm762XN5Kqt#n7jgGOA zTz_n0PP9=IcoFn1sY5?dRS5wu3_JW4<~&`_RVQA*+loV!wO83l@E}8N%+ox{Uq#QF zIRmI^QLPKesMF!fKvJK|1S-~QeM#fDUeYqNnnPPpl$sn$dr+JB6`G}lHqDfocDjDn zc^Of92*t1e`rK$t-cptuc%v2lNFfWvUFG)|j#)iUul7=tu6rzQ^TdQ9*|xEVans}W zY7JzMkuz)D@oUvskF`SvleCsvqMR5+#gfgP;q=1yL^P)xD{V$wGZ=W4PwX&>7G0$ zl>f-Cykt1P6S>9S`lr8cI|y?Fc~t*!>lc4AMSL48Lf zjrjSlgO*9{Mp>K&{jO!ve1a!B1h(rT#;aLjZO>;L>2_Vu!B=R`p7eN}Kul(aG1_vp z<8s1S7&m}p?t!xPhwj(6ji3)Y1{;)4YJ?(bPb_jF{m_@ATO?BTyrzD{m<0Ne z3js8`>x|Mf+L}@uOU5yCFTeRVfz-M@>s*T;8~YKw+nqccn#neJ)^W*ET(Hf<1rgcJ zGvZP68$-MpLp-i@7SYdA1~rbd)?Gmu7P=b1?mwRCTX5!n$ ziAZi(f8V`?6ZIwdh$=sVkS@)>d*M4+T0Dgx$cgL=L{`b{eLQJ9Y`VgOpIph;6P=^2 z)L!BFqUKXM=cgWoeC4@#%<3y7G)h8XJ+FD_pSY)6pE5T2 zKHVQcdkDs4R-#8qG#L{MR-Kql?Mg9|?L~U6k)bAPjdgn=Ce8bR`Krk5;g(llC6U=~ z2(i5e=bMuwOJ(Z*YZT-yp^J=G+;DG51a`in0@>OaeJ8)D;S`f zJH$2NHN(Yr_-$q)|5oXkFdFh=kQ7no2nXhDBFX*kc?tXh+)? zVf)&Rk!mbP!r)?JlV^;YxjxWMyJKtd=qgBzDP-ajGm7$;3^UZdh+^S`WO_ zR=Es(N=-DTLX6mIEUtx$F~Xq^tX<=c#WXDf3Y|S7vQr#~ae#SweupcwG4Wa_ymKrT#z#(WeeZ6e~S{-zy zb_Qkaf%Q~Vfi776Ej_1gy%af0T#tfKKUeS-w4F}tk!V$ZwzghYQkF@2T9qQrxW5Ho zU+Y=vTByf4^@q;m${_I_8SV}~?v5IVZ1sl&fn$fHR)02buR@&j@(EM!6~<`PJa@?Q zX}kXz9i+DKMl)dg1GM!|OAi?qXb~Q-Y>*-m zLxdd?Mrk))!Oeee9e)b_2oJkLJ(Zo841UMv$lbv`#BufoF#O04-}yBoZmo%DIQ{Wu ze8Wa@ml`crxdP_aW<`RdVCM)8e?}G=L8ik|k^n?Xh1=h0_XPSjwp~6&hRYuWhGph_NCQ6z|%zCzwK`&CX=TWa%11`NrB|B;C7{nlF$rYxI1 z@$^?iEQ$ZvHq3f81eLNF2_`UX1h=5`Bl-cIE6;C3o=ymRaW$~H z3Tj=R5Z1UPrRAZpz82nON&lM`9HcUDam|pvX`x9|WS#e8p6`2kXYulWbk&=gnYo&Y zi^q^pXK^@oIc{BlY&lN3P8}?84QKzTLH&X>;_X81W%5c5uQq?S4AQ)cCJKURc_diw z8X8<~eFjHIu)md|>lz$vZheMFN4WnjmiJ88HQXrH>J|aF@W|dZJ&3^aP7%=WMid5) zGkar5dir#`ue9#MFP0G_@JHqPNaT!JV(5`yrdwIQxkoQU~r@!&{a3} zvVQI=*+v78Gmy2Q=I8auEECBmpf^;($W|O_!M(TWqUw}5VGKlE`%RfBb&4I3G(4u7 z_S75{v`8;h*0VZGJ9KIvc8@aZL|m21Yq24(MFh9i56#lXnR7>zyJ`pup^JE-DjPFe z3j)^gt228#t5!J7ChRU$c7K%rILDk9>4$9VO9HtJVUDqPjDNJa-q6wGwsa?|m9f4mhD&2^bgB}Sf_ZK=mDpECZXP2((e7M;!++*$+IX?qVYQBmvfB%I;hHHpz) zBJ;}mF0j;ed34fd-g^n-bQ`x*nOz%y#J$HK=|;0_Q1rrr5tCo)N7Lx38X!Yvts&eI z*7y>&LLn$m##m$T+oz`r438|sZ3P?yGU!YZ$K2AHBs|!bNkS_d2GO&O=UiY#3#_!; z}h$$Ue@`rnskfzJs!@U(PU3o z0xCJ1ZqHq+E_c@8wA*8?*z7O!pHrfI=yZoRv3x4`*`6!mQMjB*>@!2QPu;+}mv135 zmTttr8hQVy_Lp;h2JxLg!^qCx?iZItE#I_7b??F9+U_+(F}q3iuXBEebW@+C-GL?l zZIuj-1lU})MoZJ%93I#dET?-y z<#kvfWg_GjxTVe>c=A-v_)I`xnR$}ebOo#xZKWk)Q(mGQvZ$>1 z8lRd7Y=1osjTNxfd&e_T6x zTodkm1)Z(?%2n+@N_>bH=9BKEIF!ocIvEWRA)Os#LM^|E5xXyuqNcKNMqlyJ#*QE5 ze1}|Y0;58~lS>ViNEM??VOj@C{F6X+|LiVrDwe}Edz-)^J;rU{o6t%qkJ+i5ntv>i ziVc!jiY14MEXU*X{hv}k^-R$uiw9wB##x%PLxs~?Kh!8i^w>vAHsvS2fiAzW_iTTT z0Ml=Ajt*EXlEB}n0;Ay!o${c8)*k{HmP7kaVeFmnRd!*m8CAvP#}{X&M9#AqMbsD~ zHn$rcd!tW_q%U1<1l!D?e&O8$d&^9p5sV9zkPdfc!xA=s;@61Ccchw}975~_t@9Iq zDfI@*ClV`Hs@WmKou@?$Vh&dPwW%~RKPXx?YH5MhDjmjYtB*9O0=}AO4U@_m>UgJ_ z2o`P76;k)kY?{O_QQ98B`3t+Y&}`TG+LW`N;e1iGtb#E>N2DD}>VQ2dfI@RY7PblY z;kohoz0x;6?a#K!K^60ujzFEI+Qc42yVz&yuRxD%jb2wpoJ#|Y+~jH-z8=K2)QD_! zM%`uD9J14U0^;3l8SlEMcFF9R6DiSK)xhN)fnhd*qISIp@jfqa<(2kwi$((b@R8?) zk`Jno9h4X^e7S2Zp(-?i&s%EBNv%oR^Ux_tOE0?dF2tc+3P97l03S$VY|TNM z<6^Vgupd$6?xCA1=tI9p;ODB$Bd;8BpBZ`p$I;|z%achEjS&?+pqRD3YI~sKETaq>p za1`!{H;O-J^p={GTeu74wkUNL4XyAAs&a+1hEJsJ`UfJ%XSJj zupwTm{Ddx6^Rkm-R!iVkxa)1)-lg5Lu#3G6`j=imL=_38H0l)rFY&I&VXAH~`LoHV z+p0OWwhWbBF&Cl60W>;C;I!mH<=uJoQ5wKO>La(_!Snc4ma;jdeM2~BJSii7{ryyr zSLHSH{p%Ng=HjT_`sT6inw!E)uM9vz;cBdE$l|JkMC6I zA=fu$>pAXGsG@M9A!6$~mk{Rkg?Z=epQ7s3u6&%k^hTewHWa-fcPs=g>8jQ#yAXn=b9nBJ+pDKPl+g>d ze;7G$DNgm2i)z=nOFzj$WS-{CGHM{sVn%3rF(45;wOZYzP+x{(96d3tjX`0Nwz7Z* zVfNEta;Cx&xoA$yKBl{}f}*vo@U&IJM1-2^zD+Vb&NNf^JrEjXkv?P9Uu0u1+ zpgt(7Lqq<7qp;$3Lm`9%QS-8`wTw4Kl@{u*#h~O+L8nw%S<}t}hUE<_!(k)wjGH#T zhKm9eO6M;(KFxB=QFD)h+tJy~#Kuf(uPI$I2*u6MXp05W8EK;w+*vt6FHLH!Fcn&q z^4tg2j~k0YYSUGswv2e?Ha>Q0GvG+<9qidjPfLwH!qD<6jKPhCcNJLKPVrJP855c-A*wEduL87Z6vKyqQFKWd5MHP|iQDx9uPkj4kWy8^zL~UDr zojQM5bG!egi;_5zWlO(Y)@>qhtmm7%Tt3=dt{2QMV}r& z86;J{WCArUQH##^2%!JsM_5 z+_w;e7~e|Z_@ia)R#u5lf_?g^JRnf9*G zDs{xMZ95;a+bYRS+Yu*2g)j1LC-B4{G^iSz9XsdQuIXNtOme~KV;cMrKY%#mKR^`8 zxNZ<>yJxwBK3J~wwJ?4Mm7;`b+4(u?G{i6EBZU4SES!~Vlg^|)Ujr9+4LbMMRp^vKmClS0F4 zg>aY9g|+X&Q=ctS~$~I7D5L*>KgkX z6oE2nG(>fF_T)L}IKt=(bJ(tM_n&XQ%}0bDlKwvYiq73wXYqP^^+nb%ZtT196^kET z(_4E1u3S4bonht9ktOSevpQnLa>$#>@R7(weP-P8a0v1X?O6WP9)A0Db~sA#cG~ha z{>y46n<~W{-%Iy7Eyr#$_XcKBB`B-(RT}3MwmO%2FF8V?_q3pM{4l|RqtH%=B#_h; z9eIxBv=1+fGTChGFcq0w2!0xKZt^uz%neN^vS0{g%;=2qka1BSuU?KW8nAtr0!tBH z3YQp~EZXHAWIi#QVR4YTgg$AkR@?sL*TV>k!-7bpVv!}`I=#-q5YaS>+vcrTf2${D zI!L+O)OI6o3|l%|hM!@}X;S8exg|mJ$7yks)EBTX6<3y61~2NaIp6UjdnSs84YGh(8FQK)wmLbOe%8GGW|3ot{S+SV>k^8ojj+wY=9l<+f`2A;uYPiEyX+<|32HW!JLf%*=$4#y=)Wxi7@a2%U@6$69 z>*4sLReL@=b5X`oDJT%rE|zY<&F~;1+_Q06BwX2!$?JXS02RvNW5P(;4N<)bt-xsh zd?a<%6Fvz&46Zl#12~2f6U3PPbp7$G zn+PFe59FRR1kCQ=nk!R#GmJ;NEpWEe_R2s)=p@Ow`I!c9dHS9Y2wD_SJJ=|xMW-6^=Q``e*4TDb_a39JO%B%5~U5n zgMSfjS$+qGYTt5<{_lhR|1CHY{?88ex4*fQiShr%w*61blYX=gv56!&ZeeZ7@`sQh zlp*yB5UI?ds$e;2$soRSJdM*j$@m3eA!Y0rr>Zxa&zK*358xG6zSEZrZy~#N1 zVpwM`-i9)5W!r4Us)r8G&Ux}f2%wq)Rp|rBNh1IE#sj=ifxfbYXGIBHL;IwM26OX* zLnKYUNPgaui?Y)3broZuYcIov{sFCEuJWb@3roGc60H>Ru_gX1*&5J`X{BlFRBrqH z6)4I3UKU;h=+;$W2L9}lEWl)meoqsTE!w6Y9mjmroW>s1elEPU>*rlRMxEv^?C641 z^dvo~r>>x8!gmRfR%Vj|Yv#=WHZ5e2?%9%5)w0OlQkB0mO#8orIQR5j@zC-J4ey3D*K00eMuOmY@&7JT~N{=-k4jC{+Att#KFu5{K%lR4T#>_C>2?4urc8Zaz*ZPcz;T6Jg5YAsr~-k$H=CK6$76sS1)r7^*xx z6-=`ozQi4jhp$0?1lwb>shwU+QvLq4lAuB+meY6#+tcNQw{K%c;%iXR>nMNS>pG(z zxNkUp8tKQp1DHq!aj!vXSq3Jy>61dRc1Z>V?ihOa&O(bFzqQZ~ak=5X>%z{%wMm$u z<#{^Ab216PtqqVve*DW0Wnsdf&HTHSAoy?9x+4D@Wc$BgjD;#vO5g53p8zFDS|owO zXJ7?|^}F9hyjltsdE&P!#zVp34WN+mWYTGz`_IKrq9)%lPL00&nfCibk=SeiZT776 zg4h}59O>extSrYn@8gZP%%lD6=Ib93dkU~NBLlPkGIJ&lX zuF^Ns4#sJ_Hhwaa?!gO{cNVCC%Q8nCN||ctvP_ETB#wT&AltN6C0V=Ysn^mL8c$PD zFDHg^@+mFaR8~|NpS)C$@gXEiGhzAW?#o-4k>(hA|mBbyG!^s+9>h@C70}7Ne-H7NFpg#=$8u z5vZpk3G!|f)?xg4=s9R&c(7|6hKxBts*>u88ZWtYyy&{CD>%VwduFNe%bIQs(XICf zUt9q#D)G4rCaM2gRYL|56QPK8XT>AfIL%uy?*2tO8o^pv5!XUxU*6wA6@Eh=J|zG7_AAdnj@{#Xg+^;SHmfwto9$JA4H8 zTU{uG*f={#FsORB9=lSgleO8U#A`Ql*ViYFw|&$xFPe7X{9SnCbY?hZ@cxs>)(%Gd z5Faa}y}B^%O?Zp?wnw`b@lj#E&Ph)GYVevV*(x{>?55e|D=4H3VkaD z_X)NVx}kH4YQbl}6PWDA#JAvT`1FG#H|x$H2*-A@5F=t9k1^yt2X3!$noBcdHArvk zoEL7mF5G_JVO|mieYJxg7uV}OvhlWvLU@nBni=;}9YX8-57ce&dl=e6Gyy6DY}N)v~?GE1qV-i^yoe;w1kBljvoKQa(ohCG11;VK1?`>@^) z5&yPFKS%!6pRkC~>JU-0`>K0=r&*nj^FGZa-hPom@K8Gu_yX9?7=3Y^)bdeYDohpxE#j<5K+LTAENP2RE6rqr#* z&|!6}!#VpM1nSFD!%S3QV{=UwnJgR@nbDWdqb7fu1uxUxwNX^Fz=~DhY4$--yF0d( za^1te9PIKJNy6rWl}qQkRpg`_HY(_#yTn#wlVH-QW3fqYEFEs4gcO_?TpC=G6+2P< zByF>+XA<+AXwk4rz5D!u;W#+1kvc$$f1i;3(kT??P+gZ88%_RHsp^iiz89jqHUFcx zfSbMP$nH{z=n**A`tG%?Ww+({S}{u6l{rEB*DV}Cl}T->I-cV|MUP1YRav^JL{rP@ z!%c)eyvr0Duz3Y&uFZm|TuOOR`V4e2p0r#^Q(r2?-hT^rk_0Zn=trTF-K_|t#!$Fz z!P)9bhu%`G{f?j}%#gojonk8BY+qi$YNC}k8>BkNZW}U@O#+zbk)cyfi4VXQsZ8jr z4rXj5*{KY2A(uY;D*rlc;*wkdd@?Z7;DPh>&pNz~T6O8n!#YAx03=s0e7i;5kJ8A_ zzD2w!w-68(<<{599@$utYli(l|4zOSDK;K$Z2Z!934vvIB>+)$KkG1^cB@g20C_mh zhZjU-)bMG*EBZ17BDatOTic2rGOY8lsGMN8okIN~9;@DTw>%g%JGVhjJknQJ>BEo_+Jex2wT;=rJ%P zAr5yPTRlgUn0KmmLN0m8Tmp;VoEa@HwlWP_3xP|bfG@E?Y;cEr8?XWLhS5*1vw{Hi zHrw3?0Kevln`{hJdt~2}d8ZI!_VRW;q2Gixui#4TmZ$P9RQ?QMeDs8H+!)5OCBJd+ z*l|yM!sw^1Zo_>I#Cfd;VZ8{1yS6{U*#uPS4oF?SGaX7}VH1E%8D$*((BuJmhx-SQ zP)#2fA-@X~kAI6tlK(&9(SI`tYL{B5%V=Mlt2#fE{K53(L5V2N>L|id752kQ%t?UL z_;ZVF)(l*OW=%pb!owtF=E!8U;#n+Si)`YHO4nFf(?n5?w)qOYU%5ZFqCd!AA80K+ zrZQJoHC%50aQo~`eFxEI-M?ivbG;w>UVr`MN54|mN9jW4hdfsINJ}^~(?arcu%hcl&0a8^3#mp1$^hNow1;Qq9dhG1(UE2CM6G*cDhk z`1)?@X{GN;L(fuYXE~ha!!H^C?v8lNGqaFQ{gqM57W@XKV{lIHqvc@O#DDEJft5Lb z_$mEQ5Z*Y3sUknFIN9HY&!8mPa|{2RN~V}uCCwpeC^y-&df;(zIrHKMaX~3r(J1MR z9KCDg5)4MNculhOISHEwhRcNEzd^jECg%B5uOh5QBt-6^1@rQE1e}~r<;k?>qbXTQ zSqSh$6Q?5u7P4dykbmY)9plV69XVyO1H9j2N;!)yB>KV?JeS%$_dJ z;4^0CEXkKOH?IUTj37O2ToTAl*rc7hAa@*IL{%u4UhE`RY^^wrbL66hWJ$ef*Cn66 zXsXH0Yl%z=ZN0``E_Dv_;Q8^VB8kA7T4<2Z)-wWCnle6^l9tEBq=wrl%2-jL37~l}VgcyKq;>`?Yqjs+πB3J6V6!jZN3LnFjjS$H`EWq2Gd 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

cm5m^u}Emr}-=y4SZsDRxW-{Y}~9Y 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 z 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

~AkZMxT7>v1>^U)i0oG#xBP@10ag> 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 z%0A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⁢yvKj@ST2(RdjG0$aQ~=w`;RN! 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 |%^(v_$dNO;p>JS3Zw7u)MVh1d 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�MKFE`4JUt>4F}6bX4vBGxF3#1 zKk0_2ZtMxXhc(_zc$h;!`8SP!5;&-#OnBg#^-v{9Ht&N_m2R<`w?|2v7HCD zw+vnjh&c#OiCs2EFtyY*nlI8n`#mt9 zf4HXMs$<;=oAB$Xk1vaD)!pB5;EN#qm@S~B(Nt(Dt3IpGCIPi0tl9L2ST0$oTHDM1 z0ZTvC7T*Ue@rx|;jIvn~NZl$mgW)^T387YCBBeDDO>@VIo5SFjd0jI=v+f54WwydV z`!6a^kx667cs!{p^s2MTbRc`pet63GeR7)N^2Les_~^MWmRCD?IzzQ_tTlQgqxl5e zTpeXP8L#o3IsExOq|rp=Cm!aA!Xq;;$^~R55N8ZqKAGhvB-wfTWWCx@`e5f5_IzLl zBV5uSIt*)LTwu~vvHP+Cp$jjc>;Tx5meX)SG&`)jfBgW1KuV;!8a{kce)NG_WatwF z5$XD1;hwFK86~?>&r<&B$|8cxq1J%N2SahDgRr&U(=?l6XeX3g zq~&>*iO=h;q2>@?*pC^s#PBwZD1DQyuT|R%EhDeQerfl%ju2?7 zHptG_S)P0;?{oKvIyog>u2)X$Y}UHT!lt_Bje|)J2nlpr^@gi0${|xv)!~=e74t>{ z9;ChhLr-#&SY#&f0grn@{yUl2zk#U!SBCnp(}#~k)ej*FdLSnWOtw92A^MA@i0s;@ z(#qD=RpQ_lb=XqfMA~}?n6-urORN+G485%_qrliHZjImDPb*t{v4PI`(;Zza_Q?j+ zWWfE+uA}vUyrUeyOP#l;$EB@LIY2L&yIl_)0d2)?&*Vcc)yQ21!p+?s2g1!A5d~8K zz_9kV;O3Bz246ghXvurVr+pkK@PNyo>dlPSfU2#uZ2)t_vN3<*0wdMr=Cy#pq1Ea^ z##QflEa5RUQ&)ZVTu1@qpte{=S!kxn)%t8}BSFX1q$j$RqoEu}(OUDX+0MRs=??bd z!Pv5O5-^!wFp*iNna4UWD^ZMKbp)$Pqt#MVRCr*m(?rueT5Av99uLm6sm@s-9dNr4mjdhDos? zpWe9)!=LqPraR9au&Fm^b~UW|2$p_JQN8fTzvmmD)(tn|Z;HlOBtUfDkt5 zRSRoQhBz!!mS}81z8#`RE4c{!Q5FQLo}0Yow^Mgjnl#pjv?fuq&{3N_`@PCkQqzTA z3p~^`}B#3_6ZsZ-9PpSU4MTEEtcj9J)h<&hv-LN25j%H2|g2b=CB4}$ysCI+Xjan z3|SX<=ypNqo-t>GdAo^MOR9XAbzi8A+${4D>&b)s4KbgCTFs+R?yqQ@3@)^%@HwXR z$yV9xkO2|$kv61Q>Pwq!uCZSlzzU-R%G5r_+&T{{Em5nU^2NFNI={)Zu6>WUhqrph zll@wty`aGCEX40UFLo%oJ1Sku>)OyiVEt+Z2%2}GAHqEa#bxguoyT6#5h(pAx(p!v zLLNc>TecD+8;l_p+!T9-_b}}jCw`G>fhk6OU`miS!ZtSvBIlE$cW=r*pTrq-6Z>3` z%QIt&K~YD*6P0+N)E!g;%hbc2P_Tl_L%V$l0_LG}V#FwCFo^Nifh&3bnye+xo&-|_ z?MZMHOLh#7B1|R62Abj^Y@jy>YfML107Dkri6Zt2Y^OtcK%CCR7702Zk;2}I;(Yz{ zz%TD%iX4|}vdK`rM2g?R=4=OGMo}etvg8}eq|?b4qS*el$Zyw-JC!3{*C0m!xvyF! z>Gt=}4Ji!Eqmbuv=Hq7cpZI!)O4nlr+TqTRMkS4iuwMNJkCBcsNBrIIK1E$cn!x4O z(iaCGbT@DDT{+4}{yJPBH$KLSq;q!TvDxu3}id%<&mhasJ@0>IR+im zc1w8%GVM{Xi&Em!U*#koC7Sd5;E+h5R%e8E``R%ut#d>3dC`&9=OmFo+B+1v>zfZl0qV{kj+0H5k)Y0BHK|92TAn3 zDAtR!DZfg1cy=)@00~L^m`5bTG-3Qfw~`c_0u{JidF}9R*-v+SPDAOKlMUp@-2e z83FwgEk!efaW|XMm~p6Oy*aq#EyVZ^_17A`{|OSM`lDSjMfv}k4E`w&{y%z^Tulcz zkR)>8RCKL&1ws^wvaDE;vOSf!%^X(nMk+gb;wlV!c^P08XGJA8lFWj3wN)JH_Htta zJpImmijB{2oufuS_T<8tGQhsna_S6bwq!c2IK0xI9D>Y2jJLugf-P*`&i+n~3DfAjin>l&I@3UsB)kyi=7sa;@gR0ic|jYUc$R6d z3ha?bT1)2f#26a^$IilC%3D^#>IxI7A*71x_E;r#{{95ozyURk>8D%#aoWIPR^V^v zl!-(l_ATtJB2KyIUP;1ZIKKPK26ubkW}EiQiMauAp#Jag{5Dz7-H|kYTRt}?bDeao z>%Lpr`v2-TlS=AZ@YSvAI~ zsUFDJTydDAP`&6u2J;e!obpGTErgUOXyiExfB8iHB2TibO2T@&!X@`(kF@T(q?`c{ z-Ab>|sEM{u7Agiv>m@`jjudM}d%S(#CLML*8o0mRONyaBx z9*+dhh1H5Tq!FHjpG0TIHBg>&{k$U+A_~68KXEh>6b{5drx;1HI*KQeqkj83%k}dC zYPKsn1uiBfBpiT388Iz=%BaXlkNBty--8L5Jwr5z*#=lriTEzd#d;jOrz?f!xZduvHyrn)?`Az4`BmDd{bvu=QO;|C z(G*Vy(R+6Qk}AKDCExG-{k4|7I4Be?4Vh-jY{t@Y zs8)BCpHD(RIT;Ef&s@@~2uqd514Gal*suy^9LrF%R|fIH9y(FdhVa-<9Yr|hAYI_w zF{flK0q3#9r_@(o38^YkL(Gq@QQnp@j_brZ+wZ7YYm2;5T_< zKvk8N(>5FDEhD!#mhHRl5S)_0d<-wvz_9!xw{?=ZNM7Igy8VS}<&+|yE8eZwr&+1d zX15&oiG3C-IYj|p2fN^v69O#b*we8j;uI1|chpz0E8?N=co`*h$=nB}Ov8M0#_CDT z2)XbPkq*w`7@~b4Y&>+?0OicZREv61t_>=nMK#}{m*N(#g)5e@{}91w>*kiHa!CEef-p=$y8A@wuzplcpneg&Oix8 z#N@q<;ub5JkeyCsQ47bXJD@M(b2bnk%zPwZvjL%#Qhpm<*DZ8*9iKD6r#gf;lImxc zZHxDM1|HWV(tF~&tjh3k6=VE;qIoTz6yC3Y_<`-*c3H`y;SE>&2f|tFS1af2E3XRY z8f`++js(vaBGHyDQJ~RZwE)K0#k2KC82kS1p~1gFGWus2|KE01Y5!1^jJ&J)7M6ko zz(lAkYI~e%NWtfH87U}3X`>Qt{atB5P3B!O7mK0wMMk0liGxsk%|v6~WnFdX<<@XE zzK0Xv+yYbM%dv*_=VPS2IO3>v)eY8=D_o*#AUX!uO(YTUDW=<(0)-v3Ci*Pm8-SdneJ*Dua9 zX}aG#_k>>I=sNQCDxk6aZd(CkaY0Gmp+v;WSFKr8c6=~@+0Sx8Y>+tE^lp2&=-@9? zx(}JN=4d=!p%wGHlGZWBh~Gl-7`6!OOhlY{l9`&Pf!H(?k(5MUH50ms6cYnfp&j|s z(BCk>a&MmL^hk|uxyJjMh!ZEB&z>c`^(ic4Yf)W4<@$inJn~ODxBM&@6?8b>UF$9A z2UdV{VSe}H^$Zd;dAXIP)P|LDzV%{QVx$V9K7ODU%x89^7FL!>lY*VNZA_IgF4?^5 zow%f>g=@!@qhW8ggHSabPg0I4M@samZ; z16whhnX$&ScrJ-h@EHGmQx=*P1`@4R;t`tk#AE@~+cnNn8JZP3lBG40N2ka&dAi_k zlN5nbrfY-2UY>~i-(mOK+5jxe0Nw$WFpucwOuJYb_*rhr8^W4h z%G`VMrp()yN=FQ~<2S%x;gz|uN^}2#1mTDMyHfk#2(SOm>o@-k2y0{U*Mi_bfv~w6 z|J0MiIe^N*U?Yht&`V|YQfH!}TZ$splXl?<4EUODjMqUYizKEHljH>lu&MC(0jVtuqepmfaLg_E2f9N? zP%*JZFTY-rACmK%VAHL9c*5#=rd`!$*VVdN$?=&hbIPZz*@Yi+ubXI7r`J~LHr7P< zYq(aY%M3GnuV}zrk$2AROVib7cXkalq@Kr-wgQp0n;*D=$|_vXYq}m8YZMMk1wW-{ zY3+vNEzfp4P~am^Sb|I%sYb=aZ+lOz1bOY79*248xL>P_nt-F~H$4v`YIYy}{ynWk z+kJFp2S+x<@Y>dqTz1EtBIkF}zJ^OzJvWAI*1H`}+?$+GiSPnt!6J*Z=+W0_G{PtS zA<&KK+PcM0L-rlY77it!wW<{h!x@QDQgBW>b{mAH4`v8Yr_Rdm<=577W0-N+B5YM; zF+~wVC5jqq?{Ev4X$*PdI%5nbiW)lV?X=J(SkCKk%B8hkR(T^=QTSgy(#)}*l}te6 zmBXy@>6JgZ!X&d~GPBony$%`zRfX|}IM)E{$|szipoBP*)4T&Kxn=W6pWP!JH9QN( z)@}wd>aeIUNQIm8IWNrPY++eCo*v`o)CS(L?mtUAW0x23>o|323M+r4aAxNTg7&B5r!iv-WpXI(tZD}E~ z$-a{e2){(q?b8iVm9glP`E6izfVsr&QL?~HY50~Q z&LL|(PV22CjLh}|0m*k7aQJd)*7?tcXwp>B-{ArsQDVKIhXaDWP^`US)_&ZQQK5_N)wRyN(+CHIDSi55-a$O8tvMLZeM|H;zHKerm3{sd-T9bX$W9NsxnP?J^GAQ!%B9SQjv`$=rAs>?6rEMXy_b;jMjSU8$gth?sJ zSIlNL*rX=FtFTG4M%^kp#ys5}+=>&Jc;}^TqcK@yr`e<2T$4ot%U-KT2?IpVB5TC0 zoFaqhbYEqIQxmt5b*)mjGB9ieY|Q6MgsYbA*_I!s)Ut}pF2*OC%qcXk)HuO)6*=OS z;OKm3U#R%F?pW$&-Q}O78TiHIy1=F)9@z3>Q+);9?oK&a>`yRcN%za?`S%YOFR_K0 zeB=dZ$}ZW1LY=bWQ%f@id}WK5c!Y%-3`Ykc%5~ER!j;RhjigJ3)hd_>l8rNCreDXs zw(J&=9BUI|+Jq6@`RXBR{wE?^Y3-E=jmjuV6ET&rN^x3vDE zWmRfaAv7WU1uLQ+p?EB+Zpf$U;Yl%9NCZFuu;S$hu` z8E|$>T~}(kC#5+Th5G&~!+zcZheL_fdJ1}Ibe%O*?ffhZ0o3i0KJiKz{^2&VVrv)Z zIV02~2H^uV;|l%b?FHKi=IG{0YRq9afX9YXW5ub>;qG8B=QQ0b`heuDr0y%WiQEHr z;Q5J}jFP35BK3km^jDIFxZYY$@trn?icwGZ55>B#JNiY^j3*a^RkIB?e8yWg+Jen> z&}(4bgLNXB=T_^)iea}sM#hO5mpl;=S%wzrg}Z0JZrEBu25AxPn9K(y!}<+&vX=yh z(ud@cP22GnD>P8*35T?!n=ejK>|AOUG3B!{1WJ$-$-tFaqEH|AJHD3mmz9vdYHtK* zD?$KI%9NONt4Ug*1zG3XZ{eTw#T&Pah?-Z}W~Vh|{OW^vv=nK5<{;m!Lm? zXxwiiY~F_lhHx8{>AaV~7vI$DsE0!Atab;=Awz6h08a<~_zd4E?fD;vj>5 z+1ERAnt0`^5JUl?z+lHVDgzU4Mo}g~CFCQc9Oj$5qUWV^>axJ_asr?CQ}Il~BRlla zGq4BN9qH^RH~95ZN8Iz!w@v`>CV;>xBrrqKxB0PQe+-XXidE{}DB_yL!<6Wc#eJZP zZoBu;ve>lhG zPRLK2^WuGNfP#h|B{z}oiwphKgo6#9jO{6HRmNs>d=k$l0JiSs0yJ3nk`S;-!|0=> z5ztQ8^l2CifkHCm_rBil4}oIXdVN(Y_bbb0PL!S8dcXaE3vGVU3Vga6m-{pWmai^M zwr&I_xBZoxJ`~F40eO1gxonHp1CjOg!a@jdN+{)TJJ^aYp zJ1-o|+B+#c!`l1X^0IS!x|Pf=UCD4YX}9EBJ?I(|!72JW9oh*F`Bc?o;T&^^0L-@S z*z!UBi{_#mP?EFQ9FXYiZZPUNx38}_3X^Cpi=Q&G@4czs>Rr!YR(3$5utJmINtrB3 zna3I1Qa0$4#p3R7ot4bK=bfXcN!{7(BOKI6NmdH2oU80n%9W3!+VqE9DF_FKjK=P> zt7a+37JMcd?dc3N4TXfN2F205c+kDtiK`D-E_ftRhYV;wdDE;FRB__2?l+2vT(IeI zP&o@Dhqh!XqV*m>_4d{Cw}-nY*%T@f8Rc=LrC8;QS1XBEHX7wzd6~z`gw}Hr!lYsRAX|yizMr&h zl5AQEst)gKWHYL7RK^A=X<_;fla(lZp}XJnQ8lJx0Hv&@|VFfdKzM5Yil8s4HZsZ81nE(bTIR!*O?1|w4_j2MUXX`hfUt9rR@ zP1C6jm!oH8St^k8InknAr=2EaWwyspy*bmFO2Za@Y@69j z?BG&Ul3YiQJaks*YNMUv@(Vchz%tv80LevlRn7A;#X8i2=6!hQ7;7eb;iZQh(z9i0dQ>fd+$Mh@?yMD#K;6{!a{#bFM_Wm*odwx`gC75!P4C2vXY>5WvBt zaJNuj@GF^3M$%4$!6edH1Mr%zGQE^fcJ+c~#}}yeY^475!nslga5JF&Zy+s?A;)%p zG(%qfKgy+gfv&ht&uPr;J+EdFq9z`xY-Ku-#-m% z%bock3y#?Eui|z z@3Hp{&`D^e-HCrkEEvT*#u8$o4E#7Fm@Urb6O9bW9cTyNdK#gYlWqnQ12r#$p<&txZDX*wP8@IM% z*!X*%me{>-g6gr(qI;emKOPH=LUMH0iQj1&MF?->X6UD(|LB>9BEF8*KPD4l%BCh@ zi88*!L);+!u}O1XtLc--B)F?QbdKDqY2-d{p9d1xANnThaDZZIyK^SPotd`1wC}yHJ925(6lZ!{i?ORFPbWzG;e^H_|YD6y6if6*2 zalrr{!+TckjPVaKX_fathEPl&AGp=ChA)1(M@xo4wt&^MZH(3>5iLK4;sj)P^vZ%? zxU~+?h(<3*4VoxF4!|d<0N{v#LmvA2R*VV&MtsM|gUQJ`cb?4zoW+gtDXB!7Z8G!{Hi8)EZK3U>X@+0phaIfK~p8Ji#^1chY$;6a#)RlbDop1Gz zC*6fDd7^0jTgl5?;?k1u#xXqF`&Yz|UO|4p(bq@wy!tnU1N4IYuDzTPFGCL6XCp($ zx7qcvioWdUglpRW-~x6vU@pbA3&QNYgZ8_0(f%XD zYfS!iC;rY5R)&Dm0Dure{?Twi7ep*eR|G)UlYk1(jz9vcLI|I_d_c{G|dTsuV(07S~*$W;u+ z=HCvC=vpTxGsSfC=b4W1^KWM|7U}y8`C*z2hm^(;t`=o}`R!IeNv^GIT<(LpW7m>o zYCVx@M=NHh$TlxkDr(r8p4P3Hr9GvuafdN9_q3|Uxtgt;v@_9Eiaq23qOGuV3wN-w zogFbx#Do`XW$jd@uQJb>s?7rU0NJ_RH7Fa6aoJBgJ8j3!jk^6mVFQ+Ra7G>$9qHjl z`V^R~)W+$G@8U|!MrGV()|k<|%uyVjoa;OjoPRm%va$Q=3a1ywnK@lOH&Hi<8#f`v zcnK-fb_~p@>}_UUxF!^Pn6cgA54)Bb&fFpA64Fjrqh>}4P>tO8v60X9GYqNPr=ZSi zxcK0FiTG99cwl^MOm>!~(b9a%DfU`dTZfHzYx;&GA&#jKMZThH=1>)_cQz{CYVbi} zZBl^Z$Alno4Pv6O<}LWWUIRO?>zK1+N^>=s1RJ@xMdn5b3)PSSb*;p*99_m&$5-__ zG5bTos=P`}8wWu(9zb1wc6C)XB^VplZk}GF;bFLkB%4}{_zMkHH_0p#Dkt3;6X`iH zJ5*3VEm8bOs0h4Fdr%BGp^WyRSrnnOsu8d~R0f_!p5RZdDYlR-DfT{ZcFa5A0lO-!SVm+DeFvxY2u)TOE&B$0epx-3l{J6NFTy4nZj!99x3B$9&;hq!B?!Z> zVNG^gKX0C8`E2XkQV_V2SFtu-RyCYH)G|J6W{i#@?82T@sP_;b3iz77Yq4JzM41Tn zb6G$P(FU6W`XNp#J_k1f7nYsQ`Ur^$IMO3>%fA_E#+o6W3tN9OP~PV&dJX7y^LOuD z3`8`;4wrv5!0_96+l0R82$Yh+tsau8IlSvtRJ^10US{eJj^xXM^qRr1k~kI9F&PX{ zb&=;TX&*dE!;)MtAE}k}uSWU7T$ke5WEotV1@op)){h27?p;LMPomTrMPsEn3zJub z>~TQPTM;ugyN(vGnlQBsN%~KX@28;eT#+Axa;(2C?f;E)4h=^KCvzK1o4=60|1f_1 zXRPOHtbI&-(BB=BEySQPZO2>D#alYiRc|y&Ogm`9z%ivu4KuDe9J^K~?KziU_G9*9 z1--LxM2zk#1s8D|7p9Jj+1?c5_jtO-JG0H9IoNo%9&_D#-2#u=wv66?Kkx;~oKwz( z9Y8Rel@hqruyzcXEA;za z_FF|z*jO0CXcf&_$Ug1Os$R*;BO7iBeNd=1ukf5iMfC;F{azfq(=_o7Z`t(|#iCfC zETz(nvE5)IJHydpH#5@KXv%f;NvNAq_&7JL zKjlzC7-^xgN6m$GyUok5t7>4^U`k|~WN*vBBA3pfaG%PST+l@5>VvfK7P?Jbf}hMw zYRI(3agz&k7ZJ7JTt|b~W*gM4?WU_?sEZ9vskTfCs!Ug-Nx*5|TB7d0ybwkq&_hig z4=1Vd`G{Sf&nZ&gRDVvjLtw@vm6nfk#|pP9rP?s9Q|%bkFsT1DR!@%N_2{zM*V4o4 zYLJcKRh6cPG1TY)nH?6&qE#s&bH}!(Dh1iTYl1u^Ww$%kPQu@=>W=_jZ{Z*68_CIZ zXO;uolPZ<5+N(|SSWsM!JDHs5U3xo^!jUvNmyi3WW$T8n|l6?3& zJ@|WyH~tkfPntN>OER`_eyH0!$rfi-tL#vVedBjSlyuP7nC~$~19*Td+4k!S;E>`i z{B|YzlyT&!J?fQ+1$4^(pG=u#=5dHcYb$tjIgdGarRX*3Rirutfd=j1(%;vI#2EVv0!kElOM^hip|$nfOb5 z=5IjqZN_o>57C6*9IE7aE(*kPzoue9XCnIqAu-1MB^*0;_piDkB?qEYJK(h!C?5to z;nuOQArP@%>E8YlQ@>-61&9pr*bbcV*=4l)#n=dU8?2Vbn+N?6r~NEFm=JCvtk*h_ z4ib3Bw*b4buP(zk;D+w@BQ8mv{oH$jIW_mm^&AHyJPQ0-&`AB|p$TGy#eMq==lR?z zK9Ns|xu!pg48RwtTykk$u^P_>sAyst`@QzBNXCV@q5bsn2t~iizBj2w-6Yx%WFREl z505JEJH^s^AE5pb@XwHzBs<-C%`Dn|1%_6H+}vC0+snWp&B)B~W{Gsk%>=>=<2@82 zB)%3Rx0n#&j!!`rBG6=#S-TOoJlE+2w+Z9!a!PB$ zA0~F$8Br_>&@>fHgbu5eUx&#{??hz7kfo`?5KHiV^^zS-_m_WqDnBay06Sj>BWFQISbB1Wq_gQf{mwK?q1& zB&7R5ZiI^P9a>gV%BvjZ8B3=lJ+mz7<(Zu7;(dui<4A?et zfA^u|r5|ArP)wy;z*ueU*U<@OjA?XLE;)2L!seDKtdW{z6`h`}{r;(d5F{-m0c7pg z2v_yR?km`4dxbCb=#m^A8VjfJ)SdjiqrT4>F1}Ld>Xy&v5L*vFYL3&_z%Pzm$$!AI zGAY2rYlS2>AyYKBeHrh4!~y~O#)V$8@CGfHjTT<%UPk6aTDl6?!qRCq&v4m_e=Eqg zT%}D@tNx&+Im+wfXyRI3cSVS=YFx6}Lw-ILIjz*=U5R%hz0s_vs9}$Lt6s!>9l zL{w6UUD|$QL$AAxFd1xL7Fy9LiIqcUt7nPzD4k{w@PUWltIeaXh`^lttY__P zW|IC!O8dtJ{HDDIPB=MQJPWx8MtIGfDc9Gsi1dCiN0EMKJrsIGVqn~FdwmObwr&hbDj{r#5_H~ z@^>tb zGCi)z&N@q*HD&}>2YpRBwv%7-uJY|ru2x;2vxUG6wP+(Gz6A8-A*T@4Rd(uX+0&Ye zD-tYbhKY&x_#rRaFR0psNbd;~IhK@oV7@%oBy@4@bTi3ay^62tH`0d5-?iny-vpQfBdIGSoAT15$I zwbiZ1s4l~~55%Q)$YiLlsLQdE~sR zhEI9SLI1T!4{9ZZiceSzY>*^T!8q~(*ixN{keD{-w>|gm5xTpyns{o~H=O>de*4)e z@_LI!wAX|Rub3OD#S8HzlghIYFUIQ|)0|hZ?%{1+V!q)Y=+Z5c>oPeSW~%pM1q=^V z{VJA(2o&xHwEf~jSCeY-f#}Gj9OE0Zr=ybzLeY0;eAGu8B@rg147BYyVlHwFkYiKIrzow7OWF1>=5LLX0Go3o+3>UA-VlWlChH1 zg@E`ds8#;`} z)pvZ8l;amdf_SnIszf+ZD_n^37>!GYP;9?=JMpgBj!^*8UHXwDx)ur8#SwshMWp+nC8NSwA{g`~`$y zX`<@~k!~2WA=NmO?jHueghq7POjA}f*ag*ye24>Ao)*h*R^R_nTSqUcGKfm{GgTtP zQQD&^(bJm^4bbLgX`5;H3>Gohz#Aa}t(8b9^Hj{B(1FYWo_3t3`nXA(@f|VWU{bZ4 zZeHfs$s!78-l>SXRTfYB_9}iUiCz2{tlH1JmHx^nJx34+fl7h9#j)zBW1P&LH38% zdY)x$^}eI@)jsim#cRZuLM`v`;r+_yT}HrnV-Ie1gP)LhbO>;K8=Q<;?;f1Y@9_DS zt<~D88KhPBW*(p1KKK{lmd_nho?l4zul4RxHz(!|As_d=Y%ZPa z^w{qf-DG)GRvGkss@_P8hTt!QVSM61&r9MD6Q<&B!Z<_@(Xq8GPP9V z4%WV=&c2q;ne%+Nx)kN#d^YG4gAx<6CFtszPHRpL$V70s6l(o{D$`-qlI~oN=4eb{ z(pMW>>)>KCr0@b~Ts_n8=z2_~2Ys()mwf4+2<8+v2-6#Sgy?boEXl=@bbMeXmP#CL zrK*PjwfvK&FrzYb<+yCNI*HsVDtmK!TwyL9;Veh)6%tzbY~hne>A#U8 z(roHZw)S?uHI22U*O%7vY46I&4m2p*9jJg9^OJ6RLo=~um-jLqD=bO;?03j@*pG)u zQwOiC+H+y^8G!e;)xq zi;h-%9oUo?gxc0<_aFDaX>IcQ_Iy}B9hWW7Ib-HBQr z-{`E-rf!kx?6@}y2Qc~+?!nuFmvt){BcnO66Q33y3%$ON$5>QT&tWw)%wFyO*;(@w zDHk@Jo9}Mec75F(UuvoSTorN)CWlpnX_VXUo$QQ0Zw6HrQh$ApbDx(75fs7(cUSqv*4v*KWJ&tAfXsaUZQX2BiRM z($M=Z-ZbMU&-z|vwuGgr`QJ_?rQPk4Q z;|1`Rr+E|aOwn~0Ezd)(+^%8pN9*AHb#+8U$Ng0YkRYN~uv-$$&y~Ne_Hd=RnsO#f zk5RWBJ4Xm7TN*n}u8*PIbW(MC)a5Q`;8`K5H@=@ux5?nOxq06TZ@}YrxNUh;9upeU{tycwHMV6vG**t$K-?%SQxPh z;vyAQI?Jw5xP61dAbdeW79ld+E#3~aYRG*7TbJLXkHf4;P|lY&2u+p!67zHEZXvj5 z-cuFH0;_1uaWGAAUDQp_ZuRbp6d_V2&cP^zesAnW|8NcB>H_f!ZXS)dQ-4$aP_Jcv zG$j(%C;BHyJWr&Yl^FiGlEDq(*cE;og%1~{Y`&GXPBXtcjife9#S0mZfNG=yWzIOa zZJsOAKjK)cj-!^pew~zF*_JmR@QQ1hSsU(;HL0@Vl6aKM?8WN(f@+H5AE7DqMv#a6 z!QS!QHH7C1Z3o@QSiEi^6BVFna7FwI1+H8=kD)xlKna9iFq-(GnRLl5Zwh-yN|F^S zwtYAn8h_5gNAO_XJl{Wt0V#&97mRKmwMed_!27aq}0ebLl@p`}PdNTC>H! zN$c{8^|s-}LHLyw#tPTCLz429zPDRv%p)^#5rcs5^&;sm7C6ZQ^ye|ZqjOoy5ND_Vbz0U4`2HzGkX3qnemqk79mu z_dLQJ`9t;K$7(|8xFmKuY23YFg%0pf5 zuf6jvH}$beu?p`tzTO#y&rH`xZDtdg{V&qqF-DZ|S@&II+qP}nwr$(CZQEF5+qP}4 zu|0EU?{jx@Kb-teZf??@bbstl_gimOJ@tDQ!Byf2eLgM(;_{lzXrB1{GO$3!+N;+s z3W(p!$^%kz6PP>X17Mx+p*a zshUo}`gO7qB_b;fSB}oQcj446Ex?38jTV^JYw>_S#RP7GQEEH+HciLk{lv~zb9EPw zRc*br*e0o?`G*#ooNSXN%LdY0^7)9ZbBUSM$`tE%O&TpmsY%J@((wj!IxaKo?;v^YD1=^)h^^pmxoA}OoC%jJ z{sqDdR-NUmuD;cjy){^(Bmj{7K2}MxnR%9nooPcrLo#C$fui1_Av`;$Y(4V zJgNb=p$ePkP1g7cQ%Qq=QME^#Ca)NoyMh~bx>-7z`+uw#%nLN#B=2*_;RpwYv5&c! zy-Dex-&I!cNNetI+hdu+FVOk52OIigi0+pX`olv}aNus`#ZZX=$u?Bx9FX+PUlm7* zxKYon&>m&Cn^ua82K#`Mv{2w7a7d~l$TI{Q5;;i)9JSfmO=|s@#syAR^nqUdG)KCp@qo@ALK-*n9i5MH5HnYY?#zKN5XSA~_HveNSt z9@L3Jv#q!vp$aDfX7cN>jSoU}us1CiFWz~(4{$t(zdk_x0N!3_!Sh@u818AE-=`Qo zjW}K)d4AcwSfhAm?rQ>emqV1rz@PUr`#N^H zBOG$>A@Vz;8Yw>rK5!7h|GTc`B{jXM^jp%c`Hw<$s{eZ;^8e-~H>+N0A^#%Crmq`- zI)6n7p>`Ps1Bo>RApi>E`QX&x;U^z;()4v)jn^}T3N#zN_%Z}gS*eW$1% zH-NPbU0w-lXd12&VQe04Q-dfNcH{0^fqWGu#LCb!mJgcDR#*{d@u~mf&&8|GqUFpHF8iTdoBK*=LV;a-=5C&x1~hOYOOd6#w{>fWH6H;dTyD9 zWq_Vy2UJou^`vXw!Rus2biJ}N^Ab42);82vgtxqpns|&z!f44^wWN@SgIIpmWIMBZ z+B(HqxL7%txtO3;vE~cpyn0fB;ZndW8BE^ zb1=A)Ax@d*M&ObuT_y|BH2+mdi~0PAv$)=je9Cyst%c53!9*CUbW^d5asDs}WZ0D>}6Q~IZiz5Cy_+`fdbLuQ{davMK;@r9BraGBnjwOyc-RxutI1M#j z?d>ECuD`=qU9VflAtTk+oHZ{PTjC~LG@WnhfjI26hn0aZx4b1y_=k`!`x>~K$lm@| z!bO3qUHFGWAb9&mAU11aG2J7IMgQdOam0|l1F;Y*c_O9y%i0JIO9Qq33wPPp&kL>= zqxKK^ao<0h4%s`R7Fk+9FR<3*6?7Fjde1*lA({f+EU(q$&_#ZwrS=@LAW$Pl)iUGY zglaF2Qb|y#zE*;!NK9;jb9p9tA2k#)Z~oAUVe-T=zHacs_4ePKqJs{&Tu55RqKKAi zT=L$GQ+3>)7-n}(GMTo^eROKXIn)uCeq=@IJl0W@EtD(|00bxYHuSFFX#*xh-C_{H z4HlF53fSYYN)QR_nCsZmEZ!0$Q((;oV23tCz>}4dlCiU_n>vl&xjn+4?l-M-1yJJZ z!6mB=O$!y^Bwr-XbK{(X8xd&~ zniyYa15|`GMD58jdny7yk`viUALqqI!wxTVwU`0C7`0y^keDWqE#CqYh`VO6>xxv< z0yV^~o|QL+rWR+omPR4TOsS2k>-4i;WG~ya^#akY)okk}V z5W*(iaIgXfk_rR@pvW$$$N#V?mw`8yh+)e~W6LS9m1ZFVJHXAbTEGJ($+uVqk^XEAtkAOCyWpNWd5EB5}tzF zCznoi{_($7<`IT8)}K`#F?f`gpYc)r2Wab?Cnttkt1IS7xqdH&oR>R21}*Dd(KJ1T zMXL|ATlTSI_PQ^WwwO2%V&`N`3q}KIUvc(#c$7mwO~GPr-r>_#Yzn12no7{VX-`P( z6emh+BsEfa-JFZ=v6bO^G0*zzyZ==h%h!;K<@oKgWc){m4dVZ6MEc)dm1Q0XcdX%M zJ5%f0X5IDJ!=ZX7yrCBB(;*HVdJpoZj2r z(cC}&7MFCmo)}-zVY;%l^7|egVR|)3X;rVsmcH$xA!ujKxUX25+Q=`9w9s0f7s^f${$fX(tbLc{dYv|=xZaLwL$0a(89iGiZwfx%YQ0cA z^B@P$zbKIxfgpYOLlho0VIQMDSJUptjZ=IxaE;6GD=rJ;c;Ca(c5CNq%jL(hRPV#U zRBrFU@V+Vq;VR@u@&26&ecsmz;_aj3s+_GVr_0u=oEgCWgiC&$D|}xt_;QTU#Zf(8 zP)?P|*>Cjr)5+bd%H8ShD(}xeTBPs_^$ydmBJ=b3q`G;=>h( zl7#e3S@l%SsVSS6)>b~UymtupmJL9@`-Joq3`oA03i{y-7Yky26$tJs8nApN2=1yH z(D;ZI@Tu-Yzb65{EA1S3ywmo6R{Qse`OS!YLVdqVeP5_idSriR>iHHe>@Mu0%}6yp!qP_Xz$}52(JQg?y(Z{ji~Qa1{1d%?bU875vB-q9`@n0J$=L zI7|Ge&7fXO5S}Jb??a=MTheJ1))iNd`bosSHbq6Fu6a;g9oLULsBYqxioN3DLz z9L=w-Ag!-#t{|x(kDyfueUU7T+V{O{=>IDB@u` zxc^}7AZ=kC)j{PIR2taVP+%TGSs^G?i5vdS--jkviAS%!5owqr zOf)1%ei^Yh*ZNanSfuDw)V47r4138UFryYBaN`}@$%DQYtGR5!oZ>FsI|&Vo3d&|D zsu9cySiVRbk`tmH+*gev-XV0@IDZcu5cMI5Gq2As{D=Kt%Nq^UX{~nK_tHvfs)%{P z1p=2V9}70L187y6TW}|t9Yk2GGYIM7?6tl5y{I2Cy@nlqzd0w`bPWMIq^KNWUuEUI zx)bJL7GSs`hidDiiyic1i^GTl_~anYca5uGZF~&%RD>(20>2UVtxIrc2O!S;csNy{ zIb;i{v~+Z>q@-ar!t-4vK-Fyjlc zn>&nWZI5|f)FQJ$pVjZ|-KyJyc2{ojYu9F*?tyZRjX7U#o43tXxTv1 zdhNs#kt%oVMg{yhw7vb^Ov%i2s3uBFBUx$FIqX%Eq*(kU#LhmsyBUB#>hndPQ>%D~d}%wX{lG#7k&qDR^abZ6VehdikuZ_gMLiiR}DaR2pnPx*DnM@Ps_ zo{q_I3Zko0HJ4p@Zao|P`9&mRxlCD{aKx7*P)8N!!4T=n;vVp0%XW4bA(jiU?9`t$ z0!HYDabZm&Ea*m7dNmIv86^vXU8qqPS#`NOY`01}T;YC_F(XO-`^FiH!S*jpz1*5o{ z%SX|AQ0f~Aq<~UP_~Q_j5v8B7esR4-=ptG({Vm|$f(Q1FgjHLn@GPWOoAEghErAj; zZVVHM4{3h`WI_SMw1(^|hG3^PD(3-5h5hML(l5u@@azJJiz1^y8uwy*bf@T_FouPp zxNt;|jitCQJ4vM=NPsK|qu`oacKG`Y^2ZIWo3QV)5+W3KCdFJZg~jQ|k&TQ0IpsLO zIapggwTrf|*Ml}JRs&TpZ7rpHNsX^PjIwiChRp|(Ma1$r^s%clH?crQYhhyIw5hX# zRq3oZ3Q0|GvSYw)Jek)4dbxtpUuz8n%3i`IVdZTttS%p~2K`~9Cn88!H)$c{^=pNP zk2~N{m`Zn0O`Y3<*X*KBEw>#bwchAwk2gvblZ3-A^F6$S+^aCB5a?&M832eO7`SaB zq7j-^on~65=81qwTo15jG@S;{yu2UB|7n!&EG*v?nHVP>i<-HDIxv<6Cr6S&j>5>VXm!F&^9OQ4 zhjqEKhB@b?p2Ji92RRNEh8kRyqmIpn?@Zdm{D*BxLLiwW7F(gHE+&0@bHxL^TG~3d z2AOotp9P(%xd^YyqnIwn8d_o#nRW8?;80(U7GBXS%(V%fK{ur7tx_!z9)jFkpAJf2 z^K!q}SSghH?t-x^)-^kJIHa-;GQ@@4Id4D}k@4gw9589^o<9oAa$lQ5#HZAwH=M~x z5k!z@sd`ekhQYQnDH(}iT$2kbgz(=B32gY8eKxGgb)!XfN4jRfaFP}Yqr&Ku>zH0);<^dxK!x1;xvAP` z>&aNud{sHqnn;P8k;~#Va7r$KObmwcISWjEtpICCm-JP9r`Geg08=j`s^t2ycS^H6 zf9`;DpFW(t33Tb7tH4&aIh-9-^I>mq6gO?7%V;$+_XgnAVy=0mt*?gpjtz_Dz!oNP)^Fw_wF-X>|Zh(u4u!drbu2|umEh*PSWUf-7bfC(O zh`CrWQ3~}tUF3vQ5padfq5>OsE{-jruA54HG${ek=Eme;(>5s`BZOxm)SxkT;Om1n}*$wnh)Efv+sg z1h1Up(uRvOdr1hV)BzzkgD14%l}syNW=_75jN{tJA8Vs5RYUixjbYY2c}>^%lZ~A0 z+Pp;U+Q{axP(FfX8ITZb$Bex*RtmPD_&5GbKz*kTY39!dLH|st{$!>xWpI>2-I^ z8od8zMG_Gw{d#?HT#61xX!X5vjHkA=nW}j;%zkU@Z!(dqDT0#Nn@v_949Jk)&s3*5 zAg*k0IV$yavKDsn%yA=rcT4 zgk`Dun%*RI#gju_(2{RtQb3NmDvq%^%dyilnl?0$+*eQpA2NVa)cQ~k*susw5zNnx zoGyzvapQ!ts#MxA5nN%u5{!XQBBJBVB8qhUbTM>=lJmYV;7*$;Cm1#qe;u94B;?5$_Loz1y=^TocqJwLMS14cgWj zo%i8Pd}LUD?h{tbm6(16NfYE#7EZFhZjsq|S*!;?gjh_5i7k@a(g#MnxrAJrzPTAQ z|17cH`E&D^l;tA(jX(>COYL_f2Ez3@&u=v*j*dp=GAMd+v^1OrKQ{#q9xYWC$7O4@ zJ1HX3^C5*6$OTuy3y-YzHFN<$hJmVSwQy9WbD#2zy^A2&;{6tl!s*iZs_B;DPSb+F zjnTW#d5HwtOxL903lKekaFI^B&pzBQ&0J774NQyix>EB@7WEt)|~&;or#zN*P0JTr!3FR5E$_S>f~c@EvC);e5Uhrax3aUa#GDDn`U8okU&|kM8N899=V{i&}4O&(Een z$N-!S1W#@=At6FQA0YU&RQRB%ui;ae|0^@qjelNy|yhrIi^@tI-?9sl7qlf zQ%9}O_i)F5z50-jnc{^gt@F2B^;5KZUs}CS_@=rx$0*%tj6IYIzo!F8yl=F-AJ9r* zwZ5u%-D4S1BI6#gz7oy~ac}}~-zp8FD*)2=Bkk#j%E(JeTY&tJGP8We2|C7%sr+Pf zu**^NvQQmFu?7pu`OqW7WW5nedI9k>m3DSCwX895J# z#}+RQNem78R7?Gy2q&z~)WQ))OHQMco!8>3={faH(3h{&&vO}t8yjyP71$q?iv7k6 z62marTW5Ds=JDflHnrMNZvZ z&eujeaO(Tw5Tb!QSdrK-*rn_L4wwG52_I=>sbe}Bs8qV9Y>vI&A8#TN?TWs(pw%Cb7nW^wGox^uwQ{8w06QU`;{6(_>%%G>!TCpXBN#g(9w-vG_R znypjaDDBoY=-|qbJic6t#TDZtxb5~BkQmS^y$i(AUbY^6XY4_sq#buDB=WORjX!k<$;`-FJordBn zPXsnTh?yZ_N^wbr=@ozRR#hxbB<6lsbP2!uDun5kZlknDgz1&+BVzy%gL5Ku2aabr z{7ha{@9WB35}HYk=V-5pJE#!@H7+amWqFCdemZjn9edya=t6r{Jqq<8tEaYxg!uvL zwcztfoUJzX!B>*-lNiT*uXfMo`-ay0nbj9TTZb(td2-uRQC~LR3qCc8?$0rK5}!*z zPiBPgpcVw*b4>f1(Y4)pePw#*I@{iwHNEMBg@o2R#}vZm%^MS{gz_9X(le;LbVkpa z*=L@%PGrX_P!!Sxej1)Z$7$J=J7do#e8I2{+?8rS>ft3(#Ny1{8-0vMY(eOkJ?59P zK&Y!KtM5q4`m3O$0OLxPrq(bcH%-Q}%ec#QZlO&+1B4v^r<=){XmZmnM=Od*p^S9ElCGQ{lv&wMUC= zwCH-|aWh}q_cg(&!IqDQs>FiBhgV8J+$E5JZ^R|q zcqK%7bZu!7>k?KpXcI7DT&92=&v*J^wOVh!!*hP(>2K6(>tEX#8Is4@$$2sBePws| z#^<+5IXz*28m*>OKa0!=)7P??hL2Zd#P~@54(^dsRlvyxo~phAw9Ak^gfz(0jry#bjRKRRIu$UnIP*oBG14U5AY?V^`fqlN5pdh3gDI<7C2pHTpKS-^Y0~Ti>k){OSXP67W*DsEv>ZweDz;C4hBBnCVtI*G zS-9T}WUlI!Md8-&xzR^GN<(0MOZDaCR%LmM2Y9%&*dEjp&)?M+>uIlmaKj}2oJJ-E z9U0(oo}LVHcHL7WWv{wKCAm`%j(c89Aczi}*xTtVsO59vFXRH^A{-O(8W<(Mn?0x%NyB8 zvv62qzokn=m=M1v-LT%}%iMarKYS&y=)6L{3-E5sl75KT8N3t9UYh&W?haA&{%vf; zZr!fd=a^EcUPQ;PhE#nFCJG?tLbSosZg>x7+4m}XX0~RK87l2&>zHB!nd*c&QSDx9 za#LNq&#va9vS>9~%diD?Vj65}B_hB-fh)-RhwX36^!aBRDI%(_no=VW)eC|%s27;W z>yOvPLLo({4e98~_p}wIwM0|qrQP}ZcDqvpg42R^RJz}YDO5|^`5p5Z!x!7|y}RUe z>!0vmiD0IS(qxC}}wVw9D~n!!ciI+6NyTCf`K9OJ{d=06(dUU zH_y%%dv0frCZ}yb13>i6PJ_HEEQ--H<5J_#gpmXati4MUFZzuLCvJva4HWwCu1W6E zYO?9$rgqz^y1NJz>5$WXknfjfeRMsZ5k230Z>B$~pI~{UhdFyZt8T#ecmsII-%+dF z3T=?Q168GL_@8#p07nmhfz~43a0x8`IO2lN5(E(Mv?d+dn-jx%k<0QZd&SwV6XAKe zhf{h{4|VokT!aPs&biZ>{&T5`81Yu*X9oV)oQ!N30ox9q7llLMg@gZM^2a0IUz?DC zPLRDT<`f;dMx-BgUEqc>;2A%^A9b#)c#dVhj=t+@PtmD>1CAQGKuOWp!&7SU)d7541U=@FNE*R@KlZVSmgvu0&cvD1kX8wf|}U=@@6sprtJgV#C*$oHJl7$ zuj%-WMfciBUvwwn5!{BD=rS3|r7>g1Vfj_%reF)>4s2a5;_7)6j~9Lek?}TP^xh6a zv%&tzM2HvvvO>aItHJ(6Bv{O6g#hqBy20A+5dFQ-!?%#oA!-hLUABT8nuXY8$Rbft zz?)>GnY-jQ3lXjlA0@+|2OHsOOIV*%eWw}5s)fQ-3WX}J5#K7$nKYi$62#?+NXj-u z;M+p)z|+I0pp0^XxO5Pd?4Z2F>T)EP+5=X_bT(S)>m~>v#Xx*s9 zj*6ok8P=!99WhBGz_O^A+0=;nXct6W0FTIAXC$a|Qe%o(XC%ere|#u4Lft|>E{_Wv zGMdCuQzf`X4EqlE{18iV11wyv%QEUv5>y)o0%Ov$P4%@X;HxE*6Rs65^H)19y{Z8^ zVDjY1t|BC}VkNoeYns&OG-A3};+q>*gTiyt;)L@wdeI{1%~se}R~`qWQ#*usyJj!L zG#v8Skiqccp%gsP_Sbe`NRA92rP4A#wRkncB1_~6xmPg;2;zv%97Ts}8*kANsE0S{ zm^bolnrhiLR*gO!1f`3W@9T7L>jd7vw4M7QQ)g?AuRHKeTW|Yyf`YtcVR@&=kJGsI zWNdUiWIb#>bor(@K%G`6%82IR)dt96!?ywuzG#K(;f#j2(c!NJIG>Bsdem;)mBmbN znYB(OKJSxa#-hMV<6)_d=+Q|NWnQVkl%ng2{d*k^h@*x5xZ$zHJo+>tO?^0u!Z#E?#qmXpi(frIwFkp@J&f!1pK%mHb>x>#9#Ip z9?&)Tqrs%E2E8WoLIcHMkol-9@lJPXVE+nI9uMeHbn^9t*S({YI)#&u7j}%!Y~u<# zc@*6~(`vZBrB-o%N-ko5A}?Z%mhZ%%KNW!dhWd8HUR|o6Kvz70E>MB2$^x1f`!+1} zk2y~c^>L4Uz;&Zv@cJ$1kQ-z^H*r4-ez0oeaUj<#et@KHqt5vRzW%@nvnA=6WB%q7 zC1|&k(yhubfFN5?kAs0iXMk9TLA~)wV!3_&KQPXYav9tz7J+34Bsq+bhkZ1O=5+8t zFM>EUn&rIqa)&jpE-=0MHnc|;tA(c6Q&C#4CbF^~u%_lxpmmd!D?ur~yOe!qY#LZA)X|2c+7_IiM~ zk4ugiF;LW`{#NvuIm9}a?1lj*e4};YPf1 z=W6VC174Y|>(0&TrWWv~;&FmbTlt)MXk8|6fkAfT#oPi2jLUbkwI^zm94QLakgkr^ z!Pj=Kly}nN0!EU! z2aCr2VO%C$4Nv%@SboW@DrcDK?HPc^<#lA{)D{yvJidW`U71F!v^7Y$z z(9H?bThG4FEs7zAUw2%Wx|c=JR;bi&6uyF~TNg0^LupeJyQ>U|Uvk4Hx$ccrG7`EO zjYMA2xV(Eza6CtRT?ai5siAzCJ4(|?>?M#S3h|6uV<`oF#Ykg`2i%h{^ci^0isQ`1 zb?#=3e>eWmJ1@}V7x?=h4}69Qo}eJ!MNrHSb%EXNKkreXXLJzD$oc-onmy4lu!f&Y z4mkv)`~a0l)XEZk**2pq#)=XE9`Hi6;d+rWBwg3>3TSHMLM;I9@IcM6pPgfnc1$Ir zv!g3)AI7l^17wQPsT&=c9Yu8kg47u9XgM8x*G$5gsg1CXPBXxAGaB-VPOQnN)nS#{ zF!D)POa}RYKAm>ZKIZDpB^zdqlV)I@~MB7W7VlmHpOdEP;O*cc&TdVH= zzTmjfrA8!!VK&fs0v3zJ3p?g%u1kbhzCs(!0vlgPo06EBp>H_PO^R{DlB&GI=;ITAg(j#bGw#KqES zH^e!X$#W3owPe)y$5%w6A9m#bwrxpFFnVfix?y)n6vzFA{k;{SEodjfNeD`j2(PQm!lup-RdNV+venj#U zaq)Hpl5nI;vx%p{u%tYxV%+fpXttF>=O zEQ5`-F|{|&4-oce;K5hQJVqM39@{6{9^)_2Y)?MH-=H2!f_4dWP$E5U(4K8r+-$IU zwY-8eR_3WEAUT2w{aFskk=dM~hhXH(c!{lu-PUwqc=ZW+TssFQe!@E~9_x4sZqRdl zEii9+@p+P}sAC`t+;}q*g|65qA*)@$*j-0DK%=wp*IuAo!{*4sY>_?9yx9-dje|W) ziIeLF4~cnLb$$VLeiFVU2DK@+6N5-aS6_95usK2;_R=T#7|%0lmz zAiH4^3$tWD4CyQgbz1QD^*R2#YvAV60)2Sc;IDt~zS6vthf;I~e5OlS)k=|tY8b~3 zCfe#XbTHT$ICSf!cuA5av2p6RG!NRO>7OyU68FQ6gGqW%r~_V~!f6!saZE&Ym`AXu z1%}$0=^&iaoK9-$4*!aF@j^KP)`oD<_MtmL9*mXYMifags$u4R;05tmS-~%+I7l1j zlQSVKQp=~TlhR7T&_2D8o6<_Tba~>az|ca)1JY2WsX5Trwm7vzJJ8MgOVJ&W7mMt@ zhF)W4DV$^lDe%&i236n8*A)->bED@;{r7%XO%oqZ!k;@BmIXg8APlzX81bGfo(i$e zw2G+n8J<_Kj889YHjhV{h{cV^&SOv)`6$UAi1a>>>rYTze~cr*S83)3(XEHpbw)38 z@+T?z3?ItGeOiC|rztx@FNpWs-@r=-PJquvl7bOa0?a^;O?OUgKZQe(jGf9wa}~oT zOoE3g!7&Qjclb~$XJabUhs0xrz~gz@f`9M6ZR@ntS0`%$;3nk@5}Fj?E=^&Zh*$kZ#PwiYhK)RD;V#Z9 zfH_4xTdC%7xf{gKd;T+ZU`!pBWM1j!Ye6_aG_If1teW1i$wN)vh2m7?f=2BZ;OAx+>D~1wH*A0``u15{sD|F{R0?};sOR*9Wg zl3=vGiZ3aR8rI7uP4RelX^b1?CQ5NloaD4w4W+%V1GHy-kpxme1yUe@RWN~7GK~xV z&{!#)AqR2NMx+yv$+zm2+4Ax3Qk8GgRdm8tbneP-yTx~)*(`PEWpi5mgI$tIS(0&T z_`n>zu1!6XW$yNKhlD+2#_Kx;gT2kT1xRr7nNRKU`VL?EhESgUAdMu$3^FnV97c-i zXPB3~3on7pp{3wOQ2yR-BDP2JayE z%`#aUzOruV!`@7_Cuo=`x{x1wMTxD~P+u`{uT#xTp-?Vo2T|K)6uB-4H>&AlP#%pF z8k_7DXc4yEvCN&XTrqc1yred&J9$uW}cRd zDg~jiu#|41kUbIv>*pbk;O+x?vH#mdz?4vnpHRCIuAPjU5T%6J4t(WJVUrkmk(^aQ%khPN@A9hO&$(7E-32(>12umt>O%h|4oLmtVNp5EVWDd-ViJlX3 ztUUXY^ebQWgh;yX8QO~>yCtmg4&&HUYS5|{K*-L%{3Q-RP!~~5^Q55ib7Qg{H3qS7 zbHqH4x*rmi?=YDk=eD|-T$-TJgO#fJ2Vh7|s&_R)!@WJeqfUHH$wjdWnIl77p#{_T zY)DkZm5_?WBq91hkc>Sv_yFtZ{Xws^jn5Cj*M2GH8;Fkm0Wf^I|uT|+9 zn|!abhPWZ!Z{=~qHbmQXPVIp>xgd-kQco-kNDBTr7a;OQ`qq7xRY6gdZ2?w50%O~_ zD0mg*0C$o|Vk4T_S|Tcx4AG)5cyTj``4KidRMu!{n?$B{LCuNp=mc9>(RKq0MSN6d zy2H@2#Iq*=xt?978MDtADi9PCN_!Eb$c?ueF-}+pKOOJqaPdxYD9LMP2hv~uxk#u$v zS5w=ZFsSY;)*jPzd}?GZZs^%mZa4IvFL3T@o9!mCB`*ki&-%Fmk`uMC#|4*SNZo;! zQ+^z8u-q^-r~7@AEZ)<*Dktu$MY-wjICNtC_(M zy4!E5t{=)-ARqT1mX()-FSfN>tef89_uc)k7k9mg7e4(r$gUrRO_oEPQ@c9kn;WCA zyt{9-uG!%ay}NI=t{nhJH&w^oGCNSmUwPFi z-yp~Gplk_S+;9+#d>mjmaf@1GtNjnX|0Snw!V=;AqWtqmqv}6Rrm_5IIjx1QjDfqn zqlKNLg|ml(i;0WL|KNI3qGccl_@P7eKC4vwX>~g6tAca|khPIf~oi?5b(sQ7@{= zpx0;{`WR?qI(a;o{qYHu{1hqKDNDV0ILHZa&QAUZX2D42Prt@K`nK?|a4!&k+1sR9 zYWX>RoXX%GjTIBBDZq}UgrFv*#T*J}ohL({QMt4H`2-pAT z7b56lVQp;U`2WCM)U=$COwfHuncn z&j(Cff5B~mk*B`~#0Dc+ICldWlh9#=|J)B_&|<@|=(-=-*o&UNT-ge26bahbZeDS7 zU)nnPzCNa3{yZNXYGx0((`?vp$PHrfWsZ(c0;$%pVkQo97 zxB0)9*Bnc0FpZk9%x)FCX!!H}H9IvHVs#PX-yHLJOT?bYio}dWodpA4B29@V&GHC> zI3t%rmVkkSMl2aRIaS{G{+J} zjv={Ur!Xx(qDYa=6nku{j-3o0c$p~}%~o*)9NOa;|3ZfJ_B{c)GrXgURJ7CZ2#r%{zg}0IKITJu$Sd}yK@^0rVD>Oy>=lozD z9>U_>UHYVFlh2_+7fgiu8(locKr(gBRx+)A;_^N!n5s?5#VE;^Y0$1VyTM6tpp`f1 z<1Ltgn0&M~*e_36@3J0VIpNu3=DA&U`T_8EDPNv*}YBBT*_1$$8T zI6~m>D_AGg`A-toh`VFdik}Jf`s<*0NDfrBO{DaY9=Jf*?a5H$LD=ovK-~P=s^0AT zAmE9=!s9`#>8T(CGuJ$^u#_y!2>BEb6eG_y6?Ro9(P7zvX zlOjT;OL5U%>NDAk|tU@Ge|=H^>i6hwGsO=H_0>9hBlbM#LL7Oq;A_?~v@p3}O%&JaBai zOp)2Lj@_ND7Qz9orp>4=Sp2^~mgjAt^G-OpFNpsFaj@44P3XWH0{#H#2@Mct+8crR zrxN<3PTFGm3pe_V0tBDk4IFc6^Vfyda82UBIe)jq*eubZ63H9o{FqlXio9dH@KnjRA!^<8N;&oty~!o^8KL)t!I%a0XB{nP z*(+3I1#_8WU$sY(0z~Mz%~S6oH7yi|>^SA_xX#*GbNl$b)$V-I)-~>%W%?29eno!0 z!pQBrL22=AUxkXB$ss$k-B!xDl~V4IZ!pZU1s3ESfk+}ORW*b6Q%!m2F`KTtz3950yU(G z!rGVy3`TPT9Ggb3l-=t|&-Av{;si}r{YIP!>l1lm>zR4p6!VFjf5a=vMDYptU%^y~ zY0rA`7ujM2_n%_N|Ahkfe+Z`HCjSHP&r!3H*Ivf(z23jpRYw&Jha#99Nfrr#fe02> z7F2~G4rmKTkM~yJ)J~mrOfpH^(J`055NpoEY`&{1X3!kXkk;ZXVq$S5gZnh0GVO3(}~+VgKg&4dZ*8aK>5Je*TX-o_Vx|T!<{@h>`ok9Z@8%I z4joSKaQ}kaJ1ETV{+0%4m-V(S^uCM9fWwuxsDLA7My}QD{!Mztvh3WMS1itYMG|c@ zY`J0^lT!3jdWL$2Gc|NYj$nbQ!_F=7_Dcg;~QmJLd$vMCDS8^p4E`Gvo*ZAWT)uN zGSuQt&TD-CE2ue0fGC~Acsli5oiW)27netv(#c2brW(}}HoDYk&`yZt08EsQxL^AGu6D^hNEIOQV_2Hhb!}wN;M)`)F z22QMtX=jI(DOxTpYXxa#8LAgE%~?g!AtIHOIs;74NI38Tp|VX|QkCAdxY&gpxCoD42U_|cQt5l5cPArJq6 zGCTXUXd1B020O43nWEomaHEYpxcB$D4XXEf0PR8@0&Wbh%?twPN!(2xtm|+`?}dlX zG%E>5v@sf#qieQZw)};NNgQxws@kQ_%#H~9Tg6gdDtA4ooK^W_*=CUvtjjaZcRXJI zzgT<6F2S}fT{pwFZJQakZQHh)VcWKi4BNJmVcU*4vDU8oaO+g9d-rYC+HCU|JmVdG zbiG9bZD~jqzEx;yXWSL72l_4yCP(QEqo0SC!b6k(i$1C0TsaxF5iUHUFm#F8^>Za< zx@a$Jmh8Q-%5)gaMyMs^zmytR1adesj+rW;Su*=(;0u2GO)@J?yh;tK2m`eh**y3jTg{B{r*y4ip2{6bIOk zREBD#S&w-0%rKv1F~o{W{9}YlmE%vFWGnR!%<&O%Yz+LoDmFb1PW!3?EDpHFTlDz7 zFSo{($$UwiX*s%9 zT$w~7T7eaUa=Ui5kN|_ud!rx0_r*}n_&umEJVkaDw-iC^g|b{{#g4}0qP#4{IEA)g z_Ge@D!w?$wvmRcJEdpo7zZspgU7toqPF3X#7IlP^{Psmq^485efI2C;Klv0QQDlYI zX$vSZBDx~Og_?aJlIn1a3p8zK+^L-Iopbyr_fds_pl3sCL-SO$V$KFotq`Tn5baMq z;st7>d!FL^IjF9+V+v$jamhq&2?U`fXkA(&89N2U-C*0%?eU1J>0iIQhoanlfY zDJ>{ygZ;e6Hb0mZG*vG@1zXp#U^>FHu%AzfOZX!Dr!ge{#5eS!A#?=7blj0H31i*I zsZAHf{JHzHE|MR?g8>mJCJP8qhmw>JgHRVGwi1mc1jaD{>l7}tLG7ZTa~?l%P6$L< z#syZ?kHC0`AJ=pF@QVD`M;X4Rq}_7l`F>~b{HG{Dyfj}CFIT-F_A6t>QN2ZxG)y)5 zE1yW~yB}b=ApI)gA!0Uyp8V2dHAC&nnpvhJY;7oE)GP&eQPu^7&~JrGX)=yas5=q{ zO-~3=`_&NOVovl*^gb!`oPa036wx)8|2|*&TsY&npC%vAbMU+6z+D3Rd9<&UQ-~g%4$>qft9>m8+q%mmq~u@t=$bwE9I{pYY}{d&tR5rzvM+st5z58(+=!W zR!!SxZi!x#HxlMV>?fJ5o%>m)kk(k(I0rWn3ikz1V2@Ria_osoM?V-QMAV5ckuQpCS5rBsQKzkWkDg>9OUKbgU35gjHGz84By z*nbqXpfQnFPf;AF%)HW?xT(d09j6a8p9n@k zRzw(JFCScTq7U^h73paQ!JZcv4Q{*A4W2GEgg8lbC3;WZ&*y&p&3U;rgpGxqWYcQJ=jUgZuT+TMIf z67mk$OJ}f57^OHtPD+vZk(qW|X9_D^F_Nfnc~z1vHT1X$;UpPhw$oC|7ThXn|0hK< z(W^>~7s)(4dS1FRog~1DjEMjjzq?!Vh;RIeFC@babDR&X_zmjNLa41(C_&csycM)o%WK;ZNK9O*iKv%h8IJWklLGWp0gv& z$R7fDOGGeF!e1qwj1Ao*(#O_A!*disIu+;C(!DY=5+^}f^c;l^%_+^PK`*ohAMU9l zeKjchePkt8NFil z@bq_0&5(JAO>QK^hihht{tU)Gvjh*?>V-eWqIT1qY$adSkkq8jeOl94=DZ%NU4X`? zU9ZZ{Vi^J#_)&c9k7@3@l4$sMC2zB6_)A1=<9Su!gH`i??xn|(sq!z80j?&E_-ZgY z42kko(oV%f%d&q|34J+2c#Md`X$Rms%vz3}g!os@v~#y(XlW+4rTE}?bWdC=c5RlB z)bpui=L{VgeL}rn?8|jQS(w9myCr@79llaDzUirdFZyUe{ipEt|HXCkzX@NZZC#9o zj2#XCBln@8EsMmD%sr2qOha`b2;W`7P={=Ugc~}$hBh!zs0;yfHE*l{*2HPlCb>Pj zwGYJaz76(V5NX;bpfDamoY8vphx;j;)Ah1u3oYdb>vcyY1lP5EpP(z(?e##vA^qsFSfW*i;e!qgq2IP)Jb63H zcrV}0^qGp$tNwJVPNhI!m$=z(s)N2JnYH`vpoO8cM_WRfRA&q2fG2enWHzpLSXaC8 zBewHr)76@T&I0AM>T4sex#@(9``)ev|7D zRP=AQSYCVSmT!x`%0fw0EWO-RdP~lrT`MzpCn=&{{G3t0o?&Nyt`S-n`M}ESatr2l zxdiXJ28XBauuu2FACZUQT@T7mghDBy*BqKtcmIHvr#*{BqTap)x4cO|&~5Olzimn$ z8K32*hP&{l48XR*$2Eji^!;9C3^?CSnRh%^e%1=v7K}|xT9;=TO8IXhzs&!?7m@lCBmkMdSAftXm zLsr(HoTetqZ#2sr+6M)G5}i_iM1kgOA3K_ka;Z(oJpPF*5g7OJ1Ckd5_$$K>oZ*vFi*-a=lSs zbxw?{y1lT&S^g>|+_T1=rN>W^lb(u>a}H zusSe+*X>^(zk%^;z((+j;N3d3?CQ_CvS>jTqMDftAG5q#j^pL~%UXp-G5OVe#h)r@isdO1skumk|6Ke;G=4O&R7LZoq`0foX5G5@h z)kaJz6v!Tk+;2FH^o~9cO)y%>s-L6D0-ViDZ!(x8TeQ{_*! zG{y;nWAZ7{dSBvexcqWx77nXID|*78o#3WxjRUB*L#gs*FavSTl?s!d8%gn>3Nn&z z2+P-keslWik7*~VJ%0!r;^)sPc=Fg6skyjCDGglaSSpR$e3wGy-FBM%k2}uguDL6S z4x!CW`Z5_>2azj+7!_xLLELE`isszI4qTZ=U@l?(qAW9yyoyA&I+ATy9baoj4^{); z>K2-+E}CoEE-4bqGswayt7)B&^c)s!9e-QXO9c`dVE#e)#aFq)Ls`$Et+PkbkoA6o zcuc9Go9pd7V5vkRD%&g1xi>HY5OK3vJCwz#raJ6{JyQqA&Bd8tfV0l>E;ekeH9PBf z!Li$6y&D;gw@1d|f?vK|DPh-!xAzcRjqrzoGTePF&v~f<{P_|NLxvs#0j3$i%kh$lIF<;u=2eg zD={G^zNF-BH50#MI91N6pK6(R?WYAO^#`QVRcODo31{lpHUi^V3#ho@JhJDZj?>w- zXbiO(4GsuYQalk=6@06EHnp}l41UtRhF3q9ErJM!`alGSr4h~K($mbwXar%5Vub}A zSI%d+&f>AS`E*8nhKAjqao>vyfhegm&CcpzT)8soi2zBqA$Gv9-MH9OaBV*25u9jf4^Nf*bH z<1B2$ZwOWH;Q>%&b&5JhTM%v1+pade(U#` zSBkAq>?dIC#Vv)$b?S;(j`qtht)1GEl=k}WQP)FAR*`fzxKl2tKZbFdr7hXc_MQVN zcZ$N7Dv%Qe;fKnu@^Ok4Z9ZU&dn{+Da(6yF!8S^A&|k&qmjx0paF|JOb?WZFP{(Xa zkXMLMu#*u*3&R=I{S_I1&DT#vG}E5_#K?Ww%*`&IbDVhz%+!+T56*jRXX~;5iu>gV_InSiG($AD z_+ifvgn2^o^|a2vRab*|hUA?Dg56A8Cue=<&cYM#cbEou^hpQ0m9cHzeo z!aZf)C}rZfh0?gQSt5&B!dac9O^=Rx1eq~TcHBc^X;kRA2wOb{-I(Zg{YK#Ofk_8R z^FC5@M64TfflfLtDxb;8x!WgoN*`qD6GQQiq4ZO(Y8-y29Z&G5kRe1=)kOrjya^|2 zo$xl|so8C5507&}+Xtn@f~6zer^=5V4wd*Sv)CB@gpJ@>Xv2y~H=WD;2GGRaJz&J7 zvE@kn%>C*DU$}c+4#)eL3o0f%0t|A;{&kU+v$UYG&oT1+L5;zX0P%c z+zX={`}D5+ik_>b@y7mS&V9c_YAmZxf0|Ww$-Ak?iqd^yrrw=Ej|+doL)`Zw{0Wg$ z&Jl7-BQlh#2!V|-6^-WcO`TGL8le7A1RsoGoR=S*9kq}QoAPq8_?*?DqF3&%F-O}{ zOoItkPiYasJ)Gp-0V;q;hF5fXV}=Ybz?26(3!@((%nIG%BBxN$NUjWW$HTd{H!R(L z9OxUab=F~==@|1H01`;{Lx4@%0;?eW5U-Z=3jP)?GW97lo1$SSB?DaAGrK`2samt& ze|)sYszrQ}oX1VfyED|#Mmj#~I@e#$VV#bnM_HLsKc?o^@jKK3nRtqwe90`OU&+P$ z9*2-UIvFKBDj3q2Q*smk9Q=r?)_a=9!j4JKi|h*+ihL1ZGYc`-K~~qSK7~j zh_Cxz)Mq-Ik7lsXVK9=TLZ5N6AA205lS<#9Ka$=CRh&?fm!%N;s7_e7=16Jk0FhvF&K?wM$@=YN|p( zIqheyX4?h~vTA+81!yU^ZN_sluL-yXyxFxI0aRWy(Nx|okg5r|=-1nrs9eYWq*~+O z7V0g%AvA78Prp6vvcPO_w>^OQVg>6`(~l!4M+?)1)M~v&vg8FRSn>*YA%Kr)${C}! zal-Lb-WH8gE9W^2go!Al+>0Aic{+UPv2!faLWjxnEudIRb{Wd^zFA!x@MSePp^DHg18hLQ%u zzjK-xP*_XA48mH9TXU5^4j9}d#?S3CC^RnySH!2y)Jy6%kYuAPCQ#6@@^5Il*8c!c zdIP2x1mmS!AF2V>4Sy$HP)Z>?XC+RzRg|^2!+K_baIUnmT_q zu6rLP;HDOFvxu0PR8LI1e6TUGSZFkpf+abhrmB7~ST3Q{!-eBJ`()x{nn3V&&l2VE zun3Y~L7tsEUnJsTiXZ}g%S1twekeW6s5?g$NhG=8t)Bq7K9J0TgSqZERi{Is-_g+Q z-F4==I$lmkDYwlms?N#Sf`&7- zP$)vX5&yJ$9a$1^JLC_eNW7bFqhDhu5bg?2^(SyUl%ay?3OV-iaT3HvxS{TIvWbyK zJ6%=Q&(n||iIW&)NlqayQ4BbbgZ>M-a#b=TPh^ooInbvangD_2HuZ-x*Sd70N4|XE z+Bp#MKt3@sDSIP|i4oG?3AA)#xZ$Zb5XbPh1tDwLF@`v2X&Esa;-JU6yUDgDeY!$l zNN}P#0tt5ufPPq~*NK@Zv-V8@*eY1WZ#4z!LV>zakHAb1j;T{+`Oj2S7=MjM>ROT1 z!j)Rh?s$cjHi8TgX3hE0Hghd%N12LKg8GNR^n4soWBZZk;FBt0~MLVw^?Id5YDn28R(f zp5aT#WZmKyOwF3g?22Eq>+cml_Q8A9B4)H(c29_oxl4r$ng`VD^7uv$pOLEz92M~S zru9jrwnIBQ%)Cr8y?!#HlC8wdpn>0nz0sh=!tjO)H zjpYZ=q&=NdGiz0nfWcPO@jui`3{Qyj^CWe}D6{p#ClX{Ce z21IVT;9H}pvXxUp@W&VwlA&CQ6DO+k^jli-*K=a$WaC5-QI8R31o5Nl8jnDK{HbNE z3LFIvOoTyh;ZEqa0LqJ{xr7dTCN4f>vh2HA;kWj;A&B#%PTi3y9Ze%oGta{rfvSgo zc+_%>#TZ2jd)Cei=r70AA9pOgWD0tmTXy-Nloy_1=0YOr#%Y=&j}|3Lt6`jL4iVHk z^xq?VoFLPnKOJ$@wgj`S-5ZJ0YILZZ`b2y<6e6FZ+^J2Ms$Q`piaVWFe24X{k(jqK zOh3CV#u$@Z89`n`dTjPA{V0=7-w`9ZE#%1De)(NB)XbnT3>9@nUr z;(KqUV$ihm@ z<>U6c@y0Z$XIuoH-829O3Tr=GN8n6m3OO=%jRWp6W`e02KJ-uCL44|V*1nQVqCauS z5^fcL?z8$F3|k*4Q_lPa3^*Jr_eQ>_)OMaZNVbw}t=e(x2_4D6nTg{my9EkK7Xv>_ zlb0??m#RATHp#m@NR#$!JpvWVnMlh~?#!c*B+OTnTnzyN5OS)053C5j10kks+;;tD$Zx>Nj@|qusEhUoSDU7D}vY3WFsSDkk_Q!V0+&H zhoz7C-!(l6%=!G5?(URwT2GCp)E|QGVm3I800>|wRLW4PAd@Hwk3&Z8lHU$aa%VZ$1Df0WxGs}%kz=2KV+asFGC@j~TnwTkuNOa<^9(hTd< zmkUOfcRP82g(E|%OwmaMS)>)(7{Q;_)6#Gu)=h|f^d63)OuTPW5%Ohz_r*ba)($Gq z*;}KmwgMA_P^ny6)YLr>H9!UZ7tIejV3bU60DUZPc0Eq-tC3gQJz}XX&XaZN2ijTL z9)X2GMxjpC1?O7XiB9Qz>%yz`?*iuW+qXx|M{W8uQgQAh+e0NN*|qM8vE4;0xJ}28 zZ1(GHkk1^!6+Jj+Wi%Q>)QX{9evOF&$y+{mdf-``h&Y$F-C%xbdWA!5saA}XacXr(7q&hTV>tK?6 z4Ww_Ap%cCrsS&PWOZnrielOB+%#O~6d9MSUvXYs%4HBC{+vmTtZA`w3WYzVf=qPXE zIW@rHMjL@k)cYuRmrKcEFlVDMNckv_L+y)rArtHbV&1Dl%fV7MBHVP7~b4C&e=!HXFNl%thLApt-|h z$=XmtmphVDVKxA$GI>$)Rg6k!NPX5EpS=T*14eMPJIqey_8N+ z5X(rL9E^D52Ze0_mmzTAL|{^7K-WLKV)yN5Sbe~KVovW>j;Uh8q@h#Ouiv*yUhq&= zoH{^-kNsjgARmHleEAIVSgKx_t4w@4_vJn}d%3??jet!7IgHn(WJFKymp=5qLe0p@ zqUuhxi*=tW%1QC-i_aHq+h>E8Bvv?MwA5lt)B(P$fk@gRRQ77*{k|0GEDr7*>UyTI z@|J4RHVN^N?(~SlG3flBbqCBMch>wFX@eiE;8|w!L_r3CCHo6ZHlbMzP47fqQDnz^ zMenBT*8PvF&9zB1t{w7|r`fo(51gX7D_+1>>`pvxeZ;xDjF9BcShU6)7hYQ6VsD^4pr>W5i@`aJBMew6 znPqJ1ufj{H>PR}JT2})mW&~K>(WsL7B$*AbyVHpo@}Vv!;=>)$!D)UfOv_#JG`b^UFMh%LMYGM76quY zX>CnStS?@rmZqK<5Mq$J0nRXTVFtF#BOp5j|JJ%$40gKR+W6)>}ESP8mc0* zI(=xrL@8>!p(t-QXMSDzCAs}<-1f{v*#f(8qq7=(>UZgYd)%=P-Tuhk0fO&`>!tPq zj@}9A6Vq-BHWA{m5h`@4A335Rq~*AduET*^K19_ zsXw)A@P)Opa%5HI9PO#HuC`G9eMdYp=`&k*Y4tmzQiGxry|8S2Bpf-N-cW>F+B*|| z(^MaT2a@HPo$_jNV%|8tWSkzZ85ix)9toCL6kM0^M01BLii2VTOfOo47Run1 zF+nYbUc%$R1=F}7(f^*K^0o(L;MArm*d{#UzTJp4&AdEKEo{albUeeQW-<`@V}V=p z)CaXpbql(V zcFsT>CKq;y`(|&QYQ6_#m%jNex3pMS|0Y4Xtlb3kpIe{%mhERvAW`zHoKq~Cb zcSB%PyHTYGC3?s3>W@9bXV7y;t)q9s!Zb23Bo&WY&yr>*6AJfJ4Ht}Jwzdy)(z#VI z`fzNEE|3luXmj+LueI%tTkJglJkoQlb~dG1dYDoi%P`)wm4C6WFPCXu&OJAw$sTK^ z5ntl0@Wj<_=3hQV(RqgTQk^zO4tVgCQq0;Tb{h{r$z5=+@yBUzx~brDKRXzxn}%01yW7Uc{!pfywgNB+doT zCbmFwtx8yA1bkH2UCaQq_SSX-xmDxz_AV_W@SJ@T28W;-Z7V&LB;;|5OiiLTvwlLx zi;n11tAYr$58nHGh$Cn+G-OtAp)?v1$Tv&dH(N4r;E~2SJAs_>9p%wPp$+U#ylkE}H+=akm+Zi+S9 zo-;LRlJid=5FgUhoQ%tNsB*zRYFa=cAb)wz#pbz6#PTf(XQssfFNAy#aEpJHA!F=P zkiS=t{|Kk~r-TmqKPPmYt(?rQ|Fdf@O36}jo)5W`f+UX*WuG9NTqO`t02q%vDodZ^ z*opEKd>+n6b5{n!CO%yh#Wx-A9pICEI6)dqLOd_ay!mOv5zo`*>GR|14GzItQN3Up z^MW$*p-NXPFK^dEnPBqv>B7X0^nwmDDy9phuk6r$W0JY+AtoC5h4g_0@ZzV>4m zk{fwvyaGpOTAm3yc_L>cCM=WyT&u%ifyPNGZD;wgbu)+@h_x(ukV?&z)*z2jjQqVp zBE_J2C6Twf!c6JOnn%AgmjBtarC~ua74YpTSl%z0N{Tei0Q$IA6^`lbCpSg<1j!_P z3-_5rLwacHJk?!9wjak`o|DlEd(bBVwRNcqL%$o_XKTuN=vx&nR**B@Z#9-~*0=fJ zn5$tGyKfr$LpjyYNdf&Go6wkI>B7edA$Mu}eJ3Ga7-wJk24q}*FY8tD3=zP50@ z&9P+%4SGjGo6Y+W?I{oM=m^tq#mrsZkIx3-)*i-3vhI>8L=T$qV0Y#NPzpCUficBH zC9YL$Fnr-M`X!6Vr1~n@ckg~+h*&?}l9ZO{9gN2c6ol9ur@dE^?Mi=lzeij1je!I9|tJ`t6+xFD%;r9&=vD+G~xcrF}A2`ExX6l_A3md6TUg!9a+ zYgvyW>f?|qS7S!?Yq(E0KDP=@M2Hzi%wu z=SW=P2BLDA?(33vg!q^;e$`Hw-FWhNs^xn+c+HJyT#@t;3o6_uT9LeGt4qn-r!5C1WR@So!uMT!^U-v@(xeyBJ~zWwa9TzNUB+*-JR@Uu2A zcW`h{#n+3ev(_z8fZ`Zgtyb=(p_s8U^etdv6<~3T4>-_n*=Cg4rev z?A}+8Idss-aNb83MlovZdqlNUlnI=t&2R*p!a|IYo3kyOc`^EqBpupmpb-uixI`ts zu`QwlVmwt@Qtg)Oo>h$xi3jEuZTD!|S z55@T)&R`;TJ{fERb_T=ljLbfNf(f$c>Y)ucouFiQOeoD66tE8wodzSafL5qDCy7zb z$fD$dd8Rj(G%kfMmU{zP;^bbFG}oEa#=%?zd}n|hH~Z8p`D2_j$*3l;BQ>P1R(a*T zmR})Ve(c>rhPa0I>o{2Lv!dxy|CZJoJ22KFFwYIHC_T)EOboy^HmKOimw)-2BtAtg zkF)Pm{>49*^8Y=O82^owk+ft)KxnOCjR9r|k{8>+cFJLfM2oJL< zR5oFgAdO=cB4aaO*1ubfpMv}u=v{s{i`WbTg*wal=nuQ&(MC;LPIuSGkJ_kq_sm{r zF!qhwx*hz83|3ZaD+XlP7RoSJLj+<%tB5Bg&?SSBMPuRw&;Vr{WiLc&9LV519E`A( zlTx}}+$$;p6;6)rv7 zYshaUuDI9|$`mh^Xd&)MKKEWoB%oR>n4{5tTo|HRdqvG5ZWt&0!`5P>i9;v0T$%qY{tX@49NkN0TQY&tiNh6Rr|D8 zx8Fd${4WB<^k0E`QCm)5TGKddmQO(5%-AaGYkumd*Rqlv=av=u zMtFJKl|P}N8KU*zMt$Lx>@*=JgVD2XEgBb^5iVQe&j`0pJc?(*t<+ayS4o7Kh?sZ7 z8OG=^K}LsI21-cFOJF@nkGc^Gn?p~nQa*eyKURG;qCX&wIG>l5`+L#addX8$lzy-v z@2j|5cH?2_{ZHj;tNvxB}goBgfU)6N!!YfC_E$_Gwdy~ zbbBm9M!X~#a39$Feq7o6dC)~^Q|lo#(d;1RQTH=>1h`DT1)tkoFs%?|#yDc*MccbE zMIRtLVoXtM3??~g^($lIRPJF)oQPwT_cj66RT&OaeE#iy+fMi_`0&jX?6>XI|JHTK z{C_j0Ds9djJQ^eS>CK2jK}Llc?I_YQSFe<|I+S z$g?M=rJ@D5HErCG{8?eVa8R!53&9!~T7?r6GFVc(Y*2>-BeZ22ES#%ilYF0YyN>y- zbzWj99@0%`-q11-Xw^r?h&?%M$6INRzR5_r3 zYZWdp@!G>sq(-{fLHzi@(}CC>aa5Vv^p({UXNFE~=S=TeFMz&h)j@+#_a2Sg8WSwz zoDc7{#yvwN4T1+zg1soVB3gUN@h%>Im%c^$%9}i9$ZisIn{rBh4rXxSYc#AfbCSmb z(kL4y>P-(n3>*%!yo1~jk;0KH6DLQOTm-2elU1gGeK4BoWn|vX7CJNuzme&%fA>a5 z1C%u4(OJ}wjC&5qdpWft10^CVQCQ$! z^ZN??S7Rewa&-lb96$dc+(MHDntS6)VJtcpReU1zO>fAFOFguVYsQ5Q(I=&}QY0zy zX+Rk7m|F=A3b_a(F6q%!r|Hy3YMO3$_c@SSZ+IB8jZ`0_JyNqm>Oj2TI%#~1;oM=h zUx%N+pC{-glhI&Cw4K1Lg&j)RWifbmm^P@2ajIHUHuN}jm=?fwI!TrEe#Kp?+!ej)qm-@44ME6;YylpSLY%fu!jj zROj+}WQQ~zSo(8x3^YE61OT>TSU z#0B!^I%|E#6IgB|avc4Q7>vVMrfTo9M@paK+;dq6_ntJL?b#0iHlTesoypKeSF?f> zZ0mjQojdbqPVVHMh0GZhxNUJB=wj0}2PcmEvYXV&C(A|f0b!20DTPPkcq}pzL!#Nx z>NRF~L{eyvJ&;iIbOqQKwGgruJyjL(Da;a{uuQ$&5g{R!u2$L{O5=S z^C?1BS*H{fC#er8qbWgfV(0q1o8;3%ypIhvyfd}Iua2Tz8qR(y(5j3m3f&x5g#xAQ zqkUxP!^Tf=qol(|34*K7a?hBkZ*Dkf5YoF+gdx<2U*BQ~2L5!m1gQ7@7C8Gyape8C za2B?4wpKL$FED2*S=u6g$8-Ib0Lua>mYR4Eeki3bmfphVq1KB7z-16HTPYXdiXqzd z=a?5Ya|5D#V0)&%i8rwAdhL45A5L^fe>|r)m^k0xA1*k5Ide@AMp>$BiOTm!K{HdE z+9MTF8ymw=VcM9tROu%Xn2XE{##z7jN@1E1KErCS zvWQAo!0JQQiOQ2p&n0h0M_ix6ojf}2JA~<8KD?}6O%BW~<4mT|ET&qxf|qjBX2`uX zZQ8PQs5yChQ?N_n_tjtDz?pNfC|#l{F?GT&A!_9}pRS`28>N|cJCT&VpZH9s+sAc{ zK&UR)I842N`xN^e9W@vAp_W>KS4u>?fqfb|RbV%};U<8|mm>=|AZqI?rQcsSznYf^ z_i6r~G67aKg&?&^*i>|}$N;j5l;x3bRe_P)ffwNsx6h>}Jh7U;(T?Cn8>kUcN3eQlph#<9+xv`BKBB6{H(=vFf_x=tJx(d>!~v zm-w~LSUEc{OB4)UpW9qg{cG3!wLMfH)IOYjpCYHIQj$T0LH7kxMV(#f9Bely?paJN z(*!}P78y}WFuKS-xwcgg6eJTYSUs1)x3Y=8dNT3>jiR6iU&&XZ8-38}00}Wf%m=-q z7W`fCcCZ?psd(ewV_Lt9MW(d_?5`#*KM#(G&9QbkVg2IzOy7@@7k zTqtpHa5yoEwAZzMTb31AN&BQrN@%wP5=ucBZ%?;gKF>2}q-zsMo*pxo)Ku2@)0gvU zYJ;wu#|N}FR2Yd}Yw}yFVU`_745oTukjyuj%^k=2M)_8Itbtt7A$N^s+49VOwuTG& z3Ibaig!nC@GfK`SeABO7nUoGp<)cX-xmZNDRA3_soY7GfnpXM-t168v)`=HiR!j7T z+&T7^6%39gUsF;Dj$WC56s9M93Xw5UeT6_S{C!~yQ6_5t@kAD1 zMD5)ORSD9+wL8uFqw^X{puS31q{LI>1AV-=dNIV7Hro-?; zV&ABpULuQV(AU7Jvjwz+9)9a|t==s3*_= zb@I1I9T`SYrOr3XfBsRWh5s#;mNK`oG&cHgfi6si`!_u9vB; z%$jaqZ-Bpe#@Ij)GTtS%F{Te^2Wplsv>z@U*9H;>A_01W-Y^}BP{r8^%wOE5MBIcy z;6m|)t{kJUC+5abL01T}sN**nw1o(^lJ+p*w)iPrJDL$ry~nb(Q{D?ycI9nIxe>1& z3?Xn8x`cUUvnZ?NUV*(7>N@8+q!G~f;@4I6y2TC`NV@O z5)kqy`!TOuHm@D|W$WYJAu9>rp;_6@abc&!9CKkL=@sM~{iMD=)j_uMt5Lxc`HO~Y z&~Cc(H`R5N&M~(@QK`!@)LK12KzFEC)M~YM+4`rpk%pafE0saxsjSzrJ2x1bQ?Xc; zIr@)@pmG@f7Dc@%_h8vyt};~Itq9=5Pa2GgU83ELM^+G~rkf=-r?+yKL;Y2_7*gEO zg-6K|jWmN_wCGTc!5GAPyVz!)PP*of2~MR!Mx$|$@s|+st8+YR<|bS>2%}G8ol$;< z3`)Gu(a7J8z6oZ(M*kpb5yR9KmzkRsY7%>PNfM{wBIh}mvKY+qoH5PONnFLQ4Uc5> zvk}!@sZMO|)xN$f4pXN)2g?AeI*bqa{MH>|6ps>5;pssy{P-4VZ-3U!66wdV8hzH} zWd{B^;t6ud5yRKN$AhkjdteQ}seb=Qss;XkQ2pP;(n|k|r3HDL5`}A(65)j5>uCA_ z!|}BxC4nI7{OeW%pBrf`wKr@=T~Y>gcemihdc>HyBIsUsyBYqh(iR3mre2aVWwjn< zdroCtdVSp;VEv*f)Z7_Vf{(dY<5TNNz+YqN4^hW;r_`ej{qf!9FaqFo{gU=8@RxgV z&#i}BXDEpz0S6{SxS|qKWlR=i$?G%FoG=eZ3<v_7qcn_J73h}W3Yero@b z!{8tki3~472U%-DGcV+- zQBo>v>MzzHK!OfX{o%UI`BLk=Yw}oc)M_!%#H_u05x4Ac1KbHscd(%qHNN;x%EFr6 zqV?WQ!7ZEw9Tb|6%byqLnBfqx3k;p}!xCsgw>7st=@A+tV~FkWDfp@S>0 zh&C@qqz+P$*M`&n6f-K*01?+iT+FKR>&Isn)Evmh!5YJ{Ua;6GH*`C*WZ*XX7j57X z18v`4EieV_dm-#Qhw<&)AMePSQ~phv{X|X)Pp3B8r^GWxyU?Cj0F7ylckKcOxsn@w z({Q(;4IA-l5nU_1-iX(IM{z)O*XTg9=~%JPdz`*@T#GwwzKwwG4+$zb_o++2i_C20 z#RoW!2g6fA<%mEC)9e9fuwHH10;bhBw7(+$2%c(h(C^1<)<0(d1^>-c=jbH;9~H9y z$6lf$r7hbzIpj~;docXADCtAntbT~9>P6A;gZSq!!>s-BCvK0uxywxf#fvT!3iKb*2ThedJ9lj4fp}Rw{pBb3{ZBwY zojjIKE_>`_E`AYoU%9)~9%+1ZNsHG^MsLlxb!|CYM{Q(Z#o24OBUvc^F2ZmF6|`6A zOPQC%c#Gg)PKVhvYjP@(AvVYW!$@>EfLyRgrX0iN(4K|_0|;|hv{Yi(tH9(Z4JJS# zCY-aAlbMNS2~nSv)y10BI%$48!Z&G%@+9U_ zf3dfE=A~xn_Iu`Mznr)h-5v%I`aLn3%jiqrb~ll8G@yRKrzPVv(Od?9GMnT61)(r5 zKE*lqIhMP*)}AA-G1^E%4xY(2NAhU3ln~^vp66ouebPY%a{uY&(YZ9 z-#hII_rVx$Vb!}xDNW%`f#4zreILami%JYf;cm$5vD64P@ndo(VF)55h{^B%rZlv} z<&EY0Zpiy~=KY_OcH;jQrT>LcRdXjZNn>}%|EyhADO=0V%OU&FT1_mD4Mhkdpy=A>ReSplntGak|MFOd3#ZR8I4s_@#Y54u%Dqkg=&|YYaz-SCe=38tc^PKXo{eTX zf~BI2nYu#XE@+|HIG!FlJnvp_;LE>E;W*Of)Fyeyc^C2eb`(-jZ?oJnSWN!sOYw50 zLwlt%OnoG3Rl121vnJYE69aw=(=YwKU5J5{P=#}&)DIQ11rlI2WB`94)x;5#;#vjT!o@KOd)4)MWI-mZv5ZsN*0R+uex?I|jp|Z$z#Puy zGOCC=n_sLygD<|wCoq0s^d3NyBFnDTbF~lYp5%Y-ar;E{1z{TZS7Ia=WJDplx>mMD zlDSdtVTu@O1yLI!PaAO!N5HF~FMKLat~NE%-EQ7$&z4t2z+P)@ z%1QV%ki5YP8shIvN3Z&}gR78!tz@D1hX~2uGm)#XgivKoS3i0?F-Rw9<(KioM}_+U zizzt98^>PCN6wyOl2!cz*g_Pa#QRlL3`-x&(YKA}yXWiy%RkWyG9Z=`6b(*lm$1JN zF-{X|FP0_t3-B2S@Uva*lxl?lkQd%d_Ou5fxQpPv6^wT?2#+%e&vI`IA<*t;dI8(K zH6VMufh@gqC{<_era72wFX(!$AL})=i8scu_ZCMayO4Os&4arT;O>^Ymw02B=o$Vf zh}7rb@7*w1Fo=%tBV+WB!v4Q=Wd5T_SCypsSB7%<3y5aD+L9tS*G;f&1=Segs*zO% zFsx}1EIt0YX;Wrw+o^dqBG|SljPRxxZaaiAyUbd_;s9}F@{--r<xP8}u!6PG>`gtJeU#!}57wJeYko~Gi11G&Dp(;DGC z@i}{1ufrbuvPyjXiJfJ6tZAJwqk27YgZTFW2XW!Piykb!!k7Nxh_enGAvwKO;j~{$ z8H3Q$2B;}I9aM;Ia23Z>xr%nYasByPa;18<+(k7*zJlqG{@2xy5*6}-lYX1WHEz|T zZ9Q@J(50j}f{ZC_erhP*V|g<*tXuHqpDCb2G-U*h za!WXxZC!ThD7fb>FhHcqFa!3pe1LE;Ya%hsT&&l~)685yuK_DStG6kw{T$U8Fv+J< zOeuc|-c0z>6BpU>TnFziQ)86V=y1(;;38lYv8JnJFxq%-K)MZDFiFAxX42HhFH}FF zj(j)YxbNG5T(_q9KfJx;ccuH*En2bdq*AeMCl%Ya?TYOg+qNsVZL4D2wro5RkiUex3rX67q(s?u0;y}UazX7L=2_zJkl5%}HN4qNq^ON8g~ zU24uF<~%`4AMr6@_Sl6XXpH#lzcfMBt?(wKIM9qc(Ik9Dv%<@V2>Fix;^wP)v`hN2 zP1?Gq?k-|SqfY#BZ!<0&S0>Bc7G1+{<T1(bBUJ!0B1oL<9TE8@VB-wl9bg?`T~Re{{}Gp%V7Mgf1vOqdNe5Sf;re)%bz~c~TAtB-G++Ce4lcSWq9OeW$dx zN-TZ5lO8r0PqZLoOt5V<>*CZBuKo1#H?XR1?lw(hISd9Z#uln#*meoaFd7>C!{{7 z4VG(_W-I~JHF?U55oIQ)25T(fU@qYFRvCPL{fzQqcnEc?9MDccKb7ZrwGUAWO|=SCbf$%coyNxeQh*8Tf=h$-&FCKZz_GdVDVadl(WyakUG-2^{j@hr}n=?+I!tf5f%UexES|wr}llAKF>sCq4tF_qB zKXya?ks>IXVTJi&Wzo3%!UB~6i9JkS`5ZK(jb~1r09rGV7iwTmB7*WQj$hD4cJY<- zV5s7@AxtNt9u{@$;bPgjfCq{En~c)`m;=IpUi}sf_GG;6m8HbW+MpY=RpI- zDa9FK<*@;%<|_upsqnWn36Gz7s_*8103U?rv=TZB(fgeelSQlB z{AB)F#t)3zjfZ%5xN}^k_X_#((=2?x8wk+F|FRa`wH$!Q=ZAN>vxyvN$JHugU(^Qr zM=Xpb_l}qLzVD$3mlFu*q!+xcn7jZ#CmY?5D6-*Yk!+)?g>6pkQh(z z=5N4w7iy;b6$(=M-vF3@xu;)%QAC#iB3%CcjZk?8sfiR=dMzdoq=AA_Xdp@`u#tEe z%^;Rzv~_ezpJgTr>1oFhcll|P+VWBtJfo3XN zC@ADOWRV!?ovgrb=p^K7aYq{g_(=h-!*))Z3%hR)!Hc*XC1tH+=PqlMSGeFwrkKte zX}G%320{9@dnZwURJiE0q;2g^0}krV@+a^Q;Q};ITP;>Il1>L&msQe=mgidpY*v|v zk2vkgy)ds8>F0zpXJ98r7~3VZz5t_cd{veH1sGZjaG%{q%eAr+mQ2E#JayIkG7EEq zb-0%x=f42c<@*FJ9)?@EeEeNO`&&;QKIFVm3_+?`mY>?eBmv}p;Hbu&9PVNsr$lP6 zMPYS9WhHvkytVR-a(-!hg|)m2Cl|R%k%E|N*)g^LRCel|qEJ0q7uA>VjwieC>Ma7v z!4F;|Zamj;@>WQi_3o;>ktdc*x=er4YHle~*PofR9CHmBZLHN(5-}EIEOae2sK^at zkf?8cB~kj!doyUcU?V?a+%z}CLg2j9-<%^35gU8`T^(z#nSbaMI4zdIAMk}Lzq)8ei^KEsn171S#4Jsc`PnNrM8#g!De{yS&>PirOA(ePRp3Uklp{F)gCP7gaffDtNFf#cOOj>tENdXcbhmj|Sd=~*(ycD5%ePwBlMlfgxx#ji^XCI^(LdROO*T>7t}oP>{ck`G z%RiZe3KgHfWD1WhUrKo*TtC4R%$H1wkwHacEw0uxXuJ;AG?9`TUwvS-Xmvi;fX(ji zm(36Lo$3FJcWtl%dcje8lYT#Tt}Z%Ec64-{S8ZV&)-CRDSFKUUh)t_y;hUpJ4&uh*YeUpUU z1zWVc1GlYgX_ZHLuv}jr4?RZ@c$sAm%4BgZCoxN%KxtHI`rS&v{0k>Ze2`vfVWyQn zk4#VEq~7L42C!{y_04sN43m!Osa8drKJccMf^|(qc!@-Zft)d|scenhK{NSOW||D9 z_Z#5;wmgis(C9pR+KLUK1pH?;KGYi;meI7qHE)RUn6pp?c?Jl1E2G-{DXEK=W|{b* zibRW1S-S!ynPO_4exYQGQfbC0qDlK_qUe+9>jh8!wFQDYs@+{RYQ69mL5ZWyLS}C~NhGgoVo~N9=@#8UF_T88TL^ zs#Y6>?oSBBuSlrY0Olg($A%?RLi5RhzJiO%$AZzYu0v}mjT^&3CUXwdy<>RA}9C7xPn4Atw_tsC1g zv-)*kU{fG5rN4rzqhIz$j6z^qZTdQs!$HQS*1`B+*@{olE68&1CnS_Ebu7jM;_bVsZC|MF}df1B+_Y~gXs$+}%9{L22s*4hPZI&|o#J>)A+gYYEGcFO~FQ^-B$fG&FrV;i)ETA2*F$=@aJ;tk9UwhSGF z7_fS3m+QG#z(MS@HYQEpMkmOy<1iqdwR(&~L^BSEFl)TP1h~hU8a2|E$@(|2nYAlh z*ZzuCr`Szm?$?B=N=&y=7011DWoi;d$HrF}^<}v$QNq`i1+`-XR)p#rv`NS#j!hdy zVao;KL-Y=nlc84vWOterhOYN`&lmHuP>b3_P`b1!QOetNEH%-6#l(lgv?W`ABExK0 zne)@WW*sesTUbe`uzF%W%H+@jYDqu!B-h&-Y}i?Tos*we#VD`Z|=Dz2#WR=qe_@{BwLaKuX@vAK=5jP1a|!hdLW%+PpgH3)RYF)N0P%lT)JLOP)w= z|8fMgjqNn3k8Qkd&*8Up#;ay!gO{~L@Y31rzj(ZfFeA)o5I7iyN#rZPM$GwV5G&ZM zQ7Ipk+}COL5wYVMWMg7U)fIkw49OVcDEl4U{Bp^kdT)u0{H)H>xS({gHgDPk!Uf9X zx3%?~tF`|hQsI&mXp`Z9V-+*3yk0Kdvu~;olTgEpNHJB$-K)Tz!C1)~qW$~ugkkuR zMQhg}pzS-Pw!DlJeaw%@k%nh~)4HTFJNSbyaNYdd1||Cc#T@Nl&{DHjMG?j9Ao7!L zltin3`ol)i07c&8VrhUXIL!<+)BiIe$)=b2w~h0$iD2Qq=2Yot&O6RI#{Im*3&=~p z`^&fqls?-C5;E`AI5(5SH6u-v$lZgtQB|yxtT^In;oU)>?3FQE zL09~v!c;*RJjn!8CQW2Q1+FdU#EJK(dlWtF0E=K93M|OBm>)q5GaGx~%x{ycLidLL zigt}z3Z^ucu`(Sw8tM6UqwbA)Gw>0s<=-MyMd~wd31P}}IXS28R-!zVq+BIo3=x;6 zOUo<9;*aonQ>G?{P=rv4G?go!^6LheP@=U{^VTdHO)NYT6f;?KlmLrGnjP&3Q=2gR zp!7(aRtu#(1c|8-wxp{l5`dZ{>2gZ83HG(8Ukccx{6g(~=5G~C>YviROaKP?$MH1% zsI5(1M;ypJs)w-cls_Vz`kQdY9@$&=9|qy>w~+wcv9-KH1J_w5=j2elIhI|H%_U7x zcN*4(6_Y47jC~HCGo|~AkxY>1V^REvg&zd1km+10me$3pXK49jZ-dx_o3{69?M*b3 zn(d2NG6z!OS)tBU)pqo+oLkdI5?(+zWzuO2Gz-WcN%^ic?Y4Y&D^_!1_u>IsHUeQC zbu?&wL)JKEvKCgsU4t-n)-FvpeJ=;=7u0|j`Km^4G=#p2$}oouy$tK~74$85%=53O zi#TmNT8hN!ct{J)8f^@F+2;CO=hrjExaXWB-zXGPnNC$w>CAT4xG(rKkw8#01_J%D zw36hM^|}jg+YWD?Zt}X2Tm%p8r}vzY*zJh)S^*E%}ztzLJXpY-F7;P!O3W9W40g8)(+ z``+LiQaV0e#^W1pd28$Rjp}Q=)_t1ss|sGQJAdIahd zDMizmjJ7I?p{tfk(Y*`Em0zUq9TFCiqC6KAl^zcY+GI~S`kxQ`Q$j1}_LlE<1${G8 zycKr{o%e5qd&3^P;FGhWI}{a$JY;caY+VI)bH{EDPhp03Iusz_Zqy$Qd^oPPwhHy?wzqB_{^ z;_}4dM)O{|ClE#71m7H??<1cFk?Rl?fQZWeeD}|(i^6waq zz<;XWwN^|PhLzxCw+o* z==6_ae?57DA8|i4{3wNrVS#G$J#uz#0(h!EnQ&@ptN~5z*#wPy&Bs8~(fh0>bA!fq z`DC@%KEJfGrio%zQ`B!dm5GKo{&U025Xy)P;~p^Dw{hI@rU3b+rcL%Yo2n`03p;Ey zbu&tv9o{~bvi02o98Wb<`s8PgqdBql$}NsByN&tKN#=QW%ZI?)58OW9+Z6hVXeM1a ziv4!)oF5+{ru+=`48jfTZ@bM@ZbWqmtvO1$){-d}7@x7z6tzW|0Z91j8QksrCyKhC zRb^SGz*FS-BS%;lgRs3;f}GtY>xG=RHK}UK-i6H3Ma9L9piI)7#L-@vGq8Qu=@e=* z_jcU1UN1{sHRiLvf4gMTVZjMh!I5o~9;UAMY2~EhuOx za##HEO8;P};bG`_#T-i4e*DuU!)G*r8SA264E!3asTvD)Fy4Ke^u@wNk#uUpcB53A zzI&1@LVVok;0c4(g4WdGIrbyMYoo2xMErZFaZ}4sjORA{8dvp%PPF2_V*b8!L)59W zRi*rr6Yj6Z3C&K{ne=BAvs3~e+JpBITYgat->Sv(fnOc+)T$vAe^AB2Y0}eyyx_w) zcUj7JQ@l5c)Tiz&#B*3BfG!Nw3WE1QEi9Hf9#nOdjwRS4uo!Q*m{1SM=agqF0KFb4 zAZouqb%&gq-WSFqlBAnd00EDQV6~UL6|LSVISzignV(`5hKN z6g68IXw=pB&?h?iLeo|sHQriCYz_y7jQQ!wYW!W1Rqez1wYM^a$BO82pnou((fM3s z-5EbfXAiEO&%(b4poNI4rF}C~K|PN(-7|b;j+W_g2jbKUL^7{(CdlahObB%ck)ixCjgY?e7aHMA_@8rFODH?>5Q}+5v0Xx3f2mU9095P_B`3bkx9sk`$Xpez18@cKHY{v zn!pKO*Ae{cH>H>88AgcZrWLz$2e)5CG~n}hZB<*ZXb}4Pa_|2w!Ts;0Je7VK8~?vk zo=U4Wb3YMz(k0h1=Wq&13gu`Ei76_^&Vi7H6C}{Ya`6kp`tx^x$I;-}?k$OR%ld($ z`USck_{8`Iht=!`vf6{4gqu3k9-d{?yuWYVs(x#-QxyeQb)w!)10=!@+G`8Sh+?~C z!h^xFG5D8Tur{e}#_d^+cJaj9r67?u)V{_?geAt&YO_Zx(g%UrZ4 z%h$?ZGNVv4E-bm7zhBshm#^+C$^D+DH&HAt+9PeT-j9imTg`gzPtG#a%na^~fxDnZ z&_@f{j+W~>xjV+o_}+*bT8mmGOstV3Ry)E2c-H!m(^qc!VT<^kfO^pM1+?zHzCNSq z`OBnC&c8}mIR7wf=f)1hsj57NB7qV>FqMuEFrE22kil-(h+gfhodchW^nt-L(O`WKZOs3Tl^DG zEr)a&>P3~9K9pEJF7^%UM#Bh&zn~gHMeRMXpN*Ig|31nFnGCeeIM+g=|B9WMXN_3pO9&TAD|CLPL!CUl(C(* z|8cRfaAxhkKJK7@8)2sV@08_#SVDv9>z7JH{Qw8X*$IosAsVI^;{*t}fic*j`TT*y*1_mKJY{gCJBsA~gVqIPyj`-oY~ zF(+smTKgwMApOPl4?`RYdawjAYMAD!YPt%XBJS*@iIG|hO0ZIP1(kWXWj(|pW@*;A zG9}6p5+DRjXJrJG>fUM(0SaZ8_Mz&<{S1}yAbYo+MMrCJGp)LyAo1;H-nyJf)T-inHUt3zGIl(h~3m9kgap9YS&$W)qDeiSOM~3lPh> zm1)OEL`2dQjVlGG#4S`9Q8%13fE@TK81AI@?gW^tPTiEFW)1llhfB&bnDQ%s4`8ma ziE2<(3Ui(ENpUl6;Efr*8VaJ)H~)0oRqTlgb9_daZ5fDA7*48>TO_Wtius-D-X9@L zEitB`lvwY1cd|xEKy#cQTk`^mz7HWRFnsI$!)Afx0zFT2VHCM>*`Jig@%37!BR+8+ zMtEckrhlgsx8`-UD6jH9wH2vc7G1DKLa0-QClwRk-C0dCPSW!`-X-4Ea7NQF2$ksH z6;P0)N)czr!y>Fjamihr#+1#(RchBI$jb6^HIA>8J3m@#`(TRaIFv{pe8gntzF+FG zA6VuhIRiELu6Tkh18?zOtm+F^a&mflJ#Jt%URiAp-KF{-y`!gmY^F#UR`OiV# z(e5_@$l@4w%RYm(It7K&5pr5ldR*zW`8m(j?2GSFh?NAxCEF_d*{s)G83!p@Na)d! zIMN{l`IaCO-nJoUzoi)5kk40KFo0!S=IeRoe$yu{Az*PJ-H<0_-38Pg=Hic5(qSz4 zXOVu?O6Vt*ewU}L+%dK+g0n0&0Mh53rmn;;3+S~k!b`BnnmHEoXG;lV#v@*zlVBy( zX{#8MR>}T4&&4Xs*LuEXO7qDom*6Y74V^zHskVCnk&SN1% zIU=8IFe7gzlc-GP>12L>Q`Y#})cSpvs=;k7Q0Jp4KC!N`MU53jYsB6s__?CH{LZTt z;w|7eNC!KAW3&cbhyl*K;x)+>#SQWBtP4(Bt8UIV77z0d^E;d7H>q4u8)!5vPZ>zo(X(+qFOxHMX#!xg&>$F4UDxS?TD zeNpiGXsap&twC=`z9Q6evp~`u0vc_qHJL{Blhb==t{SP|H3wyxf%t4=X2Qb7tkdu> zuqq(iguW*;G=hnyIGi~;aFa#pvf69)G>7j(lTv<<2O5;+IH_4(>|V9y$UqpmiT=P{ z?=o04vYoPBTK7HPaGF)wn8?Zv+!C|HA0Bt5qm(Z4IchM>Jj)rv)Ly)(kapye|BmV9m^xb%DCo7 zTf06FuQ}?Ey4*+;W!-qr_ZK%G2|;`+`Dy^){;hiC{EwP|12MmYw7wm&u#Mv{w=atG zU)i@zrGK(-7nn4wl(0&`C}8?KItfvsIq>oV_yktiOudh7znH?b+v+pz`GWiLa-cfB zul`QI*%<4CfF>1om>%xCO&)U`emuXPviWlBh~^OD4j?ij!4lyJ!$uppMg);#Iihi( zg;Ue?wzmBluFZ6xyzIDN9xF9U}4P=qV zM)kfaQ4pHCV6_ZjtMMX&Gwx^wjqOU8Ry)juWVEuL>r!B)Vtv7;C1Fh}Ty~qQ;_?V> zxyS3n;Kt^DWEhp}`RA9+J=z77SGhif5LeKr5xzr6QYOGMghtVOa(j|ZGe&-XM|!pT z`&4~7$u=JQD|S*%9zj?$K%RT<>N_1XYIWI8A%I27yg7g(ZNeLS0`amUM*k%aS-IUn zOgA-(z~_D5>|9E>dCf&DZD9Vm$Ogil1DK)(=bWX;*|>@~trl*LKJbv_mIK<$C32#` zuVpP6(uD3Y54o&%sf8-W5Kvh~uyPEk#!U<1U)cuaF2W$Pl1^+*AjF5CHsTF7<|%q4 zId+KNfp+8fD{z(AQh_wkUTT_SxlsJ)1`e}AATfiRFGm^&IM-k|LSP*q17`2xk0V){ zqw7Y8Z#0E%&7uz@w3>N_>7=W$BLr*FRVe3HauN(V%8bjla_%irGWHa>v|tXnmCpPU z-DvRaajw&xhu77GxFXPOViJh%u(IS9{*DY^>cCom2k);>|5a}XJN}FRsQp`6`oDPp z?q9j&|MAoRhX^GqtJ{9D`j1BOvwkPKoWh@e0w5DW(wa8Nqw$%1lqq>?xiLgEsKVyt8Fyz=%wZF84Cf&SWca1gI>ebG-Fsv z+Y<~@B&}-6T1Jplt1e)DKWD1@8$`Us+0if7Ci;k67w@hCDN({0xX5eCL0B2K5cEgn*4u5wQ{k|Ld%y*Ynf#fO zEMZA{_MNV-$RN&%4>NS_-Of6Xc}m(3D$4XE>_i6qb-{qjG$u+qm85AWr1d=}5P=L> zH(s-0{J!vYFHL$wU$61^EPz6R7+ARPyxH7aR8zV%!RVaIqy5GA_rxsfhbp#u;sU2* zjC6$+TSnP14s!FStbXwxC9Y2TC>Z2|c?UI*Qo|vBVXP*l*ABUDeXhuxqg<3}h2vvJeuGyma&_M!JEZUY%(f;oDr>hOEK$H5o^ChNG#Do zR^X3c!Nsl?XgmWu@yy+_Naf?Ch-jw3$DHGnri;5tCB?u}Bz^=Qp$G|7&GI2qiSGzf zO=I%rvb~MU7VY5>tjp=(m$e5LwGaBVFA8bSzTx@F=!gyXOaU8(SsOydQ1&4X8lSw>Iy8re*$x<$pO&%2SHpg;77;)lHVxw}%A2Ni$>DlD0`2K{3epfd@bW zs$&rC4BvRTBIxP41SiIe`U6xEED|9Q4(P6S{FF#2H8k9>^ghVP7MUihyL@Zzs@Hke zzviGFmmQ0*dzaZhAoPCGC`UtD$RMsvp*ShY_Dn(S=nCZe@`DPz|>JH^JlYq8gj5iXdV#p}XO>HMip)a$7X%8LuyfJ*f-2WJ(>=%j_TV=QHF z3dPwo3;p%RMd^;8V`bJeMro}FXy^kK;(-3J8k5*M${X^>KP<2J#l)a3ymR_bR7|oUbsXn7>{FATe2`a z2bOH}gz(4RRigkd&GiRo&xKNXg*0ooGX0j|q48C5CZ~mKYcW5EU=*u)qK6T7L4^h8 zbtfj2-MgCag(44B%or7P5C`R}@IhUy+V(u63*23|d{ner*855}b!<+ku%>f^pEbt9 z_Ek$PqH~9^8}dB*R)%X5J@i=$cF>DPo;h2B({uE{JgcEA@u_x+!05KV_X!zMFuiII zFhIRClA>wt_p#GbmRxP4wU_0DSiarm!A25bEO$jT0BGgnAvxdZN7>Y@~+d={G4pIcjAhAe_Dj#kO{ zL$Q`4d^z?(%qb4SfS8b-Q-vj)k-nwi7CbdIZ{T-`IOu$f4%rv=5g57*;RE*&^T1`7 zHbj_+>HMkng4{8y>KgR`0LI~tX7cTVrWe7UoCKJX3BJKrl&qNT9llzL|LN^mnb!48jFdYg4 z#aU|Mb9|@F5<%F78ehK`$6#m|wyX*l#%8q5T`@6PLb>Z~(&kyn-je=}{c~%J)Ypej z5rr`|fs1LFlDUW14_R}c3l12Sh8nK4kTjev=xyHK>9`PsnR^!z2;Y@@U^lJ~)nQ+H z`;Xn)!%^;BN9wWjI=-{G>PSrQx*=2zwf&R5Cmrvv@%>t3)Q0_c4$uGMrL+H&s0cba zINDnOwZ!;e7SBJGE>mUs7mhG0kG1#@>S(qB$(^Mr0jU@gLono8@f1uB_%LIxrKn!` ze0j}O*RLGK0D+SH08ST(vR)DdC0%>9(sln${{tRslj)#F2jVKr`dpLkro&4X*ZRxH zrfnzK6>wu7W`86(`c+t<76N$nQaGZGgj(1Rx(=E&uf)NsJas;P+LzznTT7b8h5U!a zie5}J>?Gw65ugri;djyBc6ORhc~LAa1*@!Wb39wR^*2J0wu$LvCb(63*y55S+GzYIL-vjf z>?oCeH$&07hPX)#*gi+pVDwekW3Lo)xZt~rV3`ekkI2FLq$?sWU|#}S$U!g0mEbIo zj6Va`EB@vj?c>v#3$PQZrp+m4E0bXgW8YJ&QV9jwO_QL^a&oXd7b=pP8%hx&0BSu- z6d=(2bL{kh%vWq{@+1fAq2FN{70sO1TBQubZeQ^L8C9$F_^Ac2EoH^UmXm@<^yRrs zKeI;yx{aT!&X^*a6g*|;Gp+Vgzt0YS4bEwq&HIy@q)~J5VHS4D6Rn1lY5h8LN9BYo zLs$L25h6iJY_fumSY88f$hxF|DJbdiq;U*XVakqDy*OTPtKpEDc51~As(6psW__8d zze6tzIGR9E(z&Hn?#Z;`S6RaDtNq+gaPxM5ak_Y&g<<$@*CV8AlLlwma@ zL}V}2lAzsrF?Ad!59Mzf_PTU{Q2ILv**HX|7=)6tRlhZ9G?`gG_x+wR0|k?@NG`!n zcJS0Spr1XD(Fm4+bXU4vI96jJ@#?FWT~$WFxXKQ`$`L0RmGu4+etK*`EsbCdW6bKy z0L^oHcHM;QTZ=CY+V0Padv0*=06k34w!7R?W630$V;PmEt$8q%MjgBZf@(9gUtk{9 zu)7*P@v5{@oK{v{#F`}I1j{;Ro&i$YR?6xN^&%TW_`nXaPPL_|KlYf|)F3Bdk3I{Q zc`y@~Z(_->C7flRSE&D}aXIOZ_I(3szb~39TRn)vI9vOa!?16)hB!t(?H$S+J!0hA zjs!47Aw|rtrm*pf8|J8LIp0Ywr35yAE4BlW?%q8h-4mPy$Cc9c#MSBMo-zpN;=f^G z39?ICcO71V(7eUc`}EE+hrNc|!5?;vIYNFt&h=~(zV zwpJ0MsvXPLt$0p1@pUL^>G3_-)#hH}-Wlx+cDo1<&}YuDj{@AAFz06^)Z1Las8QxB zv3;9JieUnCZgf>xSHOsGAzw1#DhXYScK@S0*Y5ZhAyh)4pI$p6Bx-KKeG|;Bc07G7 zygnh21$oQ?$+*Y+m@D9g{26wOMT+RpoAG5Gm~D%OOFMTJFcl)3Y5GNi$dD&noxg znm!?wg|2RP_se+uzp_&ah!MLjY8ekRIv$rdo9G;5K3-mFJfF>KTT3c>P0=s-Tc>F~!mf^1+3p=2 zjnQxY8k!!5yJ#lvQf?pZwxPd6w;H==9$TH3%61`qq0i8|rI{+Z&TBAk7FpiAO)~aK zvpZodv3@f106)2Z)tMo5%luQHe8trS`b|(`S}MpW0>aNN?4eK#y5E^wNB?LP=PwyJ zUX<>y@#mz)u#UB%2a#?G4fsTtk-Bqdadb_6F$AP)5=Leeh66i{k2yQ)4H%$d$Tb96M_Bt zen3mkR6ZG_Ch3G0{i9l z=A8A9}GBpi5nR-F87Og*b9sp%+baQMgH|@S%o3m+WvR6pkies>oUo9By zT(5Lx;i&61?~dk9TU0Y9j&5*Z<@ynZpipU%;HM~<`8C0JyF304_R#jo#P(?kD9o?^ zgP4&4sb^JssmGhs*Pu1Jh@YW>481@EPyyDCJ3#tgQB3s`LFrfDvk+*f_%r%o0`X1! zWg%v1R21RLrTQ#Vehd6jCuE7lAd(QSMP%(r%|`mf&4iVmzBdezQO$W{%*hP|AVoTc z3;hIKm>w1HkgU+HshThF8xppGP*Bl3UrDjn1=wIe=KX+1zK_Y$ji0k6FW&@@$=^N@ z*@J4A@<~)faU}%KF4WB+#&}rVLi=TpR3+m1Lj+9>8IMCSI;;BIwv_s$)MbuK^dfmb zU()69?c+R9bV+Y?X$c>*GRg8*60uDc(gBo2T8XS$BE7#+KjXZy7%L8OQ@~SaXZAJ8 zukQzp!JhP;e&X213Xl3=rUajVA1xhM>~L58DqgJrws>*Mw)mS(Yp(JmTP+D--T+>J9Lq?L$ z5BHljyoEV+@h5;EIQz=j+1WVT?Zm}Pw$JAaPPYep2!2>Jp<3S%a%~4@w>zGIE3rP2 z|Im{Va|>i>wor8_&5V`g5>lM@40mER8Nn1jZb_Qqf)10`=Irk$h(v|WBW|I|JFQrUXp3@R&p{<=&Y5+P<)^pSjoOjTppG_b zNb9DQKLZQ0TP6;Vb|=}~;5I4jHFza{qldLt#}2AeKsNgU**6K3nTIvr+GwauuDe>v z&tI+#&S9F?p2VWGdQeb1+tX%(1-|%w-zc8PV-z0j$IUogJy;+8ALt{ed(ip5v6j&@ z+ajJuFfN+Oeu;SE(^bMO>;?N2*D;!88lfI}rE>e7cKrlQvGJypaL|S^Mt)bXDvQ=W zm+;{F^lgoA+D)js^{1T5iz8fn1v}5DH609ncW!C0v7(!n?I&o}fnEUd+>QcG$>Ij_ z)Ye%jK&mq=M;%)4JjW?=7K2p%i-m@1^GaNZ$O>d_+Op?X6;_!#d_*w}u2K1+(t<`T zqmYZjp+(qUM}A9g_)fb*RX54Dz#uF%a@N=rY&Hr8hEh-jKkUd8ulGdrQmsTDtXv4Q|*2IAj=r_agR2YC0+AFT*O5)poc!0UHan997&toSf-F8 z?x>mF?Li#Bp2RyxVR|ZkN}Zg5KHB+4=0;3@LFdH8O|zi%p80igy+0Mg_YTCzLt3XGK4^$Oj1viTq3ce4{r1&Js2L9Wt02KQ21As(TWZWAOEHi9~ih-%HO zF$Nz8o*Vg>LdW0?){JQI$;(*`(vc2l_zf}?s%E^cX9_)h5m!QSix*Gex7hYfEp`zf zki``I7#ieC5?Fe$T`R1)GiMa48qP*c{a0VlD8*S&K3*zs(3)?BT}gz?+F$G}@R6Tu z$I&qpa&%eiUm^P z*uo;KM7a|ivUo|%l<|Ibvl+SzpKiV_*=YxA4L;YGFP3)Q!4z*SK&~t$b1><(c({Hs zq3iQ`P3CLv`9qLyBa$H81377BCSV`F-axq50wPZhCE=B!J=p1bc)+X;sSm^|Y)BC5 z5@r-)=Q=kqn#8jg-*aF4Mo-RiR;}(+OUC9 zgyH;F=~TbbX7uZu7*gOW@u4|Wu;)5oQ!DISWU9)%NhZcOw3cW$S=gThrJ0vW8MLP+ znLQq4NFiP=BXTj5V?^mGix%$I6moddbP1AU(t?Lhk0;1}N!Qxbz3;%9H+G`dmmQq` z6C_v$FtSQI58y(*#jt$>?h;JJ@RITLG(pe+m`Kc85zO9Um?vajLrmz`vR$UTK*i(2 zCI+9xIK=W4_15!S#{qJ1__=gxvx%rKiO0zU3QNbz&Js&Qj!QYU`F`?@%7@nkJ7PoB zXyWO#UHHipHs9Yi4o=Atm94Flb|m)AZ@a7#L<_8$Nhasqxl7JV zuKc6oN#Y(`x#Ydlpy&HA@4WDi2sq{vusv*lchf3p2zau8(XO?}LPq+s^2Sw<&P6pe z!ALl+anyd@xYToto+=8(#ZOHSUVWc2jls;?nWxM8q`Es34zzi;-myF~;c6atzNVbn z?W7>4-+o8J93ZZY)4e8@Yto}6PArqqE|-9dNx&O(x)F#+`Zf_47;`N35hezLCP~m zf^`X!np~;)9v0`U%>|0e%;qzdID4s3fjur4tH#Ac9F_Uu7X9}1lGf|u$9P3IJmZq8 zy|mAKms`w zibGY@E;YdIaQm6gF?*${2Nb^Hjv=mLNIVx1O&_)NcV!&|Me_OUQmWa%9rOKX_wF73 zHsQ^U9sa4L4N70{$^CUH2@VR5KOvd01QOEgn>;FBecqBE)?V({#n=m*-Art$__QKe zW33}wyL}(MT@eV3D4TcrsKX+lQpbAgGpS1s4vxpy&fAo?r{{etU-dmlM+1%Es8pGh z=1ToW6lj~#-K2=|k=;h_3$x~8{Ve{8l}cP{`hMgQ?tr*k9Z0|h%PJbqf&%}OX8V?0 zf$2nDbNpc^O?G|`a(g`$>`ENYQzQPAn!Wb+;dh zel0pqz-|3wiPuNY0R5cU0u^53G%h$fXG@m4#3^b-Jy8nx5&BrM#%}^HJL%3d`}_-J z8>vaOxI{{n4_T1uEdpmrhu~|@r6}*AUzhj#q=VapZ^iY~D^263uvWm#D`U0GRzKV| zSgLUyGL!q_ECR>4Is8!&VFM;;jT9*;iY%G7{!oR9Xn*%oaT2c{UPVg>mTj4mBt-nk zJ9P&_u#%<3g$8nw_C{r9D~lpRf>gK{9$6*$?L3CGW=d|NdMJA`$`(rVU9nZI1eCYQ zU#lZtD9&1ANZ-(y<)ujVo~FiXOkwi7w3o;RlU~kPx0}}2aVPpfeK>W%25AcTg<(%O zh#Pl*o?jq$+|le+2!U4^k0IuVrttiwPrytJHnT!-IH4L^J+xQ7hcx&G|K;sksRBwX z{3De{)(ENOAJ6ka4RS>+zqhR6YzZF=`jX2%nmA*lRmJQc-Z&INmlPrXhLAe_Un#y0 zM?|Zeh*;meqV`J28O3T?wTPod(0k}auiQ^iR^Sm0mp%jfI0kdGx28|O@9Fj$3nZsp z9(zZexxR2EAT(!ufE#P?$l~T?`pG12f75_{Wf&<6wBk`H(Et>60&-t4l>=hj0;^$n zn*GZIWlLhgk0T8tQVP?6+*PNr`9|YfD}xrQ<)vcsM>NO;8$##G&drLPljr}4o&PBH zy2V={jsCN3zuUe8+vOsVtahT=zu-bML5*%L1bsX$lgsw|cO>IQp6GE7wymB}kk+n;`yR_sP9T?a4$77yV6TiFQfZvgSHIQ54X*CO%}F$+ zfR#Hra2Jw_c`;4KjO|G$XAIIyWM_P}5|@^q8mj{|YpkqVSZj2nQ4h0hrBcn7)uMNE zk0qG;xy;nwH2k&kEh!3lJ$#P9NOn zbSrJ0+&fHGr@yHEgVjqSh7mfw+(=SUYuR$Ngg3vsm%dsJMj%^Le{E=4MhX}S++A~; zn}AMC21jSEslS$n3Y)t~J8u5Sf~s=g6$oxB4br9E8g7cdSRb+vyB2ev-ro(5j=o4A z$WUqiQzcRJ*?MZ>3OSycx?`;^Ocj=iN43x(c6*28HgAU|V1@<+VDM;EYAVzXx8d$B zIDp)jXaCXfJX5gS_5D5-Tq}1_G42njm3=YA5PS7ze9GC5jhWm^h+|ZoacPNTXPIFo zEJ~&}gG@Q4U^!Ln*hmYI*eqgfVf4n=ESRxHXoV6v*0_Y-2~s74S19iZ%qyF4Xv~pv zFJxX;>+8TdXOGqZOWfirH5>lpoOA?I4yaBM-Lq!n6ILh@F&1xD@0$}alLt5xj$zao zpf!JCbn(cn%K6JH~0PQecn@NpStVW`&6x3 zf5ET2zt`2>pVqvK&ZflNy#&KJbht6&IZ`(nl9DUD!ZAL2_?v!a#XErg`*ZGv^B?1Y z{=XFm|KUrhX#Euh@3OXp)%<(MZ(q?o1HObcs!j={>r-6w2V>q*S|gAqlS#*MUJJeA zKWC2}M(ou79E9A!c?gW51XyRM>|1rL*KVAfOzsa}&~1DfGn4=Z=KAv{kVsR77>f3k z32vqbezqY^#7PM%Je@PN{`*R;pGkMr$-7)FiC5$Y_Aw z*cB~*7_{5V&p0%;3Z+}Ww-mRA!^t^LH>$YSH>R%GI}7PJH(2Oti*CLP!cfl15wJmeNu-`{1;y{P{>YuWYzyCo}af-t1 zj@4$+@yyD>`aIU;;&-y5yHHy`x6o2r<8`RjI3{Ub+IFY|S7T{eSZlp(4gJs_7VP%@ zz_b6@Zjr5k^|xgtTg&n_C?5RXP?cR_GUc{RyRn7MU?G-GFmQEN;?^mUN`P|@1v7P7 zk?pwENJ97BUsx^3_u`{hjjM#u7NYV-S|WpyJT|e$-1!vZXGORV4pgd*=+soK1_L&5 zZz@gu;5=$xdItora5~zL8R9C0ll_@+cp{X?7#a<@6>~b%;f$Lyx;6~0im4=D7( z_eN7EBTn_rXMcl?%@O#SnZFp~KGZCDg`%G0Sfo*h&rN$Xc@&5g%>O(@CXVFrqDzBsX>89aJ2tJaqHkY(Y>)5sDLZmI+K_J4v5Qzu!@wxZ;K${Nba-%STtXoUI3&!8yz$4!ra*SGt-IQ;eZpQDif z%eQk}RsM_*E2$_NavKSm)r1%_*^?!SHA|RCdq;ak>Fv5XLjLCOQFbaul!n8&J$ze{ zY`V{1n83-n>Gy&l|7>;A!@;%Il`P>YKm)R;c3zTKZnzMo}f`9RpgM*|tc_5g9} zpGOzXfr9VE|{gQmuN(Kt=Aj_lZuRc8O<5t%J+AvXnLoykNq-CW=Z|24hzpw z!S|WE$4y*^A5!Zpp(AXL3LDlfPR+-0ohJ!~k7!B@v05#Z4%*4#9OqCe(<;+sZ>mZ- zzBYbsm3GBeTq@Qj4~E1QbNwoW?!x-Z#pPERtoPJ3MCmflM#0!A0sCq_X2r3ylC!2v z7y-smNIS-I+PRs`e06GHC>(yN+??0wbfnjEe7tO5r0nK-C`{0oKQpv~tK^>WtIxks zEhw0@&|{oE+wC`TT3&)t6~`HIRoIR?CX80T!Oxc+T%7TcjghK`nw^C}B&A-Yr4O{B ztTR4+)uY$A*~=%Trp+Vjg#huCTVTa zT8zzdq9upraO}K}O9Lh!w2kXfw-CY-Ue#fP4r#uk>bf{{prT3Fz_}cSbX`O&r;!wy zM^w1wkB?=>R2_MWn1uJZMRkDq_>{8bl#?$PW?BD(uf+2%>Cp*!oCK|^=J0L)B_r6x zj0LFBEka*S^95lIpTQy5N|0TYXs8oG$6it5MyX*NGy=dB`-%$N9=qf9=I7K+N7Wju|JGV|YZtqgYiFhOe-$fM$ zXfP{j!ucewITuMyPaCA%hRI)B#hT{GwBh(4z38^st;G(tR%P7%)A&KNNiANlp zXvR^_z{@1nT7T0$&kcGXlV*7w0q#Vyo}1*_=R|nEUSaIz2HOsm4ztNS9dH30Pne}U zrCl$P=NBo;X`9MDF@ELiOKyUq_Duh4UCp@woJ9LmK`#HJH%I&5sO1Lz~IT+{d-9x5E)6 zRFFwk3$9I6d?a+^l=o;<_8mM-0Qcz2ecxM6WnF(BaBXmSn>-y=Ui|!G_a&>p3fDAm z35bb#u+1I~Yp>l`z@9m{2M}x`(pC9H*9+%_!aEvl+Ruf+t1-|4!7*E^ekTGVx3JI+ z1I?hMIKQDJ0h0Qf>j1hjv9Vk9fntx6Kmklv8Jh=e3$ot+(yDLCQSFSw<|u&gvl_kA zv&YCnqrXiGlx~t(Y%fuH3TfiWdN)(!v2I+QnS{yj+?AYbSWV67cEl&=#2@CITLW$bUY9Cv?vD6>7evGRjMsGi$@ zB0ZH6*vUmrLFd;wwG&j6#=~UKw#~m=n<3e;Mf(>xVoJb|1&RSsN zEU*!*pJyglc$S`ZP!?+hyLWlmy-UCXDD7zUA~vIw+!BDSN`;?X7oeJ{sv=TKBs#?> zsSs10YYKf6?<5C#I@KjsY?|7^ke|=bvj{glj?)TqdV-$WH@8d)pP{(tpiXC8={NhM zUE%=PPAW9EPD@KAP&LPNeA7jYBn3qiHfp0VU}>^wMH2|Zx{2RZ6%ta|_x7f}jc`J% zO{djA@fI$>9XG+znoqA!)ewr7(bUk|3214`PV?7lQuC!U>!t)Bck}1uZ&qtG?u
y(J>u)K$5}`o@U!9h`hW1ZW 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 z z0A^OK^%g95#14A7TGu;50;P`F&lYFn*rmCU%-{{q>)q;Lj^MNewi(M>EKY�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

$ON3l_|z_p~00TmzfS^ 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

NX>Z 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 GtHNo8!5_Vaw@Mu8i}!v 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%0Db&;nh=(;zGCm48y;6}CC?jQukYtzf3cM1(T1{! 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

= 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

dn1fmC7Pt+wu8#8da3Pno>Y1p6{u^OO9 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%0A3cpV&ex&ilEKXD?O+9SF`^>`M=7pjf@ z2CF11|Lb3))wAi(z;(Fi97wPs8x=RmF7$4NNZhxz^!eFi%qSg>xvgb}D>k0= z-0vT89YAWpZY@3Z-kavMy(2jq(Zj5IqG0D>{?-7i@5QB!?@6w%3~bJJLcwXaju zg&S186RitPViP%NYZUdtL|LMwpy0lIj{iNx#%L`Yesui1=g(`80JSV->04>#A=dE} zrM7Vg+ayQi({E^jcOQkWRG39DfRpQf@HKI;=1agE`&?;nOq_Xd@{c{R8-PE&&(Q8O&wZjEsfH z90JfY z6Ec#UEC*4lS*gkTAP0X{oUo%6%v?f8AExIw1>7z@+U2S${hZAr0d<+_k`;h__b!i_ z6wW-^h@LghC|SxTM3n(uK|`ES7e|tug$qTFP~9MjJ`i|UJ=AhY{_3m-3|P}-Y*C3@ z0C8RxJMIQ6H>;$wjKO5#4WR#CH!Wn%fhVL@}@5tA5zwvaca_z;6-p*eLASA#h@nrj)6zcZ!D$p5`;a{B4MWQL>4jL%>tQJ(M0GD#gpoUs*q`7)eGprMLa!&Yk z*XKJBT!c{*>Yu7INY!1l^*r=MkRUOh`PrznUY>=OmVE^GR^pIV2_~Lia!qkr=52sa z!`~ho^RdE5^a?E8Lvb#k$vuX((hIBULR!KQlo3aNMr(K}uigOepMa7msv9Vo?64p~4B?ZA(1N1JZ%|B;xZYae%@jK6 zrsbf*I=?~8DOvJtfvcck7O&)m2kMgi9Xu|97QXa$T6OuabRpSGnvjj}Hfs1U?Uet` zpo{-+8~yt~T*d33CigustY!e4#pw&M!(lk0x|Jqu$poBb(=)Y21^njx~R49Uv3KAXCST7u8Fe=*afAWhR(N zsEXJwA95{5j6zE00-1soWtnhDs|L$MNW|!vujwa+PX>O&H6aVatTR+epE^c?} zNHXfMY9@d18pBv*WtLWL*d8pc))?h|%#Kq{JY45Dy?xi&gv{+tQ&0{`HGlQh-w%@tY znL6n77klU~hsqv64-T=WKR>Sp%R|bI1G#!9~ep}n){R$ zsgIU8k*`)T(K~yXc>3FU|MqkczFdg(T_z$&4JtOOr$1ghs`T3tJJHfc9A zE~$o8e6N-^u?5&Uo-?4}I$KwpoId*9U*4!NaoeD?87wqLo*lJ`FVMvjGf(V%Wk+pc zc?WtAe~cYzXCx5U7O@%1F)Ea!2*-0#%%xsGsW-ZpJ3OORy=XHy8K@p6 zfmAY?@D3ZUT*82)HhR8jUAO|Ro|WJOGwF#O{`d6Y|92z) zyA3rUy-^l1zvP}$jhS)CNNOSbK!9!8`UvuyAw?MsA<1ya0)E+KUBHcvUdeKCPZ(4+ zMO1ZN9L}j%B&k+OqE-mbO6E2-H9h-ic`a|b*;oyIc`>hE)MpfYyj)IZJa_MZ;a+=f zL(g=73?lxRKp_oM?W7N4>f{fC-!VmP`Qvc3gkU=WKD1^}X{&adhj7&!3ObZU*tk=z z=q>EMK}+#e_F@jvaLah>AV+yc8;bv&w7=h~Hw3)*S0Cd277`V{%w2uRAHnig93uL~ z7$SC$kI-WZi>S+pVhR;5ObYPQTE(2 zHg~z!EuFDIN5DQfjVTKbR3`qkj>SfC=elt(BtT=+bX+|};tAU|XDeq%TBHRPfSlpH zj4jqb6i4>3@az2TlR7#Tkj+fIIoI9X$}0F!#M0VTCJ&aid-CMB3&9;xInAIX+^7?a z>Ejh*zDx-!d5RPYRT<@EFua5dkffAfqM~><4K@WWkp+_J!zmk^hT$aRT`}SaROO-l z;GJHvf)I3(mm5L`1Ma2(kFv3rLvXZGvm_rN)UR|H8&$}{C&bzl8CzZ^Pm!y&04?Ee zoz1NA5ryZM~xuqKu!(*9e~~ zW?ngdOOGHMJ&{F%Qdff7(qxf9S(DFcm}NzyChqoho5Vo+B+~#GuZNSgHI~T11SKCR zCJ*!6AQvkvakUG}xgL@s)!CUO*v+*1mr~R15Vc7^4UeHlnGE-j4Ymr`8}nA|MN)MS zN}eu>f#y}3NMBKtiASFLrET+FYJ3Fk5K$khDZZb#Txhy=J#0{H=6z0EKQo zoE??EZqPtgC66LmOlY?JiHVvW<$#BU7uM$InDz!Dk12wxr^;a0krv^GS_KJB460IE zmMcvm0m_Pet)6VY*^G_4V4LxW!k|#R(3z5gk@KcVq%2dZ)}nxDN3P-}B0>jB74-)S zh|HH7XITVxU63vIX=m3kOpNs8GKu2m%4PCdgbk?fo~5E<`AUVpO&)fMihLwKaWW3& z3X6qoj{0$N$?TLd@9>5MJDpDZpS~4Zd^5-PI5WBygnQ z42yW_3Ps9^xh|g-^@G%<5lBsX2AnRPz;J5T%xF}q?($u$7cR^a0G~Mr^n{AH&;a`_ zE#VGMa+xo$?sZn2&0}Pk!BaS&(ya~bcAp!oH~jYU4e&>t2=g^ZwVdg^tWS?ZP03jU z^dp=a$V@ED3Igw_L?c188B`|!l0Dv5v3@r=ONHI2WJXLI0AZAsCp4#a*uou;-y|#b zBX0JF`9ph%p5+6nC!ZI-F# ze(bVNrZE}Sur@t8>?&;QK&JiTmT*?gMVI6TxGn{{)&v{(64_IS z0G5Xru!;N+apQSg^5n%L}^05 z`X#$HMWHPp?C?`J+&I>Iwj0MciyB=%xBrSO&NmsSLycNuV!w+kF2ijb2to|ggz->m zt5sWR>ZGLSm85kR%jZ!d=AAuOW1DzM1mN+6CZG9@@)+Iw!3i2;UkzTf>qO!0t@lNMn+XnUcj2|% z)nhu?^;>kHwWyTdjwF8wE3beeE`i`B^1MSB@kj><4Z9RDUHVW`c^Sqf)}I+&z+9TE zS@Fx-Itk&T(4*RjLKUe@{%K@63z*)h_01v~ zc)dRWf|;|$O@Rw2D)_kyUEuW!G|Pcs*wL0vSxw>6e$-ZC2XT!V<)bkHfCsix|;VTg#63%@B{8kXIr2#}f z?HKqh`(dm4;#(;92_haQ8#rkYB*BrUQWmQsCeCEuQ7X2PR}%KVDjM;quj)pbdfN%6 z?v3qhdp{J2`9?IK93oO6*<(CyhC1p*4YUL&E-8(=6t-vku1O=Ue>1i#Oms8C+Y~)_ zBaP08?f)G2=#A}n#2(LvNCV&5-=DF$l30`QZIV$|lcJ^>!o=f9QBqL3P#vzuX4Ish zk^3x1J2DBoI5U?0Z(R1Bm-H?~jhXyaX_NNGqjSS)RgQcyJ|n)dA48`!3VOHgcpyz| zf2Li7atycc`V7hf@r}O(y(i5Cl%4=RAb%WLoB=FTo8UNIEXlF!g9|iTs!c}(GZ!7< zqxz_9xWWe&qp^PNi5AQ#j$TSmWefU&HcuyOALpz+vdQRgMMJI&j=LGboad9f%>}$* z2YD4z7W7Ylizbj5meG;?ATL@{BN6SQ(yW*!Ba1Z7i za*MqmGqjl4={96#%DaC~dWja;;_W1` zDvW%2y8B{z^;NFVx52(09!YweK&NJa+CG-JpPAK=vQM?QP$P0<`EzM9?vN%rFd=0O z9iuLV`D_vS#yxgmbz!B^MF%Z-GT?$!6kMfUa)6Cyvl8&*cb9~&Euf}oqFutB?VNZL zT*PvE)57g0?#7$I<>tXq&uOEM-EUbx?2i}9<;B)XK@#KRy?Iq-vQCT?(fPF2`p zt%H3@dB5VGl;a`xlyW^a=KE{_Zk4i9n&ZlfJZ&!;;*x3^O_ z48p5YOD656rl|VScewC$afsDTO92rMN}g9)Bp)r{ZO~h3D|&5c#bW1u!cuZDlTByX z8qFYaXnZs9^z{XFDljQwk(ET&pr9_v;`ub-&(U)tr$-<^TfMPG#keO1B}NzfHu z`y_&dl;|Za00WB@&KmRA{^-sA-eQa%3!r$>qZwgUs%_+Y;j?nis+?Y zz|jaMzFc;sy9oP%F08)!yWNcIpqg-}(kU zOm(LaH`_Gf6dkX6jDWEb=*erYN*~j91xJm=jHV60T1Vy3n^=$ExmjxK)NEk8W^z0k zmJhT`t0uoIR=jbgqamDB54v>qM!mpJeg_$K=;!)o?nnm!Kk@s;Z2=A;uFv|)M0*9<`u8Cn8({z++l{HD+tdMsH?^Dz#jc3Ipt;cv(9YsRcx9J z=NY*HfOI=p`n2$SYBk^@uqR`xJDYzk~TyPOiP?l_xxBH?BL^ErVTe zfkYbFW*At=${3SjVJ^|U>K@FKB4M~q*k=^MlJ6klPrc?mS{7;X2)EdHMUq2r(yXRu zzNB7%veHWn_JGrU*?AY#HJ?7oFgyXHIz`tv?+0R-+NGj9J}piPJ;FzGC>JmF0RYZZ z#vtBE zNAliBo%;eB2uuVFpqLsTneT^2=Ol!*`g=9s{UejhE-R;8uDldpTZ65I6aYBKo2dXriLfk51<}(_nAsEaGt(iw z-`|IWE>5HNtXwDwT9ob)gzgcq+rJqZPG!`shMO$Tvh3O=+a(F zN;&N|X1%BtMP32qDS~KQc4i0fZ~tyr@Q0Od73argtENwcv}My+^ZS_VhAX8r9jwTW z>X_y7o#UnpZnI2t3xk2liAx2SG8+dw9Rnl6VYnQg49eU*PY5(V@1QsfLc9p zVPk%**y_OgcXN8leIb6%RELdix|ct!>x33X;#Gh6clNzR=w?durK$lnn+Z$I@kSc+ zXGgi2%IZ{E?dL4X3Ek$fDoTB)Pn}Q_pFz(-aQA7~mo>yy2oJY(hacO6a>B)k>tERK zW_(bgTL{iUhu-tJ`js57lWA$~wL@5NR;o9}ym-<8c1)36FC026nbuj@>=S>Quo1Zy zX8oV!++JS7GnebBF46}^{Z|y;idw)Smwyzi{^`faRGo7rFGYluqFd|%H2${MTB7>t zuMD8ovA0mCdK+|&zkd-#ZK|l7oz-Vn$ZE8a;1Mh@XU~*W81ppdv7)+YNEfx5O!f~w zTbaM9tKzQ4)9C&FLvY^(9sV=g{+j?HOD#>w-Ze@>j3WGz`#?8ByX7`lAp&m{$d9xS zL3vQDhd9w8*&h{9iG)e{`>Jdw2P%WWvN<%}*6bjA}etO#c;*afApHVNY!Z$*Zqtr?1B0s_CJcnfOU%AiWU; zIt3X!2OK;llPJQ`+?9OD@;QS_QkAqyG#3jhS+LbkP<6H#9`GU{Ojq_PFN=I65m(Ow z>mf{^pLa?KByLGHBu_?KvZl0M&N+ z8DiFz`C>2SEBv=m-X8*Q!O}iNY6XnJyS6=E!-4*uXkD~g1?5;~Dam2=r)dh9Q=}}< z4rqrKPpNyblXJ6iyDtUPga)f8y7LY@#J!gex7ScHtR_5SkJPptJG3OQPUG2e`=da8 zdzlmyeo!uQeqniTY^2%t7(M>I9_A<`(fi+TOnicV{KZ>l7OaZYjugdPXYqV6PY8aY zUzkFIpnQ5Gi1Q3p9^)_t$HQVtxCKdsBU>au>-bg}4l3Kj(GTbts7FC$b~Ht~##@-q zZ8Pc+uf70l1}A<8E$pz5^eZt0_ftLv(GJA4DP52CljMKxPn3wXH4JDYhVuecFX|7X z;fJK!K*PD~z)_jz6o%`^!(Je~!u&-FoRgLi)jr>u?fh-5#lJac{C|^zfAIh{Z96>C zPjC6nyVVTY-NaqazC?1u7(M^FMSy-8SyHv97)dNhG=N z1ew2s2z`wwA$$apcqQ*oyBcId5ZYe8o*YkedYa_g8h?He@Owk(cJaXWF}TJQ=&U*=Fee!cxQhh*5>JMzPZWV)34?t6?Hm`as&2 zP1kk9F{lKn<&x#x*G$XmCWSDy7oDS5@15NY1NtB)|CCC&WuQ=Zj#-j;-PEU!w@|W9 z3!4jncx^jUZmp3`zxYGps@bO3?M5KbcCqx+K~A{A*Wd5=_~pn}vi5f8w2^}HFY-8r z%Ed~qq|WYF^vj@j93-Ohb7SQThL63AYTz9AF^7dgn{*tJnN_dwSs z8uCM3h8h_i@7ZM3>%Te~O=qXP5xtiC>>C?PpUPAb~vOdl;qGPn$} zLqQPMwvYCTOS=$FpvdV?*=mXTk|G{*vpe?315=e@UpECm>m@c2EC3q-2!;W3fVX%Y z?jCYC+QwvtM8!5}nE_!Brv0d>b#~=0|I+s+ce+}`5Nv(OuzKF=Wp0AnS8K6IP15Hd(L5h`)ZjGec@E7SnlIuVv~#9R;p{YI6{%Jy4M}B0Dky7YX z7TpY>$#UCc-lQ;RBGIR@Z-v6Zjgq|Cm8KF9T!=w__Z*)nH51|sG>aymCl!$c9T@py z9R-RpJrypp*Hxb{r*ezUa0K> zJLHLl^&v#K6W zGy{`L1nh7mfb0n|2RY@hoH~iDV6}{Q299)ER-B2zU5hBJt+fI~Y9*7W+% zod%lLX*$yc_Qe&8jTvIQkw*=j5}Iy_Zs7o*zCV&%R^-M^VjH1=t^_O%PkG?#mpG(i zI|+upLi|kv?gpG5AK^vZ6I(s^(R`;L*-7h(2p^ONUH^ z=U(4kA5n>VW0Gpm_0d;eP}*~mVt4~+#70b4{m-Vgm6m& z(?!^`-s*Zss@+Bo9+Pb7q1shTH@PRSoLm~TtRi9;d$IMWF1i61RNteV@L?3*xume) z4E6KscJcPY!amvIwHXK@Qm}1a6*q)wkGcsf674BZX8|(^O^)QIuDPV9N@bsM?s77x zhUDEei=gvNeV4A!BK+5!m=3m5(I1E)gt;TN4j~pexO?8V$RoPu)vZuA(uDQQ#cIr^@2vV?*hovxH@R|LO(`}62$w<6|kQN2re031;^ubc$(&P-r?2t z@%(8Sig_+#v1=J>g<{!4nD+yZSWS2x-XS9I7k#5M5Bwe3854M$*;i~#9;JxGg;K^- z+D-L9Iyad~)fnyLDP@5DOP$FV;r5co+P3hNqObeDlpF<>fMNxb0(%o@HLfzMMGw=e zX@(PS+99Lb&b!cYxE<`p_y(u$tt+l_=BL_mssLgK_4iuzCDHqQzpsws_7${n6S}6< zHJiLUse#Y!=$g&AF-hpIFCvEo%wes?b-&zceD1Cq{AK+TJnuygM-!E>rUKVE0+5@H zD-HPuLABsV1a9?V!|9hM@jTweBFX7k)?Z@SnH$V2%ryA&tb=doF;#x<5^Z*2dLP}G zEX&-_&V5)|>c_UrdbxiiT`o+60rH;QDtR5DD<;m!?F9~Q2-nJ^&)Wwt{sw>jk-GR8 z`n}$w4~g)zk$)l%d$OylDeWjD%71qd+dk9>ts?z#Z;Z;xarlnYb9%714pu3nap+)J zr{7-$QV>@qHc2(BEfdeg5;`cHewdH$#t%W z@sYRZy*aEe548)TQ0g++%K-ZY5wr{n;w6Mzgmr*@g5lHmp*NW$5lk*HJb-gkQTza+ z@EA^uak}fA0-zGU2$gZvgyfc%KMdv=Veb2oakXhb@5+7PNoS%xBCSA}bf7vDC0ze#C26iQ*=GJWa z=2jlCzpRYW4`fii)j^+QWwjsk2U`-tDh@JrhmXPJI3Pz7MtP@}e|3@&1!`&xXa-k( z05W>AIYJEgz}>LdgQTZxhCfE{vwFI9+i}X(?AMvjmG*Gw)uauYbh#u5HVb3UWsa!B z33CM*4Lq%gy4!_WH)qO!%(1#sK|Kaz;8tl`_YUHyL`elNz$1nIT&?FXcpCIVat&Qv zY&1k=ucBbfeYgs-x$)jz;AV%xe>8P({kru~T~ZB`NpB030a z*dMAyYU;N(>^vqV6bYv6)JHW+3UILRU;Gl#?RIHQX`3ia&a-&TC;6NXf4}sk*nK%S zEC_>Cv(eC~w_gbUVZ|=GNUzg8{nI`muW=}0QshYGw=yIqGiy^}{1bb?anSqsaXEHW z_z1qT{y7o?*tbk1v~aq+x=>26YE!NphzW1HFlczW(!^;Vm>f9>QQL=nI)q)i2sD(~ z3^N)k$F$g*d?Bm6>)aeGE|h}F-(ZlWm|T6WhYzk#gaWV_)H#tX^w6!Zc!~BHP*cHe zB%{>pr(+sd?bBo@1B%`HxA0FY;BQ9El7-XSL*$#q_^tx9&SZpR*Qb**A6bs1s;6<` z@zyk|uOj<<)+Rf}0os@NtcE-mJ?0v3ZqcXQl?o4 zPc$T?0eIH7iWo7`UqRlfu53~BWWyJO(zu)+GWi}hI|TfEUO)_prhF1>e;aOyBUQ#+rmuUNRsj-sw>YwDT<31|Bi z4H5u;(TI63aYcrLz5*0C!yX*$mkID*TLjxLvRP79>;f0(Lt_E-8vrg(;=>p&1P)B%UW1t+9euC@Q$O~#V+O3v&Jx|r?EEGL(tb0Lm7Z2k&r2eSBLNAo)~Cbr(&LO|`o z>IO61C9>*g6*{67Hf{0@p72YYnr?4~xVK1^x_#ioZQ!LZkFw>@ifpTy=&l(mMgT9k$Ija5brIeaM;) z&ES1k>1UzZ9dgR?_d=H@rLGV(zY%jOazZKBlPSwL~;#oPHKc@MvC10>|g2 z`rgJ|MNwKmWu~!^3btVIZNQ5gJIq`$8p}5jg5CRUxy+_-BxK$%LGOA@lJeOgPj@KU_yUHmQDULKxs}ITwD3)#Ry3VL@~yX%{Nm(abU>pf7-FJ; zvb>ZvS%~ps#cptIA6mG0yPtdGzs9~P!H8*HX z^&ZoXGfAN25G*ZTirvxGb5w2acG~Sr-JY>BP-$eY3L0)^@#0nMX-q zsafVNB;7?Gc>^=A1ra1t>mjI7_e!e+ab_-H(wBc3`On@0)0@p7M^6HH%6cgNsCBEu z5O^PJm*M94L<}-of8rHn*6iE`qUm8Ux`Vl?yrP7-iyl&Wl$rP$tk8oSftl-yEx;?w zu9io9@>R+fG5O)hSl8E{=|?qVdHuI18DdHxFPxk+TxcD$%PcBGEo|`$bM;L7aJBL0 zJ|8+y5UU)C=xcv8OeSQaOR%?$Ca_(WhH@l3_ZN{1d!*DJ{u8rFj@Uj1d7(q5IX;#} z!dsNXJr+oZ@S3oQh#x@?`YHqq$q%uiqA!GEoerqGR#<`c%eC? z1+7?IrXx$xWd$i8D~>U8x|LHiSB~lX2!R31teKhUU75UG7GGz4zre13l&K9mMG5?A z-@lTd4tXCk4>O$-w%%W_%)jiFiZKOMFx_rPQMJaw__Q`RQx~>)PI^>QWvWEH%U@UwvZVC2}JYmMfAt|m((GA{NPj9L&vdT6rc3GRX ziteLlg`VU3)vcl=dNyOHCp1X8)AzLa#nQmXhlwqeHvC|PXMu9W;<7OmNB)+V5RHJFyhQmh-oL0v<@se zGri_ZW1-{Mu0a1)pNkc|wqoLXmUm4*e^ngzv z^<%Of9PT+0w#hf=Vx}8V*$%C7L^E;$!~Ry`36ljF8JSdJ&}p zZ42o)@TcF#4R)lhQOlUzzF(UGkiauxaDxXF!<;?V7tnxHkinG{?0h>g7x(t>DBUS~ zg@9DXurK6f-r&@=QjlsTR3s<1lNYTmKPmL`6g;@~DGvSLHWPaa;><=&gz8K%I z`{B^)9ZgI<$=_l}-ZU=S9QSl* z0*t-v`21X>_KHD1jX0jXdfw*J)dFfU3p!?nNc8u zjJv(#?P(r2W-C5#?!F+?qGN(EcV&l;1`tBhHoSD*6(>pVSO-Q zgP*@q?9xOG32j|Eh$IbugW$z=pqJG{A3Ii=4D*@jQwS7Bxmi>DJJcLvO@9dNYJh z{23VVZi^>@7eFs62+=?z zL~R-VSooc{L90Yd4BLJk0Q97fV?QRNJ{ru~?R5x_g3D4g(fKO`c=s3ZOQY^^%P`+z z_K;gPhk&o|3*t5|p=jJ-sy~BH^me#^#dL3dAxgXqI?W(PT{`m839PPN=w5N8HnS~@ z1l#8-oqkKSu5WU6}Niib@fSE^b+LH0#FLwuf7jw5=v;bQ@Nj zD(djRbHT;mm-(W#LT7!UUPqH+?GyP4ro?!&QfF-%O6@AVvgPikwe z#*43ky7YD)4RTjQPE(7R5fu+P)fi4zV-=z}tO@`VCGq8wt4eoX;VMM(jf2(vzL63c z2b%~XSDcge#gVByFK`NQDBz zzBfILl|vtSO785z&~2wB3D)UEg=nNB9-tB5inp2S_+{uY$rhs`ut}nzTd-LrBul6Z z>jI34kc?bl8Izx?tPj3MqxN%&sDs{0-v$9>uw`unaY>G-o?n}SU*qniVC(pm_Wu!X zpu9!+O!!IRMgMjiPyRnTjLJ5K*4Fq=)XKRx z{63Fx>%9s(=bX}dnT4x}GG-us$V_pR$1US~B8iWytiC{XTocqrHPbCRm@8e2HxqC0 zzE525MtiRY(D0W`>O5-Q(Ivthrt9v!R6kDJ1&a|3v-j9q&`&fmdh)H1j$7l9KKCUD zQdVO*XUQQudmjT%Ay>nM4p8Ucx)RdJL;@qDvZUs!|7R7#UlXByi%r7S$q0Uv6uqKViOzqs)fEZ zFG=WjV!vtG1BTtNe}+G;QKxu0bp(Ea7~z*Aaxi;!01J()lJfzy;LUwLdUGlM1b zvxYhJ@Paos7nOlb747bqZRBtJIHyCLntrzUN9n%DG2knH_2n7p9z14<1&lgcTclf#x+n(*!T(KeNKeja>WweAayLzulew_J0Mlf9crNHk8rS(LXl4Yso5MOD+2I zzgj@|Kr2}h=Tlo|;G)ClYjh<~d^#Gt?wNrZRWQ$S&voT7o+{Cji-_*P#2|=}kC}#RZvxInysSygMy=5J8W)b}#U(H+T^#XtW3q)Mc|Z7tAS3=7t92s_y}s@irR|>$v_iWf90_4O!|Bu7^|NElH!R1h`QBdy1G(SC;W^zCLlBic~a2I^oe!B3ofiua zOnk+qSRMzAY%{efL*)+&&vNJw!r!7xu&j0f7_L#$qS*qdq(5ItNQBt^T59o=yZoqUCu zZo*n1`W0S^YBY5)GV+CUBzC>773F*V{AlkP6f^&TIrC)17sB1R$cGt<9VX$6kLIE2 z2h18-jFu7iJiC(XEP#yM!C{Q=DCbw4- zYMRf2^5M%>4{A;TyX1Zx$m*6LYVJ&(=x)8|=)*%DKgfmpYCIh+A*#|H^&IUJ`&LnH zjy@r0m7#@JV{|C)gh-;Pc%kI;gg$3Y>aFg@4T`#xFm4lQ2ig(7OYC!%^KRv~>UoBL z=X^XLFGwc?HFhr76R{^`i#y`ozaa3-Z#Wmm=(g>i8dMmw-Gy!oLOW%DUM6s!ee0>C z#}|dSFE!pLb)wqofYKG=nAS`F<64wXO^6hYwgD+0)_X5?WQe*6LC;72n1Vwn*wT~z z_2|LA4xc82g2@rdsrSwE*lIW`4#N5cWUU6Zq}Tz3$5-&o;8tDYl)CT;^bdn;XJFS2 zj_#O1e)jY118Ac$u|BE8YsB)(i5qJH@dv1@Pf#*~y_6sFB#CQ?_Y}?XpCQC+Y0>Yd z&_1BDbP%vAvk7+$rx9$yT{Ie%v2icEHvT3UE5wx z&zZx1-ykLTa3!K4&3FOPMdhO&VCx+Z%tc;DBr&SqBCqm{j0!6n#srdtFt0eA={1I{ z6gGCO{XIsx#T(p<1-V-Nw(2iChv;|UbewtqX{XEBd91`fDDI#VBg!9SAR2Wf|4=qn zL86|I*0a;ER@}ghQxp^S5bk>}#9GGb-fR_`3dFUmI5cLEHW(NMS&A#Bv@NAWN=GuyW04;#@c> zfc?|HmQ#{Kpq(@KurvX`s27{dx!x%yjmTj{=eEFKBg6{a(WHvcq*Y~vziS2<|C0y9 zzn%jcA8u$vC?AzR*CRtP*0u1^@!R02E6d4D+hoJ!F8CRx!`O6SOtvSPMSc8q8)a^k zwbV9fDNST=*@eWi8G*44x6-Teg#&WyLp44%XD2alKmESxfB5sxI^Unujm)xXTnzZO zu4H9Aot}6ah!QHh*mytWlO3KT&OHgU{;dL2ly(kFtc59)pLa;&glZ2vI-< zWkd-z7!5B=4mBwwgOH6+L_la}024f&o2T8BzgCiHEm#Ewj=IUt&U)EDfBdtb6Bvm| zm?f3P>&u&ljcaTnT^yxjJqR$Xvy4pV5{{9jO~#eRxPGcEPIm|%Ok^*hb^S5rv~PR; zHsUnuL9SNYNY}A62QjDO!jnwSq4ASRbtIFWP5VGEjEKV8;cHr^6hhRJpO7Cs!drUv zN(j!Mg0m9rKtWRB09z@`R?o`V47CXdQ*PnwYSp-|p39 zU|LHg^!w^Fo{LCx0@=^-*G_(Sd$=v=@WeKBa*>{{NIYDiAhd2A-C zp&i=SJi#w-^=uGTBkLhZQ<>5p|3V?Z5K-%gL7@)T6M(Y+DnL{z1fxlr)#jmNscA}S zsq{FHPg5M7S+we)rTTjvmGqLK&w|xqDY1IuKKI~wX13Gnp2yb_Hf1JDYI?zJd>Wk-g5plz;$FbEnt(t&) zmLtVorL}mznVqdGsj zH3*0feQb=}+HPisyb6p=a2M~tFnJ~PGjKO~L)7-N&*iIy)OYf-TP&QV74Bi}%e$*k zA#{Dry;uxX@bNG2*?seFf3Q^I`f5z%Dca7s7xS19s?D5StAo}r7<}&{&BEL2yI+2D z_(RKO<1}U|SIq~}Cs&Kd#-zSsF#?aWD8>R0?A&lW_9Cqy@-Q=J@2t~2IE3G{R;Sv) ziSA)q!924FAo^xmRwL%krkPd7)1>vfZjuU)87fENjo``b(!MdnOOt8D#RW8QCsx#pJ~z3>2In0IsU64=%&ByO&8)Dg6OWcp*{aeqs9%;L2C;v9|pgr~Qc zeswyq^BZS((Su76*oF_nPH?R~f^1elJXD~J-5<#GvIP{|?b)4R{vF5fvF|g#A`wDB z*MQzn6pt8jUfbAQuukB^Zr74F7t3@}A_YJHNS{#OTrbaJCQ($pMv^{X+ zwa9vdHDO>wM7Nt7)VmdWS$xqEC#^dj#`=c2NyX@`9$vb-JN~ir#PDDQ%SGfOj1{gW zT9(!#E%a1Z=n--sqk;RZs_3$H`@^wYTUQh*vw2nyGAWt+(4=%Ai!$GKEP+I2D!iVx z04Kb~Y5)M@R6CI!(Ik7S(d#Ne^j2bhG%=9JA?y^tFu*Uq>?C^n88S@V8)d&vz<=JV z42eh68(eNsKk$|JRFrK$^_9@|S!0YnQIxoW0+tJOF2bNgnEC_S&gH_kqND4~nN|Pei_5{qQqEJ~D}mTPWID z*cnCN<%ryS!t2E)zwOu!60bD15hXK_PlO2kBXT)7#G)26UooFJ|E&MwYpeS97Sawj z+SL(z47-9JU6-lTt(_0uF*|uCAlPfCI4#&-*%Vk8QVFVc5 zh&SQXsZGi(Q;nF_Mi&+TBkfARLkBapIJJ|%qi#)ujLm>W*PKqh%OR^(=1@p>VmfB}_xVxHlxN;1x8RvNwXGZriZ)wx@J_OS{JplNV z(8Sm%Zq=@*$|E_mp>a;7?R!WgDa~|X9ll$@xs}#4MzhH-<`63XK4&-SO4h@jBZT%uoq3I<`1Uau{kz zKaDsJ1{(Vi?zsbJsUuYjJQk8C1bj)(Mj1TVi)~TzY4-YQP(aYowB|f&-^Msd#;N2B zFWd?V4j<^-ONPLoA9c6lpO>3XUabg{+Yuo85p>*GSw_ZMi%an zlcUB*5!aBdEy!#R>{bqNP)#@<&?};3^t1^}20FCOId61QgE)={ut}l+2(zZm??EA# zz`%1N7pp-v1|^0>L{%>RU%D2ow@u`g(f zo3mq7k*2?4{4VHzN61&KgX;ViOog=X3vYmoiw#^9zVJ)9fOepLfm`0TJNnbj8b*-8 z$yNC43d(2hv9C6dMGmxGk zgtJU>UmNIlMY=>l_4Bawjj^}3c{>N#yhHFF32z=j#vV~X1t4~EEQ7IwYl;l_seXXl zD(6ip^&VQVf$R~%XSi3Clw`nfBGNbzVuj+lLt#0j7wT#8e0pBgh~1S$yt};pqwJ`3 zjzPeEj?fPOc9n|v-|CkB|H{t4gjed?%IKfMtKh5+!yyn5jKWY8RaP%Wj#PIrR-MF_ zRyq-62s9VhCQUJO^WoD-;^v`!sD0uTsq%OgLT_0mNyz~z8hQTxkA3>2edj4?IJ(x} zvE!`cxvi(?Ogp)U_qz)_zb~9&F?%ik73=$|{Y)t09I)#$jw}Nc+Uq*XfGQ)%CDrlW z;P8x8tHJhgZTB{ui_5Dfe;(NL^8LyRs$K;JrJqPLJ^tYgi5PTJ-@)n4*TxCzZ!MEl z$xEB`4ELh7XZTZg73&fvBGVpM?k=O=&yPoQM-Mn>6lbL9%sI$j zyxk#ktr?sCj_>o`Vt4LpKho7=Uye8DzBk=q&>Sx+JJFUiwX8M6)GbbVZgMQf_KIkA z$T@<{-fP|AVnF!=_sx5%p)S}Muk(a?ZLIocmj|EOX0GikalFigRP0bDYC5w zdiZ$OOa$iMu><@@`hsqPKnSC$-Ao~G_5_|BxwdO&-2jzZ5cB2)X47vJkZendhcbs~Bo^^n5?C;zVq8Zqwg$gw@TCa*5sjno$|n9dCf77yi4pD! z3e!HpEUgP3M6tgY>^W3c*fWYt25`s?f!+36$!%%R)gMa109d-62$_+g9y@=DifC~( zFouiDS-OM#%!=QmSiX=>LJ{$hx}zw8fS4TmJ=kpr74BVz=s54I(JpXIiY!J&IV@cN z4plU{#h%}xu)KS2d#~pvGo+#tC`0i5> zkzbQj^C8iDd{(8e9-M0~X|d(3SLuaCh;ot)x$G<@yASJDTzx=Mb71!Sac_7cUHssO z?US{mpb(|qw>!D4Wuax+sfFX>=4(7Qmeg{$TbFBB&5P-iwalV?J<}EH6vccg3P!Hu zssRm?!8erVQ}zGB+FJnCnQq&n!8N$MYjF1jcXxMZ;jkdMySo!KxNDH$Zo%E%-Fc+D z_rB-dcXpq?^)6MbplTI=!Tjc$_Ki6P)|-do;6vZQ1a*FBJw!k4eNu00S1ng?CE4|C z;&6e9>Af-oNqu7vhSS>O{Mz<5I>GH;(Bks04(lS;VScUbi*Ek#__u6&KKm9qk;$GV z@E6O?Ou>lhPd(x<@86istqa4EoY8Bj-CLy24gdkG*QCNzQl#IoKa_=k6hQ9}T-oCrG^!MZBQ7rY2F)m%nn}acLklOf3E?d_A8w zy5o*!XLH)fP|i{tqbA{WmM8h5HtSEdL4pw@)*Pf|kf`Mw<`%}8i2;$Y)vail!oufY zOZ-b}V@zu*6}|2y)J3;7GX1V99OqfnCu!ybogg{hB_3ph&oL3Xwcm39k-!RQ99)zT zf+1DFNSIlil{>`O*&M^o9W%DW&>%({0i>>8?_aacj}?X9z8RFLnMA0xF$$2zHKTIH z=d8TK)(~HzzNJ!{dq#LVUWo1IcZq{l_wT12MVYo3^+&l5M^|~5qxe<{6m{y!PcT&D z>cw8R7b5OxNe;OBE$$HU(nDJ+LH1PE%+K;_zhMRErJG1$xb0R|7vaPEhqB0N^tEnYVS_yP_7tNVQ2zkuD{FUl@lk% z8{zNDkp={9N8^7Sc(MGm5dOdTWB-iYk@7NfpiD@fD#joJpSj#`e4ti(@{mx-)6B(L zYk~se3oK^i09G!oA>O0!xCBCz3<#1wk!p!wsT{VuqeoBuN4P$y(|pss$IJ;49_^7Q z+kv@j`%(8PPig5B9oSL%cB8i9Vpn7qy5lj^)F*IO!Z`g?oC5N(KRAZi5U*IUhWOBN zPN&qF!OPcK$1OPgh$v@C%Gxwz)!|is)}PY8#|L(2vT60zd14Ym%Vvjj{qM;`y}|>O zMP(Aa$4tD>n|rnwZyLBGKUCb=BLjaZr@dAtskG84%J%hZ@N~cGSmNcXnU^DA^r9FdPH9DvtG8cvA(*H%PcJX z5tV#Lq;T2yMDkW8oyb%RZfAIqaY4gt%zvVS)FXs`kG{Cy4)}^HBj9 z891AnJBa{|OzfO2Yysj10Ap(t2S+jy;BUs4ztXLWjT){Bk{6(6H10&u%{Eul2tr0s z!hB{H#hRR0ob@vqYnaN>sKZAs4p**LTutxT>~P7iykak>-WLqOj8>Syu0DpBDxSMB zUf12!h16E>x2LD<4}hP{F`wx}iMMC0h~L>E*?jJtJ@nUwmf7u~2(g>OMeqa3lFq9^ z!0zCe`zg7@ASKlmQfi{)uu-CxEMcMzS{_pf&pjxsGJi}h)Ff60HGuk`IveXZLUgNR z?%FZiIwu;-eOj18IAxM9Bt1@r^jCFoJ-9C@q3abbT0vW7x8=^qE^onb#aXVMX)l`g z<6EL^+$nO&8AwH^4peh!I)j_4RHkdpv~30qBfDuf=q!)}nx_tdSutN;ed~Zl^_U6S znuY>ZI?a7M6{Ni0g+~eM(N1HAST#kc^Q%|jYji(K?6aw&3>1aBuCyyjN>|*Oq=f~s z)pJnz_EO*zj`jK0XQPii1f;Y0ak@L>cCKk~h&tl6*r@FMS_glCo1hE zh}LTqMZ=0MAZp?ztD_-@7pR}xC;4g*-Iux$sVe_f#R#69?efwTYL**aI#JOdeaH__0xs_Q9T#i^vbXD#d-_^)p3mG7_MlNzL%g( zoG3K-0w+Dyy_XyOm{`YTkkN*muy}Dbv`r^Jfd^l6RFJfiNS;&ZNol5#5I?d4mq_6`PNcBwQt0@3;kS?;XaCat_&RQSJ9?VO zx0Uv8Gc9B|rwhu@HzM%AEXfYW8B2EKjWe<&v?-3zHOo;*M5hM$p@zp^g63Hkdl^N} za*T@5Dw=bcOe9*VB(~|q&(RJK>dxdxVs84v0fqURTMBTB?ESs&`5Dr-4Hn37v17) zgY>9Ho%QA)NkW4EZZ~#Op{ce?|*htJSkN zDm&5?Skx4_GgLG8UwyP!sIIG0uTnjCc;Cbliwl*e5P4JiT0nITbuAW3Y5%>xNuJS{ z%W*Y>*KyZm_wM9|;X}H4bFsnf&x~-l9}Ws#R#3KhpO7q{_J$;d&iSqAMs>-ilncvj zY0Ho4bC*x?P-(tO=%G-wN)G#fI+buFb4R8f1)zlNt79eZ2~`_Hg<YxO1=U@1j;k=XYllW7sL`xQPt#CbOHlf=MFnQ23( z^%o!dS|A||{-YQesYnM~39p#93^VFLG>xsRy)o*UV_`72c2}^Ob)oZFjXyc!u=-$V zX+XId5=><9i`PNskPn|GsnhEcMAx*?i9um`*a93!!mS+h)xb>d$mwW9cFdL0)V-^- zbfW+jGTX`l7Huvzx+V)57B~5XZj$j+ye3fR_!SV1##*mA4*UW8!9TQ5+s|e zc4xIgzc#J%IUBF=B5~gLHDEMDQzH~{CEcom)P)5Wv)zc7t-Z#x59ja%i8;{D%tyxT z1Iu?CzKDp}pD4P-32p);@>Rt$8{y}nAQKx@LwAO5feB%t#)$r#wBPerOk=EgPniZ9 zZ$kB}CK4r&i!Q1egP%FOMikY8#fM|@#xnWU0-WirHJTAFvTgDjt9OvMJtZu|^SwlWlm;y@C4t z>?=~%zz)xnCPTQ6#U+5F9f?w0blB`Wu&i*vI+tLcm&*%5BNB0x-4kFA2Fn}APw1l# z;FYmUIn)OCpXnrfxxBk*>b99d; zH{AhmQXHc}Q7c*4w|?X8$qH$u^nIZ$UP?U}^flqyyWAI1Z9=a%9*TTmEBu%KE{-Ya zHN0mo7wGNG7mNuE9S1m!$)x@dO$bu^-+|Z)%0D7kNu3-W!B^{Awrj?#cLR;ovGbTA z!vLSrHPjeyzrV?FPy;APPd_8*{jdh`V}Ai8J&-fk;W>K3r!zibvxqdxx9qvUlk!Ec zWm;a5ZJXhq{CN#;hW5;a$` zxLL5YBe(^1J5e&L-0fEs+gHZGB+Ae$xscnncrnzxj)#vNKX5L1^Crs!(cxbp3X{7I z_qaJ?feb6(Z5a5%F)KQJA=6|DxGi`N7~x;HLa^CwBhiD|*LvtnoP3vc=7oK})~yy* zq8t{>OY4dg%2VVgPHLXW{cL}VL!U~M0~jRMG0}G7%<{#&`j%*4F_n|6tq7!jb6V25 zTfjd&aPR6XD_WK-{C5xLeeEUwecN z>0A;cyJszDzO$=-F<1}*hz^dMC+)JBw(R)Iz5RiLzZ>rz`in6L zc5r?#lHbKx9RKvEay1P*Ej8@dD5nCe_oL8qz^8N;&rnv}6>NLvW zu4}ee?+nC|>X{f=qLd~XLf;&M%vz&m9ocDnVXKBGc)NUgyUUK(YkSzr{=n&D>&6sRjJd_Qv-cwkhJgb4$`BTlH>0

Ym7lv$+cpd^u=koaD%q8+nqX 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 aNNFQ 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%0D$CROnlvrenh+Xyo_NpqwON*6n33WEG?p^ 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

{Z>;BkkAk#@h2p(K}+%lbu4d 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

+|aQk#7}C<%W@e8A^) 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 =k6C#;!Wl)LkZfVfL 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�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%0D77*=MGrF=;5%qer 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

  • 9}8D%pOBeeLV8Vvt1Wej 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�}{a*G~k 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

    GwM-g*9$E;7)bo%TZ-nTc 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

    NxKZ$3E5g47PULzl3T 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%0A!oHR!4pWUl^a&o`+6HM7hf?`Yj%* zuGt=%^R3z~n@mT^e&q|O&bv-Wb(rtTUe2B#ig-ckAaNv*S{8R(J|P=^Y6(JsPNYzN`KexLBu69a4_9n03AORUc%%Rt?Yac zBL>eRdDioGrPEL&2*A5X>ZFXB%x3tU9S(KI1K64y7;a-H{KZ(-)?LZdlgI0A<(Qj_QkiK6x-Ki~oDB8LPhn7F4#D<#6uKu=DA*_g%D6&^Mu(1#$*!W`%ZdF>(c%l8Y1TVv zIa(?~n+3btpXA@RdB$l7UxQi{LeeE3s3yG5Vi?;g19~ZV8lsMthwYdJG_5F=@yAZ zoYLBf`|f6}Pqc#C0eS97*my=N8GL>FN9T@EZ(CLx*K`Cm+CcW$7S*01Z1F!e1{WZE zHXF;;s?~L>#=1w5KW1rdyCzVGzEGLW+qk7aHo1wl;~Z_HNS4dGnRSb(-)5pk%XkSOyXmO8|GY( z=Xla28=Is!aSikPeOQVI>3M@JRWPHmy-C?1X%5kvUTtG^~Rl=rr?s$@8 z5E79I-BnQGhY|RIH(x_^jlGXQ1d+5|`g90W;x1b0d?vTFOD&QK>Yb1racJ zXw2C)a1-v?yN^Q(+rtE*hVJ?TLeo3YuDUfv+x9SC*|tFz_Q*ohX7dhFX8|iwr-v?e zw~{ZL)}fGIG#(mxRwrb;e5=w5l3VxXri5Uc^{Y-{wt)=$X}sl({_)`+B+!4$jVm68 zPb8yw%vRPlFD5o4{?Lqh@bPGO@k9xq&jiNJC@DELN>X+h*;9?=<;Z_8(TZHVJR`ZZ zV)k4YYkDm9tpv4<_+UQ2Ow`LEgzrKN4+>Ch9CM-UaE&E`5ASNiRZj=(+&@s`D<2e#6_#+kUg`NYKFBuC7cs(o!F11uKj zgSA=J%Zf(oiVmEmFb5A>j65V3%6&X!HW6%fnItLKA|*Ko38E2P97}se-0;#^=2?9Ao|9g}9+pl^K!rs)r? zY{fWJL#|dJKszm4<*fZH?8IgTr`F#)HZ4k{p(@-vI*k)Ulrhw@4!)uAYWtLiCPP9o zO4?>)a?X)9z~<<$r_fHJELu02cIr|WMMk;n|C@;6^# z_dBbMRe^0d;#?Ej3CY+Dht3UcO}V)7ZlVHs9E`?T&4AY}>YNr^7e4ZKGp5J^9YPGgDJF z_g8c8tvaXb{JnOqv)11GS)a#+zcm`)D9r?AVDP|FSctp=HEGo;vX^yM+qf;-hNsKW zs9fdOFJ&R^yI;l!+SMw^QmGT1-tv-dB*S-Auk&be%qelN7^Eefq>RkL>=(@@@)@yCy_RYKn+16~b z2VKMLUE$bS6#zXk=>f6o&^8}bes(M~2rP&jm&eAWU^aI!+r4JGV71H=K80 z!K$jFWz$+-s|KC#n44On7%PGvwQFj~t6{4llC0+OS{Cm&*9QAX0M&+7_7kML9W+&$KJ-f1-XZ2l7QD zXV9IV4;3Vh5O;iya`j*sMWch<=na1`zh|!Yq(1)!+}DxZOE!`qe=SH9+A47_4qNJ6 zTO;8{dsi=)r{Y{x@()C@bh+_-Q4X^hA4UGFZb+l%_@ZET=ia-f43Kn{p~7Qqu{pp0 zU8-PY8>^eVZ1E*&tHV=9u-3dc$ITqV!zIXZx>oZ*uMGJtS zo|=-#Wx9M{(JHybmYygZ@HZoi!NtVGG7+dT@kv3s3Z{*ss{t!nSL(L-vv78P!bOkILA&@xMLXBX5khVX__qqzZO!~s2 zhyC5G?K>R?L516Q&lW6FraUQ=-_9{>Y$!v89wnn=XF@_;aEAou{IjK^rfT6s$bD>V zZonNUOLi6F3do&>K#%lDituc1ByL(oiQ&sBp;+4Aq zkT+=k<5Qh5G^E*{Z34Qc%Z_tIHw%+l!_8TSUZ8q@`o?Mk_HwIUvhUAy?#^uUX7d6} zjb)UFHV2)M_8UEgpF77QbbC;7+B$fgqSp8+qs;yi>EJ0_Jw$6l`syM(xFI-S9Z|u$ zOrZmLbYPVMiY`1s`_Iz87AE}KBJ7og>@3S=crtg6e%r-u$hQ8pJyL}=xEm@(>`p(@Eas#Ulk{G z20$Vl;DpCieg>qw<2k7rPYNckWu_mFmr2_F3O)s(M0;*0gucYmr8z*UFM8z$r@ZI) zIfJXa0xLrszq5`%z7&aVv@$6&fl@0vH+a~GDSXIsN-x6HG2#syHspTwJU=D4dD)nvf zhp|9QCA_<74_bNhIssik7{)C*`Os21)qGdwhOXksxj0lHAZxeGfwD`GML+OlFYSh; z3$89{{S#V`IPa6@^>5l3W3Tx3T^lFXHqp@we#Lke*@Jz8e{aCjjf5`b_3qCXR9~F! zA=^&^*$aFB+|zwy`3=aAoS7%R>)oN&Fe0 zwsL+{{;cY9$)KMIKtI5-JsfRGh~GWX%CdPKij4ubZNBt|lkz;IqHo|9UN>4sGQj*m zMN`6xHXkK!S2>e*&qH~`R8t{df6&M#pPxtR8B(`)c~wx{EJWKl^-K;9E9Fo^v!aUV znp1Yp;Ru?F%!mB5rjqCq-v{*A(!|-}5K!+2XN)9KB@RI3L>R)UeM8dymR}{=wsXfY zE)vSSnzPom@ig7~a5y)H`H=qeA~Q8|?H6sPs0BJtMQ9))a^}+Tg7*Zb+KX6Y+MI#< zb)O*FZ0!hMzgt={z!ihU&|`x!C_VuoodASC6FA{YXDy>GAt6z3T1tC;kw5qTN+g1!akwTNdO5*0&!g)8J}L+7A#TO7tlv zR-p)+{Pd}zXiUw=T{c3_RtSJZ?Ff#a2=d&NoGZr<6{gQsU;qN4bP}c^+Xzywy86SK19#t}DXiINxxaZMB+z60FiKx% zftQbX#fq|xLB@%4qJJlkN{)Wj-$PyO=P$65urklWr$KRoWbqifmc(3+m0gVIx^uqN zXCOmHv-bR2f8QV#9oM`oWvkcuv$D?2{^{A}7Nnz!LX$BctBe%my_*)WM8j zUs7z>jamp#VKGDnOhvI6Q0CUGYKs*wq1?;NO3WXr)nHh~kU!5x>V!LX>}nM7_cOIi zzWz2lX9zlr%n(6y<=s{|h*8p!6T=5<44ZAmR+i{dAF!qK3W&jJ^$`q04#Hvvn|K8e z4={H|x;zV=051+s(@a6yH`Bq*vo*2+&%6YGFoMg9Z0%QV{sBWJ7Mn+58Est^C1ePH zYVvM0E*eBX3nn|e8L9Y_Ec|vZ-DGtfs)i1LX$EvAMN5Y zkoFn4xTx@0LU0jSB^g{x;Zsm2(%}JKdlqQTv*aL6j)oiC_xmxo%rcFK_?^kywfls~ zJ5~c{{7iaHs6E$gw8JU4LzrVT9tpb_BPyB_C&3XeZ!UY4DW0MIHXt{z>0)aUo&z>g zFpq)08DPcx@waTPg@DP-S8s}rN{ukKk3L!QcR$196WM0w&CxQ$i!h}Pv)NXunOb^Y zkESJ~X^|68iC$~R=DHi2lj;ipc(u(vw;>9tbJ!NlVjHb#{u+&99(vT=7U`8gD1oOr zhqn|6*Bzq(^BuzINo{8}18HV^R#Ai(%IaMQmd+I$Xnh@-==C!-LgO3@WZn!t+uN5k zf`Sul3&Trg2S*f_aKUN8tlsJ27v#&_8U&(izoz(+H3c#6kSs?J0qI`ubZ!*%SlE8* zEmgJ{N=I;)4gMsVJr`zL0?f()&0UQ3C@uS*bof3^JLpPZ%ArE-aLWym7zpHOr61wS z0Id6uu4qi<=K6?2aK?`qn@wn&e!51Bf!Q$B`j9SH+Ua3>%?RJST%9pg`+=V}11ZHZ zJd)FHNzwWd`0n&}Bj@EOKQ|-V4j4XAu7KBjB`7n#?HZH)Rifm2 zq{n-|3vmRjhtOH5rB8{fVv>9RKySNPiH&Jq_VLaG$Cxq=u1VhCh4sZyFl0ejKHM@ESSxkgAMBi0z<9Y;9jBBBMz8?@%oM6>v(^5P>!l#Ck)~_ zp}msAltmdc#qP%jejLP$5X$>Y3{+8#=Rb`o*6c0e=-m@Xzkyf~t+Dr9S-d6BiGRV; zmp~x80XYzW9I!o05bxAw?!~Y@zpjCS*J!-j4*B`#NO(3>DiMa%9qA&h`Cc9#*om(E zqXh%TzZ}w!o~hvIn(+g#2|{chH=q$kk@49x8zP}ZUKnbt=Zs)R!+`P)npkjbdJuvh&vhlASLv^3O3QUl#ZF8u7&WVA?;CwR=KKlo}7Q0F>s;* z>*=U@DR)zqNkG7|<%9v$iDTQCqy?>5yRuL8uN1g~r@{x$;lVldD7xk-I+d33;nh%G z@!C{D#b|eiE64S~`$9xYYUJn!>q*XoQHgYM^r(i^izjJe3CUerbGXZX&>52B_c#C4 z>xdN69u7U}9ovT|j;L-$_y;9CiSaG5_bRJ21M@)j-%GSG-l3t|P39I2v&F%=%jX!Z z{qw~SApa(LY6V{ zSeBG}Fhj^rhd!hNAk|(lN&>`!7&{#@cQqQALC$D^Spuw%C_%7jfN5cBAK6E!v`z$Q zl+@+nMNb8l9Y;(Gek(Os8WRkT)Cpt;h5iYe!5XiCbV0)RNl?>*AqyiQ)@%rFXaors?eG8`;Ky-zM7^SHAbKGdju^BJ5<%1l zHX2}XbjKp0caFr5)EBq6XjI=iv2Gwz^=<^`aE9WJa0raz)js2}j+^V1v~!mWM(f}( zj#cWKbdClettsO4`;jK`L_p?4oJLV&(wPj?ZUFf!%691&BX*;eygLG=XNuf4PU4R4 z+E7(?{fGf;;OaNz|6C@+EL=sbvT$(Fs)lLl%9ebUGN0ioHGHpVY|Tb8 zOQ|r@$R6CA6j4GHEBqln1Vi%8!bGpK6j-53EJZC8D^5*HA)G2Hk2t_ue!+=q$5{}Z zp-Agl=_GP@t4CN4j=a{|FfB)jY&*aMy1HjESniQp~QS;e!(p8xnlP}#v`k?#$H68pq zO}6t0E)j(Bj)HFmI-;EKbDWIun~s2(!>&)qoT7LbA$cf;#O}pe^~ICVvL8O4(oS~Q zqz8g~M_Trtnj347i_>=}an}>|j2G21aiZCJ6JgDW@Gz1GWp<`%d9-OifN&R4ju0>n zr|Xuu+uPptK?O%jdV>O;T-LlPQgJ%dxr>?O&_kITTFQ5sUal<29HntSpb)e~!cA{>r4}u+WYh}t z{YvkTmQ?ncG%*8=KjJLAZZEYKWaA)o5Q%LLp))AdBbKK*o803baI212pz==5dQFP0b`{ zAlKtQr8oCTHusp!y@`;QCDY+H_oRj{D^)b3WcaC?OW8k=++!uYA}4rc8^xkRoBYMd zIG|%T*D{%I9L<*X05T?yW}7CA?f7O0A5TP17B-u}e35c3JlK?=cZm9EIf<2R8_%CU z57Ka7RK$2rJ6Uy4)#M{Lb~!^%GBzKnxd8Lb)*&~p0~3X_@MO8}@@Q=c$`|v6xD9hA1Lfu+ zrkHVC$A6G%a3LjpJDg(ll{n>>NM=a}>Jj5k11?y9w;P2q!%Rmj8el*WA*3i{0zK7^ zk(%u!ZGX_Nm_oN`wkiylcT*&p*ZYjCQRd+asz|G%(<*06a5uyFKXr!HGsXU_eEBu2 z*BjZ(&UXgZ%$g-NW9aVoDfA-a^9A}+n*=JP^(Bhg)#gipz565ANlIu}pT}#PocKeB zR~oB7ky;{1B{l?)3qgGRmPtuoxj7BT;Fcr#DFKzDVLiC6O8Q>#gWgdnK0LagqusyG z0vlo<98=p@Lj7ZkpwXBeey31_5+x*(c?Ca}#We23XA3{Lgpe)e*^CrIv zZK6R2VP>qL6RophWX7;=lmGhUCJ;{#ZkODmWHmY$#OO4o(G%nyNn`e8#KtA1FW$MA z>?*BF6a41@+i6#m^ByQqv+13zD4 z{k~(+N%r|0DPUrmEB!s%y_hRwaY}E?u0eLB73DEzQLoT60#wbT`EZc>Nai%iQ<#Xe zMN-vC5-jvglx4F}F25bf1Yf4KD+oNkTN^DhZ%S||FZmFMHC zwwy#%G6`>-W`^sONA8)!PfA{Y{1qsp@!XLLk%}3rXdqrzH1yPFErl77MInLKRl5sc z3jyl5Wl7LotEl#S53_W>dobNbu4h-G#{E3sj@xb(oaJ5atw}_o1Qj8rC4&NA&Y~iD z8e|FMaJw;@wZZ*C1Qh*%*+XL8CHhDAqoS+=cc^Ki`F8uktxFz*($UP4(g&SDYEEDq z_(zWVdhA*7z(kJMicd}QlPY^co2B)B$Jg|wPSle_GY zSK>KV?ESK8^~gI7zhG7%qMCPboSJu_f=3k%|G-K08$c!}R*sOpG$zUC{Mp%2Ev{G_5RIX+kv6hVeHKMw|4E^$FB4i!gy!ApmKbp zMZ9ybwm)l;&z0!9bUF5_OCwQbh9ermB&gSg`=f)SF8sp=V1gg@w>8(7k0R#Xqg{-} z3zZp<_CB;|sg<5*f{`#q7Q69WUF_P9;Bg66a?Mv*D8!7X`NyZ7u9gz_nPvtXZHuiFmOI(-r5`uyAfFPQ|pWfK!uMTOXb8)$F(h@Gj&Qw_*}qy4K6R({)0_ ziKOzBtm7(BOOtH~nP5L{AI8_jQ;9+!L=oUdu;?%|;(yNkO3==t|6^M0P%C5!@4Wpz z%8T*jkK(0T_$-_IpSr?Rn683M+MAGm4MjYdf6$N2$%e_g!6?Tr5G4hMFN_`Q1Sgu% zA;#eR;D9LC<2hxn8c_>#w#({0ODbbX>jne|4V1j^w_xN~%?RqE*0t6BW~q!G1UyWx z>TG#Fv@kGq1LY216|v$2N05cxY%5Z*z0#*ZfA@VYCVWuq0_FS{uT>~KA$%>i*N8V$`Zy-pRRlfuZN(&5?5M*R~X>_r&Y-w@+3-o z=o*}*)>^h;fT}Z0Fh}bjhhsN#h zZ>cx1lrkk^jozZf(=>MnoJvvRaN+*j1e}LmlGtVikVcon{TnC(2AsG-%pPB4`e({2 zX~uqy+tEk7!YKEA(ze=e-v|v?*tU?c3dR$0x`UlbImhTUcNw@bEj-kbEguT5u=-$Q zSQQu4sC@LO7a6r!_R>@JQVTSAi?CP(t2G4F9M0$*&NzmT;9oD0UXDqNIPgA_VCeKEENgOWIU-Z!I-Y>q}|X;2$}puN20<#eL z|3QnOejC#F;dd$R9NYxqeYQ)xNjwC(Qj*uwcL=DX=@cAt6!mcJvt<#h?qwG4SHB={ zW-}7V_JDbMd@afi{ILz&KCU08lu8rE0iU!;6KX&^){s)1(dZv7MF4uj3ClU5B;P(m zw7JG-viU~Pc(qC3q|lKIJja_Mo^cFKW%xE6I^;H<+JmqCzi~2PC&b z&c$lmPtG)^n5fAu&M;jz%)f!}l*7KFJ#I&iaop{#? z^K6N)eW7(vBE?5+nFU&!Q?uDXa$J$dJ-@~2 z^P+#uRVp=Hi9QYwTsbAw%uM-QFTiEU=5(JbjbT4SaPqiRJhv2`aXeAb-ZWZgCe^de zMfZvW{bhz=oimYl#ar$VOG+t|#Kjw%zV8z#%NEJJeA=Z_nT-}eRPD0H%t5f?1)eHs*erJH0_wO&Fr<<|fXp<|& z-~@ch)Sg$++24-K@=6=Q#I4~-$p#rZYh?HZ3@=paudS-5&J^lz0}i#cf}qkNju<7d zIm+fSabujdV4%2D#`DaXot2V$%KND*Up(Ob0Q__$?tb35WoXF}0es<%bB_2cH@I*v z1A>T&o8*WwigCEfY!-r~GyNa}$mSMA&-e`*Ug0N@sm$-rw^Btzryt?9vQYr`94s3J z?+_qyzU1KTT{kg5{s+#7tN>}hwW*Ck_@MZ#P$Tv@;E?2kYxtUITaI{b`zTzar2lOi#o`4llZz*;scQlfAhEULg?xbd{m07jMIIZ^ga7hZvh%% z4w1kZ-U##eLF-EVg2@^{tz zA0xCl|NmCZ|BnHs8g-rjj8XH$N_M0~+53R?@%gRR$xDFXI>*?9%7@26|?p9k530)isIJcpoU$yAg8 zjxM8)0|pE~^Rj*hAdZ>!s>XJPisNhlF~|(LvPf=stw?E~xDgq)G9)=95WT`5F>IaI z1wBJ>ubPu&M2GfK`I|4}2V}LO@y49kvj5=Q%I@Ae#MXjcdi11+9dk8S z83F%k#V5W;`Hz9Fazoh|lyA9^wS~>b{^imA$Qe(#spQ+3 z`>m30ntkS-r6o@;g;Xo-=8QAnT7A+`#~(F}u@RQ}|U zi(}DRZUhV?#?e`j3e-_Xly*4Pc&bXZD#%a>}Xy`U~o#`o!(lV9Z8T zq1!{FuAV~es5ET_JE}Hc{u6jGSE`Pc6%jCO;sFM;XZBUY3vq?sdVwYC4E#@0g$k%j z%n@e$b!xizoQtv#Qj8X4puIZ=;Pnpvoo);nRrAx!6|^YkTu87p<3u+nG(|)yHFkz3 z5$1{BrTGDcXf{NHL$9p>(vJ9PKQEji94Lzzz<&xUi03a9BEnSd0KR|9RmqF$F7WeU zoFBRITT_H4OZyJjDANVzhQ1y24nx={5)vou7l4|rz3sismp3?q6ikT#^w@Yf!$dsG8BJKDgp{eLp5{uT=3;ya^w{!4#Tq5q|f z5_2~;b@+c~|4Nj2+NLu*urMaQW|$>* z1oe~`3K0eV-~`7M+=mKphyW4dhMCFo$o06V6X+G-|Dic#^FvE^o$1JMeE?1bfFXWY zPAp5;!o9s^WZ(q{##XZ*TvZG#Qa#kG)xX}3Y~z4?{as-gBm6Qa`(YhE`M)&N;X>czN|kmqU3#S;LK&y)GZizJxdU3%z*DMww4wB8^i zK?<3_DBRv?7jh-YYDpSoRU2(2M4%drjhnbWZ@kO6%m*aGJYHI66v_>+d9FG!xZc-OEY zN+R1`wW~A7UAD`wW|sqeq|1TTW|~q{W+D~Urlo;Bh^Z8S$Cjylt{pSjXkZ;oJ`~fS z$kfQ24i$ABJ!|F~ngniY$Ye5%^1Y20VYMQ&A_bbv??$W-YZewUV7m?y! zB3-Xp(}*+#1LG{b+KU?1dz2&cv17$pTBVtk z*+owX#&KfLK%hpT^g~zO$%{u*DJX;43rvD_GLg;C=gP@Uo!<97jg;h+PC67f0$JU; zDPsRh4l73>U2`(QoKHE`)FEzSr{OvFBAV*`(0?w|B0o%cegEWB$ zFrH|u=tHeD&0zi1z^vxX6u@f$;l5$ zPy2JqWCc<}8)J7(Rk-t}GR3r-o(;N7Pux*3>v6wH#{N}>$tCf3n6|((hkb0u5yDG_ zZ-O$%Ps2vAePewqg-mWz7zyfmblD3N&YZ*w1<#X2q>cPL?1O{TVbp;Dptj49GcNG>8Lb7&62I1%poWp#T z?_v0~E7;U|(CkzsCf2r zGn6Ky9Lyr2Gcx&)bS!n|{ojUh=9rh%t*rx|*m$~Bsdkdts_a-y&MhB0VZ_jK={||< zRM15GJZ)@;Y_7Ky2?hs>*{Wpg4W%=G(`kM*Q`G~{3qxE;CLHpFjcF-o0?S=9vgvF3 z>w{8uBI9l_avZpra-5HDhu)QDeab2=p?%P@C``zO=toC2%?Q13q z*0traorBoj!&>4+YTCQW>-L5DpUxy5)hx)Jn$4(p49<}^QIUJJh0QkZb(EmI-+(M> zSE<&~hXmL-_K2a5*D>aB$H`RJ;E;pyTpT#)ak`4kAxu|C*EE!Xn7!gLoDdOmyto@B z5*z^&A$g8+m!C;;!#`EN;x(z)xn2Qwl34Q^{{HcfN;FsrHM66Z4V#vt8;O{qQ`3et zTBES&EU7VDii{Ff%fJ}NFeadmk+LiJfg`)j&An{Xq7p{%x18N$;120e(rI1P~L5#6lH?ls7JJ8Xlt+Q3rHJq&<0 z6=a?rQ4T-jTAD#C0hoorgIwb7RZl2&wEEF%PJa!b8Q>q(RwFM$JRil(kIzkM2pj%? z@|^FxFsq)5c=h%{Ubw7VJ+Kh!r>$T&FK>#gVSpccpqjNksqY~60F^>;y2yDYpPj+>Obup#u zL0TLRtWvW_xaDmO59vkutarj$Zb=C$+QH#J+7Mt8H3RQ&jfbzSf<0OjF6D-kG=nKt znPR=3hiqn~k8CUf?}}0b74u=R|Mtsn_WJzXDf`0$NiXDH9QKhmQ1~xiV5a87;I9p0 z9t^*aAQnTh=nZAaBrpxA=~O3%D7v&f$X}lOpuw`4I|EH&w9)9&W?+S2e3d!Bm|)PW zvHS_I3}NWh>y?2tUlKN7OkKRU^pQW^Rbmsy`+5x<@IqDAX~SqGOxsH=gHmletoqsv zP|IjuDjMSnW#K<$h=0AMR(R(Fyz|{?-;_p2pZLK;XgAGr@@mX=a$&B+(YGo?^S}xJ5{>XULnjwFzM|rM~l-z@+O-E_Uzay8Wb$IImDY*S@U65uLtlcB@PMp@_ zIL_d|ke^F~Kf3YiPO$GlV?(}AI{k(fsSPyc`(``_wS=St6_2jl!3%I}G%1D3Z~xK1 zK%8@Ve5RnpGE9&B!X8aCu>N_MokWM{fo1|rCIOm`!9U|0tZ6nxc9AM(p48U`0%1H| zK$=YfVVnIiklv5Wod$FO7mH8V{4Ls-DCCTlq{&pGwQpvG5ztjn-lRzqwsnU%JISV! z&|yZ$+}`0f*~#S=O@0!4CRtb9ra3d!SabC0-rR*)5+&~N0RPIx&7WALfp~IC5_%mN z2`4pUnux&>ba)!!t%9Dm_SE0juf5#`d*uDAqFY!q0Yklh)*hlHqpQ=Lh?>IuN|>C` zhckHFT>T4#;SGu9l=S7ySapulqF4dBaHc+$-yF*)pz2gcSHy3G?*X0VmeM`_E5PoJ zlI4yVyM$B1h~7*(RF!Kjiupoq$~(=h4yW04)tbMIe@f4njQN5M4436XEqa6b;%Fa) zA$4{aix6U39a<%E)*|puA58}8&|xgZ63E0rZFpuVYufrE&h#r)iFv$_qaG~)+fnW( zrt_=qSTkXA?0*$i`6wa|Fmz6&G%?>3{#HSws$7P50in ztFr^Z=1g%#|M(AfW?tp}m zq$Cb4Me43NAkL5*E;+-D8+~u3-C-?+qA&vXV136V`dQ98sF~K_{wnAFYJ|(&Zo5w4 z`-sOq7y_S$086rvsQV1f46e0_npf5^HlEjo*NuZjF~UGS1Rr8=&Pt9IC%E7)*PXID z^X3;V0zJw@h4M zH!JI;m>TUKPGk4o79mX9RF9Ln+hpZcKm^3;WWF6OdjcDtz0lQKN0WBE)xuV4VFh2e zK&$3+K+I%SdSTN7_7Ja3&vme)PT03s8{yMp#)jDA02EdQ@R*dhsH{e^8*k{&keQl}BU913VhKPga#WcR#y6DEZvL zMOIrEEM(~?orjl8KrfqWru3l7nvBNCl3-7FfDOQ-k(n&HtQPLDFdqt5)hbd$I|aQ-?LUI-4(@xLF(%6#w1xZ4-In#VFBHG0{v z(2umu>Tv4vDUpFRx52tR6+A*G8EryqKQ@6|^0ZMk#WeuPx5YL&9n6?0XFx|Qvr0SW z#ygg&wL@$qiMYWB#DDghgb`%j8Q=SH`Tz1?^Ba$gX5(*mbun*5*P?|D{@jp=alU-#m?eiro>zY9I8a1VJWD&VQrSo-k zx6aP3+RlwFR|SoY%k3K56)VfLe;&Q|v1B3+sA)TlI~>=yd?Ww3cG9lDu7)(iPf>iy z!~UF|FlY;1TRp(W_@0sAcApp8yroos)bVall;|(Kr&1vycFuX-g|4&fePsD?uT?iG2a?dVotP@H|`l>G9H=A>oEkOm9cMs$0HfM1BIfdzwJ)oh~ z=xh&VOdFw~)Zg2m(mg+$y+5-7 zN*rN`sYA=v;@TXyC2{YJznFDzgKCjDsM6gW)3EMZ5&Ol2tY36Hk{&Mg94ahc%y1ed z9z&J1yn8>=pHL*r@{AR*{Rt@I;c6E-fDZPo$}n3D5t&P8MBBK89fmJ0bX4t%d6Ytt?@1k-TWz$} z@u6Kv9Cj#fn_s!UzviF`+S}GcN`C$WmJ)-7jjT9hTW4=Q^85(DU6tJxM{RHIBVsFI zY;|=Y3-LRq#n$#6N5`sdx$VljYC~^Fb%u2#drNJjhmR|5p(q(13av@jcE3Tez7c>F z6QConlh1J&HAFgFWVz`y^;+^6M*5SWAou&SCdYG#v`3Q&uQ9)7n~XC9H_<{vA&9^s zVz{%gL69yMuuy`Tj}8}xIQ%|jW?L~MIJCT~+@=DTpp0(wc`G>xHFT5m&j79ThHy|_ zLXHS6+}3FPDfwbJ?f0IYKWh^Ji8=F|k}Y1mwSvw%DADh$@6g7G65qgP8Fh&Wa=ZC0 zjaQrAA2~eAO|%r+<*dd_kLZ?l^_z9Oz>3a2E*w8=m?MaF!4<6d7-+Cg*m|Lx;OtjT z7q9yY-#Nv^2Jcv%^F6IU8%Vf79Bx2iL*6d=dHJH34xS2_k{Z~-WyvpZlwaN>D9uqB zu~=(|!fXh-F(HFsfs3UHjz@d*Cf2VLROK=C$&^LeEzqjk$EWVj^!{utl{Iu>nUd3~ zf`tqU-4S-Z(u4$+O+{sknGk^`lAngN0GYn zo5xBRj058sNN`&|YjkwMu6pbR9gD7q|K78~mkXo6cH z&C&{(hpn`xIR)yv%lx8TctT+$uN4k3q5YO$9Qm&6s-PXiTSWtt%jvK)t+3Sgw z^tTK%fAb_e(zKa}38uvb6)NJwvxXWG*)pcF?`3Qyw1OPqS6e!XK@1gd@y{8e?#T28 z<~kJ5oL*Vj%2FOTW;XhxrFQ|k(3=&745*<*7bM%XzU{m+ZEG$96_30Ac6-g$AMobi z`aaxSM9vGb#LSpvuaHulGSf>o9VF~>im=1P@=06jD3n7ohDiyRJU^aF&O_L-p)jQ4 zL*b6)LUDTN%mZ~fhY{CfLydY!&(5bM6BSdNgDhQw(TSM6eU><%E%5rreum*xu=w^O z$1rr7JX-aI$2tnnTvgvf)+{fY{Jo4D_D7CgvBK$t)LZf}>Ojfu(q;b+c+%otRG6B+=TlB7Dz7q{StHJr{2+e z^RJ#g0TpK4Q*qNAca(~D0^TdN_mrEW57da{(7VOF?@R=jr_>zUyK`W zAtkd_air6YJ}zHnyw&mkjG+>&u-E>BkpE@v-87wdqT|w&VvmZ7VCCI8?RJCd@>R$= z)E`SVNIz}jsbmyBRzDM-Hoilf4>M3>r>GFjmP<}76 z&w;ogBa2&>dF?OiiJ~Aw*Z+2Y=MMfNuWb^a@z=XRk@F|jCupdNbiRLc?LEg!@N^su zP6v!}6I_AP@+-hG9*>QdP5NZywRl=#7tAxtxBNb-aE-=Li*C>>nA)FxOd?L)SX|$c zQ#qSVu_WG48p}5+Z}}D5SN%|;i!rmSo_NDcB+MHq=mscFLBuHLDjP4iQdg*h=0?1^ zkKlsEje-2lKeRLd3PCXMkuHHk%*6hF?wzS`LX%kxV!>N^FZ02iWS+PYst(pm+M_62 zi=WPr)i?rBQ`pj3>5E}D)l<`SS{f%u2Z+SZBRGSPj;NOc4D+a7S%&d25`MGb!z-Rp z=s`x0@m{`@?hPClaBcJAdDMnWQizq>Hg`Y(iQ-aQJmEX2`HTx|KoGtS0xMSdEh7_ISHBP*X zm{$l7o>f7MHURCA~*PB#3jv6&Idu6#8-nXv&$_SQ&sS~+qf z+aI0>H{nEQpOh) z$VMTQ2aXo|;zA~A++Zh?f0_`A5DxydD-_fAlfi($2p(X~52p+7=B8sOo*ea)b+q~p zAYwjU--+$^)(SSa(&8Wt8}A-OhoCM^62KPO`cF_=lp>@tnCvJPPEOt@o2Xuba#NN^ zOh=};fzo!wYr1@?8sRZ3YFy}?x4GCPo%@fuNh^zYp6t{mZ*WHFWNa)r$YPj~SATFw z{GIe(`*)NsfFLeGWc7sC#CO2d;mKSlmOQkt#FV5#QV`ih=BuEs&EoybR!4ZNIWXL5 zOb+st2mk>XFT}=rE{PFo7L*rx>GrRc$%-?;lfxac;2&BT-eBTSW`CMT;3_fpR*i{E zkdfzm;gdj^bDv3bX5DV8hm`Q(6^KemyLb^}t#e6ll$N0GbWXO(889KF7=bP3s|()> zHYYGWSQBIq=S{0CnlUWS%A22xR6_8{wF8WqeTL&H=C~gb-QrdwCf>6iF^z@$GD|Z! zjBarWdwxX|k6Y96h)mBnB4=_*H*w#aBdYkSydt6R+RNWlp&Q+A(&!9XW{$XIG8k1h zc3zf^O}S)y9<6wnYE+bu@43Rw1=38_pwIRbYd_G?S3CX5F}G;Iy})FtnQ`0@uV`;# z8mWO_NL+An#JJ>=8d6&)qMy*W^UF|oF{351&0%j_cFj~bTNrbGZnr&H!ysS7(BP8Z zibcMQRva61woi#wJfk)$ari%2d&l71qBUJKw(YDWE4FRhw)4eyvf`}Rwr$%hwr$(V zica?K?sKZE?%lWh^sV~vZ&uAQ-#NxRp78*CUNT+vPzr9N+733yF=LNe0^OjN3O82; z4rqhVGl-y|2ZV-Lo14iM(%(VRt2YLmQMt8Z;+m< z2U5tsLK8Z>5!%U`j8_bOUnTCw?RLh+lX8wflhptZsbVoXB#4|7IXGDhC(u#Z3n!HM z4UNJDcDA!8r-&APkclqInWJ-J}HmV{{D$ohviioviq2*uQMKSZmkt^nn=?CT(0|=8N z&WlALl+1d-i@hRr<4D%q{81OG10vG?%W)X>#=%Xi=!*&S4t+SEQv|JK0DV`wHvYdT)kPM#Fr(ra>2!xIs_iE(6nIv>5WdH%HWd0k-Oq z`woYmNSvX@s-BsbITub;PO#%&I2iGRdX|6hRbJtlR^+WmV5uc;Wm|CRReh)#?I$eI zM8yN7RL_vwT#9}T<*!8j?L2<4d+{VGO-^w4ZaMSHczfoB5&y!W--+pDzg0lP==kMQ z_L@#Ps&I;^6};Hok`a|@KbzrLBIs>p{~Gan*Y!V$M&gJhX`;WbhgiHh%vqC<3+dXPw3L6J5kImXBIwf8Bdz&-i24^|K0*YkRRfi&;f?VlPbMtg*# zdBn+6PYtJvOIF0D>#`tLB}+I%yNBui@=fQqaK`vXR{n~BBe^* z_5*v~yN)q%fNvZ>iP=3x0JG_4eMYNKd-{zo&@BaqQ0LokcO%^ieo2No zn?o#DSn^6lH7Gc<4cqhTWMLCXAV06alcMXfh>=b?%B@|%&iYq6>N8xUpvN_*Na)~h z(i;OmfX94~UcP{kV>%um_ImyzxC-ZEvT5WyKkT(-r@$KpeX5#?8_&+oe3ju6fMHC` zS3S6`dZT<8T4Z{-hrrfy315y^B)96}lEk}PYx^M8bhpB!U>a%&38-;~TsBEqXUk=h zM21;V3Q_=7sceYU2sa?s3#ztYqy@r)^?;^5jwnk^ndQ=xTXzTdSQYMQlflkIk3ISU z_A5v!B}zt9;1}Y|1%);9384WNH_Ry)co)2&b^%a|z@-d?CArWB+=84b8?!=OSq(7V z@sC*DzVP%HP!o`-Pfh;}NKZRb;Prqwpe0o`J|RM@YIor|*aA*a6V=~Mocl;Sz`*cc zRALs}4q8;HZ8m_N=ykg)X*j{|G!+TV*``L|R-2L-?GYP6Sm{oJ=q7)i&N%1lfFY~W zSoQ+x4m_JxGObZ{1?c5DDv8eYa{y={h+PSOXW)~4f{-)!h6|s&#P8KvI*Ek)=yHIr zQoDtEm78S}OGs1m6)S_)t^Y#fR92dLUth8rLPsSVK!noJ|Joq@M|?@dCWWUL|yWs{(Z^v+~4MnhieN@XEE6V(QbDy6m3 z*a|U~r8;(}B`LfYWl!?)L+{3}3ilH2>9nJ5r;;klhbH3z+u4zfpVptAw+RBN zU?CPCI(788)$Kt7zmY^34gEM+;JU;mw*E03W#drpdEYmC_5J;Sr+ob1!Emy6wt)W~ z8)5T38X%0{qfv7%Ry8<Qd=`2CLwsfAT9AeeKQ? zzi+A%5{MQVU=ksOvUnI!kAGt{@q7=`red?V{O zFGv+YX~57ZL95kknl3j_2~Z+O#d!AFe%6g46p0}i3Qi^=h#};0kM0@T&gHwFWRa8> ziSZrry7sy5;CbF8>-o4HkO!(BgoMztPx0?CJjG%~64Bx?u5SpA#MKCnjD-f(weL@5 zv4_*dU&kHEoQq?w#X@x)flb43j6q_L3_zfd%#YrO&~hM-OyH8kwixK*x|(PJ8U5QDOWyCUq*l&fl;>c;k<@NwVgIsIy@^vTeYh#p zpWZx&>PnpP4J7D@Emb9iId3&dI_}Gn)k)KeF5hK(+fwK|&p#o+=Q)sDS^X{~tJ+uV zA0>afk@2lPF&n?gyd(`lEdD-3xd)gE2sb*XG@aOtIGrXwKY~v;RZ+rEng)(;IM3oL zS>Ljoc_fGQ#_{nDj6Y}HUFa=0$pJJ7D$3@F;`4N08S`~A9UY$p94r@H?V7~E-B?6< zR)v$#M^??*xX^us2xy~Y5ILXkgrx6A?A=|bs4X;}1td5zsf?|}`)cq#%bV?^RbXv<9_-2!!NvVmy)>Dz+Gj|U* z!NLZ4QM~h8vRxcX3$$KJntvET8sAwL{8aVyu!8>>2QLaUzp0Eqmf?xPWT|X7!B1TY z#gy#~N|EghP?yz-SPs%5$9xOMTQrc;ZQ%}n(qSCOzHJXmTmFD8+FwIJIl_5Li zLX$2hBh6;)ksPh!-sK{YJ>emj24Q5)=Ay&z%Re?j?fRzCqZkf0T~l&Z^TtlYmnK@r z6k&854-e5UJJcZ^6Lr+OHO5Y3@V@zZiYZ_0#Tg!yTyE$LEojg4+$wI?Npq*A;QiGa zjeWmlUAkLe9743>O_ok?i;$A6NK&m*!)Vs})|Hvs*|Qo-&=dLL^Lzv#owZ(BXa&5$ zH9A2(WQyAt+F;~;*zkuy?rk!cu47mt`20SqzA|vKfOzD)e#q%@n-t&|e*EDnu}oCi z{TSuk6*;AS>JGnYo4ZfPwJDaetZZa8N@}aniv#^8b^&Hi$X0;q6SNfmxFTBh<54|7 zr-kUE*qRySSG;P8aZIssO|&S^3;iCMUa-ZF(QUqsi=L_!D?cmY&U?K628)-FP(LBd z(g@zc4s{|+N@(IDAxduObTw0s9}S`0jNaiqao5q){lDGBaHsp;u_LC4QTStqNU|C< z95G}aE@|?Gl3_H}9J+D10P$i^d0`gnvzJ^r+mXN_fLa&@H*AHLvFze4_MHLu@LlNd z)TaRpH3qFg7xf1w7YlSKnK?%g3gIxCAV==JNTe~t>=*;o=zLT+25L7dic3;*Qwr_( zl@U29x?BPHPh17+g*;h%qy;HLl}55sI6+yY#DV*tg7_q*G@G&?Bot-8fL(xEUUE^W z90hdWy+o!H@fWF&9870upkE+Z@dg#(4~t-v2&>DysY9$N=(S7Vtz{2|TdP7G=Y230f-8g75gMOQeI zFzgho-hi1Oi0CSdWm=M zG1B+ZT~y}w@y_7nd|O;WF60t23!I&fA?DsGMRZ7@V){Xx2lYuoa==~rB?jIe|J$X| zt@L2y^`E575m%28*6%~ItA81P!v4K{**Tii8`>KhTbR;Y+nIl>WX%8Z&tge$Z0BhD z{bOqeFsJ`N3zXfz_bFZKHcq&U=)TpYUZ$cPWDeGuK&z=NO{6`8VZvqjLVaPf0sFBd zav6n%l|@aBVq54H=&n#i3R`PRTWNCI6a&4^e~YqkQlSx;8BSANi@y~D33)zOn@z-& z^#Pf3Jr`YGPuWh{_nBVPZEx4t-G3o^`8rWW!I%{{qE;#7_DdX}nBmQ}IJ2X6GDC9g z`cXOP4|`%`$PY0|!Vx9_5~8umLdxCK;;~`Gu+jrUVDgd!Z4?-W;yV(!uN2uKxT3(> zA^8I13t^+9Bqd<3vYfVNBO|zFm7IxAOxWX7BMv5p7U6cq++;}E9GrZ#wWgMR?tiex zuyx`dbm$IRk^_@%JVL>Qx_nC7oHryhKr%{b)-&norqZq=8B>^x>Jyk8OW>E|ul*S= zOsfKVKOY$j@s6i-)}9G4mz8)v+jTbV}Przp^h@kl1!ZS_{% zV88f~ov+izvkwN?FismtOWO#z0^T6XD_qPm)k8n+$Xb;5jY3&wfFH2-H*p)VJFu@2~gNvI|rzIcbf(5+#mkZ-; zOgU^15}Sku;zLZ~F*U3-l)&^(bm^-hrYZ1$X60uv;YPO>l?W<^1Og?a z@MI3ZV@@7VGiyy?TN^sd5v2l*SAw&#JQ+)O+py?%JzklpY769i!gmQasO{~^tlEpa zP0*Z$r#ld+XY#YzH$Y}j^_CWt4*`o#g1Sr7x}6V$xdL7;0jxUFyWpJ^$PYvIXv0P; z(7Yk~d!+tVtO!ZHGPH0-dQA|80fdM8^i+vSQ1D;txnK;Go82__^~s>-Q_Lqp5Rp{t zLoNZ&@@Y&pyXe>(6(G-c*6c8uB@eBJxXzUw#p=#B%vHE-p!Dt`viwt>zPIt+iA_qH z-!3QMo31>%Ys{Fk>-#N&K1<28!q1tw&XoCL7+7CcFG(T#!#B8{bg@+T$<1?P$=6L> z??5}bd;=8_m<jnOm?^`J?NQX`}JOk;d~ir|nBRR{`AzT&`v*GVgYpgvRcmyf|Bt zyR@CO3>!DPqCeESoxoAx@v_2YPu&QT@6(f_@Qn(Js`NC@7g78_|6YY>C*j7IcqgOk z-M4GJ{=r{9Y-5^N`fS}bH9rh4ED`g%tmrPh=o}JN%}s+&bbel9aH|%(<-1hhN13m& zJ8{I&;O?;9-`+Vqnr;a_`dX^Ku1HDQiG{%{T|Qm1QNO@t5@b?IUf=3IdpT@slp4fE zRV`kG?CNP@Sb$}g~@V@ zY4K436&11{c6HNB)lXfpJ3U)3YW0Z|$DH?hkY?}3;elR7^c&r@0abSakrFLyY|gN8 z7pe&LEidP+%^(36s=>`)5mdudF-`f%ENn4WNZO^~y`pUTt|b2SnI1($G~1N<}L z{0#~EAgCacvCa=nD~C7@(Z=+YLZO*cdP@VN&=7IZjP1FE z15<1C3^B=^X(uoCuqaXpp^sbYR+3x~r-*z`xpYYvC-g<`*6B5>QoV!uVwP#$XO_Sl zDHZmF9Y#D8j%Ou1EJUjEVX4@Ed_YDVT?5Yuf~pH-2l6Q45kEo$YD01?+*2>C+`)tf zT4C;PWU(b;Tb?Yp=+sRF+Mk&1gCgIsQ{mur3qpdpWSWa1y{p$CBvd>36I%ng)r(0L zwckHde<*^Y5LExs5MRSKG^!6cwtM*dTo1Asj_S@+ zD_x50%cn`@^0@@Ere3!X+h{$s33moNSZJuI_UM|B!<(3?^hWxs|Bs!p(imn1C?pV& zI_kgL3G@6{*I5x$GeZ|^XF(HJQ%7fj(|>>hS<1RrsDfy`35Ba{irN)X%}dj2vZC!j z)PfR)6h(-%7~>(g$udq|`_0VKvS=UlPZM?m`FjaTx6)+i2hrlXCq7cWrZTj-Z@Q96xstPY zt0Wq#TAj#NUWu#QV`Cq@t@a>_cX}&5w#-c+B`rY%X!)RyndB@7ThFNfj#kSteC!B@x}=<7f>;5}IN zjcMK1j7C+_p)jJ2wXgpu+fRnGDPkefZd5GB43|z7PTCzB(nEv4xZY*p`Cv~$VdF9G z^+`O5h;>ETry0#-&87G`J~GAoitrSbiE;#}`g_2I(dnu0hjV6vJ(N;5=D)3^;)wOM zh?+yh&Ref|5gj|#5g@vzkJHdTp?a6x^((6LTmxHj{g!iLY%TkTxv`@saqBMl=EGx! z21$oln)br8XUKYM!Y?eWmT)Y1tV3&U{w*S-H{qOX- zB6V$HRB^OVh#eJu`M&Hig2at@U4X z<~|Yt!oMfNgntv(vR7qcjAV%UOw6VyGS}UvGC5z*bND~O7y|UU82l@MGY1O^mqAYY z9)XJO2Vzcv%wmxSDzR+;I*iAx`+A=YX91y2xDbbV^ws?ci2;!y!WV#u@TCcR-3Q|9 z+eE5^+{+|E;HSq>B`MK@>ymXZE+-EgH%=o1VB1V;1iPw?HzlQV zJG%%kCUgqud1cv!%v6w4?t#^1xg$4K8Ns(%(Y|sq?m%cV7XXq>PS!~J2y)Q!F_815h1A3l$|I4~unW%w zu{|m!XG|&!dhIzg*SlS))hGs~iX^zQeDT^bo0n;lj;})dg^dve@@lUPT6wuXIattO zFr{8=iTYv<^C|X;Xs}6F`s+JRWsGb+d>MsdL?JTz#jdHArRCx^P48-Gj6pLF@*?RS z)c#-)jIR7qKdAjdApN5C2i1GPJ|s7)bw;dwMhwq_BwClLd&mteHuCy5Fp>~C=@!-3 ztkrRc#_V^~Aa|2eJ#F^pw0C!sPVU>RRyi|Vk821s-j=?s4jyhHyQ$!J2DSZ?tkBrx zL4H0>$uXw#yvn#y)#fNy{0Xs+jT$J9eMCHYlFEA5%CMJyb=lsagz>BGM>w7Rx*BZ( zMwMTl?G}YqJ1X+&7yWCqA<`KaeUb`QRzjDLY-J7khqtOuCt#0tub9Hx@=41j#xO7Y z&CYBSInO}9SsOBJIRj@;7dZ!RAF@9KERy}Gyh~!%@^!5%GPGU=w3?u3aA9s}#NK{^fKWJL05tc|}~Y;D)~_nN~m@<4Y|;4GUMC&nT@9idONG3~T_=I)3FK82>i!G*{yhN*rhed{ zeN(x37i)caZGGFblQaApeTH22KRH=OG{F1t@!$z6cHAfC_dTKucz+%aIyrOQ*WB<9 zXfs|b#Iyvo&PTm56K|mM{#h0B)CHajY9mpKO$m~lsgw{%J45v zUXrrK8z!C}bO8#TBvt|g9nAoInDzaR6g*qJ%u3j{GNkHm__Sv0ekyrKhU)zqlG7iK zG(<29pO6htzv!>;X%rG_mC~d0?0ZTDf&W+2s@Q*X4gXKm>VE>YixkJD1_h8Rx5V=u zT$a&!!neHrK=(w^kkxrac`3YdA{$o27#kwPz78dCb|7CAjm*7sDTv+6^4m+wGqOvL zL&br#HGa>Cu#3?kgNlF2&p(2+yjzArsuUbC@ zwpLTuPY*iTP?I|~R+iWPBsE}8XsHim1L^Pk)k5@e#t|p&noXLfMrwF0U&cRV2oB%P zl@rmE+c%-j6jBMs%-FJgE$G(GJB0PJM_i1}U4w{Z7?P&ZlfmBk$8CR(oWuvq{G+1n zpLm5BNN_yTw}2G(Uy5xt|EteH3}9{g|MUQUDw!Jp6VdqhuvK+CN2~v6vYJ%>t;uTW zFtceVW7KN0T(n$p{?I@MpDjfM7W@rURb|(2!o4ZeJ~d*p{6)(4o9_kmU2!iY)DGp+ZIZ$t;r;w(w6ex|uZN<988a#z|*uF|8CGakW88%|K&E+O_YTV>DX zHIIH`J*;suTh60&&3WZk`FvU+ptq$uC4os%#MtjK1HT;f~-BYuOu zhECsVD5@3P{HAF^k9U3(AFS#0yWZfy|J6G${6DR?|L~VOclx$E{IaPZZ9bjDq}4!* z4NZlRS_lxLEMm1`B$WgxX=^XE%eI_0pW1F(yHo6;67FbYiD%7Xzx0|1Db+EbnSY{u zLYSlda?3DM613u;`tIhZ+K#i2dCjjc`F;Ol_a?kB`AuS}+;{^Kz$F=@hJbU>^}+&o z{!Rg7Bkmmsu>g)Frmbak5W-w>2WLtx_46Nvks+e)Z3I#FFESwW^XxE0H`X}HHI+YY24l5MZ^s|CY|G3}_%Y0_Bu*-! z2yI22oaV$bk3CcGu{oYvPC*buCYB%eS$!ZNE_36JV!1b~L6eTdxs-$_=_2ZhnzeDW zl~?aTQXyR$DQijISZf&EAxT(>qUE%=l*(v(V$8BclE-6pfR~j$6M6>z+G%Vuz*z5* z&tqyLGda4hlA=++iPLZ)qmeN?hw8~;Wy%zihJ3y?YQI+hcq6p3E8*}^7tj=FqoQY) z8f}|1Q{QNOR+2dql${-)TUgb(5?fm_Lflkz-&~a;r{PoyAi=+~PoWTHRv9TZ?m{lM zKmR~9t$I+Q!y_rQDEd%W6ca6fqNPtZ8D*rp`wn*7ZIr}#T7;g%8rVjQh-*Evq2Q;x}(dtwQjE$`Wy4EjGWf7@X z3G&oLVOJKS#%*yOcHq&y>g0!f@f48z=`fUsY&$6h62f_*Dl*I0(L0OwZ2D|5F5GUa z!%J=&1DvR~gb~kc_I$j1fmFPI-&4`;kU-N?Ph&yO%{fX)RGsNvw_Y<~NWN(J$*XvW zPpf!G6QJw=mVx*(O#bPz$9CL^MTLS;HP#Ss;3ZD}*hum%{gdC~b(y3-5&9$wUypUF zZ$w-r`qk5kvXq=S%B7hqBG_`hV#G_@S0vZaIsfj3UcYK5bM8Qrfo@ze#xUQ^CuofRb2z|b*)Fn~@2v<;;p3Bbf8k%? z%*t#mTA*U$<5NqKY_i32eVKUdT%tT*GW3!VI1q5SZ#7^B@$R8)f~@@tv<7E}kG|q( zvm)mWnS)2bBjst1{DF09fV}xzi&0P~b0E;FDwS~K*Tx~QV0yvePzLNW|olZAXLI{`X!Ssz@7@sp&846~K7?$ax9;JG8 z9dJb#RNjw{QO{F@G$46|ii-3(^JaN^1ytCfP;U8|wNWZqiyRYfy4<>_1~bzPtx)(U zBJAxHz+7kT0%fkfLqQes5n;K!bY%UH?Ws^I#dHF+5|@S`oeOZ)*&S#%l)ouXRA!2D zGZ2};#jliHq1T09bzPotbvA^gx?X7M-u=e3 z_kgicGW~G*kogmaiZ1rtPGHe3;yQ6DdV(#xAJc8~#QK*l$dsse)hlh{juqKiV*chS z1j-0*<1I}Z`b5<9i8mm!zS!pPo^7sIcfq4n=eG~_NU*&8Y7;wd+2x^|-IRVA)9tc_ zUsDjpGOpg6@Ci^Fc4z&IWf0FPEhx@EwZr-81@RJyT^MbMaJ;|35IOEWMZa_eS97j- zc6&R>b|$4@Oh~;T?UPTe4wIB{%lj%TlUFJNf3Q7EPA%~n^6?%~q>?ymKr}#;H%#j~ z#KVR#xx0H_iq<0T$ot&kVoH0OMKJ}W4G9&iJ&oZBmd*c90UkbWqgdVd>X7&^Pf))3 zApf-!6iX*N+y7RIy!3zT%2MB#|4$9iPfC>zyjw!ZcFHQ#)(Aq6MWkm8Wx z&3^psCO7@@dVG!uR8xx+7(@ zS3{lhuW_Ub&+Kzneu6Z(v*i6$y`iIz?p1Slb*HZAKQXNi7M9KHry6qN8#Nv2yPjnJ zP6jTGw%aa^HUUyU-UtXasuQ}#v`xOvcca$iRL$Lc*y{@8jBVcnj$P^a+bWfYJ_HIR z7HEbm-@2MlSv}UtqVN)}@E9%*Ep>e-STmH7eRdS9jC_s2lvtN{TqC@aOSx(2I6KW@ z)|>iSLgNoL0$oBL;5(b|Xu}Ecv{*_~ZC&vAZg|Jgrl5rzO;!eWHse;x_n)OuEiJOJ zsM^oHLfQafYIDn-DWaz6&~;ss==60o!p5a?L4M(ym8ByFzEBP_%rY_T;|!)N)xsB7 z2X`ca7L6UnjJXKmUwy%bHV?yK(-rRX5K&H4$?7MoR1bfI4>|jAB+Le5B}j-u)+PK6 zLkdOPhZN=d_(+`nZ^+|IG5aM9-b6neBoIHAkzg8cu_c1(Q``N1f(RJ{yFo8Xvu_OO z7?ivshoe?s$bBNy84KDEfAk&$=etX|j~>9g5Kq0cOLS0jdPkpN8_l`J z_m?!*m>ZC*S5crLy#Jw0_XXBHjTh2LYs>Eo1$b3N-ZS z;xqu+WIqmN4J<*gq6$B`h?z9}#cfiTTjXPteoYYD;5~Q>4GHnq=YF=YZ|SH?F;J~PynLMCD2V}TlBc!#pI+mN8wT9YNZRWdvb77T9 zSD-gFMHpP>H$_xQ+cagk0MC7OKF3c40f!!fZgpI5IZg3CZ#aEAU1i0PBW`~E_|_Vs zd7UcDP&K5Wsqvthg{EX(#D}g&$S;oLc&R*jjt=mh&UP*IiVDG)@u!RwEDW1oqzpqP ziH~Wt#YQW6G^UKv_LWFb|JW>%vWiS0=2;ppx#b{?IaW%d_GXDDFZFJpkx7h^)Z+^z zw{nh3p?Z(E8RmVXB^Yf=zeeN<|1H^)JCKOEdC zUU>%`g=+M>@DF9wJdR!REiI1S;~iVK3|YI5miq5p>O;knSr?pN3I)r-cfxlswHK?d z^o#f6o$rd>Qu{H0cZVc?B7GOCUrMH}i5;xyQbh?ep2jq0KhFyCOy(rY-vMOu!oJ@*nF8p zV>4yEjN!yQ&S|tE3$TaHK*%x65b9=AUbcdJmm+SIo11WEr@3`0{4gp6L0z?k+hvFe zk6H&0_$iTXLKo4$R#o|@8A}Pf3sx9t!#Ttf`$ie!R^B);YQl>C~Niru+o+Aaiya4kR@)pmxXA}x_EoXrk9KEf{T<*gk zg%;p>t2itXYXs3WJlrT78M?;#)G^aRCFob%+O0#)20Hjh8Kw>*-Ik@W)ySD*!Fq|# zX2zuiInB)mQ6~pns{z^shDCHU!HBYE)`(@ck`dNs1UXB(4nwPzlRC(6oQmmk1NAng zk~BSI7>(yM%KT2N08`9FJpwX{bbC)1|FoKp#NV_^vzLWx85K#pnSEla1=9&(`)$B$ z@I1m`^hWF^ZO)H}>X+Ezbh&raSdMa;{NXg{9`L4s4R#Sd5Zi9qrdWBAaUimsf0KA( zWtI2z$f#NGLUm!B)POvG5()_30RP2we**IK%B6%<<6Qqa$?Q}R@a{NllXBiI{gHMK z`TJ4kdzeXi+c2beGgwlc14)`UG>Nq~TsJdnhU>+rResaumnP8`6PnG4jy>%SnR1vj z$D;M#VhYv$O70CSnsqfuiit6YogX;}ny?>h47Af^p6tvLDCC;SKvoNRdI%bIo~DSJ zm!6@r=7prybu#=|{U(}#rjHDjRsVv;-xj*bzk-CvP@hFVg;TBUpMz$i>}&#U@cadp z??HB-pwg$yP-50{?^sKffWVVkwWwgX3I=!$rMj(EmlA%5Mw!&p1!qS)OT{mYfjC_< za>-`20vAh4;Y>jroH*Fp%KM*`-(ed5RoOTbsIH#qkg$>Cuv|vgqh{5BHe4{gaZR>A zcjn#nqq3AJ;JVfG2gCN1DzQ3=5OB!q8C*W|#{Z>xeEtgYqkW3|gtE8}6uHAddyK)O zp`KafCW?z!l7IG<+B-pR8TrNT=$}$YVYZpqihpVyvt-OMEOfJa#OO~S^gR;*pU}k~ zS$y*PGq2|x72k5h46a`hJyrK^FCDebQ``I36`jn(T!BcH_qzGcr#G}S9+=xz_q^UE zW6x)qyPI6w!#>2XzJt;wzyo&#fb-GEQx$V>X=?|bZshE3Y)Pr5g;&UTAU<~7uxNLb z9K^d1D*nRz0q2Y<{sY3Y_uo@7cQG!$k-y-+*3gDshf$+kn~LuAvIvjK{cgdr#WzTX z$)ssLxcDXY6X6H9J`(HZw-m^or9|UF(2GVoW+hfk80Jf+`1fj&GkpRSL> z82ngKLLYUOm*>RLc-1cM7oX3rnGr zDF}Vr4`A8RaiuX>_p*2tTUY@TsF`^s_0>F9e^FHl74-g$(og8_Ie)0WIN*PA$=cpo zR>aTt3kRKw&De;$KNn_Xv_L}#z;pn+u{`hQywhiWO@8$el^XZVx~H(Vnj&0SJu^H4aOb$t5SGfjpDbbN6P)zx zkXbr;55kX%>L*3|-Yj~}o&tJK^|#5w7HhGp;c=V9;f(uM-SO$67!!f$j(z}QrUDF# z!m_^-Et(v>liw*gBRydyWfh6!K-i$@(q^B>uvasPiaB9%J-!FU;-SH2_+!`$#@mFC zyJXC~rtR${%dyBAIodEM^jLX5jjA+cc~D-00V9MH8ex`bf>+~H(Ow_`A4(}L#X201 zLU)%U9(^mx3Pa+tz_8Rwv|nHuT-<;=qypKT$uZ3^`x2)rV6l0>6nHXpTch+`c+||; zYV1Ihw$9A=U`a-8DmGoRcAd)N0|j8CcGg6nm%2uEufv4y&cJboE=<{MlsAhmC9Vt# z#iFYE(k`V`XIfmfkMSmO3@PnFRMOtW@8VRd6mTrSn=R%=_ z@PVi!qe=)wZL{bP^To?>i=xhTUeKc4}#1 zPW8s%q$`gfb^r>Dv*d6HaKJIsdHXHY5d>11B#CKO-+0KMA~iNq3#C}>D97?iY9Ral zFp#{c)Hsfic_UkxjI4;>0lPw6S=LJ`J=>jVUinqh4h|!%9hku>s>Oj}ALaP#Y=_B! zch{$}JZ6;ebOGAeVWxJ(DzXj;!9n&W8m$E&w={dSk^U5q0`^Z{i34KIdTwRYZ1ieQ zypxi~GAU$b+0Ra6IvvL;CWo-WLRk1Wb`Y0ZRh{L9g?h&U`1eP&|4 z^Ake>{K_+h7%r(-T8&helg@KZU=Lv;S>!?OSZygerbEnE_B4heCdz8l`Q84v1#>s_ z#}1?JIX*cL0l?FL0OcNX%w>|6dP#T1QSx4>Sd@IykS`f=2DY1;ms4v52Y*v(NVdwF zr&yn}N=lNhwNT9JG@h!Paee#pfM;EZ*02H3^pDpU*-!EJzENwdQHPSg_S0IWxs|cM z1;OgKxxdmM`KMesLm?WJ{d7hyU~kifK&PAi>El^oRnA9t5lGcF#L-0vqRTvXc20m8 zouiRWY7^K{ii5#Rz8$S3z+XPn+^_-uK zTX@a5eJ@!oX!$zYqnZiGo=ktGrpk*9`t zkc;JhFn_l`F)IW(gnqltkMOD>po?AR&th|dJAz_!v7TTAz(t)F)XDfb<0vb@mnO?p zCnr-n=_tTj_^{}$p$j6ml8-!}9=U~(L3Dje0?UU?tq2YQyY*(|jZ%A^ntr9VWhI?# z9OoFhL6pC%&UyWbD&+DSg+5n#p4W}sRb_mB>RFSn_&8qaZ0Edu(9=4|F?5rKcE2ug zGXFc~(=t=0Ojw|}QkQnAs%)68dDy+_yw&CGOCR+FY4ex(cWL$Q^wdn|mT(VTD>DnG zSXxVpx9ZCJYw^Ra;4xkKJ-t1zz~d#tsjba$cFWVO5acF!3=Zg5I>>aI(Be@?=JuZ3 zDTw1-)Qe}Vu zR&`_rfZvw6-q&kS>=C!}V6WOIryQJCg8Yi(dKG1QK|kALFU{D_kDB4@hXe#NrRP7O zTYUYD3X-#Jhepny)54KwpQkJ}@LujBK-nnKb#_z4?3|z-6IrL4gF?6ic^&oTmop*pfZ%hWz;G(- zGQq?n=mTD^;>QY1iWFk$L#`B};ZbOq>R&^C7Q8dHQ*kB%$TAqaBm$4nKlp{%RJ`F& zM3yS2!&JN>JtXR7jV*-nJ_GKPJwm(^QZN#$tj&b3v>x)7Nd&|CX8FEcMM$TGFC|oV zv%lRWvOgF?j4hHhc2SKDy2ww-G4^I(YmtMLM+q!}W^`I3Fo35qu2~F~@YZY)hGmCm zXqDD)WcZ6pXc*sFPIOM*8iF07WHE$jHMML=bPGL!64R}$q3&Rl%}(<1S)_@pM*(6w zQDMYTEky|FTB^)`l*IHq8?uu=3;9R_MLO;&M8(0+dwg2e3U*&jcfecdF#dh3p+NrX zv<+(#Ura4!QyVziSxIKC*LkWM-W|VOLYAPqdl2ouik^no;Ht)F-YzK#x?#r~jePtM zU_`>j0F7(|UoA5tYf|R3Y(IKUe{YQgKy?M7MV`?gh~8frjJ&y-ro|01W!}DTr=&kxNAWyy}(Op z0BVq}a&L=s=z+#-PT89?HUd9XZ?X|O z;Y>>l$~@`Y+>Z%hT1b>#udGo9+%!`ufA&sT!ZLZ3jB1D!jOH5Qn0DhAfBZ4r6v^?A z&Iz{CjhdY{et^BXx3a)tdQ`tyw6Jg6PDl2IvF=2rMq$siT^CeSmYeColG{Qw;&=tU zb4Nhsm+xs&+xbha#t=WU>&NU2y0i?L1)17In}C#<@5( zKX%r~V{@#s?#~;qk-Yia`WjhWO$ubH%elODoj_|<5C7&OKdOV$^0iX3BaqpsTsFC3 zopb)qby&u(P5pPc-SM<4IM1PkTU}mdd&Zt%4h7*&*i*X&p*?&Qq_ZZZl1|)Y_#&A1 zlY5A#>x@a-D`<6Q+IrUENFKCwpk6szeBnCrt>h7Iu9NBPD(dgDa8OaB@_2zde9aiC zaW+*zu5+)7S*Ct0`Y{tr>w|z~(g!UpC63WJ%**3yKhjG@NOz#A@P=TIOng20En=#x z$m?%`v{Z~c#x%l&#H1L8DwApZMJN@#>BpxWOa)L;*OU}5#34_BYV+2rHip0~TO)9_ zAG!2)Sbrjct zM$MnV2#_90EvGIM=Y_LlR<#e(5?Kj}m@+JG%1w7xsFSLdj$x$OR#_HmdIYGuDG6pZ z=7dYeReSIYM#)!ikS@O<+O=`616`LY?F`hcsy_mqctPhFb|;>`voEwC3CuCVEAr z_?@2#vS3x1w~BAWuYpwkWau?b)YR|xTeF%zgX!6~r2U?wLXSTkl>FdCYQBVzkat;5 z>lBAbZ|`^U58|GmvPM3XLxs$l*aBk-btPnnBqV{cdT?INFqo#iIgCJ?%^C4zH=GC> zQ^BbmurMh~(&Y}&CL!=3XenD(t;5bKa;+J3`>Bk?^M>~}AmyyA`Tv;gcOG#3P(3HP zM_2er*=nq)55r19>%cfCoaa%!S<|TlghUjYt^-p~)(u3dkn%R;Z#XIi;EOG;nA~-B z#qjL`O+9Y2svxNfqB3p1ng%UXON`g#&%EF&JzCX{ZaWOVLRS5WJ5sus5ZGlV944uY zz)d{PaE;?~yv)^IO5YtYlcxFU3Ml!S)z-*}(UOJbgoGuO{=+w;p<;)qbP2hLIB~Y< zpm28LW>D=`rs;p;=0H%3XNFCAq>^C6AVzsV3#UuExHEiH8=m9x8B+i+L7?}uCr$OI zJVE6g0s`77hdsw6X%bO_N+Y+}3^~)o=u!vZLD!6x_ooHUAOTbGa{&u67k(r)Wu($* z1QVr9PREW4&Tz>r`{vyji|=Gl*N>ZjW?V8VN8RqA0|8w#{VN8@|L{oTKRIg_scx!& zvueL&>qqH`C?FK_l=8r30?ZbTw4oK^=<9Y1z!cX?48H@yP1()e1}LvTsJ$b^n8$nxeZ}!DZlx9CH7S(YBRE}ebUlCix?N?BM)dglKI&Mn(syjd%(KUdfVoi81)Sj2dZ|nb8~+g6i>|DssbXe z?bi?W7U{(OAIe2ToJALc)RD7EL?u3%GM$OrNU&B?;6@owM=b(~vL~w;v6Ov-yEEw| z<^LCLZxtNbvL%U@RFX=}%*@Qp%*@P;DV3O+nVFfHnOP-f<`R||M(5n_p6RjI*KYT- z`Pi0b`LTEAUJ)L?R>X3rUTR?zt{rF7t~ZwK9@u2T6>qY`RQgf&Giiii2Mo?12(kKF zyw)u^Rr&QKkC=9Wgs*h1b2uxc-{svh$v+W$wH}8LzR@+K-qJ3p+ibhYMDpq!D5mgg z%8~3gKnK`@N^HZevDYd+nKxBd2Yzu`7iG@M0J`boMqdw#>h(`A!q5g+AmV^==>Uf4 zHct93^rB+*vZXhC*!Y>POj83@23OM` z=Q*LQ8co`;8=zz^NES)Tf_guKS(Sg;#9knnpy<@&kN>^Ri$D(H8XBwY+Mp%oV{P)V zMy3&Yw!R@s!m9r&ApQ|!J?eivaoR=23O zv5q7&w78oTI9ST=M%5Vg&n7PShSJ=!?gTfu%J4c_PX;vG=VvS4;L!(HGp@uk?Q>`T zX!C^q_@M!N+d$E}Yi4`>XE)lJh)9gF&WQ*P z-;GC!tGIu)9 zh`imc^8(S98>YROxjHzageTB3^xK;pecor%>28l_u`T)bV2_w3g2q`*U!aWK>OI10 z0x>>aP)}i0EVgR~(HjWb*k$m(Y$C!g*PJ&RZGtOV!o_gzm(ob|wb-E_g=JbAgCXen z9O9okp*@8$!C?eQDd^u{J`0V(7E^3gO%jaDm)>INd&o$NpGlhPN^cfmLQHkjar@;1u`2)UmYA<{mEI?sIzy4ZzcuSinsKj(TAC`a(bFnT3*ZcCigyW$ z&3&U_#=v|Pzw8pYo~8ncGUbf0d?_(oFjnzd9lSEvi7}f$bS7F*{QxR69zkh{6OJ$0;BkqDL&J4f<6mM{#t-E&BQQp);-nZ;Q+G4Le{}~-`m0^@Z&Tf`4ozZ3J3GKXzWB!$R+p-l9hM042WfX@m%} zV-bzR{BTz*P(1uuAq4WqF#8bV?}b6!4lLG=r3>rAH$q*%6jA(}@IkCk;4O+hAcE=1 z_7z*fJ#+}Ituzj%W5(_0X^qeO<)3`tS_8_XKzJJ+@P?RGYc2PImZ&RBuH&MZd6(AV zXgvF4wH>*|XqX0zom7IK%D3U6%_O7Aa6`DX1bKJ0XeEZFyt6t~XmPrJgYTcEA;58YA{vSdicHuict$isAYX>otKa;hs2xoEk<5K!fFluBy6 z*bppkAqf1zjj_d+tj6Bvk~Q0OKrx8t;wTI(n8Jb)GBfyb8W$d|3X6Rgx zchAOXslNnO5_(nggu+ZrIjfhzVeZb;1V0xG`lR$SxDn}K!c@D2>qXIQN3!RXF~w61 zUfGKm>;m+iH$42Q4TUlfqkUpi9vb5!oysN9OmX2mT3pSBPRW=#p2B8T*?PRAH3mMRLip zNAjN%xWePh#W@f6E#RPM=|3cy>r~6EmC;ROV7E#upSr19O&yA-Oz=6aC=Z2n#hb7f zp9TrAG(YYP>}u5vu_|G3mP@QYN4P4IEA|-QOT_toM0=SRPSWyJvPB6Y5t(NCzRF7_ zCuzR~AE;!75=OCmF(MaIhdDZfQx!gfpjVkuZGRgX_ocrhoZ2D0Lf)(f{gU>?yLrBU z6!&Dvp4415W@U++9&QN3dacbS`onTM6jkGZ+2<`3-_^_Uz*W40H*CjL9|a+u-V4PZ z14Wt)Jm(%yxY$7PO8%_6e^@14mAtV0WE=yB%W^JjX|t_yS5Le^GM zUT(#E(GD&spPjzXGW*={7SZY}5Na*DJ_O#c+Q^1RlZ9m2J@k2>?|+@kV2RD4-uprn zQOJKrV*cee@Bb4~{sAM4nh;-JJBxf~ri^xscY=cWegyeIKthPn8S3AQg5mMwL8R3| zl(9);=;_lS8fwj(u$DBnDr^=F`Ia>oP%VKZ@GTeDP&Kt|tjacLzdov(*EZX4-ePKRxVDF^s||uKHTTz)x>YwKw&go4 zw>DK+6Xyrl0JpA{ft2eaT-}+Jv4N5sFt{oG9`3cnSb|r!@g-O|JH{5Ug8@i4>xXMp z*zsgpwh(se*LGn>8BDuHc0yti9_;$gi z7edc(1|OjzeB*cvt|^`!n#p{$S~YR2WX9)B^}7l6E?FUbLpjN-f5JucE|_e){pjw@U!#`V}Wpyw2IyOAnd?d_!MyB+R zJajf__SH7tR6f#&J&f0N-8^;nU$x(0q8=gc-!bv*7g+0}Us-rZ4{TvVjAVABVTt++ z+5S>i=KY7Va!K3o{6AGNRGL^=YpJbqWx2fA;lrMJE0lWlwkrlUF2!*&6R0(I>Wj1W zhVS|9FDMh5%k)#WkYb#co;tjrqy?nl*M9OLkqvCiPXh=Aq_e9il|XC3HlpOsqsK8p zL|n)I-}KZ{5G>gUtA<74<$pDtDXv0zq%Y$WA#!q$)p#+>uVb!;%o4GwpP%;PMp1zo=dP>_F91( zo|GKoAq7@RcXq`TByC(Sx>mwvr*>j_3pW(B8Hl|Gw32@mFR}$o#-N7|6+9$0Q>PnT zpJ{45%6&obY!Pb5>cgHJ87ZMm5()0%Wgo#$Yd<20>-$GKCkwM7l`NFboXm~7hpPv9 zO8`{=ZtgDBZf*w^;%`R6I^Pu&tzt<>LxVO5gX0Zm3o`gn#>}JcKAUBKGe{y_1w@o} znQJf#JA?GttR8$`Q7dDpXjj4AKsetjiV{vB>wJZvF%CL-$iX9~RjT4@f0V_Lbr^DgSu%AQ-lQPKQQEswhFblFfKE`8dG#%>!7 zqH5&Vl%}RvT(e+XDHwP%!Z8J3Ic{o){^ ziVwfL&HA-RVNKQ*env}JV!Vo$RIv$uYh4M%@F;<+Gx2H`y0WmWyWcFPkpP_xF~^;K z5-2{BcIc!km9NB0u_Kn*qU{;`@(t63RPtg+XMS5cJcd;7H?|yWHw*2f)G?RQ0I*uy zWAX)pQ&R`;>4fz<>P7?MBW0%kG)Q+ye|B)-3sT3p%?FAYn2gW?*OoCIcRQjOWexCk zyox^X3o8j%2%~ONe=sv`a{`O9B`d=TFVM)%;!5po07f$1@H5w83=_={VqW_WUB)67 z)XpjjmLHY2>g*?c-Wce7$UovHr>M#mP4Ap@4?Hu)kl__ab45A%6LYS#W}wu9bp&ug z#VXRjPVy|zIJHh{LS&5f)%fjZ!^vvrA4m7-UW!3MeM)LyxULW!A7^E zGxreSBJts&#=!^_EZjTGrL*HN-^2Ilv&S-Nflmvk$Fd9z!5oDChJH>PHo13_X0Mps zIZHo=(|q^i{*o?#KAg{!5>VRY*{R3idKnq;rtM*H@Qa@2=B!c7ANSJlp}~%Mf{C>T z4`$Bb(u&TN#fTOch7_p4IR*YH8bUarfR`MdQv#JAO0!;zQI-wB(=aQCfV9^vi&tU=XwT*?Sb(|5C@$l8Yy!Msd-0ZhSG7jV z|IA;I0WjI7E8Tl)!j!Ri=A|}90A2|5ynWP<#hw(hYzx+%U+BGrOU_S-N{^gBP`xxu zIUl zNzMEoq__CY;w`)1bN0se(J}lv`}}pNpm;&f>*nmuj^mS)ujJ0>2_|bhan*{jpe3+J zEhxUl+51QFVEYbNpY4=rd(?C2;Iln@@wzo@N26wvkjTV4Z&>jmR-|JOid*Ev?WNyJ zu|2oyZ>kjAMpLJgW^T^%)y#I8hBkl}@25mVn{&oUG1CK+Eyir$wz_K$(hXDGPIHF= z@q1^|#vw3*pSqg+U_-zSI(R^9Plx3l4tSx`09$F%Ol|gfrZHGpF|%r)w?DG2EW^`8 z7AGFNqM|X!=AyKcG5$|rl4QpyaY3Io1vgirKkHlqhC2-RAg#<=jEhDGYa5#&wgAd4 zToXwbllqkv%{QoP#?H(?a-9pk#$->||mV$5qHzd+*fcGjby^`8}|3rBA)ZxNO?k0o;Hxm;o?_28 z8!$ZM}3Q@QV%a(pr zsR{$Clt#5E@|tBQ3CtGSb@aS?RY9#Pk)>tie%&!_JJL+YwM!&+DuM_l9D*9Jcr#1L z=#~(y^c}tPL#*oQ2|)_?ZQaRmen|*G8fs|;ZY~s;a%1hWn@+oPu28Jb%HT!mi=kpuLk5=% zVU=(c@jg~iJEH4L*TY63=8qm~FtMU#f`0NbBwrF*zmr9LxSBigss~QI?krl6%7tZp z_t0tI#?I+APrHu+r;P`WY(%-RSKIWXDY~1<%Ec~sx}+~#yrM8CNZ*FZiWFq*Vy0K~ z_$<|{Tl>ebl6IQ7h(;XAH7s-L><)6cd0PL*3H(b(aSz5q9-R5?9~N}MjcUDc%YATk z0mtaqeKfI0s-sR^p4XD2cSx}(Q?W<9qjv;P+eoQ=Fg>pk~bqc;?Zr02RM7cAcnMA=_0Mx-u zZxT*fLr{2LzU>3K&)()@MglXz;WE4F%@<}_I{Zw3JtWz@B6vCS9r$6PeYD%rfa{%# zTL(KcVjCB#ByA-*p0Q!+3^#qD0xvnGBT>ew5{Wz*Gv87V&q$IG8=wK<7TIls^V>I7 z1jdBDQsvK_2K1?NWm$PJo6J{tXF|K!?tV$fWNYF=QE8eU-)|G8>Eei7vqoi^ z^MW*K*Xj76aNTs9@#5FPx^gdxE9SCyj_VKL`e&5At((G3$}uRqR|NYQzu|6KKGk^* zLx-LGyHm2W|#>!mks8Ral|*3M*Rm~<-S=rmB+ASrCn1#Ua zsnjED4fj|PO;yRKiOPTG-3%Fs%F8{v=Fm)TEuc;ac?sKsT^|u0TH;{y22l zlE~D{lmvGLa;G<7(E>^G&#e=au#KnaVy?kT!9{%_0nH~r@MngUqG|QlBU&GI7nb#W z`mW4HU!7=rJzk`-KQ2`pLd~6QdaDkLOO_cZCV>cgGjT78DyZ$j1fG_j6w4>{m=>70 zJ3UQoj0&FSg(!HSi#S+gNm^C4Urn5|*Rhic(MsB@`AkW7HBP0+yXpQUA;t zW(1CO47!#Vt9amSaeMxJm_tOnR(03u`jraFY$o;4%Ugd3=Gc%UYZQQbEo!+7yEX>Y z9?iD!2fNUtHKBW$fFws}R9f@oos#LR;g`DDX9xBgpU6fzjy0z|j!vS`IZQo1eN*VO zkuibio^Emy>v4M&>B2I3RQh4o=L7~t?4h@5+u!!0_YbQh223sUS0Ph9Eo>#aA2Rp( zh?W>PeO?2DW2@LQDdX+J#&UM0xXz1UK56+d^$p$hG^P^pfye~Z_3h>fA7u@vs}aC9 z)i^VN#W-BNZUJdpFoB(-(FS~^5v=$+?==9G4a>*%t-9abWPK7j$DZ6I}PvPSeO zunCebaf~lFDfZEd4W6X5NmfwWgw>|>K@rqk95^WARGKux`}Y1wm>N>QS#T8YZUjXy0&vZNUEak?#fiF;Q` z>S`>HQQh|k?TsMLzYv{|DRm3vX4G$D2-_EG+Y?W5V52E>CKkv{AqtIaavNi_+al8a z0Z5WF6HJB@FRyfG(GBQ)(v5uF8|*qurtF6inKhM;idkR+?+^T>tEl^7yPfdMCQvrO zHcsv?N_ntlj=ei;`hY91pd)wLL z7m7!BVArGJMPG~E?)v_d3-oq&-&(}e1L82-6O~2XpQ*wh-DRF5oi$_%eb`Fx38WPc zK)6@48lf&1aY6peBpGpfl2zny6jU8$lBTR)xvWXciG{c67PCidzma^TNx+B($K2p# z4!V@b9!Z!|!dk&0m5&s`Q)CLwR3zdn=EWakFKH;1pO@JUapR~Vk~Imu8xui7EH-T& zQS_{JhxQqb-rg-3yaAu+dZ86h-t77WXuF|{f9S)xBotwr0hNmA04 z+>#|x`B7cJ6gp4oLGe8jD_}#ncx$Zf4h_~iQ(jc)-=IO>sFQA-n6q=_UW74deHT=c zfl@t#5wE<5k~Tef*LO+|$1*>z4wPG$dmSZV7n1k%>6~e+xCNVf(Jae31&u@%&>yy% zG9c-#y%PIZR%Q0n2leyawhLDz`;x7-2{PhjmnZ4~cPRruG$~Z?osrA! zH!M5C=;Rez3xVyFOc;nVwI*c)jy~!Bs;_rUs4Tsre*31%_0Q_-UndCuwI<+y)Yt!a zhojv3SBE1OnJkjD&;qJvt|vquv530mF7hA=A{iR7;^FN2FturbkywOI8DGg~Zc;eq zpIN+FJQZgbn^Jyk=|Pj9M{Y-5X<0g-&#&ifzCTw=3;Yi;$6X6jk|VYB1DUzVmLKa?_F%ZN6x8#sxfa=hx`c05+ z@S)kF{{S*@-^M`*Lrg!F2CEj+3p~Rp@!%gfK^cJh$wdIO8!fX7aGFCy>4azNKNsTLtS?IkYr$5Xppun<$2v$k90XuFXH|| z{d?MN=mq}?C3>^wr6HTGHu?3p$L^lzP~bJji5t8`0G>egV!u zSj%D0QVmwTM=vmrKG@v2u_1E88#OP1mQH!pPU2E#e;w$%8g^nn7Ya3tqy}j8XUG2( z=n(NJxI?PEdw?vOen6?bBCQp$N&xpWd9T5bN0HPV!X~iNz|2+viA)-^kb+9O&a@^I zvmWoFJp|RDW5_|NuCC+#mX<4^$URFijL1~;=wbToJ`3rKUJU7U_6)x;C(>}zVvtCR5vP7A z;4x1F34E4)K4stzspt|^%OsPct5K7b_=k8qsh<*-WP5CZW%ff5Aj4AKv|9C)mnbG} z-fb7IhvqnXP1br;-JN2xtCS96r#r=31%e9tB~?k#i^1wU1|I@M{7ei=)Xc`2rZ8-z zpu_34!>L6}U6E}VdTwhfxN;Hazz`vUryr5sO|nxH<@|OQD!g&3G=L58k!p*o&e`;5 z5k)HCg>F2^i*4=nrn8w_?k%uMWu1|vdvAtc(D^IE`e^x%w88V<(xWTwVc$uoGxW_4 zZI?S|%SuVe>|2>G-Mq<#Mjp}s{CbE~+0TZkbibOE;JW{VY2#uS+)dF`St@_}*}`yM z4#^~pbxJm0#gK7SBRWO>!eUdwVP-`CVScWpzzQnMX2e)tD)tGgX+15HMlk%nOa+xI z7UkqsjH6~uKj_(PzM(Z#inO?)H4M?MnXteKxFBk#nScGNxV^5k+}g$B zvByI}zi@ZSNN1cbq&3s>I-=<8I26wd$x|&-uK^L;u!_CRV~tQ}c+1ZloXr=0HpP=ZTgBCO#I@QG zE2_0Rv@vl0Mx~L$izP1N-&I5!hEvRF9RGf!#be}cSjSkkK;25 za}GB^0Bi$ww$BNjGvjd!yOH|o=WOyvgy|sqHatbh(&$#6(|XBD&9C|KmJ<-96Zg44 zgTB27;)dRFqn|e^a0~xd=GUwIHo*6{+E*QtdIsxXhcLcWJO67DMY?}=Zpzvj|C_?X zkgArFk{a@dETUt){Wlm)EgO`oCiua|rH)YGKTE**_^4Xzxba5p=<%tUx%Y-tUE5b^ zTwaewa4w?urA%4f91A_OKJy`Kc3Do)ZFBwCvlu)cS51!}OD#(uOOQTq@8@>kT=qiX zoB7okQ2l?n!%u})hzH6aQ$s&%C(0@E?h|-Vx=ZiGPbwN_Bxcp)sek&GoMX3o}SXSvo=m$G7Y(wqOaFt44{+=2aw{AyuZT2TKt{J)U(Zq2q zHG6S?Uz9pYf^-U?IIM$I=SpgJozQJgYVu|P-dB?iEH_Nk9Kdo#fw+sEqYY#MJ(pa+vlEdG*2E3AKO{6o{HttNl zkMR~VJrn#Q;N3lWy<>tVYmq=z3xpLOk4*`JRH?5VF_f3d&f!r$sLToD6cylOYTX~I zbx6TyvToe6Af2I_;%`+o(OZSE8lGKl6Bx54Wh_yV#tH_RU?gg*jwiLMI5zm_S7f2FK?3!3AY~ z!Xmx#>5bH{bQ~5cts$;PQkaSk;j#*?_43B{micDmrX{4V7V;H)jA*LW0hQsy@MdrA z89H_Y!kGr?6W2itcq?3X@+&+)&zr%urL*tx8~6fXo5PC&iHD7}Nk4yF{61v6Gh@UM z1UbD))Y3Dd-2`qh=>-O0^Ra8l_NYhr^I8AwCXzB~cD*{+AqZT!0ahKB$PWLx`Weg^ zq`kpzDj5VyLd8W44bw3zkw(M)48g-E`;|XL!-7shVQsc$^3wRv!Ve^1;tr_7#294+ zt2SD&hZ|9DEnM^R&d$aF!N`qnL1Zf5K8Og_BvTc$Y!UWY z&|GXK#f-m{(r(u~MgLf`)?gT~vFbaMEh_A#v{WNrRM*w!0MR4S-&BTyrW&%=0Q{D>_~+NS~1GXN`AM z3JPIlQ(6Dvynu5u9jUB;a;4e!SGy{2!zego>< zc#hmu6>f6*Y0oX%o1*-gPSD{#(FBU2TfsG6uz&7mxkDY7=p#g7W$x6Aa(!O8RjFG2 zXfgv)-lC6yw&bt!-5U2{mnMy>ejM9weJbq`HiS}l_Q~FYIyJ!05u6oAyumqLf%j~( zN8=LDMp!&loU^NXrhu@_4{_;cns&q8HFge5-&C2ps%@2r+%;Wq95d8}>%ML?_39z# z6Vl8kDMnIB=wyL-RHQof*l=sauX8R3+_jHb7!6bc<*WMN(?Q-++sx$6B#kFcbkf_!R zFLMxxC0OSi=Q_3t40S4h0`cxx8M?8^EE6D>mpBlVArxXM09VyrveLz+J!%^1+Q84g zqKQ{504dDlF8bplIb&F;s!Euo!Qf_M7+0BT6oF8AoYryHOPJ&*vjly?ty`McE`NA9 z5mEkIWQ`VCiAyLV^ArK>aR-hMAhmOJeGS896vt876K3_F0voC<@z;qPdD{avT7WkRAUEYzKxVrpz^ri*9{V_xW$7UY>f`E$}bg4;` zL5#o6Oy>p>lWCZ14fPj$F#}HVJhp!Ld~Rw5m;W4}X~ViB26SkONIb>o%_ooX-w8ju zW zJe%QWg0m$Xh%2V~xSWA0LNJb%kOSVCqt~AqRkXzz^8k{Pl2g|JZm<~HKuibtm9ueW z(0nA5wqMn=b|!~duKN1~xT~c*45ub7*6ikM<_4R+!BH~S81^>YeXIi!W0D3dSWvCo zc;-Xj-+#FNq`tPxRk(y^dLHcfF%n{v{=DTH^#+CX=dOu~gVTe1nBP1nM?vv!da)&C zvouf;Z+=iLz}WRSGg|g&KdH>Mx`Xd@iZDM`Ws4J#!sjFOfVI8dwEO7>2_tJ$-lZeW~aS zBCP@BRS|S`(qORiLd6kE+aog$s3F_9n)nx+$z#nXY@g%51v0TShA2;9f&61mAfYE=G6VlG|ZZ15^K)&d{LfDz~an5WB%lv*L2#G~ehf zMivbSbV5l;qt7-G_F_w6`RFQ?o2K3sMs}!KdulzuzzZXC4U`%SI(WZW^e zeRd~MsoE>fn3PweK>g!x5abc0fH zYc8qS{X6stvZSRI6?X4PUgu{Ka9;Inb=B>vdaqP3OfSl>S!wX(lBE?^CQ}>@4Kpo0 z@0VUKww2slB`<_my{yfxVH=WsB^Wlu|`Mydh6cu+pLeu{Vos88_T=tHu25Cw&HCLhx<)5 zr=>J$#u8{iI}XwX7E^#*whk}E#V0BfFE%>uXvf5|Kk0v#ouT4z;KpI#l6WtKUas|( z@^dfvsPSVxhDZL&Zqae;YG)>UUq8wek}}(BkUp+HT|etG{pAnZL1=H_1WG-V5`NyP zGoF-1*;6K*Ib7MROX^f4n~#{v+r*K%n%+R@W^cvjw(4ETFRs!Z*)L~Cg3;|ZIfiJlr@q7N?ygG}H&iA8SE z*Q=4qG#ka!X$wkuSU)hYFnzj8*W(_W{rCo`>WPK|1m56;$8|8YkXQBkMv36S!LX|% zvah%53GFF-EYu^KW;{;j->bME16skj6P-N`desgn!2!xJ)cbM0*PpFW)|WC=b<-Bt zG_pZt)lEAd)oNA3A8s9p;%f6=uj!b7xO(&LoI_Srl3SEny*Q3gq2jN^n4Y8hVS6l2 zd+2JXs8QMG+2?b~)VlhcrIU^2J7Uhj?%BFEHZ#1(s!0$>`0)pBhC7z4q2-c~xJR0+ z7c$W37J6ud1a}&Ag*SVKq>m3FJQoQ0N$-xHS6fQ^2Wh*NtO9k=W&9}?SO#(_LcG*- zV9gk{pts=nwrQ{tPi;K6IkHO^F3C)amlf%PdwDGvOOXRI>UR@i%9FGSv{g}*XDeRw zFzfT-PbSGodr%KDh81~sfO-3q*7xAwz^v7Or<+9< zash4cj|@r868>HqYm8pN$4%j4AqGzKbpG6LIu=5HeoRYVY)%Z<+lv48L@S zLX=15x&hiD+$VoJWJC1X3$A$={h4%DP?n=UnjwTp`Qxki>GWqj7tNr;qyTdegYrZk z)Xg$L>V&;&ADYi!^Y?p%s|3r8)#-)-agoC|oVYXQnw@!87*hkQUq4ji$PFS66ZLX4 z3ZOcvEDFRID$z0V3T-*5oUX7^@{f0y@_v(Ik#bqRe^Gl&-CjzYY-NRHxo(nj6{Xb> z{4ev?Vec@j6$WeH%k7XKE6(6$e`dYV4Wi>x zF%5NS%uTy1raJkc1?SXi@5BnTgA`Ca3y%$W>4K?wpZ;cnLD6KrL|-L90;qqspm6+m z5&8eD0|v$E$bHoTgSYdlB7RZodFL9=K>@Sb`fs_JMac98v9{ z=7nr?Sp5++-ThN!mKNJeYn+f1Ql^9~zqY$UORYBb3_oqg4AQ2K5dkfJHSuj+?AUX* z&-Euhk$+V>BT*2KxdQxY6VNbm!CQTX8ZFj0XOtJj_Uq^%^&OT9^KLZ}R zSWY8B=XPF~5AF=)3>vzL=iEsB4l-Um?QC)LOdaRVYJT#PF)yCB4KA5A;#b_iv&(wX zzI|yK@10h0h`db@2OU29auswmF&$6aQ1SKw%LSNymuW10e4>X6owdBpa=^=_eP3c# z*#!y{^@IHmcXL8(A8rDs`TlYiSs2#S-D`r>cFW>!|#@8v3RxPx$oD-lq85^_L9 z;HpBHpr>C1&UwJ4g*Zd-GyTVx)0$-Fy*>&s?n9QJ+fl$zzMd_(fz2Dj9hy zwqaV_N7c!)o5)P>oGgpqDD5n>QVg48ch3e7Sdt2gftUmWJ_Q6TR2Ye7BXFiOyl|?PaODbUz$71^^+66Hm9tVb zhgJ|(_G4D2oWfgzW7TR%zGD3qpK<9GX2!4he12X3HQD=@d$InVkNsnA3IG6(7KYA% zf2#~;C1}|p3LuZn*dydMKA1Lbxhn;h>s0+28wODqH#aAtev!`!z64;@XAyKX5PP!V zy?yg0-%ry?wxJ1AKy(S-e$HX~nlEmE zX%QCMg7|7fkr|t1Y^PQaHXp%Qc>s`d(>|`;uEkJb4m(|CaQ=Ru@|bqrwr8|~MvdXh zYUOC-*|iS_i>4AJ@y=iOT_>d1lnp*yudZg}_{o2axi*Dsc{;zr*Fci1)ljewird|z zyLbYb(mo`9UXK{()X~GgU;A-FqsDm+{~F*e8RHJSP_UkbXV)r?buJ?+J=3CesVaxn zC5pDbV9l~d3e-TuBaNZp(F?7{xq={8BPKMEj5`q0dhlf@>~V;tFaxklyszCG*;EmYxOUUrW!RBah(-oew^cgrzJR~VB+_}F!fK5< zKF9?azVyi0@$gq9(?ryfbDA@TZda{H@@(3CU>)!Okz=&%GSBS8@Zv&>{y|MX7=|=q*5_sTao;FVw8l} z8$B#i27;Yw;k^CJdOde%%e2S7_3+e}2&dlZ;hnMRBQTtMjMj}NEmSMof3+QVb2MSsIS)LPGYPkDcYpgLF`Wd!RL!N&ORYPo3T>J zl+e9hNO$#mdygxXetS3?e(yEFRTC6`7^TE6@4l>CB=eHKeKC zs(*BEiE3(CcAg1GiGGC&j21&eROMKv?BjporZYJPn!W{@sm8&mmMEsptn=$PNLu@={GiE*=1M8oLb3fSjuog_E?b3zkD2NBIy&`$a^S0 zU%x$B_`u=da7CK5%2^py2`Q7?^lZzDHh<7p-1$a ztMUplePzI#qgwzT*8b^lCvg1(*C4d7SZw{%b>v?*kNMB*$p2T(PeDfNI|F={^7-0} zN)JEW-bh~t*kA@)#HL{0V!ck6tK@!baiPSjDb%|a?iUY>G; z%PZf2Ebe|cuD&3YO%)1FD8mNAnrBh98b zg=C15f{KZWXG05$BhF*>Qsc>iJx6_bJ28y1dEp_XqHtMhlf19LFFL$FUA?~hO078S zulu!s=Yp0*szx-H=i|Bi;n}Y<)MW3$nyk4&UwSW%D7F$Go~o%vB4{bM3*Xcw?f~W? zkY9zp7l1v{-5_`=b%f$XdFxG>%Q5+Vp43u*cIN(XjF9o6!nEB=ph>D*}GS?b{xXfEi5q!7UtR1!1&5&gi6v05AEe9A+q9OwZ9ID~BdsOM?Jl5(A>bX# ztOv6(Iw&r{C$$@GDjT)gW>m(uG$s`Wc?t0y4D==WB*ahzOoUuP#rIGHpdWP0;XIK@HHdMdH$e zDXojDz%6tB3Zm$%`?=az5VQYZ1o8id!N2C-kY4$v<-3~49li=24<@{vJK|ctzKw<& zUG_YCHHC#@^J>303!L{izC`x*01~<$3}SozrFq zz+JjfnackGfvjeqzxhs9v((hi~2Sxb6vouqo*JKg~8|FX>PD>WDL?*0A~Lw1oHgPmZSf@zn-Na z^VcGjmEY=*x3kHS4I(Vh9psdq@0;zS~bqzV(1Kez&<;ZY}Ac{%p$+h zCi;1+(vmbrW(yDLuZ_{zPv-t$lvVVofnA({22bh8Xn19WLiT;mf)T48eh*bDh7vz~ z?-SB0*})xRAL89IVX@JOH}AqZDCr|4V)-()nDZ?1FvIzIYmrN^0MYegX2#t;P$3(V zG(xX#jG+Ev@jh-U3|UkcnSmmkEh4jpZmBk*)1>APQ6?=!&%0;4r#<58bszFuXy|e( zq~AY?kfZx7s_81Ws~GgI4 zsjh?uGR(Qg8f~tW=ju|DQpvOsK2v`gmYQS&1HomW^E5Kqajv98-fW?TrQM|Y*9o|`dz9lzUhSG{DX-dQpx5J z-ougl6%tDmYodzTeRAg_1YZyLNd~Dz=ohM<_$PA)#2lgk2En3UY_tMnHsVQ;9Ne4^ zm%e?b4&se)F3BzTE4Ta!W<)U&ap{UhV3Z3yC_#Yf1aV-r>sxR)qrWyhtuD;l3bA;C zcTzvz)EmYtRL&@p72<8Y7IO8#>)&7}#dG{Bm^fJdxiJ4$H&JoU_wWN<3ydr+x^k;w z+*cra7}JX&*(^2$*n~qpXA0L^zH-hs&M>T%yPwp$uURU`kKm%0HgS_OxXbRZz%lvb z9m#wJF5;gC?q8NH`p;ZL)xyc*tH7@Wa5Mmzn7RF9*-DC^lKeuv5wa#{n|Jdjclp@z zkbH2kK`oI|%{=**A|22h{8P^1M1Yb@Lr}IS9UQMO9LY4L`u}3>9hfYQwq?;S+qP}n zwr#t*Y}>YN+qP}n?s8S%+BoqdUc9s8ojCUwd=X==HRl+aIWmWW2?^5Er|AA-By|1r zZ^vNGUU$O3?(YoRUO&gc_#=vF0yU&=L-jvG(-c;S7U(H8#<#{synje#=dn(gcVIyL zW^%A8QcfcDWZdh4h)>y*klLMB_ zkZ*P{H%e7po?Wen$%6$M>EMt=&aieh;;$kk-QXRqR2(MNAI4T59&8t|P?Nkz( z5>`Y2x{M({YJMyS?$p6nv)W}#zb4Cf5H4Rp;y}l%s?(9)%pSSL=!j>rB=?UAD7P|)*E4hVN4)4&n<#sXHM(o?oJ+84c{#8 z5*|i9z*xo4V1MgRkfi?y=^rP$9N<5${d1z(|M5isfBQH5*NNIW{5CRibo}k`Kca^I z$3L9^=QIC;J%kL5%>PRar55RmY=-jVb=BDzn_tB57hFM8%*rpAq*^4A7YuKW4=jm` zd}Y-jo#H<|!^x#3E>Z>3)UuqSS=sbjutHuCkP=P6U8UNzr*;4JjmJIe5fk0}F@4h^ zHBgV~>EYmT>a*+GyX$&;yVJgV6|5$g4N?c}8*NDOeBtJctg?pH&vln)jyHE77vrsP zwuUDnE{p;j_AD^Zi##~^Y6l&=r+^T9{wfa5@>&)%I(!0wfxUEZ4Bh;i7FO!y#T~Kk zra43=?4>wFQ12t!WG2Ezy_OrXzxWyzHhb}!6+^_C6M5j_#T$Wj=Y{;}eGh^l)Zknj zMi=p#5LVc5XEGlX{u&WhJMy#qo*F#JDSP(X5t1QIncB2iU1COpv)a;tsp`yb+b}90AAfD|(C=4a`Aj;xlg)x?x(@sri0IRVgPVRz zO^auWl}F4Ziw!?ynPKjg9XOlgL7%#}?93v4X;at6)6}H2sjBLpeu;W85YpQ#=Lw~T z`_84?!ecE<16!TT@GON+PWsxolCtO$$~{br532_bU0vIz3t3f^8P|DLOd@8DB*zJ> z%B9s+lJd`XZv*(oLOVb?Nk(PFs>@xk&fw?j^TVa$T!oDl>m=v?(Lz<#MONlPKd# zASSA=|GRzW@^xG@Ufq&Pzn5?)GDCvkPKHUfSN#?9TofuytITr&)153eQypYArm0>z zmw8)BTNCB#?(g=MmIssjV;7*^Ay1g7y(E8ytQGr_A0Ex981ofXm-)`dOKk87LYEzg zZd`Ht_>JjKCyVWlM0}n1yu7Ulo!5@l{HsaO)^+V`$tS?sN140w} z6PZT3#y@v_>L((-kUNlimrA)kq&+oJt;KQ=t&JG?d!etExJ)k+s5idPm+HWk(1*_K zTj2ApFpO`X+iJ2e_da!eM6V5DvTb*+bx`syI*0Z9hN47n-TAj`w$3*QLpQqKM~EWX z!7{7CwpH3o?yd=^@^kgVMQd7J$H1lt%u@5@CFAj~Xa#|ej@ozfyoviXO7I{=!CJAt zscKrPPTji;)27As^HOG8@@Vn0zUX{U6xrKAA=+hCe?cJ6wiWt^upa*tyY!|mQ!uL@vVZ&3`y94~UG44|z%$1^JiuFiPYoY|iI7@cEwib-iGHmzgg?U|Yub?b!! zCD|24xyd6p%0jK#1#>A4peO&XVd9>FIPcMM^>f4X8OjdQ_3E>&#!FIdc{8QW62xNW zVR3RT{qZqX(PSDCl9ponp(^Sz`p{rE!}W*RHS}29TfOyEl^!*(B~(UcAJYKl1I}+i ztqDC-%$%f{u~Qmsm3#<+i>v0ONsdOqz2vbY^$n&Na^5io4Ze@OrvQ2<-xT{cFW^BQihx^#FcgIsnCvmI?K&_1X$N(K<0H zuyieWwADgpa(L2Idu?%rUl!U>rlZp=yYs-M(k`xgkQ-ChOpoF~Kb{`R7uMA=kuV5S8(B#bAp) zs$(XE89nEpf4rskAoST*`wtC8p?51Rx=d%+{Vk;Ed z9gEluF1}H0d_$@3jygVO;eh?+xE`o9Et$zHM+}nAh+jn%l;P&L$x+2^-YAG zDSvkcLC(^sHtD$x+wAttGJWS{U|l)L`64gj^Wq~%)ljx@N*S!ZtLE}_u;RA1ezQs1 z;&d?U-eFH@+jqt!OL;tQ&>x1D$T-+<;5(-yr>)xh;Hdhsg5*R_m-Dr2x*ZOmQ7Ujr zneG5P6%CEIZqqo<-Y&>$JBZwc;(_25hpUF0WGXA)eL-=RwZfy1I^AYTcM{8agow|7 zqHAD!js`+MZh06;{|V{*UpFoywoVTJ?s$t6wEjV;j?O-{B++VWk`wO8FSX!9g+U62 zNwO5c7|!uN*>pfpE}68huV?HP=8l5N5R>x$#E!|2Fm28sxV#^cdd{Rz{++tbO3&@> z`TNTcWeq);n%c|&Shc8~YPy2?rKp{58VG0wTAgi=z`si$pwu=HB;aFbGaD1&A)s%q zNIH4_2p6uE-m!gwf4{}oFLQRaebl9Mlm@lyd>qPoS5!8l ziCs0Z{4NX%u(<<|9rarNBTS>_mK~h<%W|{f%P;>Pw%y2ii?#;566uu{X#lRO+x(;) z4U|lsf5c#4N@GX3y?~0IXzAV9-A-d5Gfls97g*_&>4%OIIgm>_G_2hvv=(S2<6=su zWHYf1jLfjat*N9ZgZtc^$YSTh+ z5VaS0D|iUQep5W+leBv>DjNoz*By!v&dHNg>jij2w8<673@0t!N7QU=1)v>7d7Im( z)W(AM4IVm8bCadY3BHu<3hqR5aCQDhM*J!iD_m!^q*Mq|{GB?1Poz=H{ThNwi~*)G z7cg}$kYFE2vP2CBKtUdtsTrq?ZL9+2AO)8Y5m=RP>J2Wg;J-D}0~1ihH_Xr4jE_o=7p$O-!Z&Jr8yH%3MVm$MpRe1OkFGZuhLj0EN$laWn;PXgi~=E)-ZX?dX;C-Sw7 zZXd_9)P)PkSX?s_!7SDL&s0jDVyW)TpJ5^TM_l^fL;te>)7kz1-O0=U*8oAx@UKCz zI$FSXfFD|<7mAr#m=Fqf4#Y}SWGfG_zrd1MmL6w{c;1{e!ymUM64y_NAgjQ(qlV@$ zoz$~$>g6h%A4vqXMo3oN?H~u{4s#4d<3zU2VI?|rDe^(Va&88_j_0AEWtaD%5)Lc| zX^>5r>bY!YMlzJ@j`eM&YC62e5FS=#M{ZwH$FBGvFa}=&Kl!V!)7J|p$t-XaI8|Ax zlMk`U6XCT_xLPmN4WJvAxDachsG(3dWbcIWK=c$(Vv<9lGogsQf4Ho`jPS z)Ud!Lb)QkYYl~~AJ#ay55%+lkH>Fs$M5B_fLsjrdle(u_)mMpX<738e023ZT%W9?l zyhPOl68E3wAkQ#_SjF0PbLtx!1my^55n!0gdIegVB+9>OYrxFxyypG%-{v(Ck&uLr>SBs3Y}c zIut4O>Bs^47c)%DYb^q8S1ji{T@F!1rQ3_#DpNow|6fG&E z)+$L^v{*ol(S+n{{^>{{%;%SzYC=>XDIfY+DzhauHwfrO`I>LDC}&3R)+Eeu!dIFv zG8tJ`o@gq-AhJn(T;PaO-1-(E=QpzrLI)gfAh~0)L{`P*96waL`q6% zew+kfmK&k-uZEh4@hdWR5zjLv0AK$y!JjD|;U8`+?sD^pSHxczh||hPQBI~kiTjY(T)E8>)dWmFnV(NaUHO= zy)7pz&FMlG3Hi7tipwffdt0SGU=IKez118{qxyUOhFYP^Eg|_jDEDLR|!S88IJ@zO47u<>O z6-y=W6L&%_&xvsk)OwsbYS!^0mX<+`3{D>ymv*18s9tTF8{>+ z`D5(L5?YzZW|pbEn5^1H*0xtVhbw(54aOAB4A(*TkGST%QlqszS~r5Zvx`B(-IWAT zQb!H63sz%e?W$dBV>yo{U2&t_q9=7S>#~?8%oHJG&6?%Fk(zegS4PG$1rHCPOr%o9 zQyX1AAG+7zk1;Iq1Pq$1;z3oh2Gq3n(=^=&Pz}OSa`JA_2PlKKTf_*-Sm8Z3u_gDG z>i{#=3^hOS<*!gfeUA_OMSP6@jtC1KKVzfg$$gCA)nI!!&DFob`s=rGBm12`P~Tsd zVhHf)SORqu+4+^+1heYJY_*D%2@zeX_o`z`#5Oe#+W}p^z;7zwaePNuBMAo7FmDhO zI=m5pXd(61=)nZO`wz~A>ICMxPPjdBx0s)aQ3vpea13vCLLq5hLj-D!Z{}k-53vUf zXwTV6L(Sob1TW5HI$5Eb)W!FJ!yX8eb`S)X%?KAw(@W-?WwS2(kWSje7N647@0b$4 z{l8yP*d$I-6|!1&C&aOoh3n(L=UE2(NZ+Z>3h$X)@&djuR1T0^7S4tn+5Jny6WBwQ z(s2iwh!J2_f-NVUd2RDRXBAqAj9XD>6MO06v`MR>OJmqK!yFNFeBl%1`TUpfB+TRH z$n(R|5i>}v(SW%GbU_@#iJQdN0N!u1@cB*`?BikMk&qM2LNMJC94W2T1aOumty+Lv z6JNAV{2Lye57k+smRCzJW-o<3SH|@uM6D>X0Ip_CfA(I$Y5?U8T#Xg5!2SPpn;a9t zvz_oi$r5-#*hdq+ARg#~5ggi+J#*})%FFHw7D(QKPK-T7K8g6>^8MpAB4HR{c>U1^ zZvMv&5rhBRuhIY4Gt{hlsf6|O3~dt|3pL0`As1Jp)2#6O(Rjc46&$N1*L_Dk%}0`Y?(X$Sy%6^W%lpV@!$N7h}kCyfXhqGUe2PCP>}d-aAqVowkb(KUMY z0rAu*=#N6G;Sj%0QNpW#AyiV5o?&p25D>d|YyzT&>_r$CS3)f{=?KF3CgLrjw<5hw zX<_0io1wYPByB^ybcPi6f|arl1CBk#E75KwiO(vG1?c$@LNZ!;tZ^=V(MT$>;NDr5 zsnlUaj|XYA6Chx~ESI*NU=Yl&6k_GpLX?+NPkj!Z-f=0p(2>=eolv6obP%v4-6@Pp z@{Oyt6wyLtQGXJhpn6}gU45`7a^BHW2y%vW>Gg5grBL!mN?Nu?nY<1UH_=+1HJU~6 zu%{G?!ftEz-a0%=J*QFd9x~!_Zf2m!2zm}U=9bdfpL5(6B*Y5IOQ?S_Qf>AUr5EXQ zWvN`@9Q3tU!~at@)~^|`7^*R{;Y`81H4K<=GSvP2Saz$SI*iE z6O>1Cg~|$beu-cJ%R>6SE~uWKfK8ot;C~TUAKk0`zRAC#hqQhqs(t`m%t$~Rp-~T zcZ5DR$}sa2>H+KWvjG%Z49iC}nvhBY8q*n|4E>b0th*31GfZ9%SgIa&$C;A-x&RsG;1j-VY z7N`v%f{dXIqCv*?_3MyX0GB|?GUpUA@gSo9Lf;quS~%_a=D(zT-d-p7-g@ag8cl|1 z`c`>h8*EE(gZfRh0L(d;NN_<I`A-k){l9buo%uib|yUp#N@K1&9&s7AZU z0IfmtL7HUoJsN|pkXFhzo`BZ)=D#w6sHnLia~2>EX>ns3vYh5>}$~#J8CWco>tE1M~Lj|P1fe7 zTT4spjjb*#BPpxKzO9w*4P2V|l_}+d&3YK7WqkQ%<8%!%qRNz+bHMm0s#*!DXGa(N zN|RDVP0<-d3##GdB(L0VuJ|VFY`8~DqU1ZbhVUpGl0Vif4M^D_6v~L&ztch-d-&a} zOgs7W#xDx*)~iFxTTekfoIAxXWiA&4smhC6ty&09zeoKRf5V4NkD5uIj%A$)D|IYp zPa0Ei&VO`NXJs$7Ub?K*N&71qvCv9;@??RUTW~T&ga9Jzb@T-@z%6AN#YwwjdYMi$ z(}+2W^BRUTw@yx^drzO>4z@_2*MwwD0tRI{HUCOKtiP|8dqr5Y<2}yi@@6fsN^7pzoKIM7 zvcOmc1j%)DJhV8e;x}oHXJjEWTVy11sp5>;5kl#(nJm&oq?*Vp@tM9^shvJIRs0>N zPz@~~l2Tw3Nk)j2mfW;p!E^2=Akj)gnX-Ox*0R+?H9I?Gx>)~$<4W40Sk^mLW;#tC zFr#wbW`XdO1~S9Jsgn}|8lGroMPAO~F_AEML8xLZbz-gMQAEL4RB9q9AuFWX87u-V zgRAN@^R{CgA&V3A#uF2g+`L@+v#zn!V%yZGS!! z*=B&5SB0lnWkv{S9HFC&c<_gb^#i$}-KY-qy>($V6?Xp!ylFZdsZjM}|N z$ez5tNXVX{l`t73E_4t*(?P+z0^9HDQ8RzO>?KOKTf|0?jnn`4p) z{uRz`PXFU*6O=tg1dWi|j8hbV&UFxwn)-3dBigjr+6?*lFFauqME zU4?q2)XG=dp3w`=WHA-)z}reU3|(6KTH(aP128w$VOZ^ggV5Lb0KCdq2%n0*Q%aw3 zJ&M=nh~2$bN}teOsH?1W(E1K#F&c)yf&8~o73Av+Ogt)|2)>3c6|arJPjs)95xx7j zl;8foxV5|62l)pa;g^oDsS&65)QNh-z4w5Hy~^#1_jsRb{dE&A%HYRzXu?-IsjvV=h7y) z61Hk2c)nVkw}rJZ95J9u*2PUJTo`^^6LCFVmhH3-+PxnKSGR4Zq@ILi*sqcgkFmlT zXL;YiB;k1DTWQyJCZf`EsutQAdK+ zm@WhsG^VwkIka4qrMtP3tD8;QEK66o2Q>&FOx=?V_jIq#DV8KVM;ZT79lRoP*r_aN zudFPT+B;g2D6{bTqq_=($l6zyZ3$_JkrVH)D&Q>J^I zfx-9y(Mqq1T`Tg!P^>rEa_Ma#AAunwG&4Gyn+emT?osn7$&0Y{91iFl>kR=_5xZavvq|7z>NsO22YlRmq)M9tGc)b!mQQvGa*yS zkDDm_Rb$oXm!M;9X3H$C#7S1|btvd*tmX!L%tFDxM(V^wG zVLdI}6K8-Ek$`593G+j8%@z6fhvh^PzK8;=Gys5WpbDgJ;a)T2A6v+MXItVQ)86yT zZSNj{-%eJ!eVMPWkFsIZJ5z%A%c^rs5GlRzBBW<5Z+tcoS%WV;uNXe|2Fk#~$z|ZG z-~V(23(ptRG5ZNq?c6jaItn^`2)H`~9!kZdY4V#zc^#)t3(j*SDU>Y{#C) z&)GNI*L|~D9Fl^!&xB0wCm-78x!bL$-6wzUFI`&SxXHg`$Fa8B-^6l%FAMmnp7P;+ zj!F)n>O*<+bYlzLG-5%QF8DbgB{Y(P9(TB3~D1w_p*6i?v>4_7lRx+2AH;#C2tQ0m~^fj z@2TChu1}cUVzg(FHOwfyT0+0Hk4_9}@9q4gjv3X!Cyvgs;bsrt9-ctjspBTw89U|M zvQG~lk9)-3k|#~-2T*8r4-Se84nQ0@=+zlDfLKfgQqhcCeHb3(=W}k1%T! z+T=eo8cB3jks&~)RyVH%YT0_1@gPb+4fR!BI5Je4o2z#rW8={5@7-)mA6mA6w1Q0z z2+)^9f*smV$zXG*XeXK7-GqZ6<(mgt^q(o0OX`5IK8rV@U{PRfUvR=l4s5v4B^trzjk4B3273?|CHx+fB?s=mCB=+;A`hb}>gI4b814Ms^* zi-ARF%;+~0fAPj8Dp5_*3uR;T#>kf!4!@n&2)@x!(zbd^X)vWu2$fFD7N4E2+CJ#W zrUw>H-OV!g=p+SZS*ACeP;nv*HM_{N;G4!6E19vT(g2Ch3aRMp6hygEO6;`T8$~Wz z6;v&tT8Inkb)=OP$qhBN&;=(gn}x-iRG2SeM*?*ED(+=8P}o{#j0Z*2PqKr2RF})- zfVDWS0=GGB^JV;-KSemXPF-kFEdwK1d-ue2rKF)qn~o){wD)GqWQjPe>-(xmR6C4e1N_*CvdEa!&CyWEED(XFzsb zSkSf7AX8hMRK<)gn`-bqmc>0y0G+0JAkv$iEjt&WLWYe47|J?*oCTpP$;@QCFrFa- z#I!k=0WkgON@iv7%EykfI0&D?DWQ9iV5(AR^DBVnQ5Oj>4>1QONUpo==j?}&`qc$x z(QrIioSM^;q>Yqrbz-rC}j)e5V|$(R0E?TQtH-E*-YWqrt+2gj9tB($W{te zLZ5Q@s=?BzK2;(XeUdlIboNzIg4<<^ZI;Rv(L|IZ6k8?LY+P)QCxkA%+WJT0d8}udSj+y1lUu6cm(#uI;nB=^Z1SK%fuT543~dw;$AO-#_KO_ZRb=v(I~PG9aToYFUW%R zl-;oI#^`UMts*+2?9@EK?u;`-6d^tZQYh~Xvk$1{{M;mw+Kv2WU7@wgZ`74=`SZ6Kwa>lwVQb zDdnHYRaPkwOTUwQCu|^nWsbF8RfB&ky}5jMOt{`j>2-*)*X)N>k}8{kXsoyMX3(vCa9GyhwDozLm+k!JAf zVxBwWFDLd?JOOtv z`bL4_rI}}arJoDbZ8c1pQ^vw^%XRZ6brqw^pzsbm}p%b|wImGp1uf4z2yOIZs z$(&+_Ro#L*onxTYh*_>$(-AIU^>+3syO=7))^}u1y7^iYom;I&tJM_elXI%nDqowL zCvzx2hxZiD@tJ;1Y02U&OvF`OfLS(AlbSTg0kb&XBA!p_k9Ftx%5!X-MF$tvp}mae z>}Q&bh#YyzvIvng&wgD`_|!MuV4cSC!BT>H{tsZQS&5KqckJXlUx$Y<5_$lX-@{rm z{0B}SsUfSIH6LC;(58tcXhz(_C9~I@1-4$JEtAp<9|L73)35J*Ij1Zk+p3vCq^Ytz<0zHFB>co=cca~Fd z2xrkToHV*b#{o0;_~C;AV)RhRk!!q^+&9vqIbX7JHYh8(f#LR1y<;NZWcq{CdF2NK zNDa;_?Vl}C6m?5O;-vq+MQkfi~Tmz4jr0*&RM6r)~pH4i) zga*TQm=i-z&sW1ZMa9y$$`BwPHNp&QMv{f9S0F8RBL?F;)D|agLHLzOl9gP zv%ghIU^C@-u_Gj0iAlG7lH@%Nm0Sj1wqpBsE|#4a!<6Sk=$ct8q36ssam(H^(nNA^ z-$i-#)r&5qM{->wG`Jfyz6E2d3i?K|%CwhI3Ido~k680*@?OC!CBvX&DbZ;|MBg0S z;iv@YF>s31=U(ch^hJK`-1A6um8-wUV`$Jm#Cda>vOF|Y=}I(~1aSqe6B0|tN(l%l zl#f+#>gKh_)i&kkC@Or8tI3 zyp26muH+1tL^qu!T(nd7H6_}cvPKk8uKUJ>jYzJGbc87|uVphgji!UCuWN=DRh*j3 z2T4j`BgR~j@fv_T|LkKr$lFBl4O^}YH6POYWX>$gl z*YC|4_C(cNS^Q>YkPJyP4YR-yjAA!8XVB|kb9U+`AU&lH0^Ay)#6I@1bWW;vN?s=Y=I?Y=7233FcG(gp(T-CQ%fDl11MctHr`!3>%v z7p|YxWkXoYoO@gNcEPi4(|PlEKr_U=VJK0g{;|8bzhgY`ah(YXIp%&mY0west05Kl z97N}C(ApbrmM8j*H^Pc9%!)7Avu~_zp59{gQ?3(I=eg;2>g5;+uM)i@kyD!3u(~(X zXLGXTS>+Q8H;(ATj$rG-xk%BYjT6_I?qEc%Q83J>qztFqQWSW2pdrtB&@B$?E|-8w zRTmHyj7NCF?>)AZD?Ft|hu|B^H>Tx7(~+6&*XzPBbqa!wFt+eo!L(Tg`bY3L)(8S9 z)A2?Aol_{!vWt)gBz)UYl(b+9O4z8Y`M^)y4zx@B5Hoz?Y;-B)m-(xVghDB6sZu#E z{?sJtTs_;DjnPF6Z)P(-n&*v=vne8{6(7z~D>JOm$TYX~8Cut{!LN|P;4*OBmyPJT zJ5Jc^X8YT4AwebUkr)&cY74VAA69K4`XONSeDn>P03R49yoWE^4e4EBdM~Nnb;Yxe zFw?UbN52k8=GK7Fyn(N$UoPhbfAW0cM;w)SRC&ra$?^|rHOkEH+K?`z+Ut%nH_eVz z&wf3QDnAmO^hPU?sd5X$W!icG_v(5q)#b|cU#YLzlfq;C1#F&GvN$xz&_aWM#L+pc zqj5szgu($kQ>pEqh1MmBM?>!Ft|NA~^`Ko_ zxpnP~r*l?MqYSkyI1A9Ra7n9tntJN~sGA@BF}^NUz0>8x8G8<%t(S8<%_sV2=f{_Y zk7j}(onjP*8|_6&B<858FgJz%&!Qs6Z7EcgKse=R(t?lXN!|m)4#Vi!p^9Xe(R-Og zE#!+%=W4iB@Y&a|cB#>yM2d&#g9Xac8^v`G$s9IL{`LXkguy1n-U~7swcq&?ZM@K8 zJb;6L2p92+Aw8f;F1eaAa7&w?fUzHR+CK52y}*SH4no zOMFY!&VW3U$rdiTgJTHNcIO6>%FfcE+e54jcu^bMvbLJ1E8~{yy|fB58^6><-xn^6p|(9m=|J{7J~WIA+}kOUO3=^V1fq#AVTm9lBaa; z5whElil|ubm!USsA>!NaFVxo;V!RURX_-VUij0A7fF{PmN!?@z zO5McYU8mg&a2yeLP5TZq_2*@*Lyr(*r=;;r&F|Lr*VpaBaoHnI*<|(;R@(#Ke8V@A z{JswQr;SJCPHFD^?cEbVnGamoD-hZoo^$Fg$S96oQ(gchZR%y&UVdcXz7Nmss=jVk zZe$HXKG!Zx`09mv9)1-ppk9~TF*|1&9|8TaWgg`I(&k_CI< zgKO{@VnFl^Y=2TvHi2J8$FcNO2F``}eb7uVK2>BpyW~$u!9Eectm&C}E~}Ey7RM4z zc$vnrKoh*`@(vSD*v4}gr%;bctQ9;$-L;jpvDiD7TIO`kbA9|w!62_6CvkK`aed!( zM<<)=axK#>pEnSwZ)HkF(}@dD<>$fri@$7B7Q@Dwn-O;J9>@48<{0WOozzQ_IH zK0AD^?Wrs6b( zWj8_dRtwxMInvsQUT(&$JVGL8XLHBY2mor29-gxzPkp#G1p7qF!}|IoHx4Fc)1S~8 zsL};|+3l?7-PK{3<@s4Wn)fxmrEnU}t7eG+bI}ay z_2fQGrRrvwyvwy-s^e90?%}U3o9hRf=G*@&l&l_Tv6;*QQ%#L&^ zL=5&|`#6)$5pjLQP#se(c=?RBo!`s#3`5W8)(CJ_(ISy8k|G!9*|a^N|q%bEC0BdM8##` zO(yGY$ZL%L=bX<@I^o0j3-2E)q&l#`jgcR1{l*Xa_}^<{<^LDJp^Sm8!B0v(@xNe1 zWfRAL8zNMz>?$p(B7fi55_eju10zRNV?yfat3_8oks&KUqI7(cQ>l7)Ug-*%vyKzH zR)5J|=*^+wZD0haa~A&QePwgzZldu`r0Cu<6oh7dZUBOX_?K*(taom9SqZI!nK2gAOUK${wR!21i4YE`Zd?$ z)_2J@;NYD(vo0xjtLe;#OxzV3V*|n?qQX%>Z^O)?@Oe}FZ<4dp-2Gfa4}XsB*ok~9mXow(PG<- z-AXWk(c#uH!0b;})ZE;j#UD!epkTrH9>aG=o)U z_+t@F3L{O<5anE8&KWPkQvOzalDWW!K??6*8=?~uS1)NPL7cG!n_kX94ATwSy9{Pw){v$Hh%Ab$6@#AI0mOa|ya zh2W8ms~N>p<`d~7KD=(={)F)hunXLA|IvKbrr=7J>0SiOPSHKPt0K33=Y0;2Nt$PG zh(Qu>+E?Cr7#^nT!s%IHMnAkauEo_Iz&g=UyBMcXhx`s0m0AwbBUyC=yIg}f=9J%v zN4%Mcmv~S95i{=q34RNrQ=)aC(*cI%DHh44QB?6dZt1#Y@+x{IG+`&$HH7HIY@B;^ zfnqXGmIt8D2ae`5MfQ>*X#~^S9Rg@EYarqX7dm;Y;hh9_I!ogtn6>0lv1@3N;UiW) zRaG+DS$l1c_Zd(-&ykTK2;;Mz2c9U)KAR>7`=XTA#44}w1DT=Ed#uYXC^*&?ptK7D z(iI}=`WeDA6@@2~iS&G;-L(JLk8@^nn^~$-N~6WB1D$-)m3QrdBy6W5XF#TvD@iC- zo8$*HYE7|t>LH7Wl^hp6C4=Zfw{%4RorSA$3)8~}L_Eg3J(W8S+M%qmIp*(uzz1Wx zgO8lg-hbQ?hb9g1B|lC>yZ&!z!ck|t zA6Q4*++d*F&&5cO4!1(&!Z4_Cc6$io~G>TUr6xB3bWSMtTkBbX8Ia3&rt=I+Lf zcbqSXON13sgh3@!pM`aLa1ZDhz>LH~dq0PeMKnzu9s4{dogEoKM>VY+T{`|? zzkq#v{0pz}{wL$!%^W*-ulSx@DMN#nS0Rilx!>AiqA2|^Uz-+f$dM)IwAjKc;i_WJ zttS%Ajl3@zlg`OLIaGE}((GJGEe;WX{H{|KMceJuB< z5w8+_R`LBh;VL#0xw=hC5aBfY0`)G1l_Vyi0+LJ{#hUg)h2O9w;=O*^P=K}#E11#!*~q!{ zO@_YXS{PXY=^{rcwB3k+P}%mHz+_>6n+9eyCKi=H4wxCv>kY=rN*n;7)q%oXxjbB%HuLX^&qWXLvD@BQ zicV_8nBizUuXF@SemmK$3^mbsEX$8YZGv(JBN=#7GwOf|F6^@+0FC zo?g!IS;@G}=}^&i2IJ#9hQNc;ff1@#f%HTh(8?efDf@zsQ!8Z@)~t+g6-fJTb;H`I zQ6K^)7VOyJSoiwEPW0s0PO}*P`pm4fte7hSn54GB3swi{f>aW!jhWMKvF7O&Ob~Z* zOC*BeSTug!Ph6oiCBI0OxcQOYMT|Z$jFooV|0YSmnui4mnhL?Ov=9~_6?nX{3n3KF zM=|0w;u%AFG-Lea%E6cxa~5gSR)ESI^CSY*V2KzXzo|0_iCRfV5v$2hMT=@CNP>GMFSPTs4GF(er8pOwjbC$9%aMHXPvx z)SFHy;#yfTXb#UO&AV$ZQrn&6YihMLD^pH|{pvAc*UR$JELwnPWVHz}C|-|}G)4?4 zkXJO%K6@Gp#P9q;PbonCPHf=ok|l^Rw$St@;H_Z@<`uEiRSqBL8Xc_P2o&ih`=nF# z7pRB@%f{91@9yhH)xe&QB})`aEWCOsJ7*SO0h8d$dgW8|M+7j!1|$n7(?f)(SHzjm zwFsj)!pk823=jW24v#b%R>G5iaJ*az(;J7+;K(*jMGI?1xmoIMZNZDpS%bHr6Ie-j z(U=BgiiV}1@-rN$P~_%lI>FyiEpfz+3_s%>ue8>=%3~In&{Q@+B9v68w;2BDf@@`FC+-kS9T^s$C-I>;X|EFmlRs{v-I z&tpOm_knayGP3&lRO*ef zWaGGaSp`Mq5zwa`|Lb0y_-K?Z#hj&ZY}T~UcUhD=-G@k}`%SA5;fxA3{5^0#L|%{; zWYA}L0oVW{buIV&)3HPTbn*={+lQZT=?%@RST^$vI@?!*?W`-fcHzyk2Xy>KeyDI! zwL{_5>WwqI_Ehiu(`u(fFAh>vGvK1yAzEN3+6!rDjP3Ht%tNbm^Bgu?H($-!_RvOp z@Rx4^h_4~yw=jrrLEq{d>fJ=^LozuGEKUFUkNRth`7eCsy8;iI*8YV{_U#^5e9Ql# z?VaBQ-MS^gv~AnAZQHhOXQgf1cBO4+B`a;S(q`v5w`Zp3>+aLfz4Ofv??14gc-LM# zVyy_5o~YJyANDH&+$Hv1JKjPmTabO~R`FBC@2+BJ<(u6tqN8&D@H9MGHaWGLUtTQmuJOQZW1>vkw$hs@O z)&2vbJ6ullLy~9W$J;kou3Nw23N^0D7p^`0t$*giKAZl59~)1P%1lhJsTf5tAwP3r z%PG3s_emL%KY1s~4&^J1bM=c{cO0LHmv;5bbU%3)SJZN=bB)QHd(rfZwfspMX6M7m z@3S0N(;pw~=Z`#L+dBc}SJn5F*U+8@N~6^b<_?sTcZ{BXL`zdgo1>t}+IpZ}QK+Pr z7(7JAhE@JfH~%8)SCLh-g$ZwIWT~Nu9_O;KS%Z+Hf26KZk7q?8<~94G%J_3x#LLU; zQ2@1qsfwSHYiz-Oh!7)3AAQ{?QGfOY)(<(LIc!>@3R6v64^0quOFYvUYpt7!doDQJ znys`ZvZ1%+F3%%t+8<5E9y;Lax>M%!!_>djQqoC1yWvHJf8MoR@zg8D(z0c4J6$2U z1;m(fY;wK>GYg_~MuW9)7Y<>Mixb7BUMY~$9Pw#;;l=k;;27SMdtn9G4|V>TIEVj8 zKHUu0sN9(94ek=9yI48ZZ*=_1AO6qQMk|*g*Q@q2_GwRood78B!SC8wu_bL(9j~b^ zjHs*?iy*T3^M+xitCGr^K$wNI%vePTko8}%{cRhc)Wxq)STQlEvL#hUr6>X2c$L)v zjJ`JA9k!WZ4qp2S6JuV?TA{O10xKUs=H7hAmTZ82D`p5hK)}=vs>4(EpuZ<>p`9y%S zYm%spWf_8ic0RBG`vS;U!{-Kk7*JBw8cgtkKX}PXdGpT^Y*Uf2hg9q3cK^0 z#$?hqKwMggUEtw099s`je+egr+WFp5`?*L#XuvBY`r-I+T*>!Ro)Z4VIA8n&ewG~P zyn6I%ps)cm&*0BVUqz1WxKK&Gg`AkW3s%jT9z!|gn_GG`JreTcez)%vzMjgL>}0LS zP^J-=5r5tD*>nfhoDC)S>FwFl*^ozoj+^cY$rm?+(-$B8Rd9rdB?S8Vdm&$3{RDE* zZm9(R0~u)(Q4oTI5cua=F7=X$J~hvJ?Q60i3pLAr9?!(-x!3 zy`gc!0Z|^M9zZ<&7AbX(R216H0)K~AOtvFBDUKu=zYFcPfBO|a?*!hZnSPW0=B9Jze1}kYPE-ePNt$D1`)SEXD z{GcmxBLZ2z&CsJzyw10z$evwPg2B^MmcS)tT13uMhW0z8g(t>|!e1EsY}r^}5c~KG z85nsbBVoqTZ$HlVYjfA!@eU`OaeZ-}+cNUIA&N>&2B{Pc9l;$P(M=a!p8$jHr?nG6zD6u6qbzo-g&8hDMz_X;LN&U z?w;GN9pMw){5qw!!pgh?4LSUxB3+GyaDupYvO=wrHz#_M`U2|@iulPJ)W_S%E5f%n zH>_DnPR)CSLpyoID-{K-1(SrdL{U85DicG>9j^P@GJR6PGy@WHT%Zp6wp11%TuBGC zczt6#>dp8AAE`uV^M>x6TQ8C`#o!@Fwgj;8j9?N3I~gGlcqrFBZSaTyBysLT`+~r| z-{k*m6XZihroijaAq4!%F7x-&}d^V3+3m3z};H%sx^?0~4 zV3;5azd~=|LRR5|Y{dF3#0PcaLi^=H8m0p>ro$ZR0-WT*0@5hRa5da#WnCJ7_ID)v zoR`P61SBB3;A{%D2A+~K6t2%UQu|sZv)aJJHW=@^bqwyUJd!=*LJ;cE2X4!9-kug0 zL?Z_o3cQ51F4R{^$h(EnUlkJXAbtX@;G#G@<8+SiH@@}VK)`WyTA1X_tO|;QvEW#g zDFUX=EJ_w(sdVET<(F~+Fwsss+4BR1;La;4kRaVrh&;mow9K0(@2lBI%qILTCv7*FSL41!n zq#`I57UueN{G;9+pT?^)CKYoUDTH|#|4Mr@YM-FJ<~iZQ$Jlly*1^` zw>{(~2^h4S(%}UP4#!iF8#gcX^}@$)-CKEmS^vI;v;n*GXBLGJmf${UIK?2M@(2Nr zj1U6{S^&Wh1_h{JzXBHM0@qvm_Sps|YeVyFgBmwrm9GLjyC8$U0_}`)?9A|+ZyeS} z$Y*JFG_1FUaLI+%Qy#m>JHUAu{ z1D+aKKr`D<_=&hjPd0A>_@3Z8cTf+yF5RZ}u!#I|x{{pFphyxY;13T>2JWQw3F0d) zj~QHD{x)D_655T?EAIy&-VH`9x^bH5xM%**z!!&6amWLtL9-lRK+>LgtCE{wzxu(# ziDXRfYbF${m)5uDe?OJRVg&Cww@TfhU1a{p##ZW&Le4RZmtK&7B^{S{MdZcw>%PtFq=N4$Gvk+u^UnlY^ONve1?V9?V>lL0lC=IiB7mG!sSn z7242RNVlDkPjJDf!GaIT+4q}x7s@7Iq=PPuM1EAQ9uZSz$Zl%o8yi!mT*)go)S0gM zMeBR6XN=$l`#vk2A6`TpZ^+Xfho+q4=j0gDE<7b3=&EY5>$0X}>d>mmnjCzX31rdo zq3M-W&uhVQ=^-NI95}C0CB4N-m5t@LSIo955M+1O7f;HzIW=viNvUh)qvY_)$@~yj zctEJ|3ySq^P#P;xUMh}cXl^J(@7xj$Y#x`46QQJ(IfZ*|#m$G;@RZhg(q?kjU*IeD zHMV4GOKH-Nb>#v@@G0H0(-T3-{DpBfJXZb$nA0;<)A~!2la1w08$|~@e{7Rm6*$U) zXC5Rj);ldg_ns-CM_uPDkR0TN%uB9)v{EkKa)(cY-I)3=sIUu`5$ap##(oGdVdL_i zyE0(dFxkfco~E;^JTE-r!vDE>1_vb-Yf;9koYPXFRiJjVA;oQKL~GQY=^ppgP7>~I zqud>`CG@1$v7)tHBj56XNsu@D8|OSp`(pC4IF$zKpkgQU7+WD-Ih~r2b^BOQ;a6** zB{nFKr;yzc(Q+E?(2?eub&=uH-YF*9%p(zu_{`F*+AB^c#ad|bkqXj1X9`48<0{1G z{2eOK%Hu=#m{J36u(An$T_DPU1fSBAkyhxv4^#IroSUMCuedU`ZXa|T*xfCxkS(iC zxqbZd1iPhPT%T=tZm=b92*3*q(B9pTR~VR6&Gawl192M4LUcv6E|G;(Qv+|<=PjU- zWy3)G{4>uawmwn1AKp4(MID)2qC_6>f_J_cH{cHa@B#b8>06^eULgs5A{YGor_Ar^ zU#YoI^73EpFA8QnNnVRiuOJ@3b~Nt+(-ye9etgFK=m5|5>6bp$w=viVc0}05@Etxs zu|5RLTR@o2hK0!+&{6N}`-0{LzlKrX<%M5yL4Cgqu!d0k3PfQNd-%kzitB^q6Hc5J zJmq?=l0u(R5J^b^7I?6F#Rd|Cvta*WjjeNtcm3wxq^C+MMR^IdygbX#a13^pw!oj@ z$Mftq`(+?E`1y9?Kj$2XED4r3P*8g3n13PNw#S4g_9b@TES!qJpuRInIGyTZ#BN{M zo%pQ{LmH!Ra7wq|C8Na27kl{NU^QLmfxj`(v0WL(H|yGhiP z;02Y6)h(y6!JGc&5q>$~KG_gj5H8k}z_nr|mwqhgkP{KR`X?UeR>)d$XLVjJ5$W8l z$<&&p7y9s=^aaTbomOiS)uo!N&&;A3l8F}!5TPANc8vg>03k`hTIhf&Z&$x;Ct-?s zj-AOF>3!|OhyP#9A<41HuhDOHp_}HP)P?`FH}?N9maJrIZt47gd-v3++BzevqWIY* zx@DPYOF^Nck{I=~gn$7yyBXU?P@*VlNzyd=b!gJ9)2?q$^@JbhojmLEUjv%|mNOOm z7=h^>cjR%uo9|L(-np3a<$cON=9y{t*8luizXGT=U=BbzLh(ry0C9H28SMhH1$hAp zy|x5`ex`{aK{IVE-s!l2{`sQACb~*9c@!F$1*L|8#Pt-i+g5swQ7Xm#Zk-G5voLWQ zTLWH8ZNsl_0jusQYaE^?J9y-`0|jRPgZQN*X4sZk{ZV&;tx26*wZa1Wo)P9)cKse5 zqcGzXHdLeEQ$Qm&MMirA(yeNs=DJdpx+1a2**d7RG@BjG__IZFT#uf!HesK&);=ox z5Ccp!{-YT;@Bk{}yuk9nN=<-U5BJ=Qqn#RN;ck-`h-nqmpl%7qX}`Jqc+dtjG4vYR zHQ^ECh^f0t2A*s^eCsyx%vDH-52=Y&>#_YaT#f}v(|h=b`1mNpR;ofjqz!*^f|Vj; z_nzIaZRlfd7~u}mHfb0e=d1XDqz?dF$~Mszc;2uFAD)HSCK?}E!H9P>TYWDjbsOzA z&?xWRCch2a9Q!OKG3DKcug-K*;Q-pSrPNqDJgGM`yG_QkS_qYB=2<)xnU4FhHUQWCL_&(oux!;kWLfzcQJIOnnyM zpdM*@87SR+_v`T?LLZWuq70BBBPtfZdnBpP!{;F|W-fzF^N4@8$DPoJe~4Hsc8S*b zH2r7{CyZ&eEMEHKh-F^xUuJx0gTW{}M_ll9b*hs5TE$Gy@QNdxRk7AgDvh=lkaalp)l1`Q}PPYtP4xJonPkTL%PaD1wnVleOe1k2#$0(XTN z47rw3s8|fUvk2CAXJ}wB}cv!Itw^Rc#PSlQe_9X(f%o#UD z13p3&pDkrtA>KWE_%0u1t7xUqVrk}*lB{(_>ZzivwK8qQ$%_6MRl08S>Tx*+(FX>e zxyRD*bx=Thx%v<*mnOb%c-+9JF%_QWaQVI6{)EH(-?HXo^Orv8_e${wUm8{srhTeF*se|9pP&R(_ec`;kN>h19Xc0iQxND%3P2Bru% z7QzvA+=w*(iOqO`oQ~wCg;N4zhSWy8!40_~yOZl+zTbvF8pLsga=)B0=;|E7>1wAf zZ*Go4@q~Ioy{fjkNb4@ij!nb$P^6Xf^>P^#n47uE(5A}t;HBH&w-NfOv@Em9#DY0N zeWG;`TG9y{Mu`E{gFbQSlaT0@K3+NHbo@Y7LaIHFrW>XmDp8TJ&!@F&fSM*ji(H}F zGLk*d#jcKPMj4LUHoRFF=+Y4+PQG{RWF{$CY*ME*+{0PgvK$#_Pp z#rW_`cA(LuHzH>#Sjg6ta+6;7wJwvJE6$Z-zx!P_S1+g?x(0bGZ~B61UpQwjClYAa z?c4!;-6?AycgNMf1zHHY?%07#*!Xh)A>&byTxb0)R!os%+a} zJ`zc#)qBp41Jx}oD$v&-1snZ^N^Y+pau7q!5oJ^bM_g(cvKR#i=8<8Oz-x+-@$*M< zZtFV_nab3D0tcEzs!pZpA-PGuX}{^E@hj(%lC88{!~`_zvV)}Hu0L8}eh|`}h1-He zY=9bJ>9W<77VJelfA4g{s}qR(blynst@!+;zdzXx_z8X-8lobMF#`A)eqrwb0-RDd zndlSoEuWA(7S@X-BfF)%1a?t&5{D>f+391dP4b1qBXjaaJ8kgK@2^q36=57N+=lQq zL2rjF{_Z7|Or7m*+)SNRzc;E#{+|(r68Zjb^J|ps->%EL)_*E@;62LmV8Yp@ z=|KzfA!@okqO7AkhioK&esIA1{lF*f5mD?f;_Mpl%8=Re_V)J#bqM`{34$RNex&hv zAi*8%KdD5t?r&y@ly7#p+Pv=`BFKiRa8)|8dicT%K;Iv7lx&RY=3|pr~ zU6DSjb(3-_;n-Ew`tCkESL2dP_!9g%g<-j`WB9Z?qs9IdQ$5D`vh7X@EDXO(0$CFq z{7lw>H$TRVgwYZ&P6L$Kf@_U0JOD&!4Blz^`M2p@i$N>iU%{wt|LB}1@?R>a|Kr*J zcV`9-=hiH#WUecUK)kI&P(G?jM>5R+AIM- z^6ur@PnBO~3KmudpJ(i-3gLCK!|1j5CXG+;VC z6@lZMJs`aSY3OGjKK)Enr(aH-I>ZCj@p?5=H8lAQ`a657PO3RDbSlq8>@~YytIWE) zi*$AlH(2O(s33H1jzwcj2Yaqi?32H}Fzp@gNb|!-$en5FwodkB=etpM?#v2&Gy&~* zCr!&EnzT*n${nhrT-jS4I|p!O9$meN#*3FkiM+bVs!5T&0>?Fbj{>2suro@3i|_wg z)RKXAJ6YVd@b;#dr`z^iuRLd*-;b*I{Fo?>akb9id0214)pFGs%q=y+(Qe=>B*T&< zX_j#6M!THPh)iW?uP(3KoYz=yDs68lMRNx~TwByaa^JZmN|I7%LaDWzPa;UzMzM;s z7_a4sof*^9&2}v5|JaKxiAvp*QPhza>D&|Km34QTPD13>+}zMG&!%L+fD~_5tCP76j45i40DZ&ag2(JO?zCZBhlPf)~9Ht(~s%^2upot%k;%%SY3z8y042A^S5P zi_pgD?_m%$*A`1Qk7iXD8`4>y$k1*VEU}C0)rARMziYRgWEm4fLyaG}Ufu6JSXdIM zQUr<-E{l0&K&BB=v3^e5)m0(PiGV$q{5x=6-I@^?Bt)1a55vVzXO&?THhNtsL9JBQ z)Su91VR!@G7R##KDT2188&}=(=GmoGk(14kv0A)-%vHv-;IvS7(ATOLr6nI+VWqbD z99F9=SK$PXfIM(nbSd*r2D=vrBovSUWf-;O$cREqx3$zwT_KKCcrJVlZy_-pV>-O2 zvAqEgYln2Kssn$A2CW)!qJPWO^MMr_@z;0mUCZ&G*pe=LwM*itMp4ZUhzQtS#0mgS znO)m4`7xI890`gYsqK_#>;B^L{og+?1`pdWMo^=~ljaOi=21ml%8f$sSPI1)!Gs?O z2O&z~Gqre<2`~=+gacSUkf4B_-T*1+n$uLfpCuF%Y8KM{?4q8x63Gn@Fp>m&=_m$3 zU=3WGj*mBEf~Co{fLCoDb~G|)>FHk6sb-V3g(&GJBw6C;3Nn&q!C4AQ#iDYegCU*~ z3gJeL?elVyY9K-xy|M6NR~}VA1YSL&z*Drq+`(dIA7E>B3mGu$!glg&ZzowbUoe<- z8)@Pw4j>IS%p^ii67B-9`&3Srs1H^UTG2v_3K14u(CXzf-yUOOBcF0m4QBII=hD|A zVi8HAE}Hc-6HwS$r-l`u7N2pkLt#Lm!H6Ye@O4|w02Tx@wr;Tt@`9bx)Y+U8U1bev z4m&-nTLK83h9Un^e-7YflwuraSCfL8?uO#1V{Kbw%^Zn1IH@v(z>7CGU}n)sj#v~w z3|=MxF*)uc!FIIlI#k3x%txZvqKhc$?c$~tRzeFGS|c>PY0_s&Wo<%+)Oc7f<$Y?c zfq`IOdFjdov1NKSHDSR<%q0u640AnqQ1U z(;`GqMTc4m`bkeRNNUnV#<|KT+CdTfi7e*_*?=A z2e@h~15-IZ=z;SFv#34Vhu+Tsw{a8TqFvsebpzXqFMK`vyWlEbinE`!6WjaXsD2WM zS9gOl%)J_NiqG*A{5y6-sgbK-_um^_aYW4J?-*YQr-Fy0qTc*_RjOY4HYbpNO4t0= zPI38f(61#E@;7=GM4~(4;g3x+G2!FDZ#PITL<=ZcNg zv`0$RFMlbeU{Zv5NE_6*TicoCg@m3}u)(Lc%?yB|;9HX9{xr-e=Lkv<=K8|$!19jGgRr|KP1 zxg!;E;xL;o6SnemXa_f+plbkdl6v};Afir#7DN89v<6|ta-C!dMA{C8Wl~WOIkMq7isSwki*O=IzT z)JaXG*5r3KP^c*TvmDjqG z)=mu4r(DF+V=5s|V1$1PB(R-)E$M9fqyclMtQW2T%KSvr$Y#>#by{tbk7MyH)6l^< zM!cE%=bBj!1vxsZYw5_tp=vcyQG@uNrYK;!iK9D;6r7SC(y@~U#C|$0QQO&QPJ;^n zRv;=eK(Cz|P2^7ay*EA-8V}>N*Q9t9h6pEb=)0WB1`vbmS`lxae)`ixXPvfJ#}aa( zz&zO&OU*N*juxFrMoHKPG3H_bhbu+DPtcmH$wMe@Gxo@px|PNR%e)&HP<&QL#ulkM zR9kvjt_p&2JA}c_yy`(n=Q#u=1DQcTwz`vPG3f-dD$q&^erQ$LSk|+4G`}7HzI%`k z2(?Bv3e$_jxJ&A74Z>5}>>aH606Ic9tzxdawTzktA-vIVdcxz53IYx`9Qc-vjqhb3 z*u?)1y_vAC4bqe|@Z`r=R8H2z``A*s-DhzI5+n|xgI213x?W3e3i0I6IwpLy#HSmA znE(;G^;8RT7=gq99cDV|$7*-Tl^er9%E{Be z>1#+iRp46j5+0I>2C#BP%oK3?EY7aeVBe>tNSa{UL#+7B{&~BrpUEjlUr1RzD@Nor&*9mU&mLQw&%sDKJ5v;aLC!pKc#y!3 zHo_fqLl^CC9{scfPfvdz#TaIewN}O0k#2K>7*lsbT+1QnN$YFEE%g{sTQo}G0ILPR zI=570TT0XsJaQxJLTjdy1fnaxyg%6#_qZP%UpFGLgo7%d^x=>hzmRS-!*Nj$m$k9= zqaE8B$q|MO2{(0YnK4YffYicRYqo6MGjZegw6ri%vG|(N$(Bb-j?i|Jpqo6*p>;>T zplcusb;ZcG=Hz{jazj+5pxaNtXldLbGkyykQLSW{ugG1;C*ghb{=@w=gJB z<44cYI#8RF?}(lav8`>CB3pF=1puiIvArH{j;{3W>gxAOg2E}iX}^DTXO)8D$SdwT zQUyk!dW$_Kf>Y<}VI8{OD@Vk5bv^n~nQlB5+>0^eRTu-sLe&+ejeuoins;-M8+h>S z&#FAmdnlZiL3$o!P;`<%%pU|b4WBoS)8W_NG;?WrTS^IV${A}#)6UC0Q2826x@MQQ zdgyku6vdf=-BMG1=nZFWi#Jkrz38dqr?@IR_T^xCY|gkZc;?;)M5$z-6h+!m@yn&q z>Y0DE7J>Qt`m+dD#Glzc);wwa74-9{ec#jlUlC~;dx4We70oFZXUceu> z#QHuvFV!BueR3wRs=asr!@C5OAs7N>ysH5I*A>F@dd@oFJ({@;VG!@4{e6%Wbxd1R& zJBtj(TQO@mXxP6_nOQxnTxM8vImJ3f=`wVJ&&DM`d0B*?kg4t!Nk;Yi4Uuxvv1i3$ z-q_4$kF!m#%M@Pbs(R6HWW9muNJw3q5aD{+ujubcbj7D8~L;gKj|M3;#&8hxt9@CX;6U!ce{yrQ(Vd?yX=6m_3h^?Yu_w-FUTV-;uxVOVs zuqo5bC6aHSc*3e2VdcA;p#=3Ca)DC(iwvMRdvw$! z0v;vm)PP2UR1CEjd>?x9SSfR%BK`umugEeF!VX{N9Y6S_#D_?qz30Ni8^^*<2iWckRMUEywobGSKK1FdgPSUwg>o7A4Oav(UI2I-X1+E z;euhu(?LZGvbU4q#Xz;0hPNq$sB9n&A$W}B(`UV&35LIS!5k#KI9MB@ zZ!qOSt;kZL&&$viTG4?$6I=4e6;8GVw>VP%Ihea=t-dm@3$TCzsu3S~p(Z#i&7eRU zI=xF6%reaI2eye)Y~7IK2i+=>*h+LqdA3{`~0=_Ly1BzUVX^_=yn*g5 zF90BwMbOQnLc`b-fB;WC*kri5jv(8kGNgI}yrlu!Oc_+JtY2*@EQWq)LufI|LAwj} zh`XT=z;>9Y;M(AaisTgm7#Br&Zi<E(QK!uL{{SuSoyYXRGhY?eUkwcagYuH_?dVSF!Z?Gar+L@_nmYMx5*xlPi z8^c4Avi(rktW|&GD)%sU=o1f-OXaPqhD^me}Vj4o^O|8^}d)BHsjf@D8mD;PnJowuKzskZJX4Q}m_H8*Rz_@o6V? zA_ln4FJ~Zbfp$F1OBlv!;t+1cwZ!0>&-^1{-7@Gvmo?{2QL~!B;TbutcB0Q;z$1C* zN7I!jCI5~krliwr{JVkjYKtzyrzK-7s;cA|ZUs=3-!|c}5=MnCjcbvv-U5wgI18~S z#>mwgPjy_2VW%7=UW@b`eLPB1%nQ$!0eDJKiw4ytD}xfM>Yamm1}l$5zhu_pstk_v zGNCn*l@O(4d^x^BH|j5RUQ_zjUN8D$K!t_4iz2AufhD}m^_gAqHl(S_^o z>u(igg`#6e^jm&iq4*~igmu_vgY z%E#DMo`2c2VuMbskl9}5n2+qAl`y(jk;-imBtZVF@rkBS66=b;U|uIP7u>7QdK(E1S?;Z#EMgS>*M&~2*G z;Nv>y!Sx+^9PL<3&GRHOo^R(GLe(ul2klVdP)bAOLe-ABQj^2L=Do*vC2C|M=x1Y7 z)qO6<#Iv=Dim%-$RKVcX&L^B!xw4@Mh5M8VOUZTrWgD%5^KRK;9WT6Vc3{nLEF%)0 zp`slTx-|SVRmM-yzYY!6ZGiEw*8!4{Q1p~QsffdF&L)G+zl(2((>B3ITWe`$GH5d?~%eMD)5Fp`w;>lZ}n9l4#kY9Obm$viT{v%DlE3khL z+3)9kHf~s0$k0+RN70&$A4#&vle-_Kc?V}`@5T-8gWHK(vX*48+LCd$UF4np9Zf2b zQO^@acxTJe7D)=775wa@ zaI2uXR^1*wq*0j{&~x42N1AG8w-GQnj|sZNL=~M3>yzCzV*+OU!W~`ohZ%)W9`WKB zWLZqmIPgMcn5q0Wu|jRd{J12VXQJBPU(_+v{1_h3dBFH*h^Ir&jOYlqPfnKS5$(qG z4ICP#?PH1un7YCz>|bd66F7Hs^o=y5Zvps!ztj5fLYt)BcUr2c)BhH2Y>c6yrH6jD z(to23nf7oVs1l`LxKM(}ZfeiQVR>$?c0#`&Iz?a)_?cp8B|=GJPj+}+I0 z|MT?`xKEfxXQgd-rxY5xRY%2Py+1NY72F!cTiY__5`7Ds z#Or+A9)k+k)XiKUybaH{aRx_Gb z8NThmjYoJU?CktRJ+;iQ;BmbRjhP3z+J?@V_Dy@HQ;6=UYEeCKp`+>Es5XM`%0I#W zg4+wKqwVqk5pL@Lmf~h_Z)0j`_b*th`L1lpj0n6*>xrfXl9L~5P$jb35u)Mf7OHfJ z-=(dRN_9JDc#}ixVyqK8r8f{=fae;}2gN8`q<}<%CpeAsJcD!8d*m@LZ@UNBBRVvW z$?l~shMP}HZMjSh>j+4isR-2b1)44mB>f=VE-Z z5h=J=k>Oo}@%F?}&(g%}lR*JF)P;vtUN=ZR7Ci(u?3x~oNCw2}^>LcXE4v&?*|DjD z-<}!PWH#@@d->~WiX$;03*sPO50)h08BAOc^>XEID%GN?+PPBpxy|Jt-Mt>G$No3m zWUUE4MH`mY@0<-`u}FP`obd2KHu-q@p&ene1H1nGa6O=nwU9ID8=<@(XgPA(3VB&z z`k@69PM!`z9u4K3)i=bHLHOXkxkSV>@y03Ygv5-gt-U|^Zo~nrAVESkY@9AuVT5F^es$u5P_V?^VmaMa!91 zD)*a~4SLqI52!x6+75NaViR{oL`Cy0OSMHomw*10Xmy0uU%kODRe0@P0@l$`aZFkoELEFo@w~lgzMh#li%U z(6gA?_>1xd`Zcp>R;FxWl<(et!lZ*76L{Fyh%0lo`_1ji?P;C+<74-UACPA#H&$@! zlz}mC7`OzV>ZSwzA@u&t7*vo=zrtWRsObG(dQ&YaK>Wtumk zhBWT&Um574p)N5%6~V!4(d~tY3gk0Y)}nZk!y$$HH~GI9oXl1bYLr=gHwtQ~+8?~4 z*bApwWte21Cfwn?w75}Hi;<9PJi)p*eu@ZlvB1KDV(Bb4@X}=g;(lH@{Z?Jo@>A3) z`0cf550ObnE5jah zWgs}z7FfQ)ct`vK>sf_RHT3L@!6dZ6e_`F{MqK{D zd@ngynPAX7wwgKmu><5F*)hbN8a%RMwrS9e_9B}-vuf(zt0D=?I-`boxten;pnZfi z4c)qDYe$fRZfm_Cg4^BHUd-G()?UliG|`N5>A;&n@1~Txv#&;{EE(@oMQI7`CkB6R z#D+h&Se?y7WzneZYb$J^AD@H)j&PgYx#6oaS$xUISi5f`U#T74IHQove6)+#BYV9* zaT+!WGvYH6yChZvFyF{GJ-E3dckO*Em$3Eg3zXMCa0vTkod2hGZ+<+!TrR-_SkWAj zZ{XD9hx_apOAh{YZst$(Qa+}K<848H!LOz6Ru?O#N)xyb65B*qtNwm+jv*91V>CK6 z$6!^D`#m3<`~X}K#o^B1kF1ejFi9%AD2sks6cS2Plr2&#$B1f|MpSf{iZwmq66=IK zEn5-k5>MtMquas@46G^yWToSU=^8{ea${3Sup{faJh8)gn>d&oF-`{-IYhk3s^vs? zZRn?OziIQ6Yyr0C2;Tl<{sJ`kq_{MZc`b}HW5*DUUMJD6f<XI88Z1(T5a=^8eiaF`I`v^yCVau%7IUpG|9R}^CZrS#41`;Qo-Y_ z@WOhgverKC^J94a;mcCaxD!tkTYdA-`ME28_;hAE)h`;OfpJu5IyMN8UstpUl}Ub( zb)`H(u)5*7GnowReBhseUPRM}{fxU0O)d2U@`W&dQ15Dy(LB7ds9T`lE%VkZ-0MUX z5Krth!Rjb$>}P#|V{XDlllTF8G^qCaXTU%j2;F$y7MT|p~?kRX#C9={0qRE|C*o_MENYG-TX&bXXuE zf5O8}d$I%rFP#4FS2pJ{w|P$nbFZKO7oY(W zH4|5S!VQ8ZBq!t`6Vg~Q1JYiR14atssK!abIL2sjw401ndg8UnfO6$tev7S1Vhab?A8q<8GR4+~ck3rPC(5-ByEph%_>o z>0-;cf#VGF!ClKvTj)rY4n6cQCz!#e7=$va%*(bwFz|Q{`g5WDxWlKH1eauE2Y4U4N7I=>_QC<*G6t(@44gGx8*J^e#0ZA`DP{2 z6F$(9#}UkfLtb4K--QNV$QcZ+s8T~`eus#Pc^p?&Ni%w$O&nEX^qjuM;YiHfg7fNF zW5f7BmRf0#+8xkROfb1{HCkzm4K0@#1MwBVZ*!XN;}i`j8EfjUa~a~!Gg0m{xt$j) z$@1wIE6DZh$+MxRN&~P)C_N)O8U8v0z$m0tl!F_oe%X!0`YDBXc=!-PUp?Q@7iuyh zQ+Wyb(`3FnWLHhu;POc|%ke5zLwm+(z1yzo6Pc&X+nnCy%~dn;+mrV21gy?q?n0Vq zx@lL+`)1Bpx8`T|7Gku`lQja>w#@gYcVB1uAyr#Quczc^03WRPNyCt*g7Yhq)G_gh zEim{2z9o_{x-4YG``|7M<-c)egZPBd_;S7KrStTn9b66&8ivp}xW#<#Fd}{tH@T3( z6DH_#iJU>y@LN)imh}|;A*dvjnHPlc5rN8M2%k~>iOo9T_0z!(+nr)_Q|mD3RCK~W zE_>j8A-KTXDSag+2)e2ckqkRnaw85xHIp3TEy9f;5@$#u7=BioVnL4^Pub`EZ?Y}o z;5ecGJD3&tAA?!{EnV7Q|Iz=lOH-D$|E4&6lfDaeXeipmlXyXLu>=Mo-E5_TCIO+S zg9K$*E}NMn8`GABt@@wd@*(^HXbGI}>|%bOqZJ0EsX-w6kmLGxO#r ziRaz3iLU>oAAww6-x3hxBv*sON9;-qOTamjD$9ss6)LLQQ#lCP73|70{k49z2)N?W!o^j!rB1(jSApfOC^<_a!@|t*W;$2{Dg~ zwF7HFsFplzZ*-Z;{%N=?#wev%1os{FxlRSsGuH;Y3mPM$q2~toJ_Q}s!zO3mGa9tz zlOn(|A>rbE^!q)4itT+3n?kRAFhlBTn#@49zKE16_zO3+y^oRlE_%+46T4bDXNi-q zU|+@sN2iJF0{ls=ZOB)bE<@d+dB~b$^u)0`be$t=&0j1ZX}0_#th%5kSQgR5q8G+uk!b8^&+PbyweHni%!Be>w0*|0V$I#$Ch3en1>5 zn7z7X${$7*ZR{|Z<`z$S%p)$T$&dFo@;?D5q{*5m=@KMi15~Yeq}H1HB{09-^jB2O zY>VWJe-)cTY+KOUawA$&RTQl=vVBjy74{rNL>QMChslHSFsUicic=j8l9WkJ+{uu> z?+hx$qAo0s^SWWYm+LUtv~mGE5_u3wv}S20Zm&`(YhmK0=Wf65jXHg3AYNiFGO5S;PJx z>uysBe00wm&<(LK2(sT6bz|3;z4&mO5#zghofy*OQGqYB7XNlBLHeVB$?F9k4$nAJLv44&!H=mxXk@eJ&bYT)pOtu1sfT4 z%Gy(*j$k)vuF>d_!Bnbt`REF6u>Wce;+Xb1{vy(p|FJbt{dcsT!ZwD^&i@n8w5|VY z3&>V4GF@#Kmfo5dTaJKg!|B%)QVaw&v`9*>l76-2)K3R@C%^hb^_)dT!hZtzCwrJF z8zn|U-I(?`zx6O5!`yw0F53g(6&w}@uG3u_EQW-zf!L9^IZ+2Xu`RS?E~jZ?B{{iTqu;nK`b>|j&d2lXP7bH-mXH8s?%%b-B*kp1`-DA z72(0&!`~Rm7wuBxpVf?sR1_lmm6(S!l)#=29VtRHep9*Dk1PC{khr0dw-|Ws4R6g_ zCuw|1oA2Hd2*yNBjm76`n<1DXJJwZsb600hbMEAl7iu8>)mS4#{}iz6;ovYWxG4-Q zjc29dG;6Z*HbXzEkcFGMyP7SFp=Lg^wYVBPt?K{&ljXiHF~VYhrY1@+;K+BO7%NF} zjF~6TonE6TP6N`g)pk}k&$k*D92t6LFpmxz#gMwBS@ zJ-91zytya;-Z1pNhd>_>H9Ik;IU03BpJbh=O9VC4z2q@4xGvE&I1dRcchkmK$W!gb zL}(R{dcBRU#3zT2bG|1a3v_D$s6d(%+T9UwG4C(v9fb*qK7T{6=^vq|_V0k6h`pQ&#N+914Wr zDXQFxDB?>5jjGSsf8#Je+PHb=efa?IlV;&jx#=4e=DAhqH%51+JJO{=$aYOBw+T|P zqq#z$lKqfHD%GM&$a;B-Wmzvob~gJCWQSeHKQ5R>` zC}t;AR6xV3siTlSP@~?4o4LBD#fMPUAw#Hwm1*hCKBPuYJrt8Y^-&+8EAFk}!c>a9 zB1%-KrlwHDqQ0e|ZBCYgpVA|l8GYP&yXmuoQ{PGKEj-(Zv;XKv;Wwh7KF89Bo3*N78FXv$}RhpByVTHVS-OQ)npBqR*TT zy13mq1zW3`!5-Z*sj2x9a9cjT3yOOzGukg(^*5jP-*|hg;5Zj1SEda5_{BAw#vz6XgZTxpZWhIO%+Rm*_BO85(jp}{?{hh|OVl@N5i&3dCsevxn|kvLJH2W! ztNQgSlYcZZBHzaZYdU;k%^*w0v>AmgQla@t-TPN zrDtWcW&3NAjCgH$Ys=wd2A1n`<4qd!q-2g*?&(4Lxn)}}#*W4Z5k%c#^Fa=d$zw;8 z%suNiV(rVY!BngMHJE0Ts>lg)H~S)UN%43LXklJ1Zp{9%B{>|xcVCJsHP>d$IKv~o zC;=M$ls2@bEbKw`gqq$D0JcoEHSfl~<1ga4BTU?U@GJmVs@>hjjJ{@_(}*9MTZgx$ z*g8AuFF`aGW=*&9b^fKf@UMBzRRVsL+kSvxw*q~fWMgWk@=V)R2BYNwW49I3071)N z$L68*+{bTg7*o@E2v@#|rM6V9NrvEDM9LnYuG%++y}Z-)4hC_Z+R7et#Sh$b!h)OJFiKFDJ6(TnF# zE~G2df!ykp^Dfo0&Z$ph?MTh!w@5Y}L#hq=3b$NH3?9lZUlC_$jueu2qz8fYu?`MW@jU4A41X&~eiBQui(lJ}s39DSpiFQ*Ak z0B+_`N(hezhDDw?v{J!@gcLdAYQNL!m|oxs!Y#>&e#%z61lr;n-|rgS(NSMlA|r4g6@Qx= zlzzS7@}Y8q8P0i)5}RMzMix^!99>LZ?)T4sJGO$uenHr*Hk>6JNdcTT%j)&^^Zjw1 zOA|F?Y@oAqzoK&HWY?&=ti%Q^${rS!4jb3QF;b67{P0g7zO%kjs1Lh3lcl&963@zR z@g(k1qBd1+s~4UQjx+Y%EX&3LviL3nw0A`$Fpk)nADYfVB}&b<;5l!=6uPAMP@ALL zPUQj&`>f2Z0-XJDVQ{+)%BJt{z38sKER8BzR8_$Uab8N}9>%4D$zFaQey^kzvi0yr z-62uE!-vX9e)hxK;S6QMzW*Fq31`Shrx-=VuFYb-jJ<7bb%i0z_GOA6Q z{gz4@YgpiX;4Vx!rv^`;+f=eaU7-R7zd6++1Y$Bl5{7wO^6;gPvbWz=d94CB=gD1g zL+y*5y*L(R$}Bf6e;OS{LuW>;hafYxrSmD3MLcIPxl=hYZaCu62GTssmNDMG_zqFG-LYAmP-MBD>OE#6j1`;7aD;JZwjk zW?+}chs;0m$S5}&pd_U}8PG72$%H8!Dj)gpyT3UUl4$SR^+25N|jgbq6NTpx_q?lrV?Z5u_u_Z}at z1Ul$0Dyehul?^0q^z?zEAM>(S@8n03qDMoVzI!1AKGhp`4|A~Ti}{L>Pwz=_ut2td z7DC*wT_tWyo5xUn)K~6;_t%w9jolxp=`Z^hi&3VjE0Fz||2aBeiA2sm7I@A^Ps@me z>zv_{!*FP>u_O1!JnW^6Ko^%KV(88ilPc%QGO2llh3eXW(uG5FSyw)5j)N!v&!Akx znE~!etYxS>5B=Blf`-9UsbYtpEdTsxVbsqXcjmWk#`w2wUgn>mkm9yhM*p6Is!)`X zTLy|S>FhNOHim-ceu}6CI3VCS^0ql)aaV|6pumX=@Yu!-ST#<}P6;lnzTw4$^}=tk zC3Gk{vxdqavMlzDoSd|~+nU@Tj#r6&SXNIL_=vBCQe$Q~B!V~0%DbelZ--SeefLB4 z^_zZ2>H)=uH=a%iKdA!A_TU5EPXg(B0_5yrii5I`nFU=0@swt|_aZ!@Re@uHvaT3m zt&B;FY5*_i*NCoCa_ug8i(l&XV9B_-%We4-N;YJKYNlFJb@=2JCxS)F+w2P3xtMLD zIMCW^+%llM*vQc35tQ+=$-%ke)4xuF6NYy2{1-!S&@bTaR|MH!p6h ztpvah^uTBVeo8dUWRAm#DPh3}*ph&SDfz|A$_1uIs(>MgIA5_XEHUsI`d)FCO#Yzl zKG0y@E})3cNd01LVvZg|zDQxULhLFf0Ef4@MgNFxJLr)Q?H10_=_=p@ zI-PK+Lmm8F$Ba_gGU@)?3%m>bG5Nx&Z;0uZ4hE$ge709=9>}I7$!mPq^O)}Mw)Qev za-IpqMHSFc`QOJw{t*G?zt4vJ_UnHqk$!i!-+sLgh4t^*LMKP%qY8maSc!aTyY0x_ z;$V6HEhnWfDBU+VU|=p%(hJOhHB?X{#tnkbv5m=b>}ll8=l$^(`?xAZ2| z9RFqBB=415`{)g8s)`f1+!ZZ85@naVA92+aiW=>-Yt9862$>1Ma0oTpVJ`izih-f9 z)6xw2^=VbIsS^_qg2+Sw!kPJKsPazpPLvB3lLW~V(b+GG(KzA5-py?t6jM_;1bNEUHp^H^>l%ECSn;Vs&DV_6((13l zy*|a{hQpDC+rfbwyY|%2s>Yo6HG(A#DtSRPFmi=l!)fzxce-sS7agBZ%js*p3Rldj zUpZ>PqmY1JI{v*-c^+b36d;66c!mK##~@j=k}n zv+-bCn59r#)OEzidCH~$$CB4S6NZoHvgYs3_VGy{kdTB!6dpbITde}Q)9==X+V)|~4}L?J@)ES9PBvjGVOYp5bvrZF z(Ph8<{&~D=9VpTD2%x&+tn~Q@K%FhB*Vb5V^L8z%)cm@G*zJG%m^&rCCfOZPW$?)9 zJ0I(z>qIm*@+d)&_bE5=D|~$7iFje4x$d3ujPzFfOzO<%dlek1)d=A<$;ysPWL%Ft za)07OAayEbXKtFk^%s_cyUd09sgvMHdV3`;viA0zh4ZC|>UVEj=+YBduz1j(MAsov zZ^$%9TmSlg9TkKGEpGv6=_DzCRXwMkJ#sRRu{S(?KUk?U zpIDaf$gS^KR?+Z#_3>KZSA~qO%)V^=&NYCq=*}ZcZv1Ai`<6sA1F!_# znRduo2hvVPy!xBx{TKMt=nAx&!GWgnW1*xzA}SZhoBJvzMqC_oZo3RfhR)ke2gJS! z8+P?!JCL;YPT;T+Oc6#W_;EilrHcNb%y0)E^l>RiUz}CfF$H`!yKV%v5;K)NqG)(& z;U(~@X>5p&b54AqTP458{lY5nn0r3b-yQh}R9mFEXs{(J^%kQ=@$WiTw{cjz1q7My z-}bkEWQ>)zwK4tIG4_9X4H!RUG}}9*rsEosL_?tef>>EaLg{_vVheVvbA4m}Rn-Pa z$S1yUe9EDpeiyNLJodohw$)U3+gFpHe7-=xZsSWDUTM?zCheJf$wqrPDmuJ&IZ_60 zp-Q_H1shuwM55}G4icJR;jYeQF7asY0ZGPJsA+K$vENPuDb-`>F9=8d(rwk!=c%13 zgcny0scA{!Bnevl!0(}-CXpvYVd9vh5~FB%kHHiyNWi_zw{ntEw1)hN)FkX4YRCt| zz8Y?Qv-Zb^WeXH#ItgosKu*jlX7ppU+!Q3&f5m@!l~ohvU`vwCMrdOz zjy>6>oJ|b}%bioLL37u4!?+@{RNdy97Ik?PYID&@5pP$y14|+Yzg@U{wzD7VON(}< zekw7X>?7`8d;bY4=)FX@xf@|xo!gPO{S|qSe7}>AUza3kg^#Q)Z5B=SK|;Ap&Tm~Z zHMST?o?3sCr*t5Ba#!#ln8YL*w@c0Ev(nSjBjGwl{EIxb{~=G7{Ozn(7_p}oki&n- zQ}@4-r*zFf`N(z%>sdefxZ^=Tyc4*WN`@QpcBmVw~< zdsp}$X_E5#PC!fezlPfWjh(Xt1C+nnd0}BeMJI&4pDHMdUmyyqeCZn7*_O>tWkrK_ zkS{1Y|G(Qquz78^lHkFA@RYkX9qT7 zDBBz$8se=?pQKK(kn_G;)a(uzZBxLy6U{amwd@`n33Yi4f6>uM6K_|&Gf8@PKF=iu zyRhr;`T5~k9cH3C4;b6Ke}A=jh)&7Myzm+`bSvV^LtckWHg!{c#T)p#+aK;O)(gd# z4))M|;aSR58{fw2j?Rc=Xn0L^zy!|n(AL5#5m<)SH_BX`rIyT^bH%a-wtzUZo1V2|YHgt9{cXF3^uyrv9GWCC{WevX_ zEnvd_&JevSxmSV!Va**O<8uuVY{DObU^4W9f^Gu1qNK?&5Xwb^oDTCBC2N+^eYoNJgcTFIpaL&WLo|t zU6x5U`Kf`{>EVEAX+FP`up4y%dn8e!Fj{tF0R3!S@=ko1zifsh8MH(G*2YFTu~^vR zQm@JKXSNf32>9d3#)B{dw3Qrl=KIC9gWy^}etKm+B4d|cXqfINqfDIx?J^pno}i%V zfzRi+<`i6_g%W!Pk@DuH6o_Q=R&zrlbM+=C(pYB6bUQ55TESP5wR8=3YrSGg`#pW6 z==a{`hGSx|jyKO9pmD>U zR6O?@U3!A$Rc`fNV>~L9;c9HunYlgI& zqVTo`fXQtw$a_1?#6P-L^;^!|F%WoGe+#^SgqnsQ#EvZ1!+td)yj!LBDFhV1Q;e`Oo}zxpUu5B7;eO5W#L@cw z>2;g@TXBge1rTVhP5Zfl&$O)C+)gzjc2UZCwT3{jxrzd>QG-jUo0kf=kMp?{aG++U z5L?RNhCN7Q7|+M+eL4P~P`z?y9?#;$m_QZ}*yxZ#GRLYBR~mYZFJe_703$jXBAEM= zrmFKnupo99Z=r+&vmZ-k9%MoVFU|&YC{3}^UE7S=0BnQm7q6WFgX9KXrKcm+51VU! zF@=l)ipK_(3DwW=eyYWELS^#ozJeEP8Nm)QUos158zB=L!;oTk0nd|}rZg6>W@AGP z*}ay>D}h%PwLhwTn$@Cdx`M+=(YbhCYL4>5RDh~O#k&_`;88hHbpZXNIux(&iE&Ir z`utHHW=Y#LW-wSE4HLTX{e7ilW1j~MgVa6()4KN^zzu|g57A-+VBY~$-1h^Z5mXUI z&pd>Drql~7U9Kp+<1uWaJICApkc(q;)o`WlCaIPgb&PZv)`@k#7pQ$-GnYVdO-r|P zOn~6J6K(2hXBGY3IJ=kCO>WrLx<6@&?85)9YG-fgL%-uxf3G_HBgU1IlY{wx!^{3H ztOvg~_Nfz2l^f-vTL_O%yUj(x{t~c(Ls2m$B-q~KBS_ik%>%*rmu1UFhBx;cWXIax8LzW1Te=2BTZV)F4-SM}* zT?lMH2+1LRrGOKvY;0P-3s?~6y-9_7l})fGyR1_ddAn2*gF}g*&8517w3%>(u$=YK z)PmqcqF$z2(Zz>Fq^JpaA-$vvq8n|5QKTKwwn1)#Pxd=0pqvX0Cl##86{MLOxsdEu zm}~06kGOLgtZ<8DXYzX~IguK9Yp$djrs(q1>_+)Tn*^!*evggttEUbrs=qBr?2(jn zfoXHKY1J^a;{^l)`Gsu<)1AXhwidWnu-)5_djN>U3G?D)6$i#Vl087(0?8wcl9$Lk zj7PqX?cE|cHV9GD&nF!nSQLw`ILM@@jY zA;+8MCI)izZfRh7?ogW!FdARLHCT}y2_HzCG2SO2wP0Q|qoSq8Xt)>}6wt#R(G}yqJeURhljAX&FYAof%{9sDhSnQ(#1*F4H`2?Jk&> zw07fS6>svZMWt`lz()H~a9;9|a3LHkChL0ztKF$<3(*M0)<|aSdNCobuh#sH^qn$Kzza4})cwdZDgifDYbk2@>ILifVHCw-`iKEK@yQ zGs8`y3INPrPySCfk_{w_z>yI@b+Sjy(652N*H>&abAPX|bn)xC|JLAFi7Ms2Lhp>b zcbBA)esUstOPW2n7#>sonhx_3n8c%6YGTcG%cONNjA`~y|I`-5A((7{TE59x+VSVM zTW8Gf&N&codjEgm?Y}A&+P{;ZJayKtr?ry1!?q~GR#M$q47?C|MU%ZovArOn(bLB2 zMPE(Q7q$K0C3Q(Ad+|4-iPp^1m(aXR=^XdgJkL^_@5f$R9^Q~Um1eXT)Sc|sgMz?m zCDk1+CV-n#Vla0}K)jhyC|iQV^ocr9U=)4&-W&WQXwz*kzu}uMG>O(&E zCGN?c%+UATQ49uUI#K^s28{d!6J~feXH>2k-*L*yB&~qWk|!A{wd0+EfKzJpmhKW` z<%enRff1v^_W%{ZtZ$jKc56i=1e0X_SQfk6h`i13=*Rp__ywc=RQC^2szp{c8?t7& zJ}&bmKCY!A=bk$|P~)^NyP``K9<70h0IZ&|-*_`_vjeCh1M$XAp%*+L7RrkltURQr zr~Hzw6x??0i%t0Rcs_nEg7k@<_26={m=ZxT-Q0QT3K%K+?gMw1$ck2E#$r?r>sEj7 z@mWhGC?-__VVIQKAgUNb6paxk~YFgZ0||* zK!EN1e0wf?WfMbz89a*h3J&mKEqd$fXj?$5c3ZGH5Ok!}+gQK;0^L%)ZqyABbcTNm zy8pAo(EoWM^sm+A3Ux>~TqDt=yBPvO$Nek0jGM zj=i3H?`L?9t&X`LRupG{vg2eK!svD*Bs1cUObIjaNwAPD`H&hx*7c^< zO=m=nd_qUsMrjzN=S#Xd&!}q92626^@CFR!l4}Qt-tOBM50SvzN3Oz%sLx0qbk3MPT_kD?X)uqmrJE% zQY#q_@d|iFqBNxlO|dmkh)emW*rvK8LYsaE(n{q)n%RKB);lIE!|~n2tiBL*usV`R zub4Ri@#(lHm)C?)kvCxs&AMB%;q+8)rnAU#8;_z3 zL{0}p0i9i5q093v6$1+MrnVqvOssDuJnT*9($)k9P1J*7ZQFLLt)<{K=dP=kWe)xeevF9dl_kFSp7UVw{zUScavEaXpjv^faN(z0~R-0xrJ{x7#V-mu<1` zT2i=M#a}c-KUZg0G_hXx#4RuXIy4u1cXY@E!FK+KW^YK3$7*{WAg48^anhMf3SIdUITf6PXQp_2^aB z_-W&&-AUz%1?@f7m(hHdj)?C!=(RL&M2UkUFG`9?=|4t{$kEp%$I`UwF@9W1tj%YY zIVYysu|F+25OONfGOap|#~8qPAbo-1o2gYx`a&ooW653xz5#~h|_c#Ig^ZatXp3n(^rR0FS6$#&lkoq^8q@}kS!V7l{78T zxRRs^JA>RdT6d#SRhDjeET0xR#>J|K0+2X2jyc35IcgQ^h1)P)=-N+m7WAHr5YIgV zp+}HqvfR8S5rBMvX+8tWO`6r{lilEjxu?4?x@;{HOOqKS3(}m)@rNfsUJOQ2bGK=Z!xtmgv{+&jCOgvSg*B8K;{CxV>O?);ItA5xiO2s4)%=pB;y|dpA1pnzk6TC zm3Jb)Z#Uz%T%BEAx-h-`GfLi(aUXv3WkrpXjLCbPiyIw6D(YFJS3bflu!nYVr<=kc zTlPvy4rLccm(36pAP?E;$3f(1QYpAoN8q(0%=ZyeqzNtC=#BH+FNJSjXP8zcb`d@9 zpWU|y&n>va9)W+ceu7&(QGJm~!a>+z`p6-|Cb;~E$ESP>3oXW|xSIYa$OKOMM$U7B zUsRL@rV5M4<@dLHEDs*n$qydTrB`0aDQAH!88jTwmXl$OJDVPJZ6T*0-4&#@DT-+> zCYse{dDz3pgs3v3U5@(Tj(T9ZT|k$YqJo+b*)Hd;SZw-fz74I0Evq+f*bLxuw;J4R z%C3NtpP4w35zm!)x+ToI(%r8Pm@#D7b`x*D<-sE1g>W4ySqUFHAe~YSu##LtnE)D>r&3Bu`GR{PD$GF5QxAIuFTlMGuqsyrY9&&rzAy_zU0q&NorZzN*f6+zDMLxAl^9 zRY=5%PG#DAM*3a}o`+xPhCo{uep2R!o~PS)d@BEjkw>&@YWoK4)DdOcXTS@~F+%_x zC(~)do{;CTDKN`HOC%WQeo}wnb0n8eQE2bvK0AN`2Vo!g{8zwS<&IMJ2v5d%Ya9|X z!w<@&Ww>u%$A&Zs?~)E6z+;FM$=2iMR#pjzj+w^d1BmFDEv_=uWK}*bGaH>;W& z8^h1I!w-lY^QxDE6eRA}v+sYVLcRB*LmKE0A5IAWE+oPFKUE=I%pJ|0Y#kiwJ^`Z_ z;1IxH{{Rda{`vafM==zDuiHA9(&^jj8=4u@S=pMJ0(Gz7KbbA)3~e2Zf!}OQ%uVU+ ztekd64Hxh2+l_XM0Cn$WBUK3dy`y(SDIey7oyQ1ySfIAN)x=DER1DHi>9iHl>mAM&Zt#e*p%&|^U7^ewi2-Gsu#GR>nayKeuEF8h67PqNC$Z1oT&v_)6>wR zQ@>0Yi!x)kd%}n8fd_<15o9%=f}laT`q6KVdCU)uFdLlacXh0OjV!bzyTbTI-98IV z6Mxrd{N7@1%CpK;*C?#Dt)VFwl^_nqtSHYvNu%TntERWlWGtwZB}Cl3o-wvG4A@pQ zdGd+^t5?CCAm2=1c_}|m)man$OzHKHEHQl9t<*uuC@ zioJ_Ne#_dyVzi#dE}{u7HM<>y2o$Yztgkm-sgE3LLrI%6rKzlsGM#Q=$>%D{Kt~f= z^Ov|MKQmz5rnfbTzA(1hyz#g>svs*kex*?aeKNf z75~h|h_kHKgZ)J+DyUbxF5fkrwG!Tc0+Mg{@Q?}FW9&YAm!kTHuQo>+n-Qdsn=i8@ z_TbjxVG&;1eKHyM#@I<)hF2vY?r3MiaW=HiqpDRbF_V8Is5gmI{AXMHgKr=mfV96_ z8f7UrYoQ5$Zg~F@9xMMqJ>8JnI5`qAdX^#mJ_2*~7gH!c)y6*0v}CPzK`Hci6YJTg z`tG+vvS;te(U>##d&g>+^Z*QGGkOW;EQT>92M&5NtA#A$eX#%q>^ke7%WK`cm^(?O z^ZRDS!r@6>{A(C7c)_wG5nXL}8kH6aB`fdHlR(=YcTv2u&#`%} zQEsTz5v!3kr|NF&6#c;geU*;<}NdO~+E^uanfo3+FVrCv)pn+}N1O zc7D2`v#@?cu)XF!OI8yGZnS>y^65nzYVEoN^Yo zYIBgcT8&{kLiyxu20z4hX0@^xZ4Nwy0>EP?CW3wZe$KSqEgWCD)j1U!cdLD%_nlt_ z#{w%*xR-CM#jT9zst$@O-4q~U;SP*uDCaVPKZmD7UL>_y!%~9aO zcEoBf&yyzt*0)*!>znsjZ{PSRAL0Rg+W>zyX6g+(sI{33G#iV9{+}QN#}681^km{> zev_O=$V%-kmluaBh^T&Rqq$!Fh%W43BS)j`S#3G{jpnjOH0N5bs8zd*Sac|PW}ODC z=BH1YfWUNBJOG+n@}3=()i}d#vRou zqswLslh`}u#L5oH(zs~AI*xs(tnw0mOoLfViXikGU_Bq~lDhWhBFd)i1;8a^QxcMv)Mf$x_XTX~(^IOxH;nHC^r|0xT42<#{eG+pJEC4l zfMhRyP%lz$&Za^2@kz5BFn5ZyYgF#y9aCPK4u#fec}G) zowCIpHco$^MSz}^ z$CeOB8RIoZ$3IksE_v{Q=v+XF-V<94r2zHfl+_h`6bgp$tX1eH#^2p{kpTU|mJ)i5 zM#vZ%=G(>eHj+$izZ3imE-ux=;yCXFb0>0h(3s}KMWi0>cSYuaey7+s-ELYfT1(K? z!kxoA9(3M@L5k!b{%5tS6A(4wn{{pwemtIDXnRXECqBsdv8VD6C5XP;A0|xlZj#X~JLhK)?y;rvaZ`VEmtWLWSC+ zFSZ!!dz7JP;q8(=@W~k-{Dw=)joTq)F7c8!onq1%C9?eArKZr-r7Yd!Z!6U+log>8 z>PY1&*milBP#}Ue{o{({e=RDWwXUG}?82Vvck8?OUP2N7nc#NugNNDwWN=-hu(4RC`p=A7ux<$8PMUTX1bU zeQ+y7JJ@b+`C)9El@Mzqy_)Kyn)xBy)=+C>$LqOB_O2*u^!s>wZAzqD>L}Q$*R*?W znxtE66qP1po+;Nli6PH<2Zm$MDc3%UA@ITsgBkFQ`$Ck6_)%LLdtQMY_$r}Id|~=~ zUJ)GlYM~E-{&I|$U+{PB;2Tism@43}J&Dfl)ltKJF8bV#F>UX`_?ZL{cEFwVO!I5IUL1Uc;C zaRyNl<6&g!CEK-+%FS#L%wCAPQ}hAI zC~mO2{c6l!sJheDA;B!%{#8`$-#4*KECvayHc@0P-B3(F)A~fU7&maSa06@=&zQZS zqb(m;W$E`JVb?b!+sigRAKLkcVSkRi`2p~^Bw*z>CH$P784Ky{cb+Lp8()j}3aCzfpf zc)*4BU9a9=P=H%vdiWInMuAWk-oNim3(9&Y_rNs#K2>e%vSx2S-mzs%{p=ZFwK63| z3OnwQ^X7*PGJae`TYc|NZR=OD?^^_QQ}INBx=`QJZX=$q`^_nbIYS5*q2m_R11Z%w zSMD0L{HXEN&950-D29`dLnFQDtDJ6~VRN0HTYhf5`zjK(6Dw7V@eyfKzm0iO{s0SF zMwr5Qf$z?#EcLY0-4fYRn#Q66rIL$G6}1wlR}?TJyf5B7SXOsyTwuHmN=VxG6&GX5hv};*d@F;Cuu>k=?+4(jaCy||Ydd6VF;dWv`WCe+)?&|ESs1!Q z5wv_;q(_iG_&FZ7TgJzJ0ne^Ou8{5la`xAXM#Y1^k7+fwQEN0vN}JyP`Pot|>U{%0 zwHkv1n#o~I5SNh%0;aQ_@t}G@d|KYXNNhpAJH=spFh(RX+8lg1UWY;ACbUy9AcDCI zBD8!gjagu5bSdwGK?;iTaunZb>LiWqs???=jNcU@y8Oz@u^fYw6jUv6NaMb-AJy(W zb@Qd)*YY4B@XP{BS8&GJEEf~uFj^o(aJYxrwoA%f`4Cd0I0rqSdD;u7pI%nZ5Ax*7 zImA=EShUUXmAqyTGDK{WGR9(AOGLAjXARGm*yq`t;!6-&Y*&+_2s7#-J~t=}>S?st z)+8mTqJ?z>nH`@8zR-S`(m`06O8IG3UTc`MN_iEL3lsCca2*3?| zv&FM)!Ol@jo5WJ15Ir5C@Dj_3&=2n^Z8^l}$sfBDfmI0xOraNTC9>e=0&YFLQz%Pj z%XsS8a3S&wX0+i#z|S4JamJ=tm&5MNlz!g&*f*%V?On5CZRs|DH>guP>{{mVi6|!a zZ|Q?sne`3;6UtMcFE&MA!F4c&7v}9_oN$Q7(CS~%(Ku07@-|dKe|&LE^jD*Div-b* zx=Am@r~hRL-BAhp)jg@4BwPfr<#9>ev?JhjMGbhc@3p9DSKeTz)x2Ryo~Ks}WT4X< zf&Mg-$THGTUzE&12Su+oORpBpkdEOf^G#xg-dkUq&kzh`WDm=PK4P&u#ps*6J*=ZO zMqMJqGRTNLEE7(@)c)QVnz0*9&JTyHQqx^Qk=MoEa<99o48Di0G)?f1om3g#F zey7UB^V_Ng6#B$X;T|Wvzj{6e@=BoIqRh@P%`m*@r9H8^gxg4mQq`#45ED1XvsQM% z`m`q|Ko!w|1sSE z)wKnk&42IS{P)efL3LRPTLt4CSG;z}q#32!x>_ep@)NVnZXR>)EXwy;kcy&j);}{z zq|_Hq`hONE(%t%0@N#S?i0OLGrphiIMQqpk#^?K(A`|d`>r^JocpYwwRbLmW3jWW=1`3wnVIJ58+YkV1~sgF1=sY~1@30TiJYC^V_?rOTXr#Uk# zinWR`O?z35bebBGOHl5SkfpssiaySWnl`G4ty;=DDdT8P`Knw8m%1KT(GaZf#-}46 z1A8tBcDDf^B#R2hbb{8*GEealViaLC0u0tsyk^xh$DHUBz1*7gyY0aHD zu>;ODyzDKJJSdHqC+d0aJgb_SysJ{iAAM;BBM_cegAQqpW7w z8fV8UQkb?{rr^eD5rfIa{Erd`+XCAHK`Ch=(*i{R@*2a~EA})~w>`W}e2F!<;ij3A zpvp`>R<_+oYSH^)8LZk=Wm(h0+#W8}b;v|$Fx&9_4gSG31^i+HT?jB?IUvX)py!=& zdQ^6w8LK))B)Xj2%JeYVP}+j;NxgD5gjSR<5P4NEAj4pS8zqEu_d@*TE-|%({l_nZ z0_pnRs6ch0Vb>`h(0*W~$=*ZUxWXL1=khUVxqWjTpJ-py26X+rhX%9*mOl&G8jku| z7z#;P(>E$+!e~#X)nd&zTa)+k$2RMy$j&zAvydD=xLLqTLveWDa)uWyA_wKwoxqls zG5>%nO_7CJWtmChtcqv2{Bj=A1ZV3i3UXb_bn0A&=C8;Cd)!$H%0eTx)zWWmzvNz# z<*uEik#p9RMUqJ7%-bR{rMkwsbp%FW)tbPbw(YUVSSwXEA>%ki19f)8i7kP-1di>l zdpZR(4GW(Dwi-u4XkIE05-I9>GBf){-gOFKHJigYC26Gp4L!V6fG%C#$@FY=nnv7w zW0z+25`a@q!US6@QzApzcv~wPWLP-kZTuYTJBA&vu+x)(mxW-ONlPdi}_jdB)NywWabVvkR z1B4nx`gxY;U$!r_gx`Y7uibTSiG+{s>xo1!ApN)4gW^*s<{4bLdy4NVibOOhX+L=<_dLBk|(m^4@(Jf~x}q0}BEfAd5*e z2~FHU*P}NQbi9W#1DXRiV&E;E4TmS;NicNTVP%csI)pe z=sTI)+WhB1Nkvl$croKGDXA#I4!j|(v4mgJ&!WQZ3#I(WSO?5soh5QoA%yC2vb90> zIKF|=Z_rK{I2j7-UKe5Q=wUBYx{7d}<8XVI02>&mp&U&Z5%9{%~5QcXpMlAX6Tm zGh@)j_Q;E&i|dyt$BrVTUX~c~@Q)~_S<=EtYL=fW#4P1u0?_Olt=%_EWS@*MlX_;D z&rONVvnUnRm3d{7UuDd2=*Q2BPY%*qx^Om%G1b+Ve)r#)|L%E7UoaL2s_z8xNqkFHEf<^H0 z3|wyiB!)~9xFC|7p;E76J!01-8fDYq!)6S~eTSvYM}#-x7S`y_i4e<4EnPMx+zgE% zgptCCjqOrO#!O@Y*aJ?^j6|BvHT5X5)UQ_bMpYmr1>Ql6{zAHSyxtl%l>HI z_wCuamwIBq+yIb}9xDq_enWm%Ou%hDKXVxKP}(;*8Bo z>GKDUzlC^o*^x<$*(ntgTTAY?_3JQdap&D1M(zapo6s`dd_nzGYx@L0CVh3oG){1s zma=D=rWq)?ztf;S^g?Auz{SMN%Q-M%e?u_2bDU)#4t* zqky#v?)wc0=Yj9chx;;+2Ff%uYciY8Z9hFZ=mm6T?<;BzGuTNut$;uXjnFtL7qcGF zrNbk;?fASFfKwWiSR53Dcvlh}7`YPQ7H80&t$7s#8{9SV!0)xGgW45BLrUe`<( zX+m$dCElBOiH=+)*M8P{otX{|N|R!SEZ909Q{>{`RVZ{QpZa zL&VD1+StbFKmUiSdAgyfp}w!47`m7SBY*_L>9umF2L_51)Q}Ongnk4eloy2bL(8-x zOV3SDb#h@vK?p}JZ`5dLpsd#rp_$c?p@LmCK-4X4J@zHu)L+kVC$@MhfGLPnY!ejwrPV}!e2L`<@0qr1Pp;)lrIdu3|lrr54~z$tTO z4jgCNgGTg11SjDp*-YWDUZaOC7U)#dsZr@%H*-D&QPPA_vK_r~Il4ouU=m50LZiwp zY_w?XTIVQOKV+B!p`l62j4=1s$Pk8i75K$TK&lnr0BCNcE>4wG46_$s<& zN6m%1yhD_x=uu_EsmWuN$=^wez^=o~&>ne~RKqe*J<<}oYEH^TC$eNfn*JnF*OH{I z(Sasq?zFPEAlyJ{SkU6sT4^vc)IX-}(M@yl*Hq`(*qddpxegy zp0WMF+d6DaR&9io1dW0T4Qk@{tC>3;HUb=a*s*sTrw8;oYJ3Q6|`6abp zR&cmKgIVJ{%Hn_kK}8EJm&{%G>1WHvic`dt_WT&8B9i`oIlaDJ;Y<|9)e+bO97aE> z-7#^yFV~PXIXcY0Ml_FSuMH1l?WiBi%Vtq^l5|N>vbA!1b=6{ysj$T-x}p8$`PNdU z=hW$mZsWz__81FCCz04}C!VxEt(aWWH_$=?6K=+k(c%wbfnuayD&6xXLX$x@Jtr2p z&LWzRZl;l4O^c!#-vi0w8wlCvtygh|R=sRa4lfUeu<&h|;)?c+tZKJAdrwj_LWVHC z=ZzcZ-AtEi8UnXT6)QVr@AJ9n4 z{cX3o5^AB^hppO!O+QnT;Xr_zUQipi`k!yJt9&y!XRI@q5WGn%T_Umon*}R7=*2litty0EuHoi)!?wT7UGfzs6BtKsuB! zkYptv68)1eEm;rQU}80WhFxCZI?xwzTycK>7$=;ILY;aYUa*q+3RT4|af~0DT@2vQ1=fI}tP`?7D&7Y6rf%uJNa~$f;Uk%lXcxW|- zTJZu)C+0%U&)Ifmo38o|R@&KbH{Ms`Gn(AVCPIpHEI2V;##$)9z0Y;gn@WkyG&a+l z2wI6RPZfA5)^ZP)QUb0s_wi7gxrXf6k-MR|=w;0V!~vWMH#~hum>``#!{KDrvN_S+ zjx08L64@}cJV;z@l;`!w$Q)*x1QO@s*r`dzp<%rILwAtiuQF0h`t5_(pwiyj(}xG@ zSTj#gPVpvLM<8&!o$RLg*?`c?3ol%&#U>M(X%pFv@H9!%bSL7j%FB_a|BJPE z4ALapwne*a+h&*T>cUsHZQHhO+qP}nw$WA9Wmmu2d!HLG?umDI>=XC>$cX%rkt;G{ zjhS=IHRhNX$U{708*HP6U4G7BCu($Mh!9++7hv=#`GPU5Td*~B^h5b_($loIAHL;) z=0#!cT+2|S#?cIz6XCTL&uSmu9Etf%Z5=lg)7iJh5uI(?p_8sJlgn)>^hq>}p(R)L zOmk6Y6ya_+FIX5$q=zO<8wYm~)RXz%vdKPvzPG;_J9Zkog1W4f#E_86GNBy)1*4F3 z1JD}A8~%W}I?PqXA~z?e!|Em&t;kk)9xr;7>F;?U8t%9~i-_tk=6q0ds(Oh1g9kAZ z-&sA91%J5RDAZVUzy2?U&*FFi%B!yoxn;r9Cok}$+s^{GWw6a_NnnS%)8rhDUN75QXlwLcst zsWVVK(d~GABE99+gSx|-=&EmaR%dw?um{vD_>RiG6NIo#ldZoYE7XH419PB(68J;%ss|r) zN~1CLTFVsBkB4>*lL5hb_SFlEm2AH&<4q?lUY6vi6b3=Tz6X)kwgfhCusvj8Wb&_-B|x(cBun2_tou6^z{@>++Jx`~L2IPu zVJf!)FRO(WH;qsVrR4iN(8#E-h+`QbJ`xS=h^IRu7*Bhb4F{GLzCXHw{=B7;=a0QK zLytVXQ497xz~hJ{-yg*$(yva7a5kV?iL72DY|$?~8+bIJXNwdvLwR2C!DJ7En4`lV zVY{W|8bVoBss#K!+Zr}naV#9SaHP$BNrUdoWREW^xstZ2w9?`Y;y&1YRE0lQHB)XMWGvmor{0~vh8Qu+iL4Vej> zXUVu?x*Eb=aOdlwq~S#k(?<2n+@52dd-c*f2dDX^6uIU1I*#^e)8|#SQ1=dH&Xv?;MQUFNPCOI+>9kI;M3~ZFi zd8w4F>VHwB-Oukt6=zQ0&Pl}AkALEpl-7X?HkAm$(`Ad2zEa_fDUc> ztmYS*O=TD%wn%J*&O`axsNZZ%u)S!19yFRzGUiBFKqs^a*2F07W?m5(nk_AJ%Jh-g!7v-`Y(mWCa1KNipdoFh@c`D?KS`g$fo)FsmjhjDis9(2%V?`x zhQ$J-DSI&O;ka|pxFMFzL6VcWCAq1wN-$0=ejH786^u~AyYh&DFQy0`G8owk{KTAR zj2or%fNR=*)6^$IbcBpm$O?*Kk)J{W&P~p(RsIng)nrrqRD083r~VGvTDOJckg3&P zx%b<9|Ep&iuY@fnMVT4ap{(QgHLWEz5FbBSLkyPud~ieT>;0Yp2C@>Uk z@>{w7q!9BdGqF9S!H=E1v#l1q@nW^*R+{z_*{i^dl+r{g_N-`{Anz&*~Y~GO4R5huPkum=g38S{t;m_yd3_Z5sOZiNC#VA;3 zfW^ZbuD-lGt!@7kX)9dE0xDHb*O_HV3Q9*BK4;D}v}bZYzrxZ*=*f%Ov*;|3FKh(W z5%Dgf&+p+hP?a35jNDxB{yBSx%0;UT|6_)Hv;bQU(ALzVCq;%cr1b+jUV(T+10P2z z@Wrz{0s!krEvORM(t?I)>HHpSkSBIuPvMbep1f?O1Zo=)*p*pccFL*{Nk-TL>9?8M zE!Z(73D;I*;6jgf5MNI== z@}wD@G#0yTBF^)-nk<7bW5;{gTZ1}6%%>DB-6>&7G$g)bv{;(%;=cVI9t7>j9hQ+} z$<~=ad8k3knX7I03TrxY)g3;{=eK}OC_#Y%-+h&<42<|v8~RRXRdD@npDMWft;iv- z!4y+5GxotyE6*}ObwQjY`=9%(tMq*0R%lwVW$wv=)Yk=K-IJElaqSc$z;=X|tw7ML zR-|c510}Bbxhr?|D?`*x5%fh>?X12N&ZFFAkVKk(8WzxxgRBigRj|z~ z)x-`Bg#1}pXH9{_t_V|(G8(hi_PHp{gWkjd+*XqvHW)}N4XS*d9gZvJ!sWa9w;hOj z+K4v@0u7JwcpnK2bDHs48(*GEELMr@Wd$S8)^MTTTCTOe*!vVGb^-?jd*(F$iWm$S_zp#4w(fA%md&eVY*2bQ3Se z22G`HV!41XnocE@ufIOcCj81q)A=kqyXzt8=j4K%EX3!H$DE`CLAUnG%`Xchf;Ca6 zu2rOW@r)vWLk2rs2s2~W13N_TA}n~K#i5sA%ys|vc!V%-i1#RtLE(cbXk>mp>PK{Q zg>fB{C$w_evn(-%GR_q7nmo&au_5MgG_~$+QYP^5hd$^ho=MCbNS2aB&M?q%#WkTr zJ=DRr02=L!EScZphlkTcOBW0=XGW)Uv4tH`oYY4g`sK?|79v@35tx01`!NP#aS-vO zOM^lDVq^&C0o*=?yL}AOiTZ-$7b`~$1&?R{w9Yai?p)yeMy~9)a`XSJ*A)N1MehHm z(^Q(20cJ$)27vWbygb3o1xrW4kOYB-*Zhh96*V7>PAOC`CB8|-Xn)Ax?ywK>B0n-o zND=`>2cA9LRC@Z9!)dzE)5F{QqmRyNM2{C72lNEC)qPbtMLk~&INGUxoGVJ=gewUQ z^s{Q*3N2ZrX1W4Srq}`3znJ5i)m+&;hQ5^!cOwO#Da0iRNyS`f_A@vVe+n@yHRzD( z(p)C*QM6&*fiF?$N_e#eb;?d?kJ_6zPp1K!JM`qv#A^CoC*iC(Zwr1E+>v^>m2q~m zp9dxZ3ne3eGk<0MO6w(tp*%sAQAG^_3mD-X30k3?yH>jQ8fN6h~viW5+LoE#p%J0jc$jy{6NW*AwTF5@ruKB&o%}5a8*O&| zN9DNz$LSy!=*JJge>?d=;{Tsr;rL$-eae=$Tf*Osqx3g}-elI$s2SEmo73dc_ZL4q zL0itrL9;-eE5piw$8Wi60_#;<*yV_N?j1GapaH;-n#Erw5l>N#<_+U1(Dekrxm{1* zwj5`-uzFukXM2I93|V7g$x+SRr3|P;QPO4%MEb3OR_(g|KyAj7Gofv$(k2UtPb=NM z0^GrJp^YAzi;Lg1{b4!?)-vXqrXW&I-o9lBElrJ^88Wlb)UY*NIVjUGq>_b~z~x}Q z=1^I4c(WSTzP;vP&r#B;%pe`M*w-CM91Ay6B?S;NlyxspJS7BbUhbMP)y-RMs)E*| zP}yS$f>)Jp2Hl4VQu>p(8F;#TmkB-AzcDi`5pDWe2kMwMVx^==#lEJ19^PV0mLqU? z4>flF@bEJgQP^ETg85rvf{7TdBY<6hu=8oNVB?_@SKt-cgZt;(R1>s3J>YXqm3Y*u zq*L^@ilUFalwO9}m)Cdow>KFT0Dx;%&Kjcf zzo^jtjitJEx2e;3<~i&g9`Wq^_L>=f&~Wt%q$mrSwUuga?YPNA0tQ2UomXRkBuULT z+R!IRAY4ep8xzpi?1A_qF#i}$uHPvce%=tXCk92`^GmxwmD;K5PuRnu&0e%qndw?W z3)(U~?((|M>TqX&sB~a^l+ghnW2qi=A0xSr#-(b?CjoNQfC6Ev1*A$JwR7P?MpJ87`E15*5hZql| zqm|n0<9jC744G1(CXM)`f%nOZC#7J_9w^ioQOBhXK^vnwX6E5k98i9?p)JzhXJUDU zIeH}|;PMT)ZvZ1~GDI*wkr8K^B4Kdyqo)2W6gj9p-Wbj56u!Ylre`eJyZebNs?d)H z{~97EH(*w!hNT|W9q+`k0xkE|ce@+sfm=!cb8HC4!JX&p_l4y@fnO}E=l}gXAo{nz z1MdG6_}}h4cHiTK&5a%Zb+rF4q!%lTJK_LPzce;U4UOyTfXNZ1?2yMd-DZh5<2dYb zYbKJZzd(HhQN~x9We$%0j9H4WeQbB$ zx}QD1-kxJqf0W#g4XJOj*i|C1(xi>)&G#jQ^Po$6#n3-EbRxLcS?$$8DK;{D3|f(!v8_neN* zh;b;V!iO}n!k79>8&#!4P0!$o{6p=b=E1qS^;pq-IQ~k_QsLBnU#~g$)s~viRnCcs z3{Tv4C|t%;lv9$$tpscQ3B`ic1y+lt&ccrqjxTC^?7AWaZ^O%R)47{6JZ7C1m!69M zykt(I(*n@4E`;4a2_emHMA%8K(Es<@epX)lSmYtzmpVJGEiKwxx!n;tGgQ)$t((KF z5>0bZhmVIF1>0CV2E}bb`WPA7U(p(?9DZH`oS(3C)^xledfIw9rlCt$80kBA*1J$E zyz3+D>Nyot@dKkfkn}2sTLOFAeVnd6tQ!A1Zhk2wy1JD0P# zmj<>kz!BT~=(LeeL{Gc+PFUN87zuC^1-xq(^eXT&85K_urS$lXdUg|x+=OVwl{0m`1JnRi}PCzFf#dit{Gh4KXAkF;BWyZV|qI+>wbG#+1s42ofbRl zGS?b-;K(&b=C3W0C7qB#%o|8FrJpnFeQnv64%#V^?hgJ81TNoa9CaY1Wz?o>4@aW4DE{?YMqn@$nX#P0UmJ24n`O-FupvMd_~+uF%-UXkH&Fq!|!w}IU*gNqRvv&x0jxrb+6B-TV}t-vXi+;W_2}=%3)60 z8B@D_91Q#Mfn(fiQQD~ExM3{X8Z*Y4;bq(!{eb~ep$-pQ7ne7_L4OO%OL$wm=W@G` zI-Tc$juq3?Z0hPDTw^gXF8~8-#pDO4tCtMLNpewO)9Pc^JCb$DXjh-&A?)ZxW~}uS zEUnx|xm`H1XQd9|wa8CaB7#2|w$Q`4K_e}*c#9hs~k z%XQ>JRkX`G!GG2BEI|o|z|%Cz9cfdwAzzt=g#HaV>CKejLrLm3)vxCe3xU@1Lh3m6c=(<~bJ>}Yi9m85fhD`Rv`Bszlmj~0UahnYhI8pS z)5h||C2w3)TtvJLX93u*q=iu>J3nT``7B$b)a#5cK=)o7scYSq3@6ucXfJ70LMbM^ z`!<$mt1-;jfAQT$&^Ct{oQZz6V!HbvBeI^-Q;Ec3n^?2mFNxM{o1S|n$y;V0+|$)z z=hY)J7VGF8lwO@GbuT0eARCxF?;}^;BB}4J<#{Z*j6nL!w|Y}9ezPuWw)7wNErshPeusbEeZ+&yY>uiw_v zqk#f0x(iCHd8sk^^2ga>-$>;y87i`OsFzY7RsXmR? z6(6gWtYsJFP<^gfsx{C3qA~Cea0+blq)@#!gP_vwxrj8>0!Gq0HAL#0iY~=IsJ?)E zp-Bx`u=(B#qfT|kaP4m+EfXC*bgtcV9Iv}SUoS5aey}qVga(Mit=ef1=S5_NfZ9MZ zR?EMnK+Zxk;t17>yt%+qp}Arb&#F!qqlLIF-&yJm!tXGj8Lu{f07BWZRRZ_Thwm>r zd#0!1exABLc3iCl=d4eq=h(*EtzLQ5ApOZ(AH!0hmC#*0^}lLAtln@3Z`Sarud_-z zv+R1SYtUfAq^|9NM%vz&QDo4aFzVD)SAW>ifb~Y(Y);A0WS!LAXAR}42-4CqbxSO_ zy2HzH%YhY-C_yh2s?<^mfWbUfoHYG zQro7#stx>HuE0S8%s5$1aI#wwjA(ey_i4=XFj8qIh zVaI#yF*P0JbsMGQNZ5EWdg5piKqkSgi~w<0=r>7$XBZ6MeoH`cOMrNkBwwoWt(<|t zFxrrv@{E9zx8Oa>>=HYrB^9lgUyk=sasJPRFhEZt8abh%G?APkfmJIjbF>>Um_a%P zvS=6cm;|rCPr86Bj^f$R65oFww*=-*V>W#^`qKQ{3IX8%9x(rkOUsI8v3xW77G}h*e+ql6jsGDN3Ec0Rsf-!;`^)fCLnN*qC4BVOcVXe3Ut$6@>0iuGu zVlq+9pzkRgVU&cFkU4waxq2{syHiGNnO4wZpY^++-MjZ)t6lGNlMvUyb|FUy`m{AE zxABNxZCpXI2Zms3fw7@~pu7~K_{cJ3BTumBwSH#IhMhDPtkY&(Lf>+F>1?&}4V_~c zdC8BY3a0s22DS-2u!G+k&-(&?>(U>V5Zb^O@CRXgv4&|v|6%pw4brsFH0vQc%p{^2 z!pCY2t;6&bS_|b4z=SlY^Bc@ZT+vtK>C%-#fJ}z~IF_3AklAf1hjrSQAwKWbnO!H_ z=SIB?m5qRab$JO#;iFEs4xfjDehD$*qkp=BrimJPsg4vf^-$#NC7QTkn{RJW37Cr& zvox}mmn>>%3?#uhKVEL&Y__ztG%rhgLyZKCX9hsOv3BL7}05%mQti<(^Ip@)m1$WGuOw+e0mw z)C@H@6_;9JC;iqUY3ZqQFX1qpW}b_pJ+!~IiAMBk0rfp^kVXb>7ReeaVY{HJ=3HDX zPq(%(P53z+Eg~gtqadw4wLR>&T&;N5!EOO{kY;q5tE0$;U;KmonWF?r>~4;-U}+5? zZBZL(b>XsovBRJte)S5P`(qDTS932+#$3hNQ&Q-1CaL(kY!hkGW1G3uEnlvdqS<7y zf}N?{?I|dm)Q0#%XIaWprii7IH>rz;{^G+QO>AAYSoeSN^op&;+`mfQ)Ttoptu&jn?i6La4;_4Udq8e%k@&Sz=Q8Ytb<^D z7@L^Z`P0BYoV|QAAI4PD4S7LC!SX001(|X7%wP>Xac5v+H4St`4Ec3&eRe|UOXFT# zB}7)2M*pPj_p+XOk!4!b%i#<}fcyFq@9VG_=2BH!=isKw0X=2ofCw~vZO`(6&E+(oJ^#hS#VJ<2f zdS=)ink`R8AkysO79Fg*!2KsSYE!ZX<#j z@h9pBD8KOphmA;_U4t6JXxAxMvt23&vP$(I^fwd$)eDx-3=wl_lrCi(m@|`4`JQ`M z-k$0UYcj9A9*ptdklY}iaAB)Ym603N4}9M|6qcg5v)9|YLy7&OuyeZ()yQ-04s>0# zlhOv_uKs+gv_vOu$;lCPQhmL_ZTgOQ@i9DQOMyqmmQe!?-dQz8#!6|c>H*^syggidEk~6FFK{c?+boKO1Cw?N;Uu5b zCZtF!@g#TWOoTp42{ww1OiIQkPTa3bGvDXy^_AVeqzMi(_F2RiQdD+#YeYayP<%ba z$ijKinqkc#6VT!L#!-}*W0)=(br8iDuv#uRu?e&{a;`qREGT-$lyYx!T4fBhUE$7| zQOLVChnOd%qGMd1R;ajkmP@K}FxFem%dHLnd@Pwa)TN@D-qvMnNl4Sl=p>eCabIuF zDllkVqv7;f?hBY@+LG7A@3PH1!+e!x9G6ivvcM`FFuD9&C^hw3y1%QYJL`s8b9F+9 zWWb4U7;02ny>@V0>BPDnseWT{ZJPCVsj@h|0WY}}?2>w!R5PlmlJN@{K=1LW5tEYX zq~j^1jl+N0C8nuK_vO`$A)EVH!E~?EcyQ4a|3;E|SQ$e?>sxI|5<|wiJXHQ6+Lhw_ zAe2S{4IXn6?$Cd&PE$vZ{s>0O;_zDt<&=hzLx;Ws*0XxJ=M)7kWV?0!+3Nsgv?t6} zeYoyw&kExM7w9LkP#iJD{v~FBFQz|`R0OQy-H)R%-yi*BI;gOOLp63kpgRkIq}sPr zI?}HMLD%U3KhTC0!`nIV$jS!H)%=;hENcfWtoEUX-C=A;gMX9B|8C>xpc)_TA$5QV zSk>q16rcZ0yBK`^q&$*}fj7u-o44&%n`-?v!o)dCya;AQp_6tcX0MA_=qh-OlZ^|p zmr3S`E41bP2qtmgcoQaEAe1H(@@ZyMfNk>KIuvONXTX-5t?h-JDKLdKq@{}Vsg}XZ z<~v{*&&!qtj7;D1PMtANgqR;LpawSAj#H?9pau>%$yqCik(@->ZIfYgY5&i*$=ZBh&1Em50t4>Y;o4kz{r|9;jA_!*qKc zj-DDNC9{r#C(>4Kg;~m$N?_lDV4yGhiilnfjXQJ@)9&AgD6@HpHME~dECRA<&*+|^ z)C0)EN-Bu8sSDh4(MO}Jf333n<+gSi*Hlkmz}%b{swZi_gj)RSUW(YAgjJU=Es!@> zi#zCqRYkSv1(G&(KkTJ=U`aCK&2J0+sU%vkz>osj+YK^-L~{$<>NI3mTnN`Hl{JN& zX${gH71DvbsD_xbFM)klA-|(?6<=0D5rgSxuWWpH?s!{eudNj$EUIHyKw(6$JLp=2 zN2dH#G~q(pxHISyyXB#(Mky!+z>GRP+U`s1vQO%Yqo5y(B9!ZiC0|cR&~nPE(}cQi zf$9ryBJR7oOPElusVhU7k__5;F8FN%&V(XaN5GtJJz;sGJ9-)-*RN~L){w0=;5YgM zFPyxe0neO&6+sW`x~Opb3W!SoOlts^ut8!ec*#8QX_gln;4$t3lya}r^=@U^@?t40 zfi-mZ$)PQ%xbBlhq|dJ6C`Y!BsKS!E8+fs;rr`s*TnX$55->nGW5jMuud)L>tW$8G zg;sX%d;I4^a};zyzsHH5ad$MYCl~7$C@YwxX(MoI8-dZ1e`?QX2qs8^$(?;i2trp3 z|EAdZ<68sew2!bBVP)U`>NdImQ*B0I53@vqiO&u8L-vCRE43Ta0ezx(i+QA&_y+0| zSJ*i;uV2>;($?ak4OK*&+9pFgnKk6_BX<6lz|@IXz)dz`PqC0kU-)W~VYg)O7mOfR zL@?+Ov#Oh1&9PL`W-@W-4Fv!1XnECp$AX$~u{mf26Z!j>YEJ9+Fz1H}l%YQFH0Ukt z;!q>ys3S+>Uv;o5hFKcIAMwxLO@Q!fz&_DWQFk#SFHxj|3!Mf8-E;k_hFD3r@Gt1u=Fc}NW)%x)Y_Ye1#`)IlWnVE7y`twPp+KPM)fdMi=TmI z^4vwb^XHQ(ue7UHU{trQOEZGEq~~Vqg#T&h7Be2Vqk3~6q3MQZbGAfc{+o>;S!rzB zF-&xAW4rir(!`7>wqTdZhRF7fD{Sj9H@bH`NW%!NTHUj(8U~@!SO`FID!65;M|A)4Pg1Wh4wyw)_Jq6=O5lW2m}HF@0$OcBBx> zAkE-!w_I4oj^j1bD-Skyra+NW(=+^W-`iaYOg53fVs^REs(4xUfZzq}ZN*?Z=dvb3 z7Lf2JOhoT^#9>y_eg@GUrYi#~3cXw;F3}eh_a&%xb0ov>l78^3{uj6)5HTAB)n72h z(>PE<7VtKKn+pK8jR8^E;=@=3@+IUV$k=OgF|!oGUl2M&akJ5C!c#WlHlZiMamNec zs$ttWmqdpb*myZPg=t^FkOo$M6bUdRyo9=k^dV9a=`U7E( z#t=v~S>07{KjW@uvuv}iUoTRPl$aLNVp}TY>pj%JH(h?VYOAR3p4-T-bwO#&W$Iq*2o^7T2Enb4{(}QX2w3j4FrUCk zAx?Z(B;Pk}=qr=d=F*JR9m&}I6EhjJx>Oz;Z5Fd(WEUf&LXU1}nvb?1`zpTf*d{6B zN}dVPAr--(JA-D=K6g@VSX8`mEmo{``KKEr@#!nK z|NRygFF0_ojD$ezJyPuP`8_vH6w`?z_$!=p{5 zHhN~V_Nmm79I-H>Q+(MKmi_O*hl`BK#R*oDLY;}=Ra9o!Jz9z5jF(VXLAo{QE6ap#Ha8j{koWfd6}({I9*H0p+E%yv%<(Bei36 zCz#;>1LfBMxjIy)AIdL5F+xmW`W)R3eSt|aAt&^h}@Y1J>%l< z+APuh6pFSkceDyS7e|{}UY&%!gX69etJ*Se=3Kke&yat*>3U*sT<GyQ)7Lce2?Ct{Te8LD;ULqHKh5*hVWlKFrN26IE#_8)sVFar$Ke2t60hQ}FN44Uw zL0&y{cb_36vKC#N!=7%nkJW2dcm?usra zuICS+e|5w@1jPQzAMzW|;eD9KU+Ny+r}%v-^ZB9}_|ERN2G48?o)Ta+Nv2`aAKMn) z=K|l;Q~cE|`5FbBf9S@q{LT7^N&G8&=vwTobok8TlS@_2cM{nQNPozX8w*nc_nt39 zT7Cg3d8iO0#Z|AbUe?2IDJiLGa5)aBh+by3RH55c)0A(uGaeqGCU?CW?xF2z$fI9U zQXz;06_h@fN>ARGV>y8tR(TDuPUGvEeRxHCRK`)It1UO3&`@sn`ch!|Y5DWwvT}~u zO`AIDyjc=MMz_me`V*Lj3tQKz1#BH126WN_WInBL86ravGurQW1m9qzlGsDXUNH! z)i_m(cPwLsW5=7R6ENg8sfOV6tEgBL8Z9+9TQL#;^vVnfu@YRnfvLFz058P2T4Z{E zsc|$!m!B=IRnn><+ACW>;#3bXgYt|)LN&0m68Y9io28<|;;QabGsJQRL%p{%p;}v7 z!-*P*94@E~CRif~$hBf2K^i#?L`6s=k}}XS8cgqtC{h5ia}G15q#G}^kQK}fp}*0q zA6T*;gRH`-!u^e!PRD};GjL2lL4}nPNDx~J-6ZxIG-yHdJc<+^DTKr(Le&~90xsk5 zzem2C^SB`Xyb2{D+{T(ERkin523v3w6&d_q7=NlJ-seZHy#LzzM1yWZNV41DidWQyHraIG> zTA?6OP%E6f;!eqf?|q2S&LGz9&@sUj!4BU6GMazsg(N!0@}qual|JR+lk3yXhZL=1$gnLp7DN`r%%j{@#7W=(iGfakYbk* zsfXXj$EFwbP%M+bh4P0f(k=U7s}lU&@-opuQfZXkK;z&pY%D@I?5hT>yezYN8aKmI zbw68_aCNq(37at05Ug~Qvq|00FVM>&XgxMQW_8pmi91AA|%)p20hWWSUnSr@Qzu|?yM0bg{3dmG3j`1 zONqrKMaAdI-!{ci)9SI1EV<0n^zevC6IzL!cH_W4X;!D!Ng{s~CBbDDXAI7|AJV%rPM=|*2%oJq&_!6*$kuUvy2k>;{M6LbENCNk`3a!|4-UC(4ID(32z*&Us) zRBirAjI_&U&wzQrll`Pf0bEkULoKUHvLvP*tzb&zaACo6y6?9pOBeo7#!Z#hOKXy* zhH@uQsQP+`RajZCRaj|n(N#izc45VeG_R%#Rv}kP=b@nr;E_L-7`eUaVwR$C-jIBE zQm&G4Qm!CBuaJ@!*;-vjWmQ&ObYj)c4ut)s%Dg0{J*{v`4pl-SG@q;*((ta)P&2V? zr9CZwYGF}RGoyI#q?~^OlP(c12X0h>E~XvJ);f$mc$E*>|3mg?AlkpoNVub-V9?Bl zkvMZeo~2T`xCH&e0*SZ061!PV@$|AnC3n$6Yg0f>bQ4qR;gZekEa|9w(x#-AvJxGI?ZvpD=vrY*eIi0 zNRm~}OzO=PyaNJ~w=Q9>&JjHg}0{x@oUGkwTVAv$1G}3ziTBZ4{wCF64V0%$fscE!Qeb+9%;@UaYD>UUB z+OarQ((rDg*U=%lU0vyE6qtors#=g;bFIvNdBNx0TjMejW|>U|E#?Y;r@OYiC7Y8= z$6l~c=+!5|VwZ-C7;tSwXdake0%vx2m$Mk}>`}$zoh;F|m*w0Ms^@k)q-guSES#hG zml42`bjzmNTdblItz@dmED-j6=pBE}`)@0}l%cHmX&=i0>94x4L|xwpb+6}kh#u}& zuLV)gYLK$+E2ImNny98je&(XRM7 zD>h+PCh|FOgtpVoy-2IS?UaI*A$twq_`Un=+0#!a=1YG75$OeYqoQWHMTm8Aw=US< z=Urb+qu3irGtO$Y4Kj@sm4(KIFAV~U&_ZUot1$!p&a{LZR(hGK=IQjz- zzn@2=#;&Wv&_$pIYwYJ^y``NG7IM)FFcgu5Gcd7%jxm}^Q@o}W%OsIfgnsKrp#6OV zy%f#r%3V~VVPh>V z<|TZgp{z@-lBE@6fP+VhvdiqB+@muq=@*ui3l{qROE^fTQo`G+=$bpyRkHyO5MFqD zGi0}c;kK3Ekt^vK3@rfz%?^`>Yzeaa_J;n|f-0wz&0g@-Yk_ZU!j-?Ori&QwlUnTs zitendjmJ@f>GdLeL$ZlyiidvC5sO&PQPf=gR@%t95G2}cYnsN0T44$HYh9qw$XQSz zOiZS-&v|t*2?wX`i>E-0(6q53)X25_UCzX8v1Vsd3jj4h^t~Mq*A(c-7-X9iQdT)$ zAd{qKTT!L0RMV+9ICp5zwuS?*n?_NzPq_=X*E^j+l{XKkKVrsXjuDEUtO~`qQsWW+ zmFN*ZjSw0bf?zNw-MY9a^&?&=Gkn@SU@0v&syyu%cq*N1oXA+5YuYkM*M@{l-bCW3 z*Dk~|HZ$E&Y$Aw{yO^^Js`tZSCJ7yB7S<;fCif>qxbwZ@C{U_aC0JaC7J2{L>V`!S zw&xC$tiEVBMi2a8M+>z?^9kx}wm4U%Yv04Y3L$G{vwkj?KaY3}rGD8*5(TVf;ei`C zNPW>EaYTffYg&%$-7j@AdCnai4IY-d>zjJc%beFhNTWwn+2)W}mze zXUVJ6o}w6S+t-+QybQ@Af>j78E?~^lQ(!tAlg!XuItHoqFC?m{ybWWb8=;2J+kEF= z)wWr$g3^S=hl9^}c4nU=>+W|#9*Q1xGSko%%UC#^ol%hC=08Us>xthi$T#@=MCd#s zdRbC+g;uZPElG-GOE>S*Q|d+OEd0evOytc7e!Hr+8Fvl%zJ4iY_?PcufW5a2jBx5< z7H}x$mAJa-Q*+7?1aBCvK~qpGripE|Ib6Bp66(o*LaC^3;<4mnRnYQ8%Hh7lpYVA` z8=y!3l$AX3q>(vrkF2yFL79m{+quND8**ZRP17@J6Z8CzqQ{S|^hdZDzI#W7Dc5KAUEa7? z&px1d5QWBx`XqtV1)d7fQUx19PaJK)Y98$|iP@%9dv$UCi_K7$$W#wx!~MM3(x|}< z$DN@I^GT>5)i0PcgI^&G$U|Z<49&o+=z85rE^ zt%O(hW!-|c1ucFec{iJ7ubyu%4-dQ>i=o=#H`}g%Z~*6#EN?b}BDHYU^Jkto3DiG) zvwLic_nG;2hJW%bkxR>Cdi5G+le~>V=3--6^lgUX~izO*viNf3GWPc z5R_8McihHpaptZL&k~BlM3bu`0sK-cn=0+1 zb?z~nO<70ov(W4N1d8dwBGYZO+ZjimH=T@K@#GyT*%H?{(>Z451}o+U$419S{Cut1 zysh8mJGinl0vdHBncOkG%L1!yl?RTG#Qmz<0@c^Sw>30QctwEs@{+)n4h)JP*QNK| zX8E0LJIa)Hk|stcCVXPme++;If-mHrkuBn`R7e3Sfrg&=Ek*2Fm^G8Zxq-ehj~g zn!BFMdjxd5n8THPKYB~3eH6ST>WOF2nt9+7sh?Ie3bgsSIcCT&p$RW<7&v;(20v#~ zJGku>m(gwhdzr_)z!Io-MSxSMbgymgkOj)KsgPy1(0PGuj;2)VMtN0_qS@(}(4w)R z*u$g|#png(D0iN2^(bZG*g?4m!juy#Y!jx5id3-)XVmVA?>sftvYdu(%5hRL@r6Zm zpw~s6hj_PC>cRNh%+egx8s zxWj8pE<54T7GIY8+xXqLBh4IYZ%?i6sJ`#NFZm3DHb zUhmI4(PPYe^JHJ2w%3)hHbt%$J}hFiCFAc|KM?8)A>3L&Fx(W;-;q2(@(aY?@x37v zl#ITxUhL`49e#+uQU49@8L?f|vHJx58`@I?{(bia$C{O+)F?+^x@`e}C4Xt23%#gF zEtq{_aS^}*Uv_zx=aH795<5@SoC;q_$5jBo*myza0i@s|(=9k#Nw64s0rytokr-3q zdZsLPmG#mjfv5PXwu^pn_1q6XF-P!yAGz zCpEe=oH!Uh%FoS9f%~GElV!|+x)xcOol6yma7X^cb!0wM#uu>7D~Zflpg&WE419Lr zJ^9jb$<+<@@{QcCJQ+Qge#0|k`@{R-`35o|5kz0gzmU79Y`Zu8VEP8bNtEyPdqj5} z{`F{a_w1%@THwl>!=C#nUi5FCZvsfxW!YzP)}Au^{z8BGaw@#~RG#mAFJnh4+oJDT zZ`yqDuX|z_PB`Q)MDc#^B7qg%lE2KW5VbNl3!Zay<=wIbeW#}z;ESOTNWiZQn(*GR zS9RhKzX;{gTcd=>4g%2HesTDVMDf9+Ihk24uGKJ7n`2uJVRJ9Wl3;hdMVV#QFmf@o ztgz0I&Xv!*#f_-H@Eb*se0#<)-5)i2kjD*xy1;VAgk>`KabkloL3H``?}L;IPh?-x z$=@vOJ&WT(ygv=457c$aANEH>78}Mau2TV+jE3wp#AZ;$PAqto4)w_srVht&7v4eU z-P(S^>41+N&P^Qw2qg`l>~hfh@;TT(NH*x~A2H#Ocb&~K0H{~ukgf8lLY9#PaOsqdJ^ z4az;Qr_EXSll}J@jhY}|JI-Vv8uW8BPQkX7w57ZW#`s z80NqjrZJ>|)_|CiX(H<30t2z&*iiLEKrU{`EtjFHqRHPwL9Yf~8C=})eGIVIyfe#z zi;im1X-t-x|Inv1sVQj%z*;zGrFJCHbwH0N;1OL|)DE(d(6UP(T$^H z;}yOpNNyc17r$)L-MKv!vVelxf;a5|TGt@U<#Wtdh&C4X#Oc>1Tk-QYJI-9lNYe2` zDGEF7Q)rH2vRRbS9YR;tsr%n#M&eDcF7V99l1@?$WVz1iY%?gT6R&;z93rGE)+w*o z0q4UD-Z%L7NyMEff+A9Of!Mfu=vliAVs5BLTEM03DBSk=S~{#*I(WG9AUuL7Ekv-V zh=Gxt@Z!6DE}#P}8`ClyqvuXR-@4S5bJmv{cE8isEFs(a%>Re9cMQ@kShIwy>XdEU zwr$%!W!tuS%C>FWwrv}yjIVCro|x%~ukY=N`Ts_~u`_o*d*zc0;b4xK0cDqupSg`V z0&9>zex}ogae-U{M3V=zDX@~!+}UKk#OY=zIa5donz}?;P_6KGObDuxt>~81B`0mb z1mrT!%^UiL4^j+)Q|rWfs=3d!-jl|&qxz3>*^^4WpX8O6l)xu`vN8MSxf#m`(==}j z0y{zbjsPT_E3(xG_~mK3#v#K@EZIeOZJ3@iu5B#Wv=V!C)|Cz>(b?4Aan2r5?* z%A*}zCCxUMH0D6%%z~8GFtc-HlF=v>K%J1$U=NDMg+Skuj7~3F#I&X-F%C4<8c-R{ zyetNq2o75Nh18URh$Zk8D-%v&^C0FFQx>;$qd?0%*-jx)K5}2;ez#gn?StpwvMJZU z#WybzE6Mz>So7@4XOgAtaU(u2U6HZnNCyOM51QH8N_LH!&PE~3@kGR21*oxmb>I2Ijfb^IE z0H;4{x&NN7{{M6zD*6+IW9#srO!6Y7?;j>P{C8*7Mmq-xXc&1w#P4Q?mBCRsNc5!E zAR`4sd;Pl-v1jU7C+mlG#Mc^OU;MdKyj?uwP8XJO#&~1qv#qX+t&?lso41SSmK*@w zKJvUUPmoPIf z`;7UdJ*E(=re*!v=B{kLR0}D!&X~7%!K-`kQ0}B=Q~Q#Eq^OxPB`7$f-rM>sij7^~ z7TBOYw`Q5yIv+1H^=w4q&DeQX-oH48H8)mdCE|DT9yXC$c_lxqX|5Gy%FFPwbmuoy zn5J7uU8j(N&r(bzK97+ttDCMLV!}YQ^Q=tn(J|7EAAelY6o-~;t10UNQUu5^HM~ii zC8WYMtf%gU)|Ph}83RqcH3YTtx1TslvMP3^<3{+AgnpYeU2{%*yJQ^dM7da(1{acx z;Y3u7d6?=`^lwmpL>tkyFrm~%CRIVy1hgEfZV`H}hA2deSz1VV@m_l3VDCBf3|)Km zK{E%Z>jk0ZR-g6TT;w476+bt%2IiVD?iiI5qj*E=+#AIz1O|q5+$7obPg)=~91wk= zBoK3C8?!rp3Bit2KqkiJw@AX+l zJEgHt{_2dX!>MXjiqzkES;R2kLYgF-7Z7hS)N#7R7o=SifU0&>_|4by zo9D3CU;mK@^%@f3P5pCU&;BnjPbvSWm#6Of|CjU?f&Z(KHGYQwF9eoQ7p zCplF`BFhVRLmRj*egdvdM!sGz-r)ddZbyY-Tc9^t=}ifvxkwdTGX{7jFSY{wMSeYF z)YEOwbwj%x^0(z{ZyJs& z8%fbmvismSgLM_lcXX~5C1{AXcXo^<)m$CYBjLOekYrJxAlx`#f%cUh8iQIM(#QAR z?(az9A7zJ~PsP|3VBS0j8`MIHj3n`NObv*a$`$4fY{BJ0U!umkEx>6$U9F$Y&e$4*1+hY^ zA^na^w8Spj&LC_OR#r1=(%tvs)t?pJm29YMi5z!ZY{xXrjXQ{m{u!-W+syHd^^cMZ zxQ+=8`SVIQ|H}+w@&C6M@4psZ6&*D!5p*BYHKP=GP4FUAYShL?2t19*++=wRNeIP( zQ0gL?E=*P_PN#;9hK{|_uAcmqZMOpu5uU#XtCq38eSG^#f3qYG8&Rl}GZWHWO}3xC zv!4x3e7`SFOaVym@PlK=!|ogvPjsc5i}>GKfP^?LnX~II-C6Ag71H(R zFZftHH`v19jGC809 zo4v>mqq$60)_VqrvlQiike^eYt9R%>yR zN7r=<66V2T3)+p?t7he zRDN~5F=mSSdd~;bb`MBs4;hClO?jT3tfS$5DP1A`-qSgy^rVPoAoXhHVS_s=b9bU$ z>ZlGcxI3lhKFk)PCjIx;y8UHXd-onNwA$|i?@(2$bDLP~DvC3zDi++J`Gckd9>th* zZbj~gqLn2AQkF4r>_O6C3XhNViJUt%@4(F>jO8R*5aqI69@*uU!6#4-O| z$vKL$GE70xyHlBYWvKQLh;s4kKT@m$8XVP`vh6ztqV)_X)%A^GRQ-NOxEnd;@k^HY z2r_~$xWmikd!?N2cK;eFB{c?djT@#q&9%qIBn79Am7 zji2QzESfv90TL2U$U`bX9_$dVfYRs`i|-r*(H;&H1TY`US;#9sD375w?EPuROB1=a zxhRuPNe^?r@jTi}gi-iNG`Z{Sm1sd)_e9B$tPekfGms*YM&l9nJ^A`8V0cEvd=7}u zkgGb*+9w#$QpTQWsanS>VwRMq?qh>p;4{>uO8oK4$aC>q{GtMuqJv*tzlN4P;A7Fs z*Llql|A?5DeXC_aN_JD31cp z83bc~PGA=KK7+^GFM!8Wsy^*#3hLkaMj^Oo)Shd?uv#lnkO^99ag&wo`zj2b8);u9lW84@t{ZJ1<)rkH7r-eDH10& zYc1{lz~dLa$cos8Sm>-C0$ETWy|hzx(o&g1hV=g8q!?F!YrwZbvzR?vSIY-tO~s&W z)I1puj)sP*bYBv?l=5Ma%Bl1p$MjF1^|jUp;m$A`q&EQ#*Rq8`Wmcc}6@Sqc3ZQMV z0ef(zi#$c@)Pc0zEEVuI-BP-$2+^-4OtXyy=<;2_oht^An>s>675uqh%>fifDAEUM z0UE-_hcAbLj*LMFAO)R441}}34d8&TL#1hhro@;Rs z9ZqZsNM0W~w^JcDf7F&{FG4S+)r#zLh+7;tCDL_rd;0M|wF@uVUBU1<&PVAd`XI8w z+}(Bu*h%qk|1_G%f4peH@65VFtfLEF`Uv`J0cB$qU|y*=P7Yq%3w z#0Wv(oB|oA6!P0@;Dxw$??%xd7A&I8Cr5fWG$PqY6av|(bu&!ooSaQK@uNR8&amGY zK+XB$&4`UjJ}p(yZa(qH76kH?QZ&F)#;#DmikQL{E{;R3M%e?z=W9{J-=Gz2*a-d6 znllIJV`B)3&n?KgzR>=$`wTA@k;i|Kk-@)|YyNw%|Idx`&mA(PBqKGz5AUsInQvb4 z_hPq8PsC23^N0``grGR zW}w@bw+E2DFFTqBYlGFr>XK1it#E`L8t9+8>KU58A*4s>3T)z6r)oX0%ba5W=JBntLGiIxJkBnH*KjST;uT*zz9!BAZ8+r*e2;j@_wN^`Z$~K6!Y1&r z7RQgQHk;(s3ok*1yJ)U0w@NQYW(MW^OM8p7yt*hvq0e_p3|Q1unD<4GpWb*ZWNQ;T zx+JOUq*%*1H0v@z-~|S6p8!b*SE+0r>k!O>LcfX2vOb1WlbchI(zZ-!r|jiA{-t$2D| ziii>Lf(G@{Su!iSmaa&HNc(ZW`>F8P3FX~I_Op6~IG8#bt1p;cg81u?r#I6)r@Kr? zT)$o}Qg#3`M>G*Yv?=n#f`LNn)OYW7cz(i2pCei$jtI9$BBE8WP_R~jFLPBA>N>0s z+WCESL^^z^<=fXR%Ity)&MP#C-W<_d_hNOVj&eF7imL+e45z)&$XjFErZOZJFY+fIuRDP+wwHTeAIiEM~ zTgO67;{EBhPVj5!L>bC+Iv~a)yo0GrO3 z4x6xV6zX~dzxSXD4{@@muIOJBcgFpD`qXRkfjj!=vTuQWzf3`HJafzP#aR=Tq%M1i zgxh?1{bS$Z^Xf}91HZ`}Btsz{WqOb65H3Ti2@yR{UlOeEDwB(Y7^KhjJA<&$Y4Qp~ zGd$P>6tM6TZwbm-El3va6?gjy-sn2E8w$QSbpP5^B-LnVT`2R-gHOWd;_tM292HFc zJ)+D>Sd#oi@}IkgnueWlvE1f5|0^8IA}h%`e-p+u$>xYNfhdkyt%u(tO3@n+t zuoYbEFf0n!k$l1nx7dTpWPL~79&CJ_M>UaW-PcMT%6#QUo!+H(L^X1J)3d~jzp6^S z!fp~@rG4ys`b)4z%R9uHQ?HXhbvf`O~ zKMt#J#{hjPKW-ifKbhSBJs{%wx7g+XclZBqM~^I3>z}|ZWFMP)eTjOCutYQpYXw~- zGqWL7$a~GwMu^5BG;>RPh>coiBc?SFt)5q=k7IV(_aeMS1!PmFbF{3xlb1Pr?3uO> z38l!Z=TaXOslV#lak*6+Wf2mqR^ptq@v2&G5BE$D2CiUGXv~!NZit* z48dpM7}LTC{U|=^NBS`-YOiO%eA3|#Fsm!X%fu_x;Y-_0k8ui!XS3=h+X{6T8#Y84 zZI2vG2u2=eWf?7#q7E|~u}ESW8uU01fV{iDwBJ-g5-}_%;7g^_Kn(S5T^Gn{E;8KL z&BZk|czViHq;)+rA{wmMfrx6tZWQHYt=DBGW;kiF#qg8+bVFcHpl!8sTUusn25Y;U zR9uvFknD2p>OmAKxzvo{?ly&SUBxRQZqG&@8l zNU{7QzZmJ2o=WM>Jb0_%B99hhZ~!@vGMT=5=132^*uD)W+)_6jweBXfh4EFg5K&g^@q?hxHs)FY)W6$17l?T zrADZI{SPO2CTJ-hvKb!eF9rq%%7tBxKUz|1Hl5qq2bu0Lj|*SNFZi9w)2;;fgS+~@9^;V!*38?LR0}8=iCCeJ$t!~b|iFl*hMNx zS1_;GVMfVfD2*nWbSGWSQJF*8j~na|&enyByBHIXG2Qckr}GD({!{|L!1~uv0a_d$ z?;=d&JYFcMK9T^^-%z-G;V4j?GlU@a5WaB84!gfo1cd)0zt5$4WD>j(*q*MW3YX^G z{wA{M6b2@_H7{k3nRUZ(Mkg6FEY!yyNbM#5q|*~L9dki%O01SGb1aX~r=SzjiMOk* zE=qfGQG5B4IEI{}n#8{g1BV*BD3@|$6fj!&6jqaY#>-WGji7!j5=qha^+!z~fV%S+ z5(dsDB!;szMqkbqhe1Oqu+K)<72>J>ISJp%D($1fj}U&MwF{iv#OIT6j?GRpdM_6? zvk#@>f8#3R6lUo^&f!*Qmz8SYDU)_i*k8SmWjl}LE`CSDqWmiP%GU!rIV5TLGQX)e zto&vx9XBNJBTL%sNauZ9Qz7PI`23bvW&))FE)~nE)g;VYDDvNsgXH^ zI}Dp;&8II@xmLnBsi@Vgs11PMlsbtO=DfpJ%n~mDri+&mhb6c|m?sN*+&vOUGa_pf zw@GR4AfKvNhP@L7*va3U`#!vEC=ao&*;L{Rxz#Pg{AHck1%Lwfyh^f}WKCHrEcjwp z|Mx#kXRodJ9sm4*9k=x%%;J$;u+J+e>2m0-$4N*vvz# zMu1ip78GYrg_r5v+kroDoQ}EBY|>;(OMCFiJn^1>=w^!b?Rp02B|c`Pw`YzNkT$u4 zjG=gN1FhL_qQ)bW?yNRYK`N<_%4EF@;aAnwaTRi3(@6j_kk!N2wAXrt@E_BJXQi5M zUr>)jp)+IE=_%VDQKgE;PfT*vri<4%ZpUfPcl6LXx>l;b5gp{wUHy96&-Y_MqD~l_ zPQRFVeOix)rsI;rMi-E)hSJ*DJw!HlTnZ%1V|EjrOgs-=DFhBoCcS&ENRZkZzd z=0cTAuo)vCW`T5!(6wl@EY9c}RnKca*S4p;8vP4?&bF>k{#lw&>>X*K9I4ELGnCvr z+EWN+gxR;=K2Qt{1ojQ6gO)O}v@Zha*k%ciy~?SfC&uG|d86yFYzPQ;=xIGtAn&=) znJwgxnyhLZIJk2x4lMcB6XZrnw;XOLVmV}9<)oEDO)l#jDdxLRDMqCQx2`XwXm`Bf zy^p8hNqtzm5D?8KlUYX}Yz~F$lA2maABg~EYCk>b?w|18(Sl0rXY^!SlpL&pP24p# zGE1iYp_J=Wg)+uczRTq^`T<^+d=WGaP+xS96E@E# zzL}rYYjd;^M;A8V$E2;XSyi{X?#cbd+FgJaOby;{RE zW$JIF8%6augSTYfo#HE#O5q21+dSyJ@iyBZNf+c`sfY=Ekwc^-#xH!v5ayhnglRad zT_V))IAc7e+8p`88S(=(8H+}(LNN<$x&nU40pud_-+~KRLHfsoO3-QK4C=#s+suWH z)f^(iTTiF&cwVb(g>MPn=A+J1Yf98SxCNOprj$zid5l=2HlQz^a=p^AmY`zHE5MYT zzCbhQce`l836$?_|2Tt&2uQVt{{SAse`#OF`acCc|HrQX&-19dyPLMkPZ-vi(YDbs z%DR7X$S|u;=@{|VBCR?mc~)__OlBcTLSZAw{=}j4{rZ@6rh7s?MMs3Hh)6CqrHz6x zwYZWLh<+_= z)o(^$Sn{QF^CiHjO-;6k9Bzv&lx{5g{b)TUa5Wa}@HRKoM`S<eq%G26~IbH|b4RzEYO)VV~76DuO?XY{g8 z4cWw5w~>V1yXYyJxodSbThqphw9YEyO-S%bTHPCKvZZ#CWoou}5TK0wJDILKnJO9` zha%BjZe!RC3jcI<(u^o{AyI?gs6xiE!X(-8n{u7F)I+mE3h!5|X&adh6PMLp1nb`M zwKQrS4fqXXXsozS>mtIR4{_X#$y6hbLX2)I+XJbb+F+H@dhLUT((b(C$4OT+OStrM z)McY$BVoM&=3@To(1^daHd&HFXAT=WtDzZgBTQWutM;f?bePN!mn- zm4Ah$l>hp?s$fmUMBFMn&2c*}psiAI4tyqV!@P-@PwmX43rB8{L0VAUIYWJNW=CZI zK14a&1v6>hNo>ecHNFs?q#aNESN0Iw#FLMisaD5op!`(|&W@>Xr>O zh2d){GxuKa)heN#8)9pc*S30mNOF7P%C;?AeMb=h3O7aIg+15A)i92TRK~kY8bm*z zjHx$;aaM19nR_2n;5hc{holCzJZq}dxFz41(>MlW{V+b=XB5OHyxZY7Kt)BTS&=1v z#u|~W&w6hNse>dvy{R0z?rz$5+Ca@1z1gvY=zLTo*UmRI{9f4w(kdqie0peFQ;D@` z8$~RHw1$80aeTPby67X9NUO4B7WGZTyB>yYx{FigYU0vzlcEQqF{TDfg2bxg+1X@% z`ocI$U{gY}a&~Gs9Ufpx2W~S+h5|Jinq@!OvaV%-0TAPh;P7=3~ zL5+os!w@&D$$69C260?ToGcf_fond|Eom*Ms<_{JdEg+?L0N2y3?-)J@^PDG5xN*q z+59S|yw+NQCb3BkZsBuIoQ7D*gdxLS@{p4skT+8-l@Bb!JojNFugz z92dMnyUoGsIrk$f9FRgT6sEI@gpVd1a-=Q z#N*7{H0BVKZHl* z?xL`LiVsd+f{naX#o(IHTg72}gmp)1ZY{fYaC-V|oj+vjzi{OsCNaL<*bb|ddxRHD z+TR|WxkLF*-N?2@;IS;ITb$J{W)dp$LKG@Yd>8M?%C12;J}@p=K14<$-6RGkIKLv) zfRp9WfX_Uo^^Ov!Mcy4;lIyOqmu}1XKbi0SdOOD)kvIGj8p?V}iXvt&E_>8c;`s!8 z;!kApo*#lxlW0d8$G8$D#_*CyA}51x7B6kFe}_Wyr1P1sU)vhnT4w|q3tS!MC$48YgWTO~ z1xrxpSq+_Oi;4QgFGT!J6E7pgP=W*xKbfZ-4j%+NinwF1vO4c6FSoafxNkGU!;vKHE$hLdl zP&={I;wkx7skE5FDY27VaRcNa^`+PP1uu)1%5SboQRTD>DH*6eW4A*z(MEO2L8(xt*p<{nHWhCUQOKlt zHN82JZ~LtfT&e?@b#T;p3aRN%g14>0p0VUZQca4!ax0)SG1?V_;KtK@AR6!&_ecR| zM(sYl>zBrnmTzB+4_kn-(X`()IVHLj zm98GTr#8fMycSUNeBV9{gRWpwFE2HzeR5#%#rI~F$ZRyWr)sxmjUtO&SI@?ah3yD+ zc2*=;E&7kPWLw1Qn)Zbg%@oy3=M3{ejE9!UC18~!gp*3GeOs;95!nYuZOPsrCehNB zZb%|W6;G6fX$DK^L6qUQ?i;yj6Gzvk7tN?%7u zh-9gBWuA;cH4HURKm^!bF@jr4HBHTZxyBW^c=g}lrOFu3y(Z01gcqSb1hc5VHGJ{Pss0l+ZdWtt8fw-x_;H%cJT>G|CjuBE!8>rNa}Y zhH$N*HT0ai#^+yLOly3JS6uFGjWaU0@exeNLHX?%?zkd4GgfNFrC8$b6waX;P!$+C zvb2>2QCJir1=&Y#Yz-wj+ytVRlm>*h#8G;F-e*H%d5%$(l%sK$Trq^bb>V8oo{yw- z+ZP62NIf?P-z@i6Jvrac$E79w!y}{D4E3f_onbD%{9Ef_Ns|q&9|RtDj<9&cVh%6l zHe(DhURGQ-#)D(?$9vHL7ZqPH{{V(p*OZA(Kha&A=>Mt{#`!-5hC;U1 zcK>i#HU2M+a1Bc*Wi^Z~SH`pq=@9r|!1MX=xaO(E(8{^if)oTWG%oS-f&#dxwxnzc zP!C~_w)4eJ7AjsF<$qPy^Ou_M6i{kqz`=RTMJjqKooT**Jp3(RM@AedQ0;wBw$q3c z{E7YAQ8PWWch)>}ZoE!1lGMJu&#C>e?jG>Z?bJs?18(>1C?s$9@OcAbB_9lpU)Xu` z4iW@h_z0uLie3_tbCUO&7;jToo;AE=BW5mM1TiS@L@+$HBZ%g`1TEx}_ieaIrV13_ z=)d~Vgw-5iDH`6%aMv7YaduY;+%zG^r2V8n z3BzFqiW>FSA;y&&b4_7Nc2v5J+kr9`hh#j2u!%0DxecDO8F-rz$Hk0PDQkCMz=|52 zMPaO!U$WZfr}c_b8FOSXBQI607xnF=U+49;DNq@^KofUNP0AK<^<|HnahedjU|>kC z>z3@CHH6s=FmJRm6IPuW`K~u(FKp-zbhdlx2IN`Xs|tOtT^&1dh+fKf%+;)O^Wf~v z&1Tvf4PP2JC>E5AT+Q0qZcVCIw<~u0>)MvAr&$*goL0kYVhUm~rQtF+*h!gj8nT2!Ogq`f?3$R~UOLra^mssW&vr3=mfO=>*ZXtQkA~^E(JX2`?>sN-k z@naJj6Gvd1(c z1|hM~9Nmgx?%J~=8g@JRyin^2O4taKUbgnT%s?sGJoOF~dRung*+sP33Lwi1#LJ~6 z@ozyhX0fcR52!r*;S)?sKHvIXg+37 z{S4V&_E~UnzD$=2_e>7jZZO75ZKp~!iorLmI7NoFOUEF1OsB>twmB%x39i&_Rvh}4 zV%~9|mo>UC*=A!5-f;1pMJv=GT!Obco7y1jZiD>*I**FyPxu%h!sW-03nUEyb7c=A zh1o_4T*bu&~A&(VT z3}8)YM%XA`PaH*g7>ocrc%m;6dK3A2r>B@e&^ozWRh!qruVHN*$@;82PDL#{Cz>u+2F9BD+jrG^YBc1B|$L?g&B*2Z~7edH>* z*$H4~PBhll0AfgIMD?K@i#6HhXZv;9upYsC@@m9(<3cRe51dlvq0)-Qem}JP=Bzhm4ty5f>`?M4_Zm18fnJi;<2jWIr=24CI9}w%gk-# zD|zK%()4WYT@O8CcwWvv=~VRLYHOzWgH$9@v&^HhEH$-MR94tt*qv9m{#%DT-FiZ&rrg{Qdn&60rSWsK8+9Vdh6Fkv zE6Jvve_Ur)_HuXwC0O>dPZtG<>umCU$=+ojr#0oU&;{V;P(5ZxH3v zFoh?!T3xXj_m`Jg(6k}#CfG>Rf&uWl==d9nb9zx6*|@7T%Tl455~0i%6ID)iwW@)P zpC8bLU#Z-GqBy%nbAF^-`8vWlv%3{>V&6Ntg

    W|Rqe%7(;<$_3dO%Kq|g%JDy- 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�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�_=UoZ|)!kxy3R(jmk{!+iJnEPt<-*LAFA#qFTmT4fX@| z!IqnpZx~CPqN3$3kl^s(d=`1fQxw{cB?IVOnt$C(G(3n46Cz{rYe$L zb1lhH#Hf0p*N%Ixa5A*GCEzJp=fajTRu*eGP@|!iik@+zgix8Z%3PQoECjE=?KS6+ z&&^6#!(0G{W(5jMNG?!G8te_J#LyNv0`{fvrokk6LsH0tj#6vOTfOqC@+;hS>Oe~N z6vQqS#d3H7cgWS0pjnOqE9}^e)dR$tG4==MHC@QU6BPla^5-LBqX|I{EhvdJv@~LL zzwG^>`duX~u*lY{-S$W$p8IT5@yqT>b2&2TYhnjLJ&?y2=-3LkG>4r+( z!d~-6A$k4n@K_8(A9?~p zYW5dq$Zl5M$D7vTSV6}x%$ZaOH&_yx4&ux+rZMyFJ{G|2?M}BH_+x0GY@nQ+hn|Qt zo?GUD(IY_%?AZwuOP(PoU_cG;^f<5VF9@}}3XI3&O8~Ox<%ldcMmiIjiF=2uUOu7k z`SP+?dfb9o)?)ZT$;V$RT8x%2I@ULt9E;++F$TDL660mW5{%@@rVEW5=lyq`_X1(I zZu|&gv^b)+hsm%k$g{Gw_!u@?R&LBLz?#!%dEiJisEz{%f>8c4%5u+Wa7;T3Hxp(C zO~VV|7DAwzM<^kJifVvyIMd04@(9H@k)zqtWy^%$L-2@4LSHr~PgciOeq&M2k+_Zr zGjZoHFZiEmm?o)49TZj5r6lYh@7oSVY0r|$<~#h(-z&^}pKq{ipz;?TowT}3@h1&6 z*(BzkKz}6bAHT1XKQwwHGo2$0(n2ixS{y$k1p9U9#lUJZY@sD4t4KaeO>Sd8O!lV@ z+as^qtC>rIXw1W>RV(M|DF)JvxCH?J$D3K4y`33pcMIXN=#|uVZVRORBm;*jK3UBx zqL77Hh@5*iN$SXLdV400XBCY;j&K>j9yrGzvlST8+Ezu6K0TN1R$tvOiVrf!q&kcd zXZ{+@s{M(_nZ{V}%8tEIIER=iM6Gqp-<~JEwBi=MO)HqP?G4aLk(j5-tl)1ciZs`S zh|TpM6IxbXrFyh$d3sPs<*5@AAV%d!co0oG_Eu?}>gmp3G5yAx{Yrw1=_nH^?K;h!7z@n#;n4{@7hD3Rigtm9H5R#uyc3b0Y=dGxQ3G zz7e)%KL+R_a_dMtV*n^r#Jx@_Ap^zP8|0%f1>}C5gxL2(1xyX~Nk76nI=veT78NJu zYyhMRHT1$>qM~++d48l1|X=yB<_{@4_kL6h(!uo-Ho+e^*S zDE5Xl0>T8y$rh!b#hXn-8XeV?D74U`2gR5H#rrieF^fu{>^P!q)^kDqK)(LHO8Xik zbF(@hQgIpG>5c}Mcr$j`TGxHL<*$}rn!&UEG{`)#tBtt3{J%iIM22?{ZpcE*UOk_0 zILe9i{S7Gd&ry>Jpf0V0E>#fEq-K8wrZW5k|Cv?e7)a|7Bs{ z#Sm>sZ<;zIaJ3uWLB9DeVSX*6U(Q+8J87mcQW;xr4NqMmdHXA>Ns%a%?p|*VuCs*< z)e1sQxjYmxNQogD+Y)n>T3TiyNd?>eo*pG>Z?Vivu|Ag8_(H+Do}s*Lv>xx=tgFEUIYXdXmLbD$ zj235y-)M;(VyccoOw9GPszmo|ejT*(Q4>iiym+eV5GtU=6~syDV?SJ4avIzN?%+i{ zR2l$3soVbIIv_Y6X;%m>kr$;e_^U$*Ii1?1Rf1P4E#s)pjITums3{vf@N;5cTb3>AN`6#oZHxbDd|0@Co^7R3Ez;wsDnj1@->dyM6C?gIej(&3l7E)^DK?8n+(hT%<^DZOGfkZJrJCL!gF zT62J_&@_5)$IY2T-_GlF5Lkw$oHLP6R`^w2xNndti=jRgc?WO6L*t%cMcfJi}UTiWqK1?WWr8rLXUW&ChHajxyE z2--b~(CF-4Fh!M0gl?#iDD(7&eSLZGCEs}b^vmVlsW7Q$N!Y8}JC)v^d109Mk-P=&sDuP6+_#K3@9E~Dyoaq8l0dDcF zw{wHTsN(zA7+eo;MPsk_i+6DG4QZzLZpM+V^i^-dhA(0Bx6IcUXwp8fbWaW4o)Vgc z>Zt`|@~w05{smTIEwmz+?b#o4@enz>;#A$a?$3f5vs9Z!aT3~>KBei|#iHEt!9_(k z4SRoSd%=tYe=lOx5lVLwSSbczSq7yXB78fQ$@=?8Npdc4k%j<7MUVGje6GLubzIu^ z60($yVpr=$F4RaAj(Jk)oKUj8bPTfJYYU5v3DEON3yYynvb_vNrKOfRIqnj&tqBv9 z;(wNp&X|wRng?$m^OthI#35u?i740NfBqYC`&gNqR9cJITuankOCYN&ozr82mczru zAlqwlcBVca@+u)Ad$Y*>*W-L@8?teH(llpbvNgV=HL=4rK(rllgu)e;(D8;)42O~y zH!$}+Oa%_89iZrbist!^62zRX8Pwth{l0NsX(Euwmv`KEt*FXfw!C{6$fzrxAmR8@ zl3|ara14EPPdfWAKX-zOsyK2;4V0Om3g%eaxqo|gi;wgl96tAKCT@|89)ABP5-Fvf z0P%_0d=YjVh`ROP6YC+vrkLeME%17c(Z49MmGF`*Kz=HqNrtHziIxRinRvOF{#hpx zfP}#XZsiWe$~LZ}If>`B3$vpwEv7q_6DMAT2i0c=DKj z`)qG1-g`UD4Y5&@3j!}aM5Uc@gGH7FYcWU6j<#r_J(ka-mA^)(riZic9DXw1K$(@{ zBRXs!E_Q1j;yS#)r5DRd){lW=f-betK{fzH1zc*xTd0D706ZOswKhKG%2 z>8x{(S4-qIRWI^f_@Qk}&n*|rwbc^$8*%69myIGYl$VU&%x&l7GN=1>4k^m*J-2mM zw#IQ6xV6S?ckluer%D`!;- zubrNp4ssbgeb83ky13_*E)bc83rwP1qh?>0w(V+I4Poopy>zN0=PpB<+~|=L{^GV3Gy_ro;@Lad4ou2lPdIT%B&<$h)wUwOTLtu z7kv?)I<`_7&^($ZeQ2sJ#cXwjvb;KooXi|f4f+-*ur5f&U)zA?g9N`ev3(@&vcKQD zj@@}Oxel?a?cju8-l2lAYM&ngsY?R%1n5?K%8LlzgNK$Q!_co{1N|%juNZEpQ_ccy z6k^OGMj7;~2Sy2h&~I=1r4nger$ZH5W)?g-B+;f(6<|4Ru|~YompUwLSEvTsIqcD< z47>+Z5AYnp;-+8~AZWmd1&_~0!LbJoA96?lcoRm}MfrL{x;aln!{6G5G#Y`;Ca)Eu ze89-2tmV%*l*}fn73?^?tVUbYFH(<43%9yYQV-c0c3~g-3aCTa6UG`wyC3~{nR#I8 zme~gW5>b1YXaLJYY15xNeC4LK6>b~ZdFy(h`ATX}`=xz394picc)&xf$(0uc|B-Ze zz$p>@TEn2sRW^kXOLh{5^M~s$tw9J&P9>r=nfV~DLB~sXo#N5Svn0u?Lf(gR6d(t*w-CDwwe$e(mHX+> zArzILYkBQ2Q+=FI|1yCMi{SlOp|?E|E-2pudz?1pTt8mKWJuRJo(JxNd%bpoJzAkZ zb~fTg6a|k;!bv$5VGD}L@){Ke=e4&#tH8ec_4+l#Fpc6WL6EJjnLGg;&Nx8k5X#ZO#(;M8?Ey~-r9*+# z#tT3Mc|9%;p-BpS?p@Qkh9$2HDkgyJ@&P^jp5abrv4AOJQ``jF;!%*=ByMWUVM&oF8{1NUD%MfY@&<~i? z2z6MiUn8TO?c$+Sl8{1SZ}>~jmd(G-4+zdQ3RlLKoCs+*UrWhG&};V$pdrkjG&M7i zB@;oKX{#H~e|bsp`959hLmkW}_3RK<`TA4cv4&q^S$FtX_o)>^&eh;PBAu?Ky(gl) z3f)zXBAdb_gLj@zux0y^;!X1N@PA>)z&J!yO`0jc@B*R|qYC3@^w_T>?zX+MD!d=L zGiC4>y^V4~pb}@NZk7?$vrB>KXXJ}vRNQak+{*@1`Bh17^sIHI@M$GgHI1X58JDNF zfT@G(|D}-4LuKK*s`Wxzc}s+{&iuu)DKyq19iXM@9uaGkMH^KO$UlVjc-kkhTy(U%R?GBUKNC2>9PJkzh0y{v)l;t$ZN9rzaw*ml-;dwLb7g#NZ=Vs&QjLI?Y}9<8|kwx;vN zF|7XfG|9y=k>-mApbs{{Zt_4!D~V=n-$F;eQC}x@wWgWciRxMFzlS> z;}z0o#YGV|yf^vuiMWU(Uhv!X%Jd226zZHhazb~@Wynu*S|$7T+4jjX8pSQ1xO5+D z=>A2sDM>;e9FipP_Gh{-KXM3JKAUbWL^Dyo*W7&2;84)Qmw*7%Mp{P5HW7TcUPdS! zw(QeW2oeul9DV*dhd9n&%_13|Gr_-0mXAjaAjmhGuae-KMB$`aW0&A$UdHns@p<@u z%g`hF)Zbe9@9%|x7eavDRo{pK#LN}G;)Dce8~S8pRUO}{8^owA5jYdC-$vSHH89jfAvD+GJ*lw+aG zrmL1r7Ro5Rg?{0=2vfO`)^XWVZ%d8Lv%$g?i)(T5i7O)VBYkmf z4jILv0f49?(fRj{C4l`H2&oAxho#72bulNppoy6rP$}IhKB^8$QgN$!-0j&mQ0dAN zB%wu)>AySouHJa>YL@hVe?Fr3VXYv_#fuX}ii0THA0ecTNCE1bfp3jkVL9H@(WZic zxPyRzz@iyUmKb})q7S5B!U!5I*Fc1PHJFD-=um1Fkk4Wp4{b7P zhZwB8Kt;2*^^i7YSfiB~i?!F)p0yAvKl|^_wQ!BDa__<~Ghg31qt{N%l1wr7 z++wtjd{5#f1l?}Y$qZR3do!|cM)fD+fsb4TXE{qUN zg$jNsmfoMP2q=g!=2EyrlSSfEmLG_~YAg(qtB*iNwnQ^f<9O+!FOtdl^m5fbUD{07 z8T=bVKfg&OxA}jO_KxwLc3ZY+#YV+W#kOtRso1uyO8&9!if!ArZQHISC-2_f_jaG# z_w9Z9e0@GVAJ%WJF($^G19k_OEM?4SDl0UeLOe4|R56r|x2gpjAVOcZUhw<$0 zhfdlA>}}&%L&d}1yF&sry^Y#&jhH3vevkv&oUj~640{JUbpMh;GZ*I}kA2BR=>FE5 z_+J+Vxqmr)TgyAx+8H}InHxL)$CpzO|8Jf>k@4*L=Exe*^#{|lN=WiFIjUNqF^JG= zHpN&8Z;>ml>FhdVo5~ZKiByQ_+}{v_QW}1-gRvlm)pxnNJbs#xJ}%j2cYSjUGrAq3660~5C%D5z+F>pdE6Ytju>zC=HDJ787 zTP|w@@#)F*ix*HE+Ml!dgKIDxDg{{3m0eBF3aM8nz||09U;vwHZdzVg$Hu!OxAr6L znJ&>)>L~m37zF8TIk^hmYs55uF(!XmYJVQeHVf-)_?Q6?8>WBZgk!;h#FHv+v7>@P zIU%!m&xfNebg%42>P-ec=oH6JR)WNffBW6P!bp&mB-(PPEJaj(d>D0^e5F`znmz8tN`8omn-R7zfbJfJwFm9?9!_5EUO+v69;JfK>?nqD zR`8B!8Ny>YN7|ABuF}wdQ8J0YReZEM@bumxd!CSn=Ob`^fuT*332rnu`{t+Qlq-3y zRMuO`7U@7(f5{GMg_Gy0RaR1sAYM}~^eU^W(&hyP-H(a%b~3=y3)xi+q1gU4^#KdT z9>mn^FINaxrRa!^x5$h>4bEt1tC&UdE4+(KGB>|qDAulj2(QNj%?U8RuA$!FuC^om zZ@cL>#!ml7YZ`g}r9TRMHRc`k4V{#14K4rDaNFqrKZdCT%4f2F(E$LhG2uY_>7EVXkgDR2hx zcUVYRaj>|BB>S_ANkpT@0RM4#-!Zs=2q!o>`sb#LS|dpJH!z!n$Z{uXs;WoHMj=n? ziRmO}8l^&vN5Z16d&D``MXFlm*g$9YLB2%v3 z;cM+SLgX1Zqy_LZAA#pmye#q0FSZ{kWR zC5lnovIHKfk%2CEM2P)L1)EW`daA$Uha6@ONh&9 zcIH|7V(-F--6s^)>I-e{$Q^c>QI|D|q?L4=dq8F%hcRD?PR#O-O6sCQd(;$@?H=9c zs%$SqGNdy^bBhQ7c6plJ(;{$fl2!ZP5u=!=_waL`TEcZ~@Ow*vhM~*w>`W~{(lq%; z^!yHC>R-R{F{cF^7~b?Wf>bX*^J*CU`tW`>c&~W7_H|gHon_~r;-QcJhJ->Q;RS;s z9QM&&IwaU7wj`#-qsaEeRG##vVBM(ub*~wp3$%l8aD>Y-k>x@ zF>_)Zdz0-8ZhcySG4d|*PVz+LP2ZT7M6=ih_|!?x$BS7Q3oKn=A?Pw0NsdjDua^U( zLh|Lu)h|Mf{Zo8^VrLXXubY_O_?pZYmS{S*mzb83m~+QZQ|OFNr88f!r}Nfj=*R1S zpAYYX6q%C-t|cEy2<}NcmNw_$1Ac3+E0FxSjtN#HCC@o`B2g>myvRGWc=}~pbn_(@ zf`B9}IJX@BIt95eiRS;mbm+fdp7$5n{S}^?I_O)=IXl@oJAElNjrFbnU8QO6iM)jB zGel%=#Nb!+v)!N|MIuIIA8v%VKDZ)YH%&}zEwQ%M zZMupz7Z>c~_;!!~AhggQ&i_SDwr%MsZ(z)c&*u3H`Ido#h9 z%+JlRp1}+|Opu=-vaky6m;>$88Px7A)aTv6XmBWo%aJ4?1sIQ@g<2p7wQOQAVsD03zp*z~`rrX{i_+}ybWVG6?b}D_2=1XI6tHxaMuHfM|v})uB zfmvD@(vC-NL|73cVxu(SQXedB>dsE0=oR6xV~rJ^JOpd9a5O7n zfXe%T_eLIdhd(`cjkZVJp60U?)SR7e)pb9oO5`m*3zfsh%AERJPCUBX!VQtx?0S>nb(92*KBg*plZF1C%{n|+;enC*dd47|j zNn?CasuDk&thYIz-DX#5o#6(?%Vd|sYpVN*w6j|quFA*t;@n|HKVfs*EK&l3(U}-& zbOVlk3O*zh2xnosMH}5*+^UxbwC`uNH(BR`^tvl%FLtxlE*LC}BYJ}5w3qoV)t}jZ zIpTpO`-Sc*=|5OcuwK@?Y|j+{rBB^1#)eVr9^7@0^+zWfW+yB0LQ*V)i)ECIQO`>U z`U1~%9&9WP$Ea+r76Uqkev4aDoR!O#P*9OMJ1fr$Q|#a{g{_V5F1DNUA0)4zec@v{ zcHC1BX+*MYP`<(@)pFo%?(7yGLa3;6wgzk8QA-9H%ay%?6U`fVrgWeNondlATfoTn zqVv;mD5Axh;1Xy~)u>=4hDGNU%iuo13NL+U@OJng@A#+@g{ol5T5PzZg{H5)Z)u)^ zo`SI-p)RAD&uKo`P4?FgZsZee!&~>7i{I@cv*ej2H{zcOmX!P+X$9%sUJDw)Cr-6R z!kw*9TNh9@M24~406AdHMGn_ zlg?8AKHw3-lVGDOGK6;E{TX=+Vz4#lb&tG)Ds7m=g-eHYAmW4eji}!XyuuBv%`VCH zh}_eEHg8-nP9f5sM{Z(l9=FH^n(dlM`Py(@6wB594yj^%wwJ=kxjkYoME(xrB1<5} z0o#;qeuawL(C7F>h2Q?jt&BpJaU+*~q^6R6#34kTUpU9t9tv9=3u6v8;|O1z4hNsj z?uI>6hj18;0<^FgCGJ)oq{G{C`IA5KT4Vuhcb77rp~O$qUkg`00SKOgUjcymEsSwl z2sD8de|Mw#*16#DjPw_BNng^9jFZNd`I*<%=DbsJQH6|Ia}fNgBiATXtZf7My+4@@?9^zm(XXAw)}2L-h)BT8Fa)4MJ3=hZ zcj%P}zI+c!Vu*7xR(SD-QNj$@lRBrBdiRxqvq(h4M@~4VD~ZJiGK7|^er;BDp`tU2 zKw&{d1%2TyB${pga>c__xq&X_lY5C9It=`R3pV}?=aHZiz_d5MzIaI7cx{3qVsq4{n((rpV=bMc^S zzEV+TxWA*u|Gtd#AF1&_MeW24|Hh7y3^u?5up(Vh`te{CnnjWVnF@$Vxw0X`{)%?M zrq$rAeXwb`4(!nI-8qOlGm83SAFs6!A17Yyz!>`Szscp1Mvd3WsJ5`_0+;9}&yj4C zXFeo!?DWV^Iu3nF+s6YQYF0p-V%nq1fW3Q}Nlo2`TxbTxj_y}an^{>&83bxuMsR!( z`7y?YV(w2`%<~D9t>bRWW3sn2tVpFVVT(6Wwt5=y>T@c?#TIBiTC<%c-*XmKmT8=r-9~%td>*L!|`va^zdGoB|8;j44cV#sT zNDgvvxE4CRTyJsI&2C|OIosOufuM(7>i#0$=}Lg5o0T4t1g;Xe#*Oe$JrHg*VT!`N z63aNN0etp}TWPEH@My{0$_Ap})(v@j?&sPFC1;$J`YbAxm|G}+5YJI6 zrlDD_Ru7ND4imF#(mX35+pq-ZGnVW&W4wSTxjbs&eB}Ft;f+Q^%ost<#I%Zw^azhD zEAGo|YNF=meIrR&77Z@a9FESlr5z=(#@O?YjIJbg0yAYhTk1%&LAb?&s~hdiXuqr=op3x<70(=CC>)PAB)niMKcw zj@=Q6bXQ)}rI*$g#FTd069N=`=GihbX9rUDb);2~+OZUC(sP%;sDFQLHja(U$`LsI zM%9pgy@$*7JDSxfD0%(oHMX@ae^FTW0<^9tdpY-cRHh?tzS&{Z`>O*uCio<)(<}G% zUkS{C*#6b~+nnBu)|7hwTvey8Cg z=(?f_SsoWobS~3%ibCQIrfD0$e+H0irxu@Wh#jlFLhg`8KJYSyYci)913B%06ptlx z${XKpg&^V&Kj8oH`ewa@zK*v5FYgQKZHynA1mMB2h#bbl;;L7p{~9h1Hq%hBdhHPE zqNZ8=V`i2lt*&Al+=f&y&l%pIB1y->Sc-5T_!^=eo$>q5H$3k(wtco+~ zui}qA?B4;u#Qz1R{TqD!1#SO?unJ}E=-IFFd!ZNg-_W_0t(9BNf(qfSp$Jlo5Kcr; zry#8}5PSemih)^zIfH%(-&lk+acQq>i08ZrS7`8w%2+G$xt1o!E1oYmW^3O+e;#qW zWwa&;gQPqt&JG;l&8>{&M}CjSoR82OkT<;jp=t8QYjz=1)Y-OCup&ntP!A`#xU0dL z=@ZqYTsjoGybrvPS}IVsW_xQSN~~V9$3r#c%EG=j%Lnbt3<|?)D1nq)#m(Wq^t^Ik zLf2diOtNwFN4I8Tru0l~M4MCIC`d}XWr3os@8IXgfom1yS;X=9HoNmdOQz$IWlfrw zh0eI|+Kep0(m6&nsn;05UtBoVCog}!={pSaeWi6;#cMit68k&PHjrx&<)^f(`7_ulN-6Wa)-B5fH?{1#jajRwc=B9UpP<2kMEuuzx?C()9ci;T)T}ejP!0$Df`=q+zn= zdx}22U!NEy0yVPZ#09h+WqDp+abLBt`F`HL;eVUl8**_Xs@ldNMO_ya7|bN+RYdGj zMiIfBgU)Tn9*B6}{E}W8kcaMcM#!O@4;2CLF$DppjJ*iHHi!?Q;B;G|XrLT)Y(GxEUPslmx%8-jA+Z)%QfojA=WdENXzU@Gt4Uws3n)N zupXi zivx#3|8Q&SN&NcmFykyPP}(z7VbtSjJw-xmy5L8}d}ubDFa}?>pqTD@q+{rqMWd0G zj+GIMIHF-ptM9AB_F`SdIhJY8YKcge)WmEuPA`Uj=Z9&3HMwknJT;up&JPnKlf#)E0GQH6ZCEnTQ07c_LB&Yl;MHMMiC#*1aSpV`T&F&>jHk)Iub2Dy=Lh$rzKC{b*V;t<8RZ zQ)%!6j)F*X`og(eQ7?0(h3WR67Dpsm;zoNuIi{@%GYzHy9aPy6Xoaw(BQq~8bP0}C zMo!Zp2UL|5O4%J;%p_=R1QHzGI!aTF_TGpHrJGWe-WoBiChZMI5}eWg0g9+_o$pJQ z_Q8DjPQl4wXo-6}(pnjp&%jLWaA);(D<{}lHVG|6E{aqk>mBY#X<=Ae3~mPM@;5Aa z62q5`Q&ny3fk`5$AnYZ(44paL7f1=v<}@8m>ef+;<-6WSfdE?yl19UpB$F8#^vBW0 zh%05UXtH^oQ51-Z?*r9a_l2L~Z&E2YeNpRU+u+U}8#wYQ9G9mgpYo$ZzON_yUqJT&fq*psfNSUbj3UQ1K? z%as479_j8Bc6mEkcNtSyvZyA;5w}7k4!y^|x3OQOI;(wj8iN@-LNPfic~qQ5Ag$z!tzXR9NQAa!}i!yyQtmaAGZ zM4Xz-%auWF2;S_UC-^QHV8SO*$fvh8eSN|tM#$qCRlo4vLo|aP++0~4o;?^oLNBCP z6V4oVk9k|k)GlcnERnb+MlNzXocmnqYSyB^h<2Os1Z|!~OBA~ju>zcnZimvo@;j~| z^o96dM|Wp(Ke~8O4mu>C$PhGP!EzSo>c{yzOUj5rV}Myn)MH9*M2FD*mb*2k#T6rG zQjIOxo0L#T(b=(AR3&=Id(b6GK*TdV-hHHGtfsk>J_=8BR8#CtW+a>Pn{0PcAaa}> z6q(>z2KlpWAf&*L;8spx*UCA{hnen7FhLXoEcG7$S$SL@XOB0yA@~9KuKrm1OSqw^ zK@SiIa~3EDzQ864C7@tCh#`i9HP>o?RAQk4{dNAN`;OYuo)!t^zNDH-@<9dxM}4Vm zTehEXIJ0rOgo0}6Qx`?qB26(c#1Mbj5f7nXB^7aP-vO1TGF-BV9}t~M2%AyL zHhxZzGf(XOa^*I0N*`c<2}A`gn=yp! zBE52xj~s00KcU2ZTOU8pB+DHhzV0y@dUO*Irh`UT+b2coH7-T@XFOTuo`J3ml3rI~ zX39%NB<3Y84CwHT5ss8PoU? zWzv!Jl&8VEmO!@nVNZyAH_FUW-Q&VyC>nNIjGN$IXsh>+ZSlZb^>^eMf>{k|7%^~E z^U`*C5t2t*81wM6ZqL81747Q_OdF>+0afy_s_`{3LG7j|~pi&=hlB#gp& zP~YZ?`$=H!|Qe*ou@+Q(fk9)gz7e9!@B0a zmFBFhc}EIan@PQiV;CsBH#rv#1-UPeg(u2lUDI3n;-JnX7QW#=IjKj>%7?N&nIs0HDgGc9K%4|4+PrMb&Lid^Of{8rFLQQ->2TEpEF_7uh=r0Idt#; z9wCS)h!>NFPlrv%Vc@V}G;kQ-SBT#uWr8{=9pW7RWS&g<$Rv;LFkYzkxXiuBE60(qrQ|0&({RX>LQLLs z`uN%!Mxbuy_$BgQb%S7?O2XIgs>#R;5cTI6P0T%ZPc4fYWZx^-LTqxAKqEGu$3ace zpsk*uo<3B#6x7yS+YMW_GO@&lqSa zP$pS21BTyxWGZK98Z&75b(>xsQ#xyrC@HR@qCuIcS!$6kQ;Jn$ap6*OnqR7>Qo<_H z@N>C8&i2^rCc%SHu5^OL2Ju5*FNv1o zRl@6c1=`U9o1|6|u0GNd<}r+7efoSBVZWi>hKI6~!ir4z=bW%~O|>r%($8 z8t35o%v{lV@ePs(9|bCl0^T1FdAYLl65jHsHVSm71()B`eRA-^{h?`0Sbo&2mjE@P z)nOLT7`T8qYe=(HON2w6TKtgLCGzKNLc#%WL_Q9<{E>iZM%WB{PMm;kMyiZ)jYtW1 zP6!F&38@0U3TXp!5oiH|8;Av>9jE~U0qG15k8}!mZ^o9huHN}lw=CTlPP+%hy!(Uu zI7gMP!;II%`1P3aiAe4gN&B$uK1#c&=?twyt!oDR0ir|7H*QHcMY){4a$Zl;yjP+C zq$t5BLm@Xs)r3B8|0IW;p~^0bmXztAm#Mj$qB z&ZNqMntV(KCI_q81XFzOujPZx7YN&y$H9fPWkEhS!5^fmYu=`!wMG<16|}0>RjFKG zdBP;`(Yfd4L)XW9lkYb-NMEepcXiBO@8=Q#l~BlT3ux9543-W~{j&JJvcVd~ZCy3>-ETPVWLJYfZt<0ehuH zHeYgCmF05~Kn(>pgOO$~U5P$xvI-kpw9-WVK&!`5y3EVrv=-QTlNJh$$bAk8J^evt zhZ?(#MN;(6Wu{o06-UV@Sa6{%r7~cp{UX6pw2xd>xY8tfte$iWq3S5Ck;ozG+TqNZ z?P{%3AuXvnwKT+VO>S@&a%F1;o8p|dC z0ZJzycDCqhKQy$o(M2%h1;r7ZG-KH5RyTjPnJ2F5lwi?#q|*d?*D`5cM;JKwm^~-_ zC`wJJy`EIZE;Q712E2ZfYs#HA$BWabsgr<}Om~o(g^9ueOOXsPr2ODd1{#wcfdbV7TEi;$ha#Y6K^@?>u(ourj4k{W<(oEv(VirsH~AmWfG!Hkt|SJw5RpGz4Zw~qg!h-* z_tWCvDh--nOA(XsDydG?WU36NTZx&o3Nl6f-^<^H`Q{MR~#Y)yTBW;L#f(b5Q8?eoR8#N!%@!_ z6=_1Zc7z^>v<+yPG6^{1pT!l=o}N?g*A^ftHx^$&BL_tQ6~ zcf+52WXWt0erB1>6lj<^N6uS&0<#IU=0#?)t%sqz3{UrM4pwcecfkmE<(d5Ga=Tnl zm4c4i{78y9O7_KUeuAewKT(4V?#X{^?wUQ@yc#wCTrop>2z9EG%~pBeUB+J*;Z&!R zODgfw6@<80)qGT9K`TEuVA51tTCJ3*#M?g|SPYH1bj%%2VaBWPdD!LmC}qQM*M%Ia z!F?dV@_!QgfaQ%=`Rt5IDi6A~9?8q|T zp>0WKrR70+6eitQ8|Hp*V6b{W2dU-KM%As{IO68O`^vO7b(>m&5Y zjsiAQmTvVhNC;y;mPW~~hvmz3f7Cd@jI1o*!|O;7hz1vZ2DD|3oa+VR6JfsGU;;=s zz1NoUd&c48GB7h^nTA|r4u_WQUt$$qtD|)x6fK5I?R`}!U6f*fA^@lNL1vf1=7#7e zsLT6%R*UMP9=45YEn>uoRI}3l?zz_Ob+jw7MBjFvGU}5ex3r<5I&K~#ok=B6&^P-iqQtlw zJEyeIRGtwlNy&=(rb%d@fc7g_FqnLeeteoZD+N9wPUUyY2n)AUzWwIXoj5=Mz&Mf@ z6)sr`cSP|zqN^(F{U4RH%CLf)`mgq$CH&u2dH=Qc-e0WyANWzx*wEPgOEdJ(+F7QG zrt4oT%4FkAW}SY=G)@!t+L=qt<$ot9M5#d!SC3ORuOQ5oB@^PbW<(~7XB}9J{{yW1 z4AwrXp&`7a==OmB@_Xz`Ixek|!uchJ!}IaH?&;}5^W*s~dFz{2cas9nkTS}g8&??S zddM#B`guQV599++RRP*C@`(1^%|>zbAw4}kmJYz>tTS27 z3ZvU*&1lHYF4Y)lKfm3B({ry-V45g3oAjPoBTr8YgI4+{Z zmfW_aTvSl1&e;W01(Q8*ua4{?pWEnk2BozbNozXiJZo(19M`fiUSe?5e66+Wixsf| zCJmvxNerk`(duObE_$MC=iN$e=$!yUNP7J6m~?cy@ROhy5C-;_&_E z(X?R};n$s-d@)>ZbM`@bk)JMYSfLZvl)m$>R&hULG`j^_=g9%)E~7`>Ii+Zw)U6w> z-=W2N(av8=)5v2I+(Ve9qz09-9t^}b(t0^MX^H;p2mF-VJtxQ=JSCaROf(>_zCGV?N>re=QH<2lLRO^5Km|k zVrV}pa605i#I)S8o1pVI)8~j=&;rC=b}5Mp-JTx+H|UJKO;@tX8SjwRU?Mt1pFmBb zsqd4d*#h5(3v_p2Zgn+mQ zuVu$#P1&h`z!|Q=A{ZAKmnRdv1-R|*mFJ3<3uKRg89+=5-4uk+NAF-fP5z)I`bCw} zr?M({J(#}S?d&xKDluqy{QDgg5UWS)Va5?a>}?~T-dmiV9USQ;P7%3;@y30?8~EA# zV~?WwnG68@O9^^Vne+rn=ZNL!uPbZ`sVKz9*l#|=4YL}Zavk}c=0qh0Cy`Hh!h zIL3Gw>V=kh=6d%ygu%rrqi#Zn@C(;ockKc z3u4PZrGNvA?K1X$oNqDZ3oK5PiBo z&Nzua0aQ4&5nIaTs)1=LOABz2#V>1y2_sc)P3Iu}1v&#Msbx*k$Z${BQt12opqAU; zorKSTnh9JmaNNqKpqHDB{$ZNjo}Jo2B|U2QH48;cZqM3F(c_ zCY22O@)!7n>oOp&2_1_oGb)FSU=B+(;o)JSQoo(mN*jwU%LnddDpOrLqVmWmnVC1x zwCbA6Skj_g@=n$ZD>jYL${ZQioyk6mFbmJt?E$8v#$cDpA3d3Q0&--v+MDStnwOM^ zt>G`1203l&`GjZaN(bHx^PLtNv#J-3(=RN)8ab}R*Cmirei0mx^!(`gCcr1)|2z7J z+_aRP-}VnJabT>LKT9yZYMo8LHP7HG+n|M|?!`?$j~&=U@g3p2KAA_wYEn?eTO!=~ z9$#vxf4)QIpz zR11efFtA`a5m2TnUpzJMykX1>{9jK9of4FO@~eOO z>u+`1ivQy$Bq^ixA5rIj(+z1V;fSDoc)058xi*s$5EukNojQ#1`+f5#+$DuHTER&6 zBiKyKse}D#vbeHh^p5-isp~aBNhMHG>vc2WyB%))b90n$JNW0 z?r5=SD)nV2yQ&M!4t0Qh)t)Kr4t8=E?H4AvEklYiJ^BE*%^mfKp1(j?PbN9mO(UQ! zVrwSGq+LDOlYv_QXJ4E2R#jgZ0HXYm2ky%9nZGX>xFJ5t+Fc2F$L%SOpLnO7!oM)z zxJ+5!QKco^fkld{LSiUkh2%s-8Y29=?Zzlf{RCb96`HaDjku;s0vD0Yls(_~=_4!6 zmeBI?Bh;IMxTy3m_rI2ejY4*mV zFg$B9>bIP{9U^~^&uyGo;5n7FcCrBCV3d;%`AW8fJWUa$1Mab!&@*X?X2~TYr`{<) z@0t7#7QXpV1Z3{EuhpLan?%+S012*<^M>O8ZL8 z7bsdv6Y5$&WV^b(gS_Ww{F9x_d*^Eg`5D}Xe}E|UwZg+-bK>1dCiRelr2GHM=oVK= zs$Go+B_t>x)Grseb{ z2mw^W!J+AL(PR+u^NAichOjQ~puxV)M}bLc5`#I>JD-GsS3 z9o}0z=SmrCr5M|jxRpF23K0-txy?~ffx~O?(qM{1P{9G%$ceV)*1`I6dT_X{0&n{5 zJ9lz>GWcY6sn;a89hp8-wEmxZSQJSL_ehsS+!7cQ&Y!@4fm-=$EsM%m=!EmP%|DU< zF{u3m(Ijk4Z2y^HHYjP!AuAyA)M>UlX&0!XprFo&8NV-wz2?uPkdmh4GGO5SU}({% z9b;WhljN& zV>1#-zia2QIgR{MAJ_;EJXqzs7nO+kt*w4Qfpr2PmS#32$$sFZN$o(X2xLk$!3r}{ zF{;r)h!46{%|Mm}7)w|eg4%{2)QJ*0;3Zx+rDq*NVSBB9 zPxn^8Vzt^~i?-tfbmd;P4K{mH;ho!%Qehs!6}o_frmrZ$^g=s&1k!{6ncDuttH=2*<%tf%GZq3UTDaXY2%-BO z>aY7&+vXMd{uP6Q{H+Lx>wkLR{&~w5eula#FJOLl7@2Gu-Nqm$u~T!N_aQ=BE{Llj zq18z6126Ztwzszj`s;6An}7prTUCfJELOVIv@IxVhWiB~%JXafZg{h?d>VL+zOH}w ze(Jy^rD9%mTybTpm-MY+-PyTd2h4nLj76Y@m_J`~d`d;4Ocl+=i2p{E|04N&z zx!Nx}@McER3l<+?51A7$Tn~pAbFj$hz20vM(oKt;uWZlpyL9i7$St~)7ej!Cmqd56 z$OJNHCn1@f>Mn&BON7wvfhFOqdCrRmNhiUvDd@WlZZH)C`V=%fA(@yn4)Wm9{+K;( zN3Wxxm@WpHh-g=ol77bGjTh+HO+XYA=cI)nxZzi!rY(|!DZQZ%t8jgB-NSQpa&5w7 z^}KPzxiHaj-5ZM%#YL!fY)1aXa4CgD=~t(X^IlS9`WkaRGlz|9W-3F)g^Tv+$)#*z zo3VCH-lT(88?E)xsmuB3;zlEtW~t%iHK*-7qBx~@*${b?8Ka1btGgn0+=*;$Q%ai^ zVY*9-=Xh&^gnI=?vYVpn1zO{maMNqi<=q+(yL#4~>9p=J%h5(QR7}Ca<81DjoU(Yl zLqSzfnJRl|Gi%4qtGsY6O*H*}l){Ep2ey{tCt4IQ8*M9Dc#-s{5`JyNz$IUKA7@P3 znrS27>nYZM{gK%6xV5Gv$*ZWN-f68xAQ(#rmm=U(CEUVy{?HL#qS+U-lP*+RXF4a>@U#XI3Y6V?fj z3?|myZcrgDScNZz&@G%c_wCn&MXsoYC*`pxl7;wWjCrmPdaJ6rJpKYKrOeV8(uC%5 z%u;*vum{N?aav6D)if3qGR`Fy@F%l*cC6VW&GmtPGCa`KsMXTl4nS0(<yV76GNgKR*~>^HkL%9-q7RI$wvr^)pq{nG8~0IO(Zho&^7eH4eTCZ^?M z_J+Suj+^zi2`4SZV`z?y;ua55Q-1f5ti;F_rVub(>uk0Moz-l1yIyMp(P2O1b=vBo zZjP?mTP}c1YD@uA>(rT=x-{1GwrOc%KI8h(Z6knx zgz(*1VE5~9Pd$hGcZCJ9b@jCTuzybnoa8yD0ys417}XSLSq^0_d9W2(|SmBu>+BUD>zNY+2dXe@9knH)EoKWH;!R}hl_!1;Z8 zax*v+)yGk^J(K?|FQ~}<@OkZFKuzTJidwc;vlD^WVbK0<&1U2G77|GSYw6LL@s@>% zL{MwTy?QuGC4P(dWklCa^5Za@m%sv}!oo*k@hv{cnV1_w5FzHHv637;R@2su z`U#;F$#E=+2S~+*sp*cwbk$UhJ#PVulu)d4(BFoo+!@VO@oacY7Ve)V4L!Qp@6M53 zx3R-40pD!fHFNYqx^T&SQ!Ke_su2!CS9L&!dFYM97}yDRy$&R;$s5kpP`YOo{-Ds(YWNL>xRIItjF zgqW8-M<~s7LsaCtQ4s@UHHbg*XNBJ@#;?xp3CHk-)o{+oPc)v65*Fg^z5ZUrP+5VX zrV`EPUuqWf+u{aFIt0+n<$wAbW;Vbe%^fLW9U9aSp6hQ$j}>-0V~0aEMpB0t51vV9;lHy~os{~X!a_ZEzN5~(z;8U-d~qj~{0Wf)p&A&^=nl_Fn}PDOmmP(|Fnx@nkL zac#w@k)EONVSq_IL4$7xjEW2JQYE+wosD&AXk`!Il3u@C_Xzizp6n?k4Ks{yH>ZDD z#$NSBvXAV{O+9B29+^L0-7QC>W85)Ce7Z|=46%2Gkli3<9Zp@C+6jofDM+SCzO1QS zh%K*hrGz3LRNmW5rN*Lg5lVk~kp%XAXbsJz=m!fIo6>srkPHbljFoQko+Fs9Z0yQ~ z^p)O?%~#H3BL=G+LCn(*MS!b_q7&V7nj8;zMO8=feD*>IE<h|i5w~9tPWXx>VQp@YuW7eTeyNJ^id3nVCMO_hVUq0m{AOo6B!?+}VNPl?_g25bA;rV( zXNZ2}E&jtDa<*UuW0$t@ZN4Sr3@+wVXx=Vt#Fy71Wns7r=pP{?X=TXhS7q1qYfsVt z?cDc&EM5L@tuM7uS8Ordk3~+=BsQ@F_9%^bD?vr0g_TP~I>&vA5F_Ek|q9 z@8)GTQl8fj-<&`1|ESn}KkDVlV+}3mr4C0n%scW$Otu#I@ytBdB_FfQtSQKsy#$6K zjUk?lV5=df5#41W0Qwt*8fr|$R!HnAw2Q&~-4qe0SII91O4FjB-z4t|zZ0?B0rI)M>vtZjuO*0%+^I_56M83hH_P01nw-3+#MUZ$ zj|k=JO|&^{%FtNq?=i)%_?!~E$%Zq}&(#3OtZ7(GM|=6+#z>>lSaCb?R)hmZzh9~Y z!>K_Gg%%|aFsMWBx9H9b}tmG~5KCK|?Eqct+gYLj+Vrb{Zj z$y7-Sc~WLW9Tk2Wy1dw6#Z5%achgR$5CK zw|FkwIYf>(n;6slOe5lXr*!tati~(l;`N9q?C-jiHai|!OJ;Pq)6nJL0&UC+J~HPV1==LC zDX=^+6A+0nlp_WU-{))@$OunMB%xH=#fq{!S4wAhzs9Gq*9s0B|X5f zC-P5JV@=wkVFnNi$9i?)-a)=e4_;n_FKlO=BrGqri-&QZvO8~7zqj?+7Qz@e$tN_b zT+ClHQk$~gJ&dRbvG#MGG)H4F@vso5!L<6L)=D77v?LhUgd;rVMXOwq5Sj6DAv>-0 z#RUT+sEE%jksMOlWNotzX!hSk!k8huDh<+8A3ZT>8!VICBezFuJVgW#M&F96xJSh+ z=jggJ%+N{{_$M+cX+m49WRIm2jCx-oRmGNx7Eqat;FGnZCBh*UEG9~2MBTH>)OXL3l)#jc)N9S}D;eFE2>y{7!q*9>WlF4UCN z9?GNSH9D(U+uZp{wW<-^0;%RzmKE{x-|IDRv7%5A!HB?*he*UfQ~+nBrW&!jsyG^= z8OlU6OUD`5n3+0n+HLf)2)(!@9M24@W_-*K&n2?5)brh~IIc{O>A^g*wAH3Qx7W28 zN(YqESv;SJS)%%4oRy{#XQX8x5hJi`b|}*;FUL0mT~z+w@I9|0V#`uV@L7X`Fvl(2$#%84qxnZv4Ow@YG=y@XX2I)m+ZYtMXOfb8L zj_;+DOQ!FDG*bM)RJbB~YZ9+;eS(xxXkrn*lIF`48pn=gsw=q8jOO$0Qq+;f3+9&t zQk^XJ$g1TXUtRlhGG|d?{U~pU+qPKRB`El%eCjE6{l|)8SuPk8GPy_+@(5vUeUl`qMUPefeXkRozspMobWbU{2EX*)2@syARR#p53v0m{uMP= z*HiF~;6IlCe22I2)htrtOYdj1yj}#lxLzy^g}b$0;qZ6n#v#1p%6CiF0SkFD{?xwP zqRoog0v6pxd>LloB@?m5z6|L1`Y!T}bmPt0`>w$&A6FnhAIPhkb?EQy&2@(IY2wXulRl*yoo0X4CWShl@wJ!&e&o9p_ zmq9y!G}$(Q{o>9g_Ad3-WpFdp47@Inf73Cq=vF?j@jbYduB)PM;Ac_eO!zEn0b=4b zpE@R<37wlnd!T6fJFzn%uvdyrA(iqa^oKZy&Y(;d0uMWJpqtg+1E! zFh(;AwtAme#F2Q2%@$V8I@A&ZfTm0K*atyl2fxwf`>VEZW%VWD!^>#X=Q&D}_?VpK z?k!=|P<6HRwPR`yx)900R1k#YF7)Unr2w5+DG3A@06~V14TW|zL%a_a3w2jz9kmxX zfdZ9;g!J@SeQO0R-h7LltO~uE+Pnm;@;9E3{}pTlVacgLy)Y<)pYE#FPGFaz7bEBd zM5_O1Za~qe?5mqRc*!AIVPcieys_V18o20s*9RfiVQnO^Wy-6;r8;je78cae0kN>5 z{&&k9uI{v>7U?8p9#%R?(86QI%wRP}#|0PFs__00Gj4?;TGHr}&%b(Bb?KoU8hs%Y z6Tm|w<=f$lXOI9P0KU=PdNB(*TxSVmiABVVMeNES1Uy z$zi?U)1_ugi&8%JKBD9%$NWT=iOS5vS>woaIos;z8@@{%$bs$;cY9ht6>ox$|pOP;73IZ9(td1`}= z7%y+ir<%W~cpiV@FiVd*y=j{OUCxPH%4XC%cImo-% zee?P~0m=roIXx1?C@0q;NnYk+_tfy?`Zhi{dJ!r0=1l0h8 zEA+xGn6X|BR=;(PjAdJR4qoFuxmdK8$e~D2VIyH_1A2lgyOh|~z_B44dE-4+B8Hpv zi6YyWL(f5U;Z#@^9^RLAnP&*MC)JS=C-g1OVg8#SUVCy(H`ZV2&?49ngd{z&G+=SN z+e5#BhHGs11qdCzS$`J2PZCA|?hy?;|GLjy^?xh+H{;s> z@(O+7+J9XC%eWRF0!WSd1fI4}gTXNgZ*+{EgYY!#O5|yWLRk&0fjkjK=MB75HEF-% z4Y*S+lYztX|A1?4vVfYyJrU2F(fZxMOza}Mzr5g4$LNw{^uIT`CFxcV;SO&}BSyJu z^m0UQ&i~SHR}5*Rqcjle^^n{w>n#m_EkE#r!7+W3?G^b4TwBX)IH0BiBn2_5JbYfk zv`;kHUz^lIYL%jVQO?LU_^!yC)nv6lVQ5HQ z6iSm~yH<}^H?t-yJRnv?#WC*cI!lYCg4TEwIbM-oQ=LeGw5X)^7RVcLOnzLVtA&gF zrIW}+e4@-;N{Gpijm;7IKp;p`cYhM$f8RQ(ILm6ltop345CW(4tbZa4#+J1`FuY zYZqJxAiU`hlyOTvrq|9i-Zg6dC$BY5?5O;2ymsHRtuVErnK#|r?-la3I1iZSR5hT) zAj41p%9jtlFc=04nc0bRFA+L`3XB;TT+J`Gl+vgn>xU!e1EgbfHvhc$;sNy8UHSxc zBA1L)EBRqtLHBG;ln77}IVUn!%(Lt0?QWp}($w7%8V*M*yLSI65Q(|~XsXUwD?zUZ z?+U~kt8orIYQ+ti+=AGwVvFWiGHAzBqPdQvTS}Ge#lu`=bt>16IvJh1cqAR&!=`15 z_NW{6F-cnZJLQoLUj(czfF@{A{g}I$>YR;XVxkX7-!?lEoieX7Nlrl03%iQ)Bfngy zqL$)!!*JD4$jeXThnlE^pNf%x=e2zQKVECr>xAv_f8n(xKfJ{Lf!Av5c2OJwxtNuD z1@-2F-q-)MygSF2B;d~r7N&x+LU9`QPMw<#oe7ZaBVow7r(BRxIbauyphhEp-!>oZc?#ynZp5H@{&M#CgARhr{`KrRx z63sDJgnEpN?@)ia3z-O_MEp17+JD@{2>-hHM_j8R^B0>=<0i-BR`H7BAKI{GNucZD zFM)r0d&q+i-QJ3D)O zeE{h~BmxcCN`IZv6JbO)adRSO%zITwg0p`}Y2 zq7^_Z^m?5JAefUox<{!ROU2Sl0-7q$v*ZjuVkHe9>3Y@oaZ2+7g&8JoW>}f-g=r<{ zjPSMZR$yYSuY@HN<+Xx1H}*>AUOV(FR};|KSOh7CHTt(Ieg)Jc-$oi6yQ-_0Azu9i zq~V7uAr2GHoCYYvmMVgT9idZ9uBPCr?L))}s&nh+yJ=wu8+LkDsT(boVy4-7-(jh) z&TqO)s9(-Q9KE}xyy`zTES)02zMhIWE-KN$^fQ#$*w}~eR|>n^(q3#Masoh`v88vD z0#>1AqK_kUik}0L5w48BBHU2V!at6&KTw#AkLeDMgH}k*W)l+Yjq2ij)E#v9KB4;| zR{E=pfh1qDe%+$H=zi$qH2M?)PJ!pC5XrQ0mA5FIya^gF13&y6p2F%B@4;PncmTv5&3J6c|g@ErGB45b%22a-+ zgf>Hm?wTA12t90i80O{M1@&KQj$YL^>HC-N3GnYjw*Odj|A}l>6c^Dxxsp>@paDXf zL(PP{+|js|QvBr*Tkur4NK8RX%wBo+>fhI2HzIp!v-{npJ$~MPU;zi>=A2jKEQTrYZamB{>?1rTC zLl>-*l+Z`4|2J@Pj|zyZWbt!p_+bAqLctSy^y{_L^}ZP13x@weT7j#0_8+1t5=Bm} z@P1Y@-ao8t1v_ZnuIip>vUb8((50w12C74>W%_+FCQ6(rUFhiwcG~@*pt9LkQG-%# zc!ebK#`4|eR#Ful6@qi7GrR6hW;P2^2}U^bviLO`yIM*9@+fU`GRKf}<4!OfO_!z$ zQ){Nn>rC$aEDxznbY*QE=$FW+E1BrMwd1MHDW%89QVW)+QU@ohimHcJkeqTQRn~F# zb;JsaLca+bxX~{OJ?b_r;Fp*3aHcHu+4ma?EqBD!GT|-rj^2**&DvH$2%M&BIgXq4 z`W1|I!sX)aU(9#ht7t2_yA_gbycn^itYmH3IhB?43hjw|&%z(Vh%-_cqw2Awu*`Fm2~wvFey-j@ zcXl&>wH@T8gQ8jssWVYtQttTi1^H+u_h9R;!WF5?@n(@ifCz__2mHDib^Eu~Ig{it z#kuf^)JAr9Ndk>~0}$I^WIqhqO!>N)4GJ?EHD<9O!+ZGy%wZ8^NKB=hwQv#D57x7y zQxVJSImVHGn`1-iYzmuY87>G%p~TRtbYm_m@=?cNVA7-ym1w1ywd#7drXLT6jUBE3 zl35k6CzzrTN%S{+Cgh|L%jeLa-qW7usJoripf@3Gw{vt&+mB1T(gbELb%+^xEE=z8 zb5|yw4GWY)a1$$W)$WHP*WQ!r!w3zkzyOOuu28SDCmJo6@mB&WN7jw{W&x`DTcAyO ziW*wxSD~=C!wP9{o%GeyA_kqy2bg+Ay;X8rUM{flo{@dfl}vBbbzCsDqs5Yc1Uj=` zT`-4iQI57R*mq{g>hDby#paFt*6afM=0R&o=g>}S&ZIJa;S%WD145v1wZr*ZDPnv^ z-W3Z)d34gCdRrZ1wg(&K^H*5y_+2hco`B88YHXW>2DX;kiI%mX+^=5q3*qXn=jWS! zA>7>UFN7Q1cI7Zp3?v{F5d9PB&(xK~_TrgT{4>krO-?okR&oDb53>%jJ53?zggJb_OU; zslE*7StM1qE-AS-#Uc{;8|6xBLUZVm3}8hrmNnYx8XhAf&Qv&T3DIzp51dS;NF!gH z9!n=q^`WCMiUEjfv&Fslp&__>txk)|r_fRHk-77I6-``+_t4eDi>n5n?!iAV45i9Y zN*6IY@BGL_OeofauN|%PK7WdaAxUBOL)%y$(!wIN(aksqJqSgV;LS+ zr@9aQsSqKaDr*i{J#;5{hY@NE+}EyJKJzxSMg~w(0ljF$1_z4kN=*BG%o9*Dp4zc_ z9BDx<+Yc28i0g_WMf*3Swe0CKTy{im@nq`zXHt@HD?yFx`!d$dYYd!1kq5Fn3ZDz<;CvHl|Z%#5{s&R+z zh|YiGj6M18O29Yy%`-OJ<(oO-5r!`hydt>l3=NYtfhO*=b--_D5Yu7B6}tGOu^g-~ zLP2)!3PtA3dNUnL%zKgQRyveXT`YPLc;0VMQvUe0*ragj0nS>3(D|Bd;ZVl}B+w_w z@#und{HDD}ObG9y6_3bHhknrvJir&0U0@C+LsFQ`<~$-I)v*Jc_2<5r$j)sfRJDhk z6`{?es%hcch*qLHO%)Jc zn5gieRbM7b{D@c*wDvM&mY~@q1y_mf-TwCUB=>xc0>}vsi=spk6lm^N^AAY&!Yq)2 zo5Vd(&bTaE3vxxUHgb0$fGr5d&b+&^JoYy>_=u_!uAB6g)-{z)C2mK5ccbQ4V~$v^R%3!8L$u~6cKc@9?+fHmv450!g7_wN=kg<`}ubb z8T0l0l_J$6QKk%q2;5RQuWI;3v@yHZ5EECPzXB{mdrgwB*(4_59xm!wBM(t;9U?y^ z672o#ys=|;K{>-vt`Vt6OnLal>d1Vm%HO|nw1uQx$z8CcG=-yu)eyYR!Rd>ro=uKp zMnO1>`nn_6p;+2uCbs3Dog-Y>BDZm@LD&J2x$vj|%Fv;7!C3!VnHkSfFth@7ve3%( z`>|}9K)pd(Y%5F`?Z`gJ_~q_g#knJ0YTCC9j=a075Wm)MkXTKpAG6GkcH7c(TzJhC z3ekgMV6rci8q^J#J6SHE{$X$Gxpc8wxYAxUmRs&Q(0so%apK_ORuSKVn5DiWZ*doM z+dCmedjzj_Fo>=9O%oVFM!J` z|D=fd1#sQoB%!mScE12_peJ6i$w=Y6m8Z+nm&OI(vZLC)dxE&@)fgu_GCD{x%%Ll3roCdA& zFOp%u3^(ZRX4Jlh9b0}vqkZ`MWBC;al~?>GBjz|;>TKBpz;1IOjczS7!))50?Y3@n zTo{4Ao?zY@(Qqus1+QgDtwCO_r$*hG^YZAqYxB03r8Gz584+eH+PW|dr!It@M4B`s zuiNA}VTrl-uN9y49re|K_Lk2@t#r^a8+6ZzPR;%bxh_4|Fsg&YdN`z%=@xJsq%yt_ zw;oGbj#Ho%*VDvFpG1$gFt(blGNbYE3)?N!Q%3;?=I}Id9;$`f%YML(PouBes_Z(4 zajYpdX?3>JnC7~S+eJpSOuKU0eJj?65cdV8xx!)=ssNbUs5PO!VI7k+7FWSTMMPX6 zA1kXskt-*fF|a+($u{mAMzO8mA8p%OC8FKE`8Oo(QJMvp*3}hSAP-1&@cscM2F)~q zA`h+VpGA10b}P%&&WBm2LKjIzCHD}rmts{~q>a(2ooGwjT_Ispy4wa_7z~DvsivUn zP_zL;+U$KqGIb$$LE`C(0OC=+CTP#z8GH)sk|DaCRE?Dy1L9G+hWEz1l0f>?Q-yZE zuwV3L#!YpO;apnaZ_LqoK+lRUR!{HY$9IJAlo7tU3n=ehohPfSaY}@Dn{YbIH3okS zIv6t_vu?0l>0B(@5pWgn-fmLvr0-EXkn3mCta@!>TZWYXf@*E@_bCzzG>f)CK8n|0 z;&dXak-@ld3{_=Y-5dM}q(3sZSm*rnHw{u>5Lc)lGE@HAqMy1XSCULp zD%d|{Q?oI8!nIRED{{rW%QcqqwTpPYG}i5VxdO|a0x8uit-5{s?R>aD!SMocq0lR{ zuk`pB17%$aDwFlp{c z335af>iB$KWz1s`rehy-MRa&JaDzM}_~VlRX92#AoN|8Muu<267=c?pS_@$xr5t4Ub9M>2oM;WJT;&(xK}Nj`w3a6~uPKii z_8v=5+jF!JD)=?_2Y2A(u3kESG^Yre(Knf$ACwmot~7r{z^)k|Rj#--`w3i;1rmBt zvjb|Sx3m&aa{Bm2I3r2-AHeBBv(WbsVDsLn#ku^Q&BNplaChcvqTq4xs<6(Y?Om9b zVC+ct0r7zD3)E-^VEf1K7c2hjd22!b>pxud)Pc@Ko{+IZf21Q0RlW1Up?XQ`Mt&Bt zoA#S=3X{?2_13crPuL$6y28~MF2Yz&2EN>;*nXN4&+sILJskE>9A&nC;v%#KVjWuR zno!sJYbj8ON@)#pl?=gOXz|NXyJOi%Txj=YDmucYN`7K2CBYAOL@YgWDu#J+)GTVZ z-d|={8|s5i4caemLpse7trhyj3y zp%ww}zI9@lpawbydB$sUh$%p6qOe)`t%|8NbluAeP}zDxKcn>!%*E+Ja7tSk($4-M zv4$f7DMZgBqopzh`-rg4{17;oiDQ@K!ZB2ThF7*gPUgG)wtTvjm9wjL0r3k3US&0B^keznU#^0k%PlmIuO6pm;LMC%?K)#FaKiX$wfm*2_fOj z3t~kTN{R>D)HnxJLyk+z$Y+6%WM=WZI=KHWRm$`lVE;4&Xf&8EVaV_{H+f-U%gAhM z3k2mKW_|Bkecfn#TywbOxD5L9`F!s3Eh`(AA7D+94CoFC!o_b!*s)cSM%k~<-;w|& zYe`PJHDX(X+Trem-2P5)p9+H)8e*?1ch%r80wg|NtbE^&XN%WR@R@ySDzr{%YFuKh zN|aYvFrFLhtQiMXu{a*5)`mBQa_eq#q?;r$JdO1IQ`0TLG=r?pkkSTa5r(3y3Z)rd zEYZPTPpC;fcv4FgjISzO*_+M>zX4?!;9TMo87c?bKKtQ81?!Q0rF z&Kf;9sV(_lZ<^MD$lZa^Xi2F_E{Rj5HX}}b?0Vkf%<59zM2Cgvu42SYlTk_ia}7S0 zjPAhSi>V{Uyaw_Z)F#T3d5Q+XOw{v-%ZEtV8Lg`1XbYNrE>ln;h}+DTPqLCXKAgTk zPifO~X6x$2?z2m0YsMa4l48rmQqDBC+vRQz5t~sltaglxk=9Gm8D2v;=4CC%8$L1O zu5yPjq*;0_E;!Z93fryrBS955nmc#T+wt`j)4Q91zO1Oo*IyLx@Jn}~)@12?FZa5p zGQpbs&Mo}&!ZniR=%Pu;D|b9V4eO%Q{b7*6GE0;BwTU+r_4Fllcf14%rkr@MGCfuf zV@iTmogN@FA)qsfDgCyEnOYm%)TiO&0ejm;4xb5o(ms~w`4z{+){9}?2A}Jd=jiW; z%mq7p9X~k7s5w&*Sr17o4U-zu>sl@a#qP7}2N$dIQI_MiA6GElK84YLwD{Ezv#*HW zXabg81aOyiKka5+@a@|(n!7e9us>GpRUp%qF|1B940ue;o}LLH9S3y;`Zjx-*dNfT z{`7n@pm?#4(nTUi3ploiQbX@znwX^Hdinysud>I){1_e$=DQF(%6huLO+)nv;8ls`Ekuvf3Z`}_?Uf`>!6mp0|04(^AQUrzC#cghJ)}miGg1Vjbj>r*IId zaE5l^laR20H6A860|~Gkh~Q)o0gpp${f$nu$7lw9+Z^?CZaX@|cz60tOwXaq;ls5_2 z%C&YdiO=Lg_TN#n@Spzb#)1(3Ydzs>WR3;up9xt0HMcS;Crd{&13d>vL2C!T|CZfU zpa$WpIFIyUV@!NGJ{CZTz}v%qhGz&T7Y>16hAxSZ9tft$E~y>oH!PX%2JHVTZ!uq3 z*|4Bqwon+Mj2r}VB5$=`QIXU-*J@MI;9;R<{<8VHA!!`PH{~7Y(&RAF@tFSk_BeKE zkagCA(xs;#3{aTP+Xm-G%pQyZeagY%>4|x7#&Q{&lwn*u4vDrxZ+zYA{mHgO26{O& zO|;s^bas=2%Ej(H+NdIu70p%KrV_H>D`OWEEu~F4*m2{K75&QeHWqU2%G(>jE&Z

    ZJHXekSsSn|tDW_7lxwkxQV0D$C#(5dLGpEpx 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�b(S=@&FgqSv^R0^j^M@Bwj83g2VccewGB*#R6 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

    hjtICs&sw!+LJ%}7p89*?!@!`u%U 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%0Dg8_SB$Lr2wEzQwh8%S5&6Y8?>| zOV7ap_n{@&}%Js65V!6N2v4bm37UgR? zYQ6cQni0O`pB)$Vnp?6Wj>e}(_DBQ{^F=dh&0&F_Lr3P}vKG>y^7u_x#^1?3HWijk zWmE+!OtEiWFtw9#v#CFh=L@MyKM`|G7BY<2N`KK>eH?#LUBh-ciQn>$PCq{BGXEH9A7CK7D`EZX63dL~Ei14x4nHQ9$M?FIN1MaB1pE zh2$K0pqu%Ru{+>tK2TQDrRL^qL~~4rx&(4SW_m#4k5I2o3%3s^#U87SqO1XgjteDF zZ1uZO0|cg<+`N192+8ru_Kzl&`ABCK#T0R&*T_0G>1##Gn*L0`<}j`U5|;4Vxx(bh zGE8%n5e*xB_s99oV)K=ApG51zjADvH^57xz6K}k%^vqmo=iX3S?Y+zFZ2FTzkJ? zy@qjr6lKQEVj%^8HxYThh)mq==Q$a_D!@15m~cUip$tC;sqmKY3>zGn=ggm%p0CLH z65(QDE<9bDPRvygHQ7O zikXlvKua`;QfQVK>a)rto%Zu%G1VP3CxyFD8tzZBZ1W6qR!=#VXQcDe&7~52W(y40 zsjbgXMm`s2OPWi2mg~sAq2MEWx^D_TJm2=w1qmMaBB{6|+=qlkujmllq9%i$7M&bB zvQ7(@69EGwG2K;RA7C_3G^;mU`0a4;Iw1*8FeZMUD)q4rH0Kv)&Anuo8lfVhoOo)0A z-j$DkJ#Kek3kr8GBf-pUi5*@k3-+`01aF0agYq|m2;IRGB8X&ANed8slKk>f{%*fK zkwglZWd-HAwIPg+1UFm;MH0UU8T%q3ULdAsd8!uXrbaY}5TPE!OYWmhrU#rf2VHz; zR~QB-Kkt$6=r6sNWDYIBjZzRr?Sg6kWv`O@V}>A>Hb=LXog5(h^fc%-R>1WGd3T4L~v3?i-sLzA@gb=3j5t?KiIh~C;r&^a3wj9kgx z4+Ln=2bhH(!6Z%$M~mB91Tjg3VPHXmGJOIX0Rng=gaW8oLiFL+o9_af0|9PL)ZY|5 z-92Mn@q0tGN#{P$@J#scdHJ!vbACyd-f;XuoPu(=yvJk5FIee&O0@_|D9n2H639rw zxd_`;mG!{ojh1ECIJ*|-G|f!0&qf*~#EIt*-UzzMOXhl`o5!7sBvC$`4n4G;z4 z*9bWB(1O^nd&)S5vVsM2^Y`Ue2Zi8cCEfMjjB`V=$+u%eUDk2mzU11BB8hr6lbTtU zG{BDnk9PU|n_>A0D{NWoD`{ea{!eiS_J597jI7KY9gXbifd6J0`})ndFRtdlU;lMS z>W{DQZR}0x+`fpH=^U&97Dj)6`u9hPd_5AN|L;{AE14cBe}0qC+|7yYF5~^-xZyJqE^jed8V-__E)yBSC|KczX_rDj*{cdJ@Ch z%ZO5vR7@^0*vii&z-TO0$^G%y^*iTFW|F#xPxD%m8LnnCAQQTOmQWly6=I2`eoEFS zr%66HAQe`qA4-rjMlwcUFx6cqVzt2gc;WeN|Hie4H-Pg0y#Zf)O7btglAuUws9t)6Al-Vb3Q!M_xJp=_03};OT5f@IAuDNQ zvE1ziE!S`Gq=kzeOyg4lkDW`eHz2XZJKH!6LZ0-hnzMx}{jn%k7d$J<#5VB&onr+| z)iZO^4@(&wrr_~qiFKp0z`0w&t(ce8r-8bR?|zL7Y3CZ^N5c&HxJncyR5g68O76i2 zJ}Rvc`QKl#f`7^({@nSA5yAtD3=V&$#QFU9$|VXTMsok3E9d?1tz5*__DgVA(9*`h z;)~kR*38;O(&%4u1{EqBieGaxpBw4hg3Y9e0;W_I`jq09EBs|5c@+BdVzG;ArgKw9 zEkQvO)~#&|>V? zHz>W|0UpfGJ4o=2-)a>3Z{jL|;LHdJZ@(zkVc;2 z=I~HJb+dAcvF(KOM3h^ePE*DLN6Q3(L^N@S`r5UZxH&qpaNMP-1Szr5cOmM$T`80% zDRp@2r5l!YlFnULZpF=NCAC~5OV5pEW{}N6NI%3#$o8-%=5-{B9af=6MdtKbNY9Rg zmg901R08^t+F&<7E;T*&((%*Ao$^ys^4PLjZ*_^J~YAPvJ|w3v?=-*cYJ2tU^9s=S=s%QyYxh1Gx?aF?jHdWnLbj_3X4MG=1v971(Jm6ka3FLan4MI5iPvq{8j0Tv|MqC`3iV5 z|1tCaU+{qa$5a2WL+}4~eMK`XTT3GqfTh#F3iky{+OqTff2o(DNCY_{iX?_M_tttk zs(wdAct${Wj0<5Qxn)g+gmGMxUQ>2u@O~pg2F(rQ>&7=~S7h}yCXV8DJe<5}ahYs! zG4_6Yd%@*Lj38UJZAuFMj*JGT8Oy{F*p3wp8<|Q^Z`}J+z%3l?60_MxFC&LzH4f0& z9ZU1v)9BSrRf+5FDchf1JWPS)*Wt-Hh2X8?&X{I^F-{7JpKvpi+fr5hriTm<5;bN(*UQ71xTF=w=9Sx zExeGx^#F)rt&em`eHcdf?;{i&2e&Q61+f<$Q@!495?~A!C!#*{$a$vh0-5yXMLyVzlW`axZ?5K5K72@0xA03aDRUiwsqiF%#b#sKy7x3%Q2baemD&`svMGs1-`+oarFz;#XH(o|KJ3fN@ssF9UC`Q z8>#2}YJsqXqORszQh~O_60_h+;XaKC8deO ziohyj6=G`i;c|%`Va}pXZLz{XcN&1vZXqL*KU~nGbgEa*A+1cURO0d)VvP0M4OcRe zpmosnOsm&u-?TS&{dhz7oFkNW8K`TnoAlBgg*6gH>z~%;Erz1fvgNk02~sUI6VNCR1#Wq0ET^J9;f#OkfJTJ2chIf zQ-Hg*pkn;oRxcSHU{L@jyMd?M zjcMl#O?G2*no4wxJ@R*I{M@K9)cTS7&Ie3-V&hGvLfY02PYH85()txB+}6$>6$r+;q}20}po%Mmp0?c3$=MId@x|qDGhS2} z0w2J-hp~~s<9am%J+p%|2&*vqMhk-+W>rz30AQ093B%6Ipy=?@A6Clg3o^!X3vuZ<_o`k z0`hBA?f*}o_@b|IGO{)>5_dGR`d6k@*+Oyd>taYp19A%TZ&&gZSZFN%QA~k?FGqz! z1!1JOuL(f~BB78#(nekQPm^fUzvf286 zmp2_sv5Qzwm}5Kw@nS1EWMy$~(`1l4BC0?5aUX z%!$V^-%-P(%UCTE?A~JjT7x1)edSIy*w`Y^>^Y=`-XmqXtN=ANtYVqAD{48E9D})g zqk*R;HO>^sbXlusI=L2|N@+t4X)~!si8Pz$LQ}_Xhf6RokM2 zU^6+$AS?p~8;1Lcy>|>ndJ7$eT_GTP*=JZukVs7*VjyWz%y|rn)T}MKDquDeWxduU z?5Ht*@bTob{8u`eD0wUUWL`=hE-q)5E%yM0P;FY4^p4mT`!d%VwFzo3LvUoY3646q ziK%@1&lyLR$PD6v@N4!#hMqW~;GM$}H?;g8phF}&w)-=ZqMqq{q=gv4vbrQmd!W%~ z?YpTx)IxV+hj+6Ya_tV^4cmTNzf}9e@Q~X`pt90PK6#h(iD@kX4zrs4G7&L)z3ojV8PQS-EIu2d@YW^PJXy@M#w9 zm<#0``PMo5_PZU}yr^Q;xwK~H!vSuANPK~7Dw*hrdhUjv8P~PZNFt^6HA*!?~jaDzp*4zV& zF8)iJ8e!$oa0|V9U)6Nvk`BTP3aHJ@QekWr1giljtzKM%~YjX6aSK4bM#HX3@=o0I;M zR6seHZ3Lk1_JySAr3Wl0)Mpl?;dh6YLUa|!(IehW7`y%;GDa?xv)9H}c^b*dDGg9S ztL;YOCWZNJl_bLrtWcr2;(a_~d=vOc#-d~W;XAiBc!=lx?F#^sc{()*xtBeM1@;p%sLtTVwPU%c!)NZlrvEA zBr^kQYs8&P_@m;dbsIiQY%Wm*| z7kmCq*9+-rWN|rI0yCuN5dcFRxC?`S{Jdkc7S;sOE*ko#>e?*>i#xH*$1Wdm3k7`s z7%bGI2b&2_!1Cgw&~~h0gj+7;5tAURL);i~xuAVlzKD3jqby{@1c3Eoxm&V(xq7!3 zoe@t$wNoh1(@hNxgUufxtBhbQ3Y=MvCc4-iYVMkcL@tALX!5c_jZ>z6XYcK1yvJ zRW7oppY{6~uNHo05bB2R%2_h?yJP@Q(l0SveUKeHwYacIGp+>CyX|SK11Wdf!WL|c)<%J*~R@BZZZw7*DCEP&i z)XZLk7(w>t-q!na3z_mkod%7cAaY1b1_TIBq&0N^8fB{c~&0>D1PBU z)qjkQxc@h{tLO-@|CjMrs6MM=KO%m@#H*=m7<99;R;0%ZM;q}&h*dM_4KWO}!inlr zfTT6+^lRv7surLQnz@r%Z4is6-}!G!Yc`$y;zUE3#j!fQlev00_{ybr2yn}NzwxW;dD8syKC`4vJg9I6vvSdc#jBbA6<=b}Y`&DmYFTLaw3 z>7{v4VOA{Y#vU>4`nZL!U#a9%H@O6CAIOcJdXou>D`O1xncU5_(!&^wyeSYDbCESh z5jck&!$kuta-Q??SizBYq@-ff4GNR>QxL3I!2Of4)FZ&*CF2iW@W6rT#iZFbfIaos*! zVkgh)h8pfx05m1LwWg1|T$G&=MUYNzJvU!m>(x-5MZ2$0eq!%(Juyme7*iBaVc}G+ zDg(-fkPQRRay5ZQs8p^p1C&{+H;V1QcSXK`G1;Q>AunX_p@MeF*-3}0g1*g$6Cpq# zw6bbtkRwBubSf0Oeqf_^4O}(<*<|lIZ>by*yjjt*_lZHs>Ck8UiL~x<0|9VA+^{!5 zUV=8c$X_hD6&nnlJpIvY-F9-fQaGz%YLzyUDjgTNlE2IHCeV$q{08Zhy!`z3*wLaw z$G$T2%Ry!8s-=cTg|+3dNn`XU5j%S;ZLg+v`BX<~r0GK@aU&Y;na%S7M%E})}}!sv|jp}_?Sj4~o;SYkxLl2-2;w=dYW5H&l^%ZIu0 zv6K%nN{PO45i}XE=8~(E>v=rWE@JsmH`}OfVL6bP zD1GCQ&PzpwJ6ll3UNuNtF@s5zvCqRfWyK*t$1wt(oYgiKltr=fc##?(Va!Pd)E>FA ztdqy6w91pmouiKX#-6QRRB_e(eL@(G%6BF zVDM4Sf(?dcyN4~ThpxhJC95!W-&pPLQo^M@0_r<*q|55@^ zeoR1ij36@uAUUDc`c2#{{O%eKW*a2v8Wg?D!Wq1D!u}y1@Pxi0{T-_St~I3fLZ#+^(rg1WJloM*GE?{_4wmi5443$+>$NhGLT5qhYz5;`#H=OP4 zJ*mC;xlKq$3wOH)MiI>U8Gy!qpvt(jv5WCzpU)vJdCL6W%= zYOwM(Ib~)|1en>^Q1DK}vZ<0(qL(gMO>ZMd@}jMV)EGch$YNBE-@ zaf8CbJjgDg`Sr+``rVrA>pCzJ&>|YUH9E^L2-;Pz!`B~+TH^!pBw539~FMh9z(0wMZaBa z=!%M{vQMFbs!Y-%7awt+zyE|+b~i9;#dAQ2?gQt)s`?f%6_ATQ;=!LKuzH)8t>>zU z!W(PyTd-D`g?_V}aLqU!fp&-Ssdpx;Bpi|Tc)@=1IegdRia2r?<%l=$4tr>q4+9A` z?-M+ksjpQKpIFO@-N9?{jN=|9HDD=2Fk`aBU4fwwa0Vt#!FWbyZIrMv$yugG&>?kC zrZuj(k7dSg^imhWg2DH9!o2*ZSmUpjfsC)l=l?o6_+QZB{^zx$|Igt5?+jsq;+pjw zKLXELAUjKNDw+l@s33#%E`O#N_jmJ!WTkMFV<9;b*R@n-yR+p1XSpY85&|SK&u{oa zsdhBmIdYQRuFjQ1CdSTPpHH{2{OGvAoR`$GYD{ti+PIG}i8FdL^E0zM$EMIqvuxh_ zE+FRuDEQ4+2PC#%CRZY*h|DLgeEuLaIh6R>5C86{_fOZ}+S(3bB<`=Hc^ zmtc(CwvR(0D^OS_0dR`HX1^uZ>hsyZzILJgOlcXW23?$#K{iFxcrIInaB{a&ZY6<6 zNFK2GoucMHs7ZJwQi~T~Fk{AkAv>MHA%Q+Y=w%Cz?x)_n1u)${Z>2 zjSSnVX%@hV6mIlal-I4P8{tYi>J)k6vZ9SRM9HWrztlxJnf{y2VLL{Ne*dz$!hf_m zf&cL#_wPxu{}7G*yS?qD{$+1q5-lM}Y5jhjaR_ulo%JP3Kc+)+#jXznmF>jOM>l_8 ztBdiI#6ErFg<{y#@RgINx!GP>X~D_nXnTDhO0oIoe!N<3>k>AR76o;w-fYt+tSB`m zxaMz?BSdk=23S2t!U|yLxZ47s3(Nl5qnYGpj%8kf)a6raZU3G?4|R{0vqCvLjfXUT z@zg-11P;j0nkpntYKQoV98C?sYe$a>CQk9nZ3;!$YwqJ+KIqOSrO<&KW1@(90*p(N zwtX%VC(%eQkVaYQso^WSr)$a>H)JAvM9JLU`y}k{aV{~gCfDX3nX>flpc445Ccj4;VOo@Fn$Nj*nR-dJg0)yw zewBd$BDPBR*Q@At-SGjb&>63hw>CJMAN+Ww^UuIz6E&5$WoyugmqK2? zX4m8Y(a;3{$Ao@^^(p2v>GLMe;iS5a93#aR+C~n!&C9Sw=z(xu0zUPL+ z)EAZP7Eij(<>m(vKh)JIyPt_OG6&tB9n3I>utsm}_S7iGU})e`puIqBLI01(M8OSdbLy2B!#^~MB&{Xtfiwalq-ug&qt)%PPz%v+{$#!EG zGE7c~LS>2a5=r-7)_IXj2~Tkc9BWcWJlTZLuP*0F`o0sjSlEp@m^gWdXr}WiGqCJ( z>IwU^G|sYw0vZ!EWiO2e=A75TP_fV*SL259h{)#vjXNs#-C>=eA zO3k0JM@eo_6N)+!W!ayd9z|)oOb?R^hPWqP-0JFg$N z=4?VKPSAmJUclyb`}+_m@>{zJ)wyq|$Mepf%9jq0RyDO#l&`Xu6kFFKkIr4^nDMV2 zxpFQS8+q&muIzJzVNj3D$BuYM7i3KyS6#*=7;dgQm{%3*i5+zV8LHA~@k|ahi_mNr zYJc%oIf~FQg|==EdF>Wwq7CEwPb{6UPQ;w032y9KiSTkTpoezvp@_l~hXpYkZ1K*x z!tHYMXPYQ6*PNVXT2Bj&E!Ky_%oY?w_FPCA9kFrg|kpudqew^Q;?~+Of5Vz`h;I z#MV8XCA%%MhpF}6kSrRF0Y7-#QN>km=WAkNo)d(M$}c%JCA(%j(OJdl^1Lzl4~}RZ zbfUHH8p>#B2AnX<-8fCL=4WoKl7qe0CYu&M6$khPj}GntC6#LY>Xi3TxCi9jbCbI| zUHTF40jyWptGX?_gm=G~mF(t;kKUzo+D;>%y*9bxoP3wJcwUh%2=z%}!cJ;$kHO>e zYEzMR6X0?;3mJDjZydsV`Mh6LnfKV9lN&2B)}hCUUxPIIhT;gK^+_KGu)89&YhhCa zckq85Q}Kw1#cW?klsVKtVKCwU)iL#dL$I#~zQ4xNJ~#3m$7&Phe(Rr!mLSeLl8F0B zz^eR~X28&3nHGHOo_L72ZrgxOhpo5yK%Lx9h=k|m$}C(Kxp-7XIYWGFI(HKAsha2M?28lr0H9cqKkdAY{i zh=8S_Xc=?&>8XgoIY?;(u6YBv1InOyTQ*^70t}a$a5_u(3_*nhAvB{=9@0-5zKsjB&cZMPk@r~<4TZ~W zu&1#w|5#v!Ca>CW<8Ff4od{kcsB!;TK7yo8eaY-&UdZ9uM<)46{=3Z-Mr zRPqKCg&aEv{iy0bj#wxLb?l36(BMueylg?b#Bx@Ka_^?&c3Skas#COlJnd@Ie3YVc z8gaUprfjZBzQ9{_&~Usdl~LX{)i1yHRN%_w%FaTd2y6@SXl3JC6j@~DjhoCDf^Tf+ z|MXhAGu+f+h23x{W*kDseTc}iSWU7lQQ9r*MDFI8tZa245~;iKkw*RWewVIjGjn!L zGOj8VTx`ePGa9PNw>EK!3Qvw5ROI-L=2S-eKB93d*0|NlwcbyA898NDl=70W8D!qk zNMuW0)5PO^;1b_NCM2?(0!Dmy2{&hZ6%sn&>N%T^BNABjLtHeJOHwPaIt}L&F>W6% zcMBQ42hzV|J0&MfK9{91XBRdDgb%$amVl=58vNne0zQF{U{-jF>DzRPweS0(sQqY4>C9!uMliM>c#GzDmx-QFd)Z$&3>R$iV9wWr7*K? zwXsnHm`!~J%bfzSXeM!TmK%GnY7$VO8wl_LgUImgSQI`31@4}9*Kp|@7~OE)>!c^t ztYN+qP|1@W!@nqhjNYZKq

    U^hrbpIEBpV6mp_P*K|dyMBi0m)vduep4MIMV;;8P`gG&tG!|ElK9e1oGmzQ$9g|LqE^;QuI+ z{BN<2@qgCwzc|2y5taxc;7jo3Bx11TvggDx)uR~^cz7{bkgR`U3743oG!eQq9u%oUX1X>ciWiKT}vkyeW3DrU*r;pt|VE!>dtl;Z6)imqHaHU5xMJfVe}% zux#`b{-M3h2gPwpGqFX)u+w6&v1meRi}Aj2@@PV4RUO*TX5aIQh0XQon;kvLiRtk! zyH91dBAm8!Fy*@hWIwq*#XFo?0aAZ@Sy~5C@;EX%BTnO-Y>?&fb!T(5fB3evTFvC; z7^^TEo)@svpqbgorz7ai6-?#ov)dIH;nV+abA+aJ#L3~z){d2o?;Q&~UNELl;fX%o zzy(K5F3+PoYYnZ>l~NrZM-%!2I&qEa?~`N)E1{W3p%ggKfBGb%XR|5kD-|zF_+mQT zd=+;!FndFSp!&|ym!g2<@Is^30P!|4XS)c)IA2N`+-X`1Keud z4ebWTPzNM!n4f@aPQly-et2(t(W$&gT*E&-tTsH&d&(~>X3heYEp*7Tej>%?+ zun#&OSgt#x_ygZNDfQ>ao%A!h7569WsqKlcvak*BLUoIL(Qu~-nC(2>xDQJKxZgYe zmdmFQ)R@*n630^?_QP0p(^Yp?ZFJ7ZXtH&h=lCjerZDeV&&!ZgT*(p1*uFEeayaUC z*O$jz3RZ4Wg%q=^VY)t-FoHvPq8Eh3ZeXvPTc?4QioTPj{%6zbxB{RZv0MtUL46Jpu@uu z!T*;Fa&WYc`YN}~kTM=Uvvfo_MEWEck>m>fYuEx{0f;$!)&jTnV z+7sRVd6+>WEIz^O-l*;`H}G0F^0&K@x7Z0g5XVNecjB$dGzS3W;zVweDa*JADFrvE ztsG$h7@qZf?r{{#J?W39g~kIE z-9r#6(jv1tntPcy`gh1r=KtUzYNqx=^)DRM{omrC|5-2U|A}7z8yd6y|4m~~_xvUa zit21ZCfd~`nj(`yLGwsPwwF2HR-s~9aO8H>-nY)CK~enk?UUvxzXg>8-}Xt|dTyt{ z|7^$K`t-m0pJ~kwB`}FSwm9sjr0e0m(cm$5INU6z!-HvX_>`8k_&#R))giVKb2i2i zn`q+gmoWY>aE(1)=MUnj)aXAOOwQ}&lzSc5 zyd~}v?m8_dH3B1h^aYaacG)V@NFokak0M-3IM;=@_TwX-UhG=-Tt>0Hb3rX@g36He z|DiBnpFrxhe2=YSLx1=VE!e1$TRWa$BeC>b41yin3U{z6ndXYZZpziM^(X~z3Sd5& zC!;g#44t5pTBE0RHNW!h-yma|>-4bV6CDR=@Dy=I*C*l(>r}Mg{hwL|_aU%&AYa$< z*Wh4iIJQn}6EG7X|8Em6qIGK2tE`IZ30IB7`SiuDkc_hDvzv3-?0fF~2lFYAaa z)mX{8BLHtfvDRmJaX&#lV$$zd-H8R2rfli&uiw@Y$)5l_;^12$5g3$zJ=IFiNq(_4 zEjp-7qkPu1WOPN$(5(<})j7}NqIn>xNIx){tN9oceLR|N3M{~jy&XYp^3coY@r&@V zxdcn$6tA__v*pMgeVAW}v0e~fk`pJ6&j*EMND7-`hU?%AlB^*1#FCm-!y@q=eoq}$ zUSOj&TvuK!zUSo|81`u-;TK=0?Z#YDf9IW<{vt1<5`>kXu+*He7GpLz@N90~69v+? z04j@-+~xn!#}v~Sk3O(By$nk;;nefM$E)D##1WZsDE(8t&K@PqiH!Ow-gxKOvQvqB z!Q_{YP$uyK_n*^m*8#B^`_&bj_;1Ja!v8;W_y5XV*1S?%RzdkxQiBD8ozNX3qI6+6 zY`LMw&}cJasEBF=O#t1X!AUR5ss~HY;|2o2tub)&AHIEwPzc&Wt;{7INdLYT{CQg- z`1kE<8yU>CS4%arUykfA-KDFsBu0147fDMVmW^bhh(sI{2kR_~1Q{c)rbanoXRt5La!Y(>R zk#{^P$Blz)#8#{Aukt^iRNmV0im@Eew$$c2_7V2*T~z=$5y0$^NZo>mQ-(8>#R)4# zfB)I0M~ii}_Ss$A>4_7bH%f@2bB26*jgdfvupRQGnjew41*&A$aBvSXcFlKDBM)N|c@e0Vw zO^FcjmO>fKlt$3Da5l0cECrVD37B!D8kUBjfP;o4n9Q7Y2bd%0>5(85 zEX&IbQ|GJc+@8?e7w>P>=&lcw!LeE0D48g()=R<6gq;=R>MvLw z)kB=$DcH?@kTf@!+`m1>oGtmJTwPrq@)dHL$Q)-QZv>+$`OddK$*yxI*!X1kSzLVk zb0mo@#Z|a%YSSInfDzrOc7kHi;ry ziF4^UrrI&&qjd^}0kxizP}2LNTrZVRRcFXH3iA}<6yqDNP{~Y(qeQ<5pX51?CGmn0 z$`nH6BisSFw&>dLCswosRoVnUPKxRAD!PrfyQ&~^9k0+F^A&h4q{&Ly!Vx=4lcbXK zR1bCns~yEI~smBvvVgr-sTOc{dWT^6clWp|Ku9+QqxiDpDYo~jVp z^PZ*S&IXOdxI>J@nF==vhg7z=OVKV+f2}21p)a`qbL~tCA_(BWAT#8D%jo(aU%UVJ zx;y`??tTF;4#!f(uq(F}NlBZ>ldzR#1*Gv=<)m!@_0$S&)@$(_=8=q zW{&6eyyIxSsubdT^bv1vYdj_33p00}na}^d`4WS<+YIHJ>K{8#_|4Yy8B9St0ANBzdtKwrK(_ zrov|OxVkOCzl&V1W|WPW+kT*Ar0VxnarZS(c~j&9Egv-H=r!wo&v0%Pva%de<8>z$ z*+wqXJEgPHQkQSoh;j4^`-;O}LyDP<-c*Jz5Q3$F;qqA;J_wnZ4f{1A9heP6WDBC< zv>Wit=jK;2p<|li-Y&_=6Q%a_P+CQpRxGvqu&)G6=+MNus^PwAm{|L0XjhtXinHMq z-VsdW^4Mc*QKwOnNfn};C1PG#pD&slqCr^r?*f>JIojLDXwK+u(`R~Si8`(zlpJKS^DlroxJD1t_{JkZ7LjR ztJ}!XkrU#_Z8SdvA_N-i7`cBJZmW1dBIecD9%*&ej2y7aZupIOgB!Y35^lo_2myLh z5QEDHy?3&Aj*rXYf?rm3PCJSxMpCZzE~Q7=*6{{s4c`Z-RDB+Z+@5kIxsJ0OXIxE0 z>M};{EHj$e-}WD1V+|S4vmh(UR#9Hy{NL<5bE#dZX_Aw0$Bn0W%-9|`J^=dC8!^os z>M%m044yC#i5oEwN=2A#{R6{7Yw71Ki(zLZ?194XJTa&?kh#OwztxG!+e0&$n=i03 zKvleYnWj6E+wfegK1RR1f&2ON z8?3JQ>s(^1dk^1UR^#$H7oSPdki{)Q^NWG9EBr;4*J$zIwC_QF#t}*T-2+2d?^uFQ zglbQM3CqYh6~wG^!lrpa5sCvQ2|*+NPyBn8!uPa)qkEpPgUSb76K^@6o`U)+Wk1`R zDhr2x@0;Wovj3UubV=qLgyTH3a%L<^Am92m!x6qkS|%RBelW-2r|Z?UHv8SAz%tt` zT4HK}ln_p`dpInS(Ad>Xhsv_vR z1%xE52R#siR%G)q1QNSIg=HnQ{E}=t;FG~RjgPJL?(<7RYAJz?1&z4ntmQ1=ZSHHP zb#%7w3?}DeWrFepqSXS?Ktf5{NP0+w*o}6kIgh&uEVqq}nG!;l;j**TTz1?rB8e4zXv3d6I zqAcFHypU+Rrmo4Q6KM_24mR*g(z@5!jG0%RNSNYu(O~}idP#K}2Za-~{8uoj1 z5nDN1o33wqD*((v5_p+9xfnEg$ZtJzA+BRhxe4n{+?pbazI$G|{A?&$=j{;&8S6Le zd7Ae0wFmUmAP9k#hY1PXX$JwW=1}UH{c4ei?=YlEpW^1F?f8loF9B(aCp4GiGHKWE zFI!{HQ*5q!^3;R2ZDk$gEQR$2*OI*6Q>*sK@fPm^0XezqjngbMX)zp++7Gwm*`gmy z>cxhpszO6;+fCoy6ln*p&~Ro8kjkQ(f7JX8mAspf>;@M{x!@pX^D{?Vc%4c1POGDA z;Yg9{zsJ?<4+BZJaKtTcA@>VoF{L`SAVC~;LicN+XO+=N`6%8Y-zgH3b_D|aZ;;+2 zpT)}_3yT7W21(<@4bBJu1cCd!Q!9=3ciHVz=XxXX*;!h=||o6c>#)-ByikGr(=utX=E-I(*-`h1@ldesx;Qt~Y~O zEZIY4eBQRs#+;n}T(Lwj&_ZTShVR_o55C17oZ;Ree^c?rgI9u8AC{e z<0Uf0RSH5K87^1G@t<=c84+L^s+#kon0%K+^mSac86mx<>3EY!K2t~ufX)t zjdFJnE$MugKb-+n4j+ss4pSCqmbT_0Lz2c=o zo587HfvHfQkTKQqdCHV*!LoDjiSct^`yvV}0LV<2GG;;#`2o8Sd|Uaz3U>M{8oK=8 zCPMy+URF9CvrUlE}sszgEvJ9T+aRC+b)4^$!{&MW#TLK^+4KGIfUi`d8cdU^ig z2X7X&6NXqC8E+CCPc}7{Y=v$uVwqD!b@407VhU#Qb{33#B2ga_J$h|O4+h)DhU0J4 zE?{>$&k*N_QVdywB?fm?LUMm$kP|uu9BTNy{J)+onN#KeWDE0D*DpK>21fSZ0#KU& zPub%C%nxn;)+QRGSogf_zi;;(oVJF+iz9O6B5B}&Xy6hlDq_sTDGU^7Ev(^Yq8b`a z-iTNz3p8AIV5-+9cZNTI3HpB*n*Jep!f$=Mi-iSy_t8(xA2^rC>wY=2d-myfP67r< z>*!L6YG+OJ;jtZ;^;hC^NtuzACR&P?&+l3ZmpANMiBH97@H#7l(e`(%#-{G$y*Lu1 zRqIMS#kgRyp=Qe?TZST($WVXs6qQaM%KyuAF+T~W1ntH)K?xm8%EYQ+;eLUkq;!&C zns@BNnVEW!7v~Z!z`6v59HqL$zePLNS=89(CPZz{OS^ADKz(FB3aL5)TR2u8t)z;9 zfLW47PnoCS7BjgcI7(Z=CrQh#7>l_)3Q)4*8)c}>y1{VIGh_0eJ<6Z;9#V7Vqek$F z4p%y`gpJKBnL#-*cyevYN~P>=gvX9UNjDG-OD)gS=pvc7(;t)NqzoR1}yhE$iS)@?M0iqMn8{Npe!8p4=cIVaodgGcQV$Yu)gI9JgKm{dR zMztxqCL`Fr2{3ty3Z7+ln(&@o<(c&%#Ei-*F`XQcnslO7AH}K6 z-7c6SRzZ`yc{?MMTuQf|F&_Ze0R$)1X+xh{pFtF4xBgueew_LIh>g)VC!rKUrbULA zZjey(PZVU_L$Kch4pGu(qoNNsbv_CT?lI$C4{%Ba$ETG551d0=aRN4wDfD9;X@O_V znE~+lSA@?H3iDW0CTN;T&WIIMEAYT6-a8lXEEC+3sPc$hbUaa*_Qw;*zvmI%0osoH z#}9ZkZ0H}K{MdO3A^o(98o)mkcY22r|D+E4JAp#%eu6F@U>7wHc;Hq33~m0igkszU zT0g`W511x+%_seotnC}Q>i-Tx`N^LD?*>gciWu=Bl{Co8=N~JGc}8pi?~q&k&z$@} z)2M%Vhsu?&(@;O7HJ}4QNhUHJWh`YJWmYn~Nk|aP>}AVI5v1mT3pR^7QbqAG)NspQ zQuI8wMcUN7rJFQI6tE$Nx`vn4Q*Ga?%K%TMO|0U;p(#9L-M?9M-#3@coD~%MEwJk!>UQdHp6Ne$oLGv_3kgwz@O&l{SUkcGZ4nBlcgi8JqSw zv{Uy@BOHxct7H<~!!^ZKGwF=q+#dvrfHYbECuQ8gfD7y3YW@16@ z?4jFuENjMVO*7ht!mD?U-cwAlvdK44t0zjEn8k_~?zVj$8Drk!=P2zev3nRmp4twO zv9YKQOmXJg`g`y63JbJhj_S4`{-1{wxj`Dqdp z(u1tK#)jJ8Uy_<5B*kFIs-@POrJbYUMVU%e*C?Q!0KWQWs3R$5=A3qut@8&2DrH6- zZJyfTBqBeDRtG@I(Q%bJq^L~mJN@6k)@xdiL>h%1d)ko;wG+lYW&h~zT53K$SNF<= zG}Ywe8|t4M$m}v0%O6tpSRH&?S^F*1pIa^dfzvaeSYmp04}+2Rt^R6U6V=)iHIT;H=U40Tarby7xMOG>vnkp<)7f zmSC>OW+`=KdR_3O?HLqNJk@(0DPuq!%T7Zl zm0ho;#5s=rrkt=R=+!=8l_I>~jV{x-_U~%CK@%_}fi&;~TwFI3ps)6>$vN+N(^4I%U;krBgepBUz0Y2@j_}Q~Tmz zQ<S5-DBlNZOSHEPcmi6FIqBE5WLyAu5Tc}wqA;Tfn9-3k+3@=jms!Xkad7Fy;+tv@R zuVtyn_fQ|33!$i|N7`{=`3Y@>-#2yW6@MXO#}Zdyp=;Oo95mKocnqz*3d!Xwm-bMf z`uBC}lI?Jg&p0^bxs}%)BOROG$Xl08{iK$>%us0ilI1TU#{%9YnjC{gEajw#3Q_d; zdfL)jx;`vYn^4;}T?M)EQ~s&76u)0>9NQE*{iXR)`%f;7VR+MY0haOz8LKOe@L{-i zaa=4Wma@|e`zuFD^TPr~Xh)b)OA7^rn*EoQbzl~P2#yAd^#gI|*h%inTZ^G{7N$26 zd{qVGus_{^d*h-Z^CZE+(?%lIQQyY1)9xB;$kb3v>99#z3eOLJufNq9rt8I&1nRxB zYDk*!ha4?m+12RifWJFLG`1&bxl9p((7m8YnQLeyVZE9CU7Y+lB+m_qz|t4}WGwI< z>Y}*Ndsk0-+k_U+i5+F7!v)C!QRM^GjZ`W$wKi2ode|!=rX*t=8d~Y}InCwPnF{YU z(~Rb3VWp`J*Q5P1BW6&umY5Z^|-X3f(qG_l-WV|NL z>7J%o)2h~uNlj6swJd{04*fd9K<>^O@LwDJ)#TZAPg+p8ky{EaOFvb#w@RGC zmUWL7RYCOh^YAuq=^ZJrOro4Lg616*)fsAHEmPd(L&o#{Kzfdts;D1;{jP_>sef_B3)Rw(3PxCjGFBKCCMZ??r-_UEY{8ou} zP2pA!mW)?XCxH13-dMua6&kaxCe&)xrr3sEgA5kkB7=-4;7EL#S&vPR6-$Z-ee)Gr zN!)3DJ>}+NRXF?hgL)Z>lRE=^Qwg~6+Rr8$NTN-wbWH$RuG%g6t-)C9K6$Q6b=?mm z(-RIWli;MIKbljz9FCXG+4W{HskL0ah4EMTSq9(Tpz^QeYOMdGz8Bj>dsK30613DH z;g;W@(w2k8WFM5)5@)Gek!?ElIs(w-KFima))@H=fe=G>ek)*HumYi=Flc~7Un@q$ zY%Ixnktk~05Gto6s=1GDI-z-&++V~t%YN7N>#;1Z`=Gd%Xzik(ph=!dklGB}1BVhk z4{m&A&M`t9=L3PjI!L|Kj~1EfU`XHfN3^#K8_u#q-rOXkPfzqH&mM?ihSQZIfz1`w z$mCFErXuMPR4F%NsSG5gu25(!b?WwE!VO+Y0!x3ZoyN1Xm-W??r&(3%ZM>CGAV?rr z$Q#_ia$`$QB_p^?>r>o>`Ky#|H^q_dGzHjdojJ}|K44Xk=3$e6;j|Q1dY=wa;+;qf zJ3&!LO5dbX5;rS+#V$>j1tSm*G>rf%|#gSvR;L2o|Y>IG&~>L)Dd zwZ44>vVfHvNU5Q;k?3AGNacwmINk9A6jy(n*)cqUU!CsYqUttCVyDfKFtj)vIB!C>SuZWM z3g-BM571~lqWI7-ckS#53S+vBE{9^iEHPU9h?8n>@X(!<*o~C<(blab`YH=^-EDj{ zukP$p(x4ld8RaLGJdEC31>1D7xCk$1O<(kqUI`gCQ)s?b= ztvPuz$sb57x4emu*c;}GD0aGXHbg({Jf)E{J&VOE|5 z4=617X!&#i$?p-gVj! z1>RiVK%^`9YbBD-h4#IkV;UpY6N3WQ`Ltgr7YrE)3IRFa2oH~Om5_c28QV-rw#=lR zELl&D`uvDCKKh^vnwj*^3z$rK!E|>iw85{de_nqn6zuM#QE=K>t_^!EX3}(*p~{ef zFXZRaSm#_>dA09~wJzT{Ku@f)*t?s_Z9XhYvqbcKw$qLcpcU#5VmrZ2F>7wkFke{} zh372$>dBY1^pjDx`O}TmndLTvVe_4^scXrz8E{qzq*kx>wD|E(s`<+4l6)#v*C|yu z-j@T5&dN4mb(?iKfOeE{rIF(Vs~2e=ONee=>J3GM?d43YCvw%Ng_cu4PI!;qJc*Se z<&b1y^#3FpA@+49t&FgKxj(S2sb;fY&O-MCrPV6>78saM{i3uD z1r_MJpA`l=6~^739hbkH3&!A_igjg#j@KpcI8DX+oR7N2s~ee3dDht#o>-8i>>4vO zmjijvJx@ubojp%61YQcb`~*(2rp%exPfi}et(NF%WC9%&<>(p%DU&HU)5o4fqOMr) zqGN^h+A8B^PW6c z^os6H+${6j?w322JjiMORDjyzv&wnJb*k_Mf@#jfRmq-IKoVeV(r~L(W(LKckFQ1H z5M?eqv;Ngd%vktxZj3qS&IX3~kVjt3w+qG+EQ|66tnE&c3-*2N^dp?sXB95?Wzsq) zcaVYdoI0LjZqeFRj8GjoZ5MGV+{RfrOn=o~-B(3)h1->pa8<72Jyrd71FHU8K5kmK z1*-p}Mv?O^q_|AZFxR8o!X+W`t!@S>CKp=O0ke&FWH}H>$2;B`8PFsGO()* zc9U9gwjX6ikhgZv>?K%h9w~@-f$APwn}>F0O42>Cbgx^7SreGvmxu_oS(F&qKOrDY=oidB$sKVh>yVh+CN6 zHMUV|jOp(xR@0LpTUBRvvS=KFLi}A~{xKT_`stOF*fgx?4C?m1`Hnj}uv2xpvpae; zy#Nvs|Hq8X4xiMPwEFI*Wjh)#yDs4FJTWLk~SVQM7A%Bin2 zA6n1<9FRbj89BbUUvAPooi20Z)r{jhuY5pIPgUakJSB5};thxDt+=Z){2;eoo?;7f zpN^ZeXtyT9;jRy9b#55#d^zwD*gIUGtR7u`yV2w0bO#qN=8{ zLs`}1uO&q%3S;fVwf(A-XN=X#{aP)kC+O4==di)Ca1A06?2r0HYOI$xscz3AW5gLV zv)0Gk(wln4ZloSs??Dx&K^l1N^3#b*PaAB)&DNHl`EKZ?;g1wICk*zNcFr|5H2+N5 zhMK~l+cPa5s6XiI=S?1e`8GZjL&g4?(dTdob+!~y_g_+qjk%0Q;^S#@=Lmwsh01P0Ddg3Hbtdl{(NN4)wG zxeBx31D{mAlUxWJ`YR$h_a{Wv^(l9_$p_2(iAjSUaRPbhjqekFbg9P2dDDaWd1j)y zW>@gqNdQ5D_8TNWbL+3=>(6MfzKOZmn_fuj>VTGf<>u|mtzU9C0XbWV`|Al!e_{KV zv`=)sgz(R*0+{C1-vR^-7fru0X>@6y^o~pFNZIm&34!r_XG0RUybf>2&GsKmbp_j+ zRbu#waPwOPpvgBgH`tfd3$vqfQT4Tp9Wsa83A3eRZfI8*rk{uFhJ2pqaZpB2tryV_ z)9sovyjm7lXLa6>>~|fa!}OvdIW%hIU*sLp5A&|VtGNyD$gAw(*bZHxCM|V%EJ#wF zlF^L+evYYM-@svaEYOF`mJ{NYESdG3--rEv69PF_D@+Z+gF7)<6jvw6;uBetlDLFG z62633G*piQfnQAM5L(cL3q6R11MfYI(}^%Pva15QZ34f8z;1#)6TaJo@)C^vGKA{_ zhPQ931Ccn$#{;W9Sn9$rAoZgl_+wvo16g_K$OYCY!umka=bI1^`vBbssvoF*!0&?? z1YCDzHBBQa7|zULC)>bt zi>TKhZ`PV?o@LNMuJyrOOi~{Gm>#~y%gHxuct;c6b_m>I>h|D@jw&^Xr=sBH|EOBO z7b$+iI_^`S1BAut{=g`O7|Ymv4>x;7lsoV?>lHQ;`U7Y5iZB($jYVFgh+KSAHtf=- z8PAO+(DI`>Lz6<(INVbMtu=!9syRftnTr*fk{Pv5WU8cnZc)Do07j439vC6J-200rJG}3T*k!JGKD&6{Is||ZhR|$L zRBsLLW+B+E(-) ztYAnp*J;l z*@^HI3Ms_}dk>NDp6EPmdl*Y8zU6*vf0*7zC=oB`pkaw)6EMwYwR~ZZu*s#@c?~UE zxhKQJAgt+P275TRb+`j)Ln6xsS=E=>06h5%Xt36fi261MtaK)` zKNDM!v(nQ?T3(_YAt>JBEuAoGATF|-FC$)}VAMlV9Om{Bk7fw0sC<`*4a8M5WR4^z z9mba-z6TTodL)rjADmlE7}G)@h8d!Ns3!QYh>aSzqp&R`+Nuo0FRykjv>Bb8o2XL7 zijJo!E#RzEj6Y2YB?b8JUPvuAPMMZlygY~yCbn$VE*Lqfzc|FlbzwfxfCmPOs52R6 z0c4^FG7l`~WG5e}$FB~LXfIZThv`BV=3yI2LcaJb(qFz zVF6Gbv5lssuSo4t--rGl{%q3!1C|(7xR3k5-b?d|?m@FPELOrj{os3?XAsFv7ac@9 zp}sM=h1zJ3YhK4q8+%=9>`q;f0UyaWIzj0n;$qY0gWvQ{!pTeb763P5CC2q z`6$=w;ze~kLzN_=KV7SSs^L`$WktGv2z55#HaJJ%Gq7IZHNlYA$=(9=5xkrt@N@U! zohVawYL8bdUqiy6TXe2N7MZ1Q@-1+AaG)QXA;4aS6%|!5wEDWDG3-<(xww)G;MTZk zgg-Kh3Il7)eW9WLTyGO08WI2@t&x%eWiWtEBs2^EbBfgB$ZJ^K7KG#J1{PhfuxvIc ztZ5>bAJOneDZ zi12rX@c)TQ=7#V#nQ_rj#)Vbg??Kfeza>%Jj@lhDj*4&lJ-e7BG$vQ9x9ks5HiRo1 z_L4>C_f_sH{*Obcoid*zB)7?W%fgmS!|ZB6UwQ1U%DwEBgVJ?B+!r~jGQHLgA+KGB zhq1}kt+8@y4Kb+;{kCk$aCV`U)NOb-8J$g>Uxg@q2Bwk#LAE6r$$|i5;(*27&<^eW#C8+K3|j%bJ0~)l87tN~opfOA6pYNM_vIk!#Wh>A+weH9 zWFm58r?9Y8+XHOFZfBSM=p)sDNk)Kf0jlInR4Ij6@TR|3VRTQ~O8mJy`WI@C zaCb(b z1KK1JrCW@4JdSZ6Q~0dVzG-ofctLU73tyuEiaMFw*q&)NuIMqFCmdbwW)^Lg{Bw6W z+`mDbkpCny2{R0l`t8(1EwkgABmsIxbHzq=oh~kY61DCEM(KZ}eFWf8XND?k4XItg z4Ah0BKPq(UtfjU)1joBUIV97YHVVk22GGIn^PCq?)Qx~mjQTf=UX*HwMc&s~c17*? zU~t2s9T55ur&AapLA{VV07ZQULe1_Yqq!Pc8D2)+*@qL%k%`BZZ04fq!2EUP!y!q? zTU{~xr#M?5e%T&jFGZ{mv-rAZO&7)@Z+VYx(>7?(*c7I+pA=WHGbXqY2M7LOpR`=y z5!)FsOi~scr3tW~<_rLhT9x@Fsqu;2bH%faif*gH={L zoQU5qVX#Ke(kq}&V8-g|x}(CGYg6~pK?k@9V`Wt>HET`!n_kPsDN-U);}V5-j;TSi@6hW~!-=34t-oBtV9hb1DMiJ(io?M_iq5O)whu~VT+$QuJMFTK03_#2Q0I)>Hf;N`B2PVv>w9MYw@ zD5s3y*dEzV*I}9%Jhq*o9~nu-`SZ4>YKy}7a?0LtE=U^5qxnNTrE!Z9`=Xak=aR~E ziGA<-20giLQrDYb=1Z=SlxteD1CIH~lyd1`q_>A)J@s+G@CIf;(lJ8mMr}avJ@o9x zy(44iPw)C-=tjIlFWWU4X*v)9i8K**pA`UJkf}Tz`)KPUP88a4Z0chyBrdf4>%KhT zTYm=gaL1$Ot7Jd)zx2it)Hka3bms$_H>QNlJJaSr_(~c7K-rJvdDOyVP><>Y;z1G9 z$Jjdb10d)(&W5y~`*v@PMl=H>o{z>p*?+kAXuc0hy`k?heIMgLX71GdjM+ZE^BMR9 z(J@Wl8Jh-j$2&yM0Tpr*eqSYcjXVVnaEKS3q7gA_c`O}D#$=HA**Qw&tZ4yO_@WFL zb>r5%qsZ!Ov&uZN%k_|1#jhAoZ3007jE1xk%te9*!JM7w-pPA^!U+<0k1aZNNg+81 z(qCv0*F|T>tUSMMsLp`;0=~f-f;e`hDdWi^X*&z$_?|E*Us2Kt7NiwG5E^b`-C4oN z>XSt@17O6(YJewf^LvtX0~VP$kaRT$0=gt|K%5+vMifp!o}6ow2G2bl-KcsN-GeM0 z8KWIO}KI7Jqlz!aQVuS(L zmI0CCxB0Pxkd9!J6N47#Qb*XcLD~a6ETQ5D_6lzPTO#66Jv2wmC0b zD71|psV=e|83sF7b@BOT+$u`gQpj1cn9%JQtd!4Nm))0Z!f;&4vvsQE(~etk#Q)%Q z4N;jy^P^60Dwz1fhocseQ?zemk-^TVU-Gyv*<2^Vv%pvh}Hih(c?5r)B76ZSjHz0MUi;qz)JHvQy9U0>?> zZ}`lyHzN9Y+eCB24~BKZ_5uMY{QhugY1Rov5#v(y&DLd;9<5stu)Z#BE)!8Og9GHfRv+_g!)O(&~G0vtG8b z%JgX4kw2IY*V*Cg&w#ChQLaxwsiKDblHh75@Ux>QQPju9@+pTwl^yqX2vQvP-fWEJ zN&I~uh(P%unD0nH>T4VEVR=D1%0Z1A^W%!Vta#Y&A~1FwWfefJ8`5m(;8pSPEbl@f?cqC+$KU> z0Le?7$mCn&5#{0L0co;t8!DbHAd;y;vEAjKK+HxzAz4A4-Q6t39EtAV9Qu{3V?^sQ zj`B6iBb`D4T5SbKNcI8i?;(2)BYgSLUtH#vjC=}=CqaFFDS8mdH1^^kBIDdZI5H)4fN|_2RxSCFhG<2QgjL zt)evMOSkw7c`PyoW88=xzO}Ka^x#C;We(an5;80@h1=b@*(@{!b8e-(ba`_}eH4(EA;#L>!lzSwSNeWP?; zy&L|wm1<`3c1++#h+*M&Ty_hBN8TSrdELt-yB*!W)zBxS9cJCe-?gt@`Qd1`j1^CY zK#0W9WH55!+dnC;Eugh2>}S4*6rdOK?}PZI=TL2uWU?&Q<~%it@nmg?U~#G-HxxGA z$J`xHCiLt=`73hlKy?`t775n;$alIxg2c0Z>8Tp(13FBV%LS~=TAeXeQW#>GW09W7 zvHQO3Ox)X!;p0L0_>QPER%vA5=xw@q7x2`ZnY}YP~8mG=fd=FOgrNCWtwDH1yv?Kd(3EMDBiet!FFjbm}oz zvT#EhR>|HX-v!@jT@dT6>037utdiqDU$_i0h!6` zO9^r_&CWkGBC3m@9Kd#Vv_a56eXs_LK;nQ5^L)(~@_nrZSJxBY3Xy_i_P(EH@bv-g z4((WSo3N}NJKlqBbue!e*m_g<;A#=Inu*hYiI|r-@2yaJZB$|ERa5{+Bo#c+(3hj? zEl`$c)IShvC6*WsaUWSL?oZ|l!=n21YqAGMXeq#8WM%~v>`qbD*kOwMUT8d4h{(}@ z@jNXTP^|CUX4MjcH+tdJv|5{lzcA#L3nHJ{GNS@;d(dFCjMn|`h58ZC0UDIEFbSi!%cFKQ9IxGiaBHIl_?{3{47QICJ zh>OLpw2T0mB-)oB)=CISf7{ok7NjeE)@g=-$h-G=D*%Z7t*#5-9!T^YZ*kBvwCEjT!8c9I+jwD*#g>Y`i5}t?g^Cz)%6Nx>;Gu=I#7|}m60t$^Jw~D6omKQ z&2zt1(J%q#8iYRG z5It>-*&8rmZ{l7>L5e60|>F z<4kXWfCgBR)DiXZp_~SeGk@a`6F;f5Od(593#Mf}TP7c2eYs70sJ@TMek!QT3=o8d zfJhvNiv39>ou%UziQJwo%n}kqcHd+sj`w72BTne8<9AF2c{3%8bA%9oF@Z;ipR%bC1 z#`HfQVKJN^{r2uMvnsvs6G)M9Ztl`hkQn>a+^N7ksQJ!gP@g!C@GRCV!8|&lOl>wm+K$>%1|iKtRx%kBco}%g^52sz060YRasjvP2XH;UG-|jV}LOJ-{K$UG~3rM!gH^L28*OTW>VgrkfahEn;uq*y2Ey|f6kJeSK5=VL_hQ< zC(J``me>eRMzLhmD$5wnC~?01PZmfcbbl`Av+s(8@l|7~;FaOm8`r$(1a9I~r=^mwghE_O7PLz+V z{|NGtBed_*ycV}d0>@nVqmFzv|nrrfTxocT|J9kVylKwCVyS)X0f}d4lK+r{e)Hc&`@L zN1sbl>K`F7Sj7iPzuuCH2`~>llRx z<4wn?q{3I?+2ycI6a4LNL_5d>7;>h9FrXd$`nE*7)B_6fWT9K{jXkMM6Gr1rK<6+e zQ=|iJK4wp~z|xE2R&^8Pjk!_2BMsG+;B@-JEAW=;valT~edfZC<*sFu>&@bkzvG+q zMnHfE4e{}VF8y4~(MnZ8JK)T1+M?oyKj7UOE5Bub)w4!w;YAPHvxiJO%$Cj@oLVtX zZ~SwPllMETMlQGa$t{U5-ENsTDm)!3p9fYLUI$En6gPl8&WYfAsgH2U$1m2BRHWpt*KbQj~8#07Se^fAthwsKRwbI9?|DlBuf=$${IeA!E zBjj6zbmq`U_r=*z)4U*l?kfGk=~u_wqj~$-nP251AHo9=cY)=+*=d( zyO=M$qg@L4S588#K0>UZ!Q$Y-ADcANjuFbI@ng6~FjpCXrITJ7 zS#r5YAF)F&FKn@|wP>j7t|c*Cx!A~mrgx4|X#aM*6TJf29R$%0D)_^6O}S4nZS~r8 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

    UM?5;c$CtdNP-8nqN!T33o&%UfHY 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 SY;@S@@WnEF&4EEd_|s1!7fcNR literal 0 HcmV?d00001 diff --git a/src/Log4j-config.xsd b/src/Log4j-config.xsd new file mode 100644 index 0000000..a19e125 --- /dev/null +++ b/src/Log4j-config.xsd @@ -0,0 +1,133 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Log4j-events.dtd b/src/Log4j-events.dtd new file mode 100644 index 0000000..d6b34c8 --- /dev/null +++ b/src/Log4j-events.dtd @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Log4j-events.xsd b/src/Log4j-events.xsd new file mode 100644 index 0000000..6e18154 --- /dev/null +++ b/src/Log4j-events.xsd @@ -0,0 +1,78 @@ + + + + + + Log4J 2.0 XML Schema for XML log event files. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Log4j-levels.xsd b/src/Log4j-levels.xsd new file mode 100644 index 0000000..3ca10bb --- /dev/null +++ b/src/Log4j-levels.xsd @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + diff --git a/src/META-INF/MANIFEST.MF b/src/META-INF/MANIFEST.MF new file mode 100644 index 0000000..8ebbf15 --- /dev/null +++ b/src/META-INF/MANIFEST.MF @@ -0,0 +1,8 @@ +Manifest-Version: 1.0 +Implementation-Version: v1.0 +Archiver-Version: Plexus Archiver +Built-By: Andrew +Created-By: Apache Maven 3.0.5 +Build-Jdk: 1.8.0_171 +Main-Class: net.mc.main.Main + diff --git a/src/Minecraft_Logo.png b/src/Minecraft_Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..5049c74d3a08b0757a7900e5c63f806d00c6fd52 GIT binary patch literal 30257 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 literal 0 HcmV?d00001 diff --git a/src/cakehoohoohoo.png b/src/cakehoohoohoo.png new file mode 100644 index 0000000000000000000000000000000000000000..2947892e8b7d92afc59de48b2e7ee82a30b73640 GIT binary patch literal 199 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`eV#6kAr-gQPQJ@|K!K+v_K4w~ z`YxN_x8^HGDY=~cvPDdrBo)az+x&($tIHDKGI_$q`s;@`}$YrGW;*72$@(mM}y8H1;*pUXO@geCyG>`yuX literal 0 HcmV?d00001 diff --git a/src/com/evilco/mc/nbt/error/TagNotFoundException.java b/src/com/evilco/mc/nbt/error/TagNotFoundException.java new file mode 100644 index 0000000..6b3f46c --- /dev/null +++ b/src/com/evilco/mc/nbt/error/TagNotFoundException.java @@ -0,0 +1,27 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.evilco.mc.nbt.error; + +import java.io.IOException; + +public class TagNotFoundException +extends IOException { + private static final long serialVersionUID = -4631008535746749103L; + + public TagNotFoundException() { + super("The tag does not exist"); + } + + public TagNotFoundException(String message) { + super(message); + } + + public TagNotFoundException(Throwable cause) { + super(cause); + } + + public TagNotFoundException(String message, Throwable cause) { + super(message, cause); + } +} diff --git a/src/com/evilco/mc/nbt/error/UnexpectedTagTypeException.java b/src/com/evilco/mc/nbt/error/UnexpectedTagTypeException.java new file mode 100644 index 0000000..0360248 --- /dev/null +++ b/src/com/evilco/mc/nbt/error/UnexpectedTagTypeException.java @@ -0,0 +1,27 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.evilco.mc.nbt.error; + +import java.io.IOException; + +public class UnexpectedTagTypeException +extends IOException { + private static final long serialVersionUID = -6604963428978583800L; + + public UnexpectedTagTypeException() { + super("The tag is not of the expected type"); + } + + public UnexpectedTagTypeException(String message) { + super(message); + } + + public UnexpectedTagTypeException(Throwable cause) { + super(cause); + } + + public UnexpectedTagTypeException(String message, Throwable cause) { + super(message, cause); + } +} diff --git a/src/com/evilco/mc/nbt/stream/NbtInputStream.java b/src/com/evilco/mc/nbt/stream/NbtInputStream.java new file mode 100644 index 0000000..3ca56ba --- /dev/null +++ b/src/com/evilco/mc/nbt/stream/NbtInputStream.java @@ -0,0 +1,46 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.evilco.mc.nbt.stream; + +import com.evilco.mc.nbt.tag.ITag; +import com.evilco.mc.nbt.tag.TagType; +import java.io.DataInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.lang.reflect.Constructor; + +public class NbtInputStream +extends DataInputStream { + public NbtInputStream(InputStream in) { + super(in); + } + + public ITag readTag() throws IOException { + byte type = this.readByte(); + TagType tagType = TagType.valueOf(type); + if (tagType == null) { + throw new IOException("Invalid NBT tag: Found unknown tag type " + type + "."); + } + if (tagType == TagType.END) { + return null; + } + return this.readTag(tagType, false); + } + + public ITag readTag(TagType type, boolean anonymous) throws IOException { + Constructor constructor = null; + try { + constructor = type.tagType.getConstructor(NbtInputStream.class, Boolean.TYPE); + } + catch (NoSuchMethodException ex) { + throw new IOException("Invalid NBT implementation state: Type " + type.tagType.getName() + " has no de-serialization constructor."); + } + try { + return constructor.newInstance(this, anonymous); + } + catch (Exception ex) { + throw new IOException("Invalid NBT implementation state: Type " + type.tagType.getName() + " in (" + this.getClass().getName() + ") has no valid constructor: " + ex.getMessage(), ex); + } + } +} diff --git a/src/com/evilco/mc/nbt/stream/NbtOutputStream.java b/src/com/evilco/mc/nbt/stream/NbtOutputStream.java new file mode 100644 index 0000000..38453e5 --- /dev/null +++ b/src/com/evilco/mc/nbt/stream/NbtOutputStream.java @@ -0,0 +1,21 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.evilco.mc.nbt.stream; + +import com.evilco.mc.nbt.tag.ITag; +import java.io.DataOutputStream; +import java.io.IOException; +import java.io.OutputStream; + +public class NbtOutputStream +extends DataOutputStream { + public NbtOutputStream(OutputStream out) { + super(out); + } + + public void write(ITag tag) throws IOException { + this.writeByte(tag.getTagID()); + tag.write(this, false); + } +} diff --git a/src/com/evilco/mc/nbt/tag/AbstractTag.java b/src/com/evilco/mc/nbt/tag/AbstractTag.java new file mode 100644 index 0000000..22f122a --- /dev/null +++ b/src/com/evilco/mc/nbt/tag/AbstractTag.java @@ -0,0 +1,86 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.evilco.mc.nbt.tag; + +import com.evilco.mc.nbt.stream.NbtInputStream; +import com.evilco.mc.nbt.stream.NbtOutputStream; +import com.evilco.mc.nbt.tag.IAnonymousTagContainer; +import com.evilco.mc.nbt.tag.INamedTagContainer; +import com.evilco.mc.nbt.tag.ITag; +import com.evilco.mc.nbt.tag.ITagContainer; +import com.google.common.base.Preconditions; +import java.io.IOException; +import javax.annotation.Nonnull; +import javax.annotation.Nullable; + +public abstract class AbstractTag +implements ITag { + protected String name; + protected ITagContainer parent = null; + + public AbstractTag(@Nonnull String name) { + this.setName(name); + } + + public AbstractTag(@Nonnull NbtInputStream inputStream, boolean anonymous) throws IOException { + Preconditions.checkNotNull(inputStream, "inputStream"); + if (!anonymous) { + short nameSize = inputStream.readShort(); + byte[] nameBytes = new byte[nameSize]; + inputStream.readFully(nameBytes); + this.setName(new String(nameBytes, STRING_CHARSET)); + } + } + + @Override + public String getName() { + return this.name; + } + + @Override + public byte[] getNameBytes() { + return this.name.getBytes(STRING_CHARSET); + } + + @Override + public ITagContainer getParent() { + return this.parent; + } + + @Override + public abstract byte getTagID(); + + @Override + public void setName(@Nonnull String name) { + Preconditions.checkNotNull(name, "name"); + if (this.getParent() != null) { + this.getParent().removeTag(this); + } + this.name = name; + if (this.getParent() != null) { + if (this.getParent() instanceof IAnonymousTagContainer) { + ((IAnonymousTagContainer)this.getParent()).addTag(this); + } else { + ((INamedTagContainer)this.getParent()).setTag(this); + } + } + } + + @Override + public void setParent(@Nullable ITagContainer parent) { + if (this.getParent() != null) { + this.getParent().removeTag(this); + } + this.parent = parent; + } + + @Override + public void write(NbtOutputStream outputStream, boolean anonymous) throws IOException { + if (!anonymous) { + byte[] name = this.getNameBytes(); + outputStream.writeShort(name.length); + outputStream.write(name); + } + } +} diff --git a/src/com/evilco/mc/nbt/tag/IAnonymousTagContainer.java b/src/com/evilco/mc/nbt/tag/IAnonymousTagContainer.java new file mode 100644 index 0000000..a3d3c95 --- /dev/null +++ b/src/com/evilco/mc/nbt/tag/IAnonymousTagContainer.java @@ -0,0 +1,21 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.evilco.mc.nbt.tag; + +import com.evilco.mc.nbt.error.UnexpectedTagTypeException; +import com.evilco.mc.nbt.tag.ITag; +import com.evilco.mc.nbt.tag.ITagContainer; +import java.util.List; +import javax.annotation.Nonnull; + +public interface IAnonymousTagContainer +extends ITagContainer { + public void addTag(@Nonnull ITag var1); + + public List getTags(); + + public List getTags(Class var1) throws UnexpectedTagTypeException; + + public void setTag(int var1, @Nonnull ITag var2); +} diff --git a/src/com/evilco/mc/nbt/tag/INamedTagContainer.java b/src/com/evilco/mc/nbt/tag/INamedTagContainer.java new file mode 100644 index 0000000..721e431 --- /dev/null +++ b/src/com/evilco/mc/nbt/tag/INamedTagContainer.java @@ -0,0 +1,24 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.evilco.mc.nbt.tag; + +import com.evilco.mc.nbt.error.TagNotFoundException; +import com.evilco.mc.nbt.error.UnexpectedTagTypeException; +import com.evilco.mc.nbt.tag.ITag; +import com.evilco.mc.nbt.tag.ITagContainer; +import java.util.Map; +import javax.annotation.Nonnull; + +public interface INamedTagContainer +extends ITagContainer { + public ITag getTag(@Nonnull String var1); + + public T getTag(String var1, Class var2) throws UnexpectedTagTypeException, TagNotFoundException; + + public Map getTags(); + + public void removeTag(@Nonnull String var1); + + public void setTag(@Nonnull ITag var1); +} diff --git a/src/com/evilco/mc/nbt/tag/ITag.java b/src/com/evilco/mc/nbt/tag/ITag.java new file mode 100644 index 0000000..fd80f40 --- /dev/null +++ b/src/com/evilco/mc/nbt/tag/ITag.java @@ -0,0 +1,29 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.evilco.mc.nbt.tag; + +import com.evilco.mc.nbt.stream.NbtOutputStream; +import com.evilco.mc.nbt.tag.ITagContainer; +import java.io.IOException; +import java.nio.charset.Charset; +import javax.annotation.Nonnull; +import javax.annotation.Nullable; + +public interface ITag { + public static final Charset STRING_CHARSET = Charset.forName("UTF-8"); + + public String getName(); + + public byte[] getNameBytes(); + + public ITagContainer getParent(); + + public byte getTagID(); + + public void setName(@Nonnull String var1); + + public void setParent(@Nullable ITagContainer var1); + + public void write(NbtOutputStream var1, boolean var2) throws IOException; +} diff --git a/src/com/evilco/mc/nbt/tag/ITagContainer.java b/src/com/evilco/mc/nbt/tag/ITagContainer.java new file mode 100644 index 0000000..f5d7d28 --- /dev/null +++ b/src/com/evilco/mc/nbt/tag/ITagContainer.java @@ -0,0 +1,12 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.evilco.mc.nbt.tag; + +import com.evilco.mc.nbt.tag.ITag; +import javax.annotation.Nonnull; + +public interface ITagContainer +extends ITag { + public void removeTag(@Nonnull ITag var1); +} diff --git a/src/com/evilco/mc/nbt/tag/TagByte.java b/src/com/evilco/mc/nbt/tag/TagByte.java new file mode 100644 index 0000000..9918ed0 --- /dev/null +++ b/src/com/evilco/mc/nbt/tag/TagByte.java @@ -0,0 +1,45 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.evilco.mc.nbt.tag; + +import com.evilco.mc.nbt.stream.NbtInputStream; +import com.evilco.mc.nbt.stream.NbtOutputStream; +import com.evilco.mc.nbt.tag.AbstractTag; +import com.evilco.mc.nbt.tag.TagType; +import java.io.IOException; +import javax.annotation.Nonnull; + +public class TagByte +extends AbstractTag { + protected byte value; + + public TagByte(@Nonnull String name, byte value) { + super(name); + this.setValue(value); + } + + public TagByte(@Nonnull NbtInputStream inputStream, boolean anonymous) throws IOException { + super(inputStream, anonymous); + this.setValue(inputStream.readByte()); + } + + @Override + public byte getTagID() { + return TagType.BYTE.typeID; + } + + public byte getValue() { + return this.value; + } + + public void setValue(byte b) { + this.value = b; + } + + @Override + public void write(NbtOutputStream outputStream, boolean anonymous) throws IOException { + super.write(outputStream, anonymous); + outputStream.write(this.getValue()); + } +} diff --git a/src/com/evilco/mc/nbt/tag/TagByteArray.java b/src/com/evilco/mc/nbt/tag/TagByteArray.java new file mode 100644 index 0000000..2832e96 --- /dev/null +++ b/src/com/evilco/mc/nbt/tag/TagByteArray.java @@ -0,0 +1,51 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.evilco.mc.nbt.tag; + +import com.evilco.mc.nbt.stream.NbtInputStream; +import com.evilco.mc.nbt.stream.NbtOutputStream; +import com.evilco.mc.nbt.tag.AbstractTag; +import com.evilco.mc.nbt.tag.TagType; +import com.google.common.base.Preconditions; +import java.io.IOException; +import javax.annotation.Nonnull; + +public class TagByteArray +extends AbstractTag { + protected byte[] value; + + public TagByteArray(@Nonnull String name, @Nonnull byte[] value) { + super(name); + this.setValue(value); + } + + public TagByteArray(@Nonnull NbtInputStream inputStream, boolean anonymous) throws IOException { + super(inputStream, anonymous); + int size = inputStream.readInt(); + byte[] data = new byte[size]; + inputStream.readFully(data); + this.setValue(data); + } + + @Override + public byte getTagID() { + return TagType.BYTE_ARRAY.typeID; + } + + public byte[] getValue() { + return this.value; + } + + public void setValue(@Nonnull byte[] b) { + Preconditions.checkNotNull(b, "b"); + this.value = b; + } + + @Override + public void write(NbtOutputStream outputStream, boolean anonymous) throws IOException { + super.write(outputStream, anonymous); + outputStream.writeInt(this.value.length); + outputStream.write(this.value); + } +} diff --git a/src/com/evilco/mc/nbt/tag/TagCompound.java b/src/com/evilco/mc/nbt/tag/TagCompound.java new file mode 100644 index 0000000..63d70c0 --- /dev/null +++ b/src/com/evilco/mc/nbt/tag/TagCompound.java @@ -0,0 +1,184 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.evilco.mc.nbt.tag; + +import com.evilco.mc.nbt.error.TagNotFoundException; +import com.evilco.mc.nbt.error.UnexpectedTagTypeException; +import com.evilco.mc.nbt.stream.NbtInputStream; +import com.evilco.mc.nbt.stream.NbtOutputStream; +import com.evilco.mc.nbt.tag.AbstractTag; +import com.evilco.mc.nbt.tag.INamedTagContainer; +import com.evilco.mc.nbt.tag.ITag; +import com.evilco.mc.nbt.tag.TagByte; +import com.evilco.mc.nbt.tag.TagByteArray; +import com.evilco.mc.nbt.tag.TagDouble; +import com.evilco.mc.nbt.tag.TagFloat; +import com.evilco.mc.nbt.tag.TagInteger; +import com.evilco.mc.nbt.tag.TagIntegerArray; +import com.evilco.mc.nbt.tag.TagList; +import com.evilco.mc.nbt.tag.TagLong; +import com.evilco.mc.nbt.tag.TagShort; +import com.evilco.mc.nbt.tag.TagString; +import com.evilco.mc.nbt.tag.TagType; +import com.google.common.base.Preconditions; +import com.google.common.collect.ImmutableMap; +import java.io.IOException; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import javax.annotation.Nonnull; + +public class TagCompound +extends AbstractTag +implements INamedTagContainer { + protected Map tags = new HashMap(); + + public TagCompound(String name) { + super(name); + } + + public TagCompound(@Nonnull NbtInputStream inputStream, boolean anonymous) throws IOException { + super(inputStream, anonymous); + while (true) { + byte type; + TagType tagType; + if ((tagType = TagType.valueOf(type = inputStream.readByte())) == null) { + throw new IOException("Could not find a tag for type ID " + type + "."); + } + if (tagType == TagType.END) break; + this.setTag(inputStream.readTag(tagType, false)); + } + } + + @Override + public ITag getTag(@Nonnull String name) { + Preconditions.checkNotNull(name, "name"); + return this.tags.get(name); + } + + @Override + public T getTag(String name, Class tagClass) throws UnexpectedTagTypeException, TagNotFoundException { + ITag tag = this.getTag(name); + if (tag == null) { + throw new TagNotFoundException("The compound tag is missing a " + name + " entry"); + } + if (!tagClass.isInstance(tag)) { + throw new UnexpectedTagTypeException("The compound entry " + name + " should be of type " + tagClass.getSimpleName() + ", but is of type " + tag.getClass().getSimpleName()); + } + return (T)tag; + } + + public TagCompound getCompound(String name) throws UnexpectedTagTypeException, TagNotFoundException { + return this.getTag(name, TagCompound.class); + } + + public int getInteger(String name) throws UnexpectedTagTypeException, TagNotFoundException { + return this.getTag(name, TagInteger.class).getValue(); + } + + public short getShort(String name) throws UnexpectedTagTypeException, TagNotFoundException { + return this.getTag(name, TagShort.class).getValue(); + } + + public byte getByte(String name) throws UnexpectedTagTypeException, TagNotFoundException { + return this.getTag(name, TagByte.class).getValue(); + } + + public long getLong(String name) throws UnexpectedTagTypeException, TagNotFoundException { + return this.getTag(name, TagLong.class).getValue(); + } + + public double getDouble(String name) throws UnexpectedTagTypeException, TagNotFoundException { + return this.getTag(name, TagDouble.class).getValue(); + } + + public float getFloat(String name) throws UnexpectedTagTypeException, TagNotFoundException { + return this.getTag(name, TagFloat.class).getValue(); + } + + public String getString(String name) throws UnexpectedTagTypeException, TagNotFoundException { + return this.getTag(name, TagString.class).getValue(); + } + + public List getList(String name, Class itemClass) throws UnexpectedTagTypeException, TagNotFoundException { + return this.getTag(name, TagList.class).getTags(itemClass); + } + + public int[] getIntegerArray(String name) throws UnexpectedTagTypeException, TagNotFoundException { + return this.getTag(name, TagIntegerArray.class).getValues(); + } + + public byte[] getByteArray(String name) throws UnexpectedTagTypeException, TagNotFoundException { + return this.getTag(name, TagByteArray.class).getValue(); + } + + public String[] getStringArray(String name) throws UnexpectedTagTypeException, TagNotFoundException { + List tags = this.getList(name, TagString.class); + String[] array = new String[tags.size()]; + for (int i = 0; i < tags.size(); ++i) { + array[i] = tags.get(i).getValue(); + } + return array; + } + + public double[] getDoubleArray(String name) throws UnexpectedTagTypeException, TagNotFoundException { + List tags = this.getList(name, TagDouble.class); + double[] array = new double[tags.size()]; + for (int i = 0; i < tags.size(); ++i) { + array[i] = tags.get(i).getValue(); + } + return array; + } + + public float[] getFloatArray(String name) throws UnexpectedTagTypeException, TagNotFoundException { + List tags = this.getList(name, TagFloat.class); + float[] array = new float[tags.size()]; + for (int i = 0; i < tags.size(); ++i) { + array[i] = tags.get(i).getValue(); + } + return array; + } + + @Override + public Map getTags() { + return new ImmutableMap.Builder().putAll(this.tags).build(); + } + + @Override + public void removeTag(@Nonnull ITag tag) { + Preconditions.checkNotNull(tag, "tag"); + this.tags.remove(tag.getName()); + } + + @Override + public void removeTag(@Nonnull String tag) { + Preconditions.checkNotNull(tag, "tag"); + this.tags.remove(tag); + } + + @Override + public void setTag(@Nonnull ITag tag) { + Preconditions.checkNotNull(tag, "tag"); + if (this.tags.containsKey(tag)) { + this.tags.get(tag.getName()).setParent(null); + } + this.tags.put(tag.getName(), tag); + tag.setParent(this); + } + + @Override + public byte getTagID() { + return TagType.COMPOUND.typeID; + } + + @Override + public void write(NbtOutputStream outputStream, boolean anonymous) throws IOException { + super.write(outputStream, anonymous); + for (Map.Entry tagEntry : this.tags.entrySet()) { + outputStream.writeByte(tagEntry.getValue().getTagID()); + tagEntry.getValue().write(outputStream, false); + } + outputStream.writeByte(TagType.END.typeID); + } +} diff --git a/src/com/evilco/mc/nbt/tag/TagDouble.java b/src/com/evilco/mc/nbt/tag/TagDouble.java new file mode 100644 index 0000000..a6115ad --- /dev/null +++ b/src/com/evilco/mc/nbt/tag/TagDouble.java @@ -0,0 +1,45 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.evilco.mc.nbt.tag; + +import com.evilco.mc.nbt.stream.NbtInputStream; +import com.evilco.mc.nbt.stream.NbtOutputStream; +import com.evilco.mc.nbt.tag.AbstractTag; +import com.evilco.mc.nbt.tag.TagType; +import java.io.IOException; +import javax.annotation.Nonnull; + +public class TagDouble +extends AbstractTag { + protected double value; + + public TagDouble(@Nonnull String name, double value) { + super(name); + this.setValue(value); + } + + public TagDouble(@Nonnull NbtInputStream inputStream, boolean anonymous) throws IOException { + super(inputStream, anonymous); + this.setValue(inputStream.readDouble()); + } + + @Override + public byte getTagID() { + return TagType.DOUBLE.typeID; + } + + public double getValue() { + return this.value; + } + + public void setValue(double d) { + this.value = d; + } + + @Override + public void write(NbtOutputStream outputStream, boolean anonymous) throws IOException { + super.write(outputStream, anonymous); + outputStream.writeDouble(this.value); + } +} diff --git a/src/com/evilco/mc/nbt/tag/TagFloat.java b/src/com/evilco/mc/nbt/tag/TagFloat.java new file mode 100644 index 0000000..21f21b4 --- /dev/null +++ b/src/com/evilco/mc/nbt/tag/TagFloat.java @@ -0,0 +1,45 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.evilco.mc.nbt.tag; + +import com.evilco.mc.nbt.stream.NbtInputStream; +import com.evilco.mc.nbt.stream.NbtOutputStream; +import com.evilco.mc.nbt.tag.AbstractTag; +import com.evilco.mc.nbt.tag.TagType; +import java.io.IOException; +import javax.annotation.Nonnull; + +public class TagFloat +extends AbstractTag { + protected float value; + + public TagFloat(@Nonnull String name, float value) { + super(name); + this.setValue(value); + } + + public TagFloat(@Nonnull NbtInputStream inputStream, boolean anonymous) throws IOException { + super(inputStream, anonymous); + this.setValue(inputStream.readFloat()); + } + + @Override + public byte getTagID() { + return TagType.FLOAT.typeID; + } + + public float getValue() { + return this.value; + } + + public void setValue(float f) { + this.value = f; + } + + @Override + public void write(NbtOutputStream outputStream, boolean anonymous) throws IOException { + super.write(outputStream, anonymous); + outputStream.writeFloat(this.value); + } +} diff --git a/src/com/evilco/mc/nbt/tag/TagInteger.java b/src/com/evilco/mc/nbt/tag/TagInteger.java new file mode 100644 index 0000000..7b3b4d0 --- /dev/null +++ b/src/com/evilco/mc/nbt/tag/TagInteger.java @@ -0,0 +1,45 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.evilco.mc.nbt.tag; + +import com.evilco.mc.nbt.stream.NbtInputStream; +import com.evilco.mc.nbt.stream.NbtOutputStream; +import com.evilco.mc.nbt.tag.AbstractTag; +import com.evilco.mc.nbt.tag.TagType; +import java.io.IOException; +import javax.annotation.Nonnull; + +public class TagInteger +extends AbstractTag { + protected int value; + + public TagInteger(@Nonnull String name, int value) { + super(name); + this.setValue(value); + } + + public TagInteger(@Nonnull NbtInputStream inputStream, boolean anonymous) throws IOException { + super(inputStream, anonymous); + this.setValue(inputStream.readInt()); + } + + @Override + public byte getTagID() { + return TagType.INTEGER.typeID; + } + + public int getValue() { + return this.value; + } + + public void setValue(int i) { + this.value = i; + } + + @Override + public void write(NbtOutputStream outputStream, boolean anonymous) throws IOException { + super.write(outputStream, anonymous); + outputStream.writeInt(this.value); + } +} diff --git a/src/com/evilco/mc/nbt/tag/TagIntegerArray.java b/src/com/evilco/mc/nbt/tag/TagIntegerArray.java new file mode 100644 index 0000000..144d070 --- /dev/null +++ b/src/com/evilco/mc/nbt/tag/TagIntegerArray.java @@ -0,0 +1,55 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.evilco.mc.nbt.tag; + +import com.evilco.mc.nbt.stream.NbtInputStream; +import com.evilco.mc.nbt.stream.NbtOutputStream; +import com.evilco.mc.nbt.tag.AbstractTag; +import com.evilco.mc.nbt.tag.TagType; +import com.google.common.base.Preconditions; +import java.io.IOException; +import javax.annotation.Nonnull; + +public class TagIntegerArray +extends AbstractTag { + protected int[] values; + + public TagIntegerArray(@Nonnull String name, @Nonnull int[] values) { + super(name); + this.setValues(values); + } + + public TagIntegerArray(@Nonnull NbtInputStream inputStream, boolean anonymous) throws IOException { + super(inputStream, anonymous); + int size = inputStream.readInt(); + int[] data = new int[size]; + for (int i = 0; i < size; ++i) { + data[i] = inputStream.readInt(); + } + this.values = data; + } + + @Override + public byte getTagID() { + return TagType.INTEGER_ARRAY.typeID; + } + + public int[] getValues() { + return this.values; + } + + public void setValues(@Nonnull int[] i) { + Preconditions.checkNotNull(i, "i"); + this.values = i; + } + + @Override + public void write(NbtOutputStream outputStream, boolean anonymous) throws IOException { + super.write(outputStream, anonymous); + outputStream.writeInt(this.values.length); + for (int i : this.values) { + outputStream.writeInt(i); + } + } +} diff --git a/src/com/evilco/mc/nbt/tag/TagList.java b/src/com/evilco/mc/nbt/tag/TagList.java new file mode 100644 index 0000000..f8fdb1e --- /dev/null +++ b/src/com/evilco/mc/nbt/tag/TagList.java @@ -0,0 +1,96 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.evilco.mc.nbt.tag; + +import com.evilco.mc.nbt.error.UnexpectedTagTypeException; +import com.evilco.mc.nbt.stream.NbtInputStream; +import com.evilco.mc.nbt.stream.NbtOutputStream; +import com.evilco.mc.nbt.tag.AbstractTag; +import com.evilco.mc.nbt.tag.IAnonymousTagContainer; +import com.evilco.mc.nbt.tag.ITag; +import com.evilco.mc.nbt.tag.TagType; +import com.google.common.base.Preconditions; +import com.google.common.collect.ImmutableList; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import javax.annotation.Nonnull; + +public class TagList +extends AbstractTag +implements IAnonymousTagContainer { + protected List tagList; + + public TagList(@Nonnull String name) { + super(name); + this.tagList = new ArrayList(); + } + + public TagList(@Nonnull String name, @Nonnull List tagList) { + super(name); + Preconditions.checkNotNull(tagList, "tagList"); + this.tagList = tagList; + } + + public TagList(@Nonnull NbtInputStream inputStream, boolean anonymous) throws IOException { + super(inputStream, anonymous); + this.tagList = new ArrayList(); + byte type = inputStream.readByte(); + TagType tagType = TagType.valueOf(type); + int size = inputStream.readInt(); + if (tagType == TagType.END) { + return; + } + for (int i = 0; i < size; ++i) { + this.addTag(inputStream.readTag(tagType, true)); + } + } + + @Override + public void addTag(@Nonnull ITag tag) { + this.tagList.add(tag); + } + + @Override + public List getTags() { + return ((ImmutableList.Builder)new ImmutableList.Builder().addAll(this.tagList)).build(); + } + + @Override + public List getTags(Class tagClass) throws UnexpectedTagTypeException { + ImmutableList.Builder builder = new ImmutableList.Builder(); + for (ITag tag : this.tagList) { + if (!tagClass.isInstance(tag)) { + throw new UnexpectedTagTypeException("The list entry should be of type " + tagClass.getSimpleName() + ", but is of type " + tag.getClass().getSimpleName()); + } + builder.add(tag); + } + return builder.build(); + } + + @Override + public byte getTagID() { + return TagType.LIST.typeID; + } + + @Override + public void removeTag(@Nonnull ITag tag) { + this.tagList.remove(tag); + } + + @Override + public void setTag(int i, @Nonnull ITag tag) { + this.tagList.set(i, tag); + } + + @Override + public void write(NbtOutputStream outputStream, boolean anonymous) throws IOException { + super.write(outputStream, anonymous); + outputStream.writeByte(this.tagList.size() > 0 ? this.tagList.get(0).getTagID() : TagType.END.typeID); + outputStream.writeInt(this.tagList.size()); + for (ITag tag : this.tagList) { + tag.write(outputStream, true); + } + } +} diff --git a/src/com/evilco/mc/nbt/tag/TagLong.java b/src/com/evilco/mc/nbt/tag/TagLong.java new file mode 100644 index 0000000..8b07454 --- /dev/null +++ b/src/com/evilco/mc/nbt/tag/TagLong.java @@ -0,0 +1,45 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.evilco.mc.nbt.tag; + +import com.evilco.mc.nbt.stream.NbtInputStream; +import com.evilco.mc.nbt.stream.NbtOutputStream; +import com.evilco.mc.nbt.tag.AbstractTag; +import com.evilco.mc.nbt.tag.TagType; +import java.io.IOException; +import javax.annotation.Nonnull; + +public class TagLong +extends AbstractTag { + protected long value; + + public TagLong(@Nonnull String name, long value) { + super(name); + this.setValue(value); + } + + public TagLong(@Nonnull NbtInputStream inputStream, boolean anonymous) throws IOException { + super(inputStream, anonymous); + this.setValue(inputStream.readLong()); + } + + @Override + public byte getTagID() { + return TagType.LONG.typeID; + } + + public long getValue() { + return this.value; + } + + public void setValue(long l) { + this.value = l; + } + + @Override + public void write(NbtOutputStream outputStream, boolean anonymous) throws IOException { + super.write(outputStream, anonymous); + outputStream.writeLong(this.value); + } +} diff --git a/src/com/evilco/mc/nbt/tag/TagShort.java b/src/com/evilco/mc/nbt/tag/TagShort.java new file mode 100644 index 0000000..8e7cc65 --- /dev/null +++ b/src/com/evilco/mc/nbt/tag/TagShort.java @@ -0,0 +1,45 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.evilco.mc.nbt.tag; + +import com.evilco.mc.nbt.stream.NbtInputStream; +import com.evilco.mc.nbt.stream.NbtOutputStream; +import com.evilco.mc.nbt.tag.AbstractTag; +import com.evilco.mc.nbt.tag.TagType; +import java.io.IOException; +import javax.annotation.Nonnull; + +public class TagShort +extends AbstractTag { + protected short value; + + public TagShort(@Nonnull String name, short value) { + super(name); + this.setValue(value); + } + + public TagShort(@Nonnull NbtInputStream inputStream, boolean anonymous) throws IOException { + super(inputStream, anonymous); + this.setValue(inputStream.readShort()); + } + + @Override + public byte getTagID() { + return TagType.SHORT.typeID; + } + + public short getValue() { + return this.value; + } + + public void setValue(short s) { + this.value = s; + } + + @Override + public void write(NbtOutputStream outputStream, boolean anonymous) throws IOException { + super.write(outputStream, anonymous); + outputStream.writeShort(this.value); + } +} diff --git a/src/com/evilco/mc/nbt/tag/TagString.java b/src/com/evilco/mc/nbt/tag/TagString.java new file mode 100644 index 0000000..5cd53b8 --- /dev/null +++ b/src/com/evilco/mc/nbt/tag/TagString.java @@ -0,0 +1,51 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.evilco.mc.nbt.tag; + +import com.evilco.mc.nbt.stream.NbtInputStream; +import com.evilco.mc.nbt.stream.NbtOutputStream; +import com.evilco.mc.nbt.tag.AbstractTag; +import com.evilco.mc.nbt.tag.ITag; +import com.evilco.mc.nbt.tag.TagType; +import java.io.IOException; +import javax.annotation.Nonnull; + +public class TagString +extends AbstractTag { + protected String value; + + public TagString(@Nonnull String name, @Nonnull String value) { + super(name); + this.setValue(value); + } + + public TagString(@Nonnull NbtInputStream inputStream, boolean anonymous) throws IOException { + super(inputStream, anonymous); + short size = inputStream.readShort(); + byte[] data = new byte[size]; + inputStream.readFully(data); + this.setValue(new String(data, ITag.STRING_CHARSET)); + } + + @Override + public byte getTagID() { + return TagType.STRING.typeID; + } + + public String getValue() { + return this.value; + } + + public void setValue(@Nonnull String s) { + this.value = s; + } + + @Override + public void write(NbtOutputStream outputStream, boolean anonymous) throws IOException { + super.write(outputStream, anonymous); + byte[] outputBytes = this.value.getBytes(ITag.STRING_CHARSET); + outputStream.writeShort(outputBytes.length); + outputStream.write(outputBytes); + } +} diff --git a/src/com/evilco/mc/nbt/tag/TagType.java b/src/com/evilco/mc/nbt/tag/TagType.java new file mode 100644 index 0000000..f48e16c --- /dev/null +++ b/src/com/evilco/mc/nbt/tag/TagType.java @@ -0,0 +1,55 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.evilco.mc.nbt.tag; + +import com.evilco.mc.nbt.tag.ITag; +import com.evilco.mc.nbt.tag.TagByte; +import com.evilco.mc.nbt.tag.TagByteArray; +import com.evilco.mc.nbt.tag.TagCompound; +import com.evilco.mc.nbt.tag.TagDouble; +import com.evilco.mc.nbt.tag.TagFloat; +import com.evilco.mc.nbt.tag.TagInteger; +import com.evilco.mc.nbt.tag.TagIntegerArray; +import com.evilco.mc.nbt.tag.TagList; +import com.evilco.mc.nbt.tag.TagLong; +import com.evilco.mc.nbt.tag.TagShort; +import com.evilco.mc.nbt.tag.TagString; +import com.google.common.collect.ImmutableMap; +import java.util.Map; + +public enum TagType { + BYTE(1, TagByte.class), + BYTE_ARRAY(7, TagByteArray.class), + COMPOUND(10, TagCompound.class), + DOUBLE(6, TagDouble.class), + END(0, null), + FLOAT(5, TagFloat.class), + INTEGER(3, TagInteger.class), + INTEGER_ARRAY(11, TagIntegerArray.class), + LIST(9, TagList.class), + LONG(4, TagLong.class), + SHORT(2, TagShort.class), + STRING(8, TagString.class); + + protected static final Map typeMap; + public final Class tagType; + public final byte typeID; + + private TagType(int typeID, Class type) { + this.typeID = (byte)typeID; + this.tagType = type; + } + + public static TagType valueOf(byte typeID) { + return typeMap.get(typeID); + } + + static { + ImmutableMap.Builder mapBuilder = new ImmutableMap.Builder(); + for (TagType type : TagType.values()) { + mapBuilder.put(type.typeID, type); + } + typeMap = mapBuilder.build(); + } +} diff --git a/src/com/google/common/annotations/Beta.java b/src/com/google/common/annotations/Beta.java new file mode 100644 index 0000000..064de6e --- /dev/null +++ b/src/com/google/common/annotations/Beta.java @@ -0,0 +1,18 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.annotations; + +import com.google.common.annotations.GwtCompatible; +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(value=RetentionPolicy.CLASS) +@Target(value={ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.FIELD, ElementType.METHOD, ElementType.TYPE}) +@Documented +@GwtCompatible +public @interface Beta { +} diff --git a/src/com/google/common/annotations/GwtCompatible.java b/src/com/google/common/annotations/GwtCompatible.java new file mode 100644 index 0000000..ca088f1 --- /dev/null +++ b/src/com/google/common/annotations/GwtCompatible.java @@ -0,0 +1,20 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.annotations; + +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(value=RetentionPolicy.CLASS) +@Target(value={ElementType.TYPE, ElementType.METHOD}) +@Documented +@GwtCompatible +public @interface GwtCompatible { + public boolean serializable() default false; + + public boolean emulated() default false; +} diff --git a/src/com/google/common/annotations/GwtIncompatible.java b/src/com/google/common/annotations/GwtIncompatible.java new file mode 100644 index 0000000..460ae87 --- /dev/null +++ b/src/com/google/common/annotations/GwtIncompatible.java @@ -0,0 +1,19 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.annotations; + +import com.google.common.annotations.GwtCompatible; +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(value=RetentionPolicy.CLASS) +@Target(value={ElementType.TYPE, ElementType.METHOD, ElementType.CONSTRUCTOR, ElementType.FIELD}) +@Documented +@GwtCompatible +public @interface GwtIncompatible { + public String value(); +} diff --git a/src/com/google/common/annotations/VisibleForTesting.java b/src/com/google/common/annotations/VisibleForTesting.java new file mode 100644 index 0000000..9fa66e5 --- /dev/null +++ b/src/com/google/common/annotations/VisibleForTesting.java @@ -0,0 +1,10 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.annotations; + +import com.google.common.annotations.GwtCompatible; + +@GwtCompatible +public @interface VisibleForTesting { +} diff --git a/src/com/google/common/base/Absent.java b/src/com/google/common/base/Absent.java new file mode 100644 index 0000000..5dd1c74 --- /dev/null +++ b/src/com/google/common/base/Absent.java @@ -0,0 +1,88 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.base; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Function; +import com.google.common.base.Optional; +import com.google.common.base.Preconditions; +import com.google.common.base.Supplier; +import java.util.Collections; +import java.util.Set; +import javax.annotation.Nullable; + +@GwtCompatible +final class Absent +extends Optional { + static final Absent INSTANCE = new Absent(); + private static final long serialVersionUID = 0L; + + static Optional withType() { + return INSTANCE; + } + + private Absent() { + } + + @Override + public boolean isPresent() { + return false; + } + + @Override + public T get() { + throw new IllegalStateException("Optional.get() cannot be called on an absent value"); + } + + @Override + public T or(T defaultValue) { + return Preconditions.checkNotNull(defaultValue, "use Optional.orNull() instead of Optional.or(null)"); + } + + @Override + public Optional or(Optional secondChoice) { + return Preconditions.checkNotNull(secondChoice); + } + + @Override + public T or(Supplier supplier) { + return Preconditions.checkNotNull(supplier.get(), "use Optional.orNull() instead of a Supplier that returns null"); + } + + @Override + @Nullable + public T orNull() { + return null; + } + + @Override + public Set asSet() { + return Collections.emptySet(); + } + + @Override + public Optional transform(Function function) { + Preconditions.checkNotNull(function); + return Optional.absent(); + } + + @Override + public boolean equals(@Nullable Object object) { + return object == this; + } + + @Override + public int hashCode() { + return 1502476572; + } + + @Override + public String toString() { + return "Optional.absent()"; + } + + private Object readResolve() { + return INSTANCE; + } +} diff --git a/src/com/google/common/base/AbstractIterator.java b/src/com/google/common/base/AbstractIterator.java new file mode 100644 index 0000000..a97aebe --- /dev/null +++ b/src/com/google/common/base/AbstractIterator.java @@ -0,0 +1,74 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.base; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Preconditions; +import java.util.Iterator; +import java.util.NoSuchElementException; + +@GwtCompatible +abstract class AbstractIterator +implements Iterator { + private State state = State.NOT_READY; + private T next; + + protected AbstractIterator() { + } + + protected abstract T computeNext(); + + protected final T endOfData() { + this.state = State.DONE; + return null; + } + + @Override + public final boolean hasNext() { + Preconditions.checkState(this.state != State.FAILED); + switch (this.state) { + case DONE: { + return false; + } + case READY: { + return true; + } + } + return this.tryToComputeNext(); + } + + private boolean tryToComputeNext() { + this.state = State.FAILED; + this.next = this.computeNext(); + if (this.state != State.DONE) { + this.state = State.READY; + return true; + } + return false; + } + + @Override + public final T next() { + if (!this.hasNext()) { + throw new NoSuchElementException(); + } + this.state = State.NOT_READY; + T result = this.next; + this.next = null; + return result; + } + + @Override + public final void remove() { + throw new UnsupportedOperationException(); + } + + private static enum State { + READY, + NOT_READY, + DONE, + FAILED; + + } +} diff --git a/src/com/google/common/base/Ascii.java b/src/com/google/common/base/Ascii.java new file mode 100644 index 0000000..7637184 --- /dev/null +++ b/src/com/google/common/base/Ascii.java @@ -0,0 +1,169 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.base; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Preconditions; +import javax.annotation.CheckReturnValue; + +@GwtCompatible +public final class Ascii { + public static final byte NUL = 0; + public static final byte SOH = 1; + public static final byte STX = 2; + public static final byte ETX = 3; + public static final byte EOT = 4; + public static final byte ENQ = 5; + public static final byte ACK = 6; + public static final byte BEL = 7; + public static final byte BS = 8; + public static final byte HT = 9; + public static final byte LF = 10; + public static final byte NL = 10; + public static final byte VT = 11; + public static final byte FF = 12; + public static final byte CR = 13; + public static final byte SO = 14; + public static final byte SI = 15; + public static final byte DLE = 16; + public static final byte DC1 = 17; + public static final byte XON = 17; + public static final byte DC2 = 18; + public static final byte DC3 = 19; + public static final byte XOFF = 19; + public static final byte DC4 = 20; + public static final byte NAK = 21; + public static final byte SYN = 22; + public static final byte ETB = 23; + public static final byte CAN = 24; + public static final byte EM = 25; + public static final byte SUB = 26; + public static final byte ESC = 27; + public static final byte FS = 28; + public static final byte GS = 29; + public static final byte RS = 30; + public static final byte US = 31; + public static final byte SP = 32; + public static final byte SPACE = 32; + public static final byte DEL = 127; + public static final char MIN = '\u0000'; + public static final char MAX = '\u007f'; + + private Ascii() { + } + + public static String toLowerCase(String string) { + int length = string.length(); + for (int i = 0; i < length; ++i) { + if (!Ascii.isUpperCase(string.charAt(i))) continue; + char[] chars = string.toCharArray(); + while (i < length) { + char c = chars[i]; + if (Ascii.isUpperCase(c)) { + chars[i] = (char)(c ^ 0x20); + } + ++i; + } + return String.valueOf(chars); + } + return string; + } + + public static String toLowerCase(CharSequence chars) { + if (chars instanceof String) { + return Ascii.toLowerCase((String)chars); + } + int length = chars.length(); + StringBuilder builder = new StringBuilder(length); + for (int i = 0; i < length; ++i) { + builder.append(Ascii.toLowerCase(chars.charAt(i))); + } + return builder.toString(); + } + + public static char toLowerCase(char c) { + return Ascii.isUpperCase(c) ? (char)(c ^ 0x20) : c; + } + + public static String toUpperCase(String string) { + int length = string.length(); + for (int i = 0; i < length; ++i) { + if (!Ascii.isLowerCase(string.charAt(i))) continue; + char[] chars = string.toCharArray(); + while (i < length) { + char c = chars[i]; + if (Ascii.isLowerCase(c)) { + chars[i] = (char)(c & 0x5F); + } + ++i; + } + return String.valueOf(chars); + } + return string; + } + + public static String toUpperCase(CharSequence chars) { + if (chars instanceof String) { + return Ascii.toUpperCase((String)chars); + } + int length = chars.length(); + StringBuilder builder = new StringBuilder(length); + for (int i = 0; i < length; ++i) { + builder.append(Ascii.toUpperCase(chars.charAt(i))); + } + return builder.toString(); + } + + public static char toUpperCase(char c) { + return Ascii.isLowerCase(c) ? (char)(c & 0x5F) : c; + } + + public static boolean isLowerCase(char c) { + return c >= 'a' && c <= 'z'; + } + + public static boolean isUpperCase(char c) { + return c >= 'A' && c <= 'Z'; + } + + @CheckReturnValue + @Beta + public static String truncate(CharSequence seq, int maxLength, String truncationIndicator) { + Preconditions.checkNotNull(seq); + int truncationLength = maxLength - truncationIndicator.length(); + Preconditions.checkArgument(truncationLength >= 0, "maxLength (%s) must be >= length of the truncation indicator (%s)", maxLength, truncationIndicator.length()); + if (seq.length() <= maxLength) { + String string = seq.toString(); + if (string.length() <= maxLength) { + return string; + } + seq = string; + } + return new StringBuilder(maxLength).append(seq, 0, truncationLength).append(truncationIndicator).toString(); + } + + @Beta + public static boolean equalsIgnoreCase(CharSequence s1, CharSequence s2) { + int length = s1.length(); + if (s1 == s2) { + return true; + } + if (length != s2.length()) { + return false; + } + for (int i = 0; i < length; ++i) { + int alphaIndex; + char c2; + char c1 = s1.charAt(i); + if (c1 == (c2 = s2.charAt(i)) || (alphaIndex = Ascii.getAlphaIndex(c1)) < 26 && alphaIndex == Ascii.getAlphaIndex(c2)) continue; + return false; + } + return true; + } + + private static int getAlphaIndex(char c) { + return (char)((c | 0x20) - 97); + } +} diff --git a/src/com/google/common/base/CaseFormat.java b/src/com/google/common/base/CaseFormat.java new file mode 100644 index 0000000..0ef48f8 --- /dev/null +++ b/src/com/google/common/base/CaseFormat.java @@ -0,0 +1,179 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.base; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Ascii; +import com.google.common.base.CharMatcher; +import com.google.common.base.Converter; +import com.google.common.base.Preconditions; +import java.io.Serializable; +import javax.annotation.Nullable; + +@GwtCompatible +public enum CaseFormat { + LOWER_HYPHEN(CharMatcher.is('-'), "-"){ + + @Override + String normalizeWord(String word) { + return Ascii.toLowerCase(word); + } + + @Override + String convert(CaseFormat format, String s) { + if (format == LOWER_UNDERSCORE) { + return s.replace('-', '_'); + } + if (format == UPPER_UNDERSCORE) { + return Ascii.toUpperCase(s.replace('-', '_')); + } + return super.convert(format, s); + } + } + , + LOWER_UNDERSCORE(CharMatcher.is('_'), "_"){ + + @Override + String normalizeWord(String word) { + return Ascii.toLowerCase(word); + } + + @Override + String convert(CaseFormat format, String s) { + if (format == LOWER_HYPHEN) { + return s.replace('_', '-'); + } + if (format == UPPER_UNDERSCORE) { + return Ascii.toUpperCase(s); + } + return super.convert(format, s); + } + } + , + LOWER_CAMEL(CharMatcher.inRange('A', 'Z'), ""){ + + @Override + String normalizeWord(String word) { + return CaseFormat.firstCharOnlyToUpper(word); + } + } + , + UPPER_CAMEL(CharMatcher.inRange('A', 'Z'), ""){ + + @Override + String normalizeWord(String word) { + return CaseFormat.firstCharOnlyToUpper(word); + } + } + , + UPPER_UNDERSCORE(CharMatcher.is('_'), "_"){ + + @Override + String normalizeWord(String word) { + return Ascii.toUpperCase(word); + } + + @Override + String convert(CaseFormat format, String s) { + if (format == LOWER_HYPHEN) { + return Ascii.toLowerCase(s.replace('_', '-')); + } + if (format == LOWER_UNDERSCORE) { + return Ascii.toLowerCase(s); + } + return super.convert(format, s); + } + }; + + private final CharMatcher wordBoundary; + private final String wordSeparator; + + private CaseFormat(CharMatcher wordBoundary, String wordSeparator) { + this.wordBoundary = wordBoundary; + this.wordSeparator = wordSeparator; + } + + public final String to(CaseFormat format, String str) { + Preconditions.checkNotNull(format); + Preconditions.checkNotNull(str); + return format == this ? str : this.convert(format, str); + } + + String convert(CaseFormat format, String s) { + StringBuilder out = null; + int i = 0; + int j = -1; + while (true) { + ++j; + if ((j = this.wordBoundary.indexIn(s, j)) == -1) break; + if (i == 0) { + out = new StringBuilder(s.length() + 4 * this.wordSeparator.length()); + out.append(format.normalizeFirstWord(s.substring(i, j))); + } else { + out.append(format.normalizeWord(s.substring(i, j))); + } + out.append(format.wordSeparator); + i = j + this.wordSeparator.length(); + } + return i == 0 ? format.normalizeFirstWord(s) : out.append(format.normalizeWord(s.substring(i))).toString(); + } + + @Beta + public Converter converterTo(CaseFormat targetFormat) { + return new StringConverter(this, targetFormat); + } + + abstract String normalizeWord(String var1); + + private String normalizeFirstWord(String word) { + return this == LOWER_CAMEL ? Ascii.toLowerCase(word) : this.normalizeWord(word); + } + + private static String firstCharOnlyToUpper(String word) { + return word.isEmpty() ? word : new StringBuilder(word.length()).append(Ascii.toUpperCase(word.charAt(0))).append(Ascii.toLowerCase(word.substring(1))).toString(); + } + + private static final class StringConverter + extends Converter + implements Serializable { + private final CaseFormat sourceFormat; + private final CaseFormat targetFormat; + private static final long serialVersionUID = 0L; + + StringConverter(CaseFormat sourceFormat, CaseFormat targetFormat) { + this.sourceFormat = Preconditions.checkNotNull(sourceFormat); + this.targetFormat = Preconditions.checkNotNull(targetFormat); + } + + @Override + protected String doForward(String s) { + return s == null ? null : this.sourceFormat.to(this.targetFormat, s); + } + + @Override + protected String doBackward(String s) { + return s == null ? null : this.targetFormat.to(this.sourceFormat, s); + } + + @Override + public boolean equals(@Nullable Object object) { + if (object instanceof StringConverter) { + StringConverter that = (StringConverter)object; + return this.sourceFormat.equals((Object)that.sourceFormat) && this.targetFormat.equals((Object)that.targetFormat); + } + return false; + } + + public int hashCode() { + return this.sourceFormat.hashCode() ^ this.targetFormat.hashCode(); + } + + public String toString() { + String string = String.valueOf(String.valueOf((Object)this.sourceFormat)); + String string2 = String.valueOf(String.valueOf((Object)this.targetFormat)); + return new StringBuilder(14 + string.length() + string2.length()).append(string).append(".converterTo(").append(string2).append(")").toString(); + } + } +} diff --git a/src/com/google/common/base/CharMatcher.java b/src/com/google/common/base/CharMatcher.java new file mode 100644 index 0000000..0ca24ae --- /dev/null +++ b/src/com/google/common/base/CharMatcher.java @@ -0,0 +1,1018 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.base; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.base.Platform; +import com.google.common.base.Preconditions; +import com.google.common.base.Predicate; +import com.google.common.base.SmallCharMatcher; +import java.util.Arrays; +import java.util.BitSet; +import javax.annotation.CheckReturnValue; + +@Beta +@GwtCompatible(emulated=true) +public abstract class CharMatcher +implements Predicate { + public static final CharMatcher BREAKING_WHITESPACE = new CharMatcher(){ + + @Override + public boolean matches(char c) { + switch (c) { + case '\t': + case '\n': + case '\u000b': + case '\f': + case '\r': + case ' ': + case '\u0085': + case '\u1680': + case '\u2028': + case '\u2029': + case '\u205f': + case '\u3000': { + return true; + } + case '\u2007': { + return false; + } + } + return c >= '\u2000' && c <= '\u200a'; + } + + @Override + public String toString() { + return "CharMatcher.BREAKING_WHITESPACE"; + } + }; + public static final CharMatcher ASCII = CharMatcher.inRange('\u0000', '\u007f', "CharMatcher.ASCII"); + private static final String ZEROES = "0\u0660\u06f0\u07c0\u0966\u09e6\u0a66\u0ae6\u0b66\u0be6\u0c66\u0ce6\u0d66\u0e50\u0ed0\u0f20\u1040\u1090\u17e0\u1810\u1946\u19d0\u1b50\u1bb0\u1c40\u1c50\ua620\ua8d0\ua900\uaa50\uff10"; + private static final String NINES; + public static final CharMatcher DIGIT; + public static final CharMatcher JAVA_DIGIT; + public static final CharMatcher JAVA_LETTER; + public static final CharMatcher JAVA_LETTER_OR_DIGIT; + public static final CharMatcher JAVA_UPPER_CASE; + public static final CharMatcher JAVA_LOWER_CASE; + public static final CharMatcher JAVA_ISO_CONTROL; + public static final CharMatcher INVISIBLE; + public static final CharMatcher SINGLE_WIDTH; + public static final CharMatcher ANY; + public static final CharMatcher NONE; + final String description; + private static final int DISTINCT_CHARS = 65536; + static final String WHITESPACE_TABLE = "\u2002\u3000\r\u0085\u200a\u2005\u2000\u3000\u2029\u000b\u3000\u2008\u2003\u205f\u3000\u1680\t \u2006\u2001\u202f\u00a0\f\u2009\u3000\u2004\u3000\u3000\u2028\n\u2007\u3000"; + static final int WHITESPACE_MULTIPLIER = 1682554634; + static final int WHITESPACE_SHIFT; + public static final CharMatcher WHITESPACE; + + private static String showCharacter(char c) { + String hex = "0123456789ABCDEF"; + char[] tmp = new char[]{'\\', 'u', '\u0000', '\u0000', '\u0000', '\u0000'}; + for (int i = 0; i < 4; ++i) { + tmp[5 - i] = hex.charAt(c & 0xF); + c = (char)(c >> 4); + } + return String.copyValueOf(tmp); + } + + public static CharMatcher is(final char match) { + String string = String.valueOf(String.valueOf(CharMatcher.showCharacter(match))); + String description = new StringBuilder(18 + string.length()).append("CharMatcher.is('").append(string).append("')").toString(); + return new FastMatcher(description){ + + @Override + public boolean matches(char c) { + return c == match; + } + + @Override + public String replaceFrom(CharSequence sequence, char replacement) { + return sequence.toString().replace(match, replacement); + } + + @Override + public CharMatcher and(CharMatcher other) { + return other.matches(match) ? this : NONE; + } + + @Override + public CharMatcher or(CharMatcher other) { + return other.matches(match) ? other : super.or(other); + } + + @Override + public CharMatcher negate() { + return 9.isNot(match); + } + + @Override + @GwtIncompatible(value="java.util.BitSet") + void setBits(BitSet table) { + table.set(match); + } + }; + } + + public static CharMatcher isNot(final char match) { + String string = String.valueOf(String.valueOf(CharMatcher.showCharacter(match))); + String description = new StringBuilder(21 + string.length()).append("CharMatcher.isNot('").append(string).append("')").toString(); + return new FastMatcher(description){ + + @Override + public boolean matches(char c) { + return c != match; + } + + @Override + public CharMatcher and(CharMatcher other) { + return other.matches(match) ? super.and(other) : other; + } + + @Override + public CharMatcher or(CharMatcher other) { + return other.matches(match) ? ANY : this; + } + + @Override + @GwtIncompatible(value="java.util.BitSet") + void setBits(BitSet table) { + table.set(0, match); + table.set(match + '\u0001', 65536); + } + + @Override + public CharMatcher negate() { + return 10.is(match); + } + }; + } + + public static CharMatcher anyOf(CharSequence sequence) { + switch (sequence.length()) { + case 0: { + return NONE; + } + case 1: { + return CharMatcher.is(sequence.charAt(0)); + } + case 2: { + return CharMatcher.isEither(sequence.charAt(0), sequence.charAt(1)); + } + } + final char[] chars = sequence.toString().toCharArray(); + Arrays.sort(chars); + StringBuilder description = new StringBuilder("CharMatcher.anyOf(\""); + for (char c : chars) { + description.append(CharMatcher.showCharacter(c)); + } + description.append("\")"); + return new CharMatcher(description.toString()){ + + @Override + public boolean matches(char c) { + return Arrays.binarySearch(chars, c) >= 0; + } + + @Override + @GwtIncompatible(value="java.util.BitSet") + void setBits(BitSet table) { + for (char c : chars) { + table.set(c); + } + } + }; + } + + private static CharMatcher isEither(final char match1, final char match2) { + String string = String.valueOf(String.valueOf(CharMatcher.showCharacter(match1))); + String string2 = String.valueOf(String.valueOf(CharMatcher.showCharacter(match2))); + String description = new StringBuilder(21 + string.length() + string2.length()).append("CharMatcher.anyOf(\"").append(string).append(string2).append("\")").toString(); + return new FastMatcher(description){ + + @Override + public boolean matches(char c) { + return c == match1 || c == match2; + } + + @Override + @GwtIncompatible(value="java.util.BitSet") + void setBits(BitSet table) { + table.set(match1); + table.set(match2); + } + }; + } + + public static CharMatcher noneOf(CharSequence sequence) { + return CharMatcher.anyOf(sequence).negate(); + } + + public static CharMatcher inRange(char startInclusive, char endInclusive) { + Preconditions.checkArgument(endInclusive >= startInclusive); + String string = String.valueOf(String.valueOf(CharMatcher.showCharacter(startInclusive))); + String string2 = String.valueOf(String.valueOf(CharMatcher.showCharacter(endInclusive))); + String description = new StringBuilder(27 + string.length() + string2.length()).append("CharMatcher.inRange('").append(string).append("', '").append(string2).append("')").toString(); + return CharMatcher.inRange(startInclusive, endInclusive, description); + } + + static CharMatcher inRange(final char startInclusive, final char endInclusive, String description) { + return new FastMatcher(description){ + + @Override + public boolean matches(char c) { + return startInclusive <= c && c <= endInclusive; + } + + @Override + @GwtIncompatible(value="java.util.BitSet") + void setBits(BitSet table) { + table.set((int)startInclusive, endInclusive + '\u0001'); + } + }; + } + + public static CharMatcher forPredicate(final Predicate predicate) { + Preconditions.checkNotNull(predicate); + if (predicate instanceof CharMatcher) { + return (CharMatcher)predicate; + } + String string = String.valueOf(String.valueOf(predicate)); + String description = new StringBuilder(26 + string.length()).append("CharMatcher.forPredicate(").append(string).append(")").toString(); + return new CharMatcher(description){ + + @Override + public boolean matches(char c) { + return predicate.apply(Character.valueOf(c)); + } + + @Override + public boolean apply(Character character) { + return predicate.apply(Preconditions.checkNotNull(character)); + } + }; + } + + CharMatcher(String description) { + this.description = description; + } + + protected CharMatcher() { + this.description = super.toString(); + } + + public abstract boolean matches(char var1); + + public CharMatcher negate() { + return new NegatedMatcher(this); + } + + public CharMatcher and(CharMatcher other) { + return new And(this, Preconditions.checkNotNull(other)); + } + + public CharMatcher or(CharMatcher other) { + return new Or(this, Preconditions.checkNotNull(other)); + } + + public CharMatcher precomputed() { + return Platform.precomputeCharMatcher(this); + } + + CharMatcher withToString(String description) { + throw new UnsupportedOperationException(); + } + + @GwtIncompatible(value="java.util.BitSet") + CharMatcher precomputedInternal() { + String string; + BitSet table = new BitSet(); + this.setBits(table); + int totalCharacters = table.cardinality(); + if (totalCharacters * 2 <= 65536) { + return CharMatcher.precomputedPositive(totalCharacters, table, this.description); + } + table.flip(0, 65536); + int negatedCharacters = 65536 - totalCharacters; + String suffix = ".negate()"; + if (this.description.endsWith(suffix)) { + string = this.description.substring(0, this.description.length() - suffix.length()); + } else { + String string2 = String.valueOf(this.description); + String string3 = String.valueOf(suffix); + string = string3.length() != 0 ? string2.concat(string3) : new String(string2); + } + String negatedDescription = string; + return new NegatedFastMatcher(this.toString(), CharMatcher.precomputedPositive(negatedCharacters, table, negatedDescription)); + } + + @GwtIncompatible(value="java.util.BitSet") + private static CharMatcher precomputedPositive(int totalCharacters, BitSet table, String description) { + switch (totalCharacters) { + case 0: { + return NONE; + } + case 1: { + return CharMatcher.is((char)table.nextSetBit(0)); + } + case 2: { + char c1 = (char)table.nextSetBit(0); + char c2 = (char)table.nextSetBit(c1 + '\u0001'); + return CharMatcher.isEither(c1, c2); + } + } + return CharMatcher.isSmall(totalCharacters, table.length()) ? SmallCharMatcher.from(table, description) : new BitSetMatcher(table, description); + } + + @GwtIncompatible(value="SmallCharMatcher") + private static boolean isSmall(int totalCharacters, int tableLength) { + return totalCharacters <= 1023 && tableLength > totalCharacters * 4 * 16; + } + + @GwtIncompatible(value="java.util.BitSet") + void setBits(BitSet table) { + for (int c = 65535; c >= 0; --c) { + if (!this.matches((char)c)) continue; + table.set(c); + } + } + + public boolean matchesAnyOf(CharSequence sequence) { + return !this.matchesNoneOf(sequence); + } + + public boolean matchesAllOf(CharSequence sequence) { + for (int i = sequence.length() - 1; i >= 0; --i) { + if (this.matches(sequence.charAt(i))) continue; + return false; + } + return true; + } + + public boolean matchesNoneOf(CharSequence sequence) { + return this.indexIn(sequence) == -1; + } + + public int indexIn(CharSequence sequence) { + int length = sequence.length(); + for (int i = 0; i < length; ++i) { + if (!this.matches(sequence.charAt(i))) continue; + return i; + } + return -1; + } + + public int indexIn(CharSequence sequence, int start) { + int length = sequence.length(); + Preconditions.checkPositionIndex(start, length); + for (int i = start; i < length; ++i) { + if (!this.matches(sequence.charAt(i))) continue; + return i; + } + return -1; + } + + public int lastIndexIn(CharSequence sequence) { + for (int i = sequence.length() - 1; i >= 0; --i) { + if (!this.matches(sequence.charAt(i))) continue; + return i; + } + return -1; + } + + public int countIn(CharSequence sequence) { + int count = 0; + for (int i = 0; i < sequence.length(); ++i) { + if (!this.matches(sequence.charAt(i))) continue; + ++count; + } + return count; + } + + @CheckReturnValue + public String removeFrom(CharSequence sequence) { + String string = sequence.toString(); + int pos = this.indexIn(string); + if (pos == -1) { + return string; + } + char[] chars = string.toCharArray(); + int spread = 1; + block0: while (true) { + ++pos; + while (pos != chars.length) { + if (!this.matches(chars[pos])) { + chars[pos - spread] = chars[pos]; + ++pos; + continue; + } + ++spread; + continue block0; + } + break; + } + return new String(chars, 0, pos - spread); + } + + @CheckReturnValue + public String retainFrom(CharSequence sequence) { + return this.negate().removeFrom(sequence); + } + + @CheckReturnValue + public String replaceFrom(CharSequence sequence, char replacement) { + String string = sequence.toString(); + int pos = this.indexIn(string); + if (pos == -1) { + return string; + } + char[] chars = string.toCharArray(); + chars[pos] = replacement; + for (int i = pos + 1; i < chars.length; ++i) { + if (!this.matches(chars[i])) continue; + chars[i] = replacement; + } + return new String(chars); + } + + @CheckReturnValue + public String replaceFrom(CharSequence sequence, CharSequence replacement) { + int replacementLen = replacement.length(); + if (replacementLen == 0) { + return this.removeFrom(sequence); + } + if (replacementLen == 1) { + return this.replaceFrom(sequence, replacement.charAt(0)); + } + String string = sequence.toString(); + int pos = this.indexIn(string); + if (pos == -1) { + return string; + } + int len = string.length(); + StringBuilder buf = new StringBuilder(len * 3 / 2 + 16); + int oldpos = 0; + do { + buf.append(string, oldpos, pos); + buf.append(replacement); + } while ((pos = this.indexIn(string, oldpos = pos + 1)) != -1); + buf.append(string, oldpos, len); + return buf.toString(); + } + + @CheckReturnValue + public String trimFrom(CharSequence sequence) { + int last; + int first; + int len = sequence.length(); + for (first = 0; first < len && this.matches(sequence.charAt(first)); ++first) { + } + for (last = len - 1; last > first && this.matches(sequence.charAt(last)); --last) { + } + return sequence.subSequence(first, last + 1).toString(); + } + + @CheckReturnValue + public String trimLeadingFrom(CharSequence sequence) { + int len = sequence.length(); + for (int first = 0; first < len; ++first) { + if (this.matches(sequence.charAt(first))) continue; + return sequence.subSequence(first, len).toString(); + } + return ""; + } + + @CheckReturnValue + public String trimTrailingFrom(CharSequence sequence) { + int len = sequence.length(); + for (int last = len - 1; last >= 0; --last) { + if (this.matches(sequence.charAt(last))) continue; + return sequence.subSequence(0, last + 1).toString(); + } + return ""; + } + + @CheckReturnValue + public String collapseFrom(CharSequence sequence, char replacement) { + int len = sequence.length(); + for (int i = 0; i < len; ++i) { + char c = sequence.charAt(i); + if (!this.matches(c)) continue; + if (!(c != replacement || i != len - 1 && this.matches(sequence.charAt(i + 1)))) { + ++i; + continue; + } + StringBuilder builder = new StringBuilder(len).append(sequence.subSequence(0, i)).append(replacement); + return this.finishCollapseFrom(sequence, i + 1, len, replacement, builder, true); + } + return sequence.toString(); + } + + @CheckReturnValue + public String trimAndCollapseFrom(CharSequence sequence, char replacement) { + int last; + int first; + int len = sequence.length(); + for (first = 0; first < len && this.matches(sequence.charAt(first)); ++first) { + } + for (last = len - 1; last > first && this.matches(sequence.charAt(last)); --last) { + } + return first == 0 && last == len - 1 ? this.collapseFrom(sequence, replacement) : this.finishCollapseFrom(sequence, first, last + 1, replacement, new StringBuilder(last + 1 - first), false); + } + + private String finishCollapseFrom(CharSequence sequence, int start, int end, char replacement, StringBuilder builder, boolean inMatchingGroup) { + for (int i = start; i < end; ++i) { + char c = sequence.charAt(i); + if (this.matches(c)) { + if (inMatchingGroup) continue; + builder.append(replacement); + inMatchingGroup = true; + continue; + } + builder.append(c); + inMatchingGroup = false; + } + return builder.toString(); + } + + @Override + @Deprecated + public boolean apply(Character character) { + return this.matches(character.charValue()); + } + + public String toString() { + return this.description; + } + + static { + StringBuilder builder = new StringBuilder(ZEROES.length()); + for (int i = 0; i < ZEROES.length(); ++i) { + builder.append((char)(ZEROES.charAt(i) + 9)); + } + NINES = builder.toString(); + DIGIT = new RangesMatcher("CharMatcher.DIGIT", ZEROES.toCharArray(), NINES.toCharArray()); + JAVA_DIGIT = new CharMatcher("CharMatcher.JAVA_DIGIT"){ + + @Override + public boolean matches(char c) { + return Character.isDigit(c); + } + }; + JAVA_LETTER = new CharMatcher("CharMatcher.JAVA_LETTER"){ + + @Override + public boolean matches(char c) { + return Character.isLetter(c); + } + }; + JAVA_LETTER_OR_DIGIT = new CharMatcher("CharMatcher.JAVA_LETTER_OR_DIGIT"){ + + @Override + public boolean matches(char c) { + return Character.isLetterOrDigit(c); + } + }; + JAVA_UPPER_CASE = new CharMatcher("CharMatcher.JAVA_UPPER_CASE"){ + + @Override + public boolean matches(char c) { + return Character.isUpperCase(c); + } + }; + JAVA_LOWER_CASE = new CharMatcher("CharMatcher.JAVA_LOWER_CASE"){ + + @Override + public boolean matches(char c) { + return Character.isLowerCase(c); + } + }; + JAVA_ISO_CONTROL = CharMatcher.inRange('\u0000', '\u001f').or(CharMatcher.inRange('\u007f', '\u009f')).withToString("CharMatcher.JAVA_ISO_CONTROL"); + INVISIBLE = new RangesMatcher("CharMatcher.INVISIBLE", "\u0000\u007f\u00ad\u0600\u061c\u06dd\u070f\u1680\u180e\u2000\u2028\u205f\u2066\u2067\u2068\u2069\u206a\u3000\ud800\ufeff\ufff9\ufffa".toCharArray(), " \u00a0\u00ad\u0604\u061c\u06dd\u070f\u1680\u180e\u200f\u202f\u2064\u2066\u2067\u2068\u2069\u206f\u3000\uf8ff\ufeff\ufff9\ufffb".toCharArray()); + SINGLE_WIDTH = new RangesMatcher("CharMatcher.SINGLE_WIDTH", "\u0000\u05be\u05d0\u05f3\u0600\u0750\u0e00\u1e00\u2100\ufb50\ufe70\uff61".toCharArray(), "\u04f9\u05be\u05ea\u05f4\u06ff\u077f\u0e7f\u20af\u213a\ufdff\ufeff\uffdc".toCharArray()); + ANY = new FastMatcher("CharMatcher.ANY"){ + + @Override + public boolean matches(char c) { + return true; + } + + @Override + public int indexIn(CharSequence sequence) { + return sequence.length() == 0 ? -1 : 0; + } + + @Override + public int indexIn(CharSequence sequence, int start) { + int length = sequence.length(); + Preconditions.checkPositionIndex(start, length); + return start == length ? -1 : start; + } + + @Override + public int lastIndexIn(CharSequence sequence) { + return sequence.length() - 1; + } + + @Override + public boolean matchesAllOf(CharSequence sequence) { + Preconditions.checkNotNull(sequence); + return true; + } + + @Override + public boolean matchesNoneOf(CharSequence sequence) { + return sequence.length() == 0; + } + + @Override + public String removeFrom(CharSequence sequence) { + Preconditions.checkNotNull(sequence); + return ""; + } + + @Override + public String replaceFrom(CharSequence sequence, char replacement) { + char[] array = new char[sequence.length()]; + Arrays.fill(array, replacement); + return new String(array); + } + + @Override + public String replaceFrom(CharSequence sequence, CharSequence replacement) { + StringBuilder retval = new StringBuilder(sequence.length() * replacement.length()); + for (int i = 0; i < sequence.length(); ++i) { + retval.append(replacement); + } + return retval.toString(); + } + + @Override + public String collapseFrom(CharSequence sequence, char replacement) { + return sequence.length() == 0 ? "" : String.valueOf(replacement); + } + + @Override + public String trimFrom(CharSequence sequence) { + Preconditions.checkNotNull(sequence); + return ""; + } + + @Override + public int countIn(CharSequence sequence) { + return sequence.length(); + } + + @Override + public CharMatcher and(CharMatcher other) { + return Preconditions.checkNotNull(other); + } + + @Override + public CharMatcher or(CharMatcher other) { + Preconditions.checkNotNull(other); + return this; + } + + @Override + public CharMatcher negate() { + return NONE; + } + }; + NONE = new FastMatcher("CharMatcher.NONE"){ + + @Override + public boolean matches(char c) { + return false; + } + + @Override + public int indexIn(CharSequence sequence) { + Preconditions.checkNotNull(sequence); + return -1; + } + + @Override + public int indexIn(CharSequence sequence, int start) { + int length = sequence.length(); + Preconditions.checkPositionIndex(start, length); + return -1; + } + + @Override + public int lastIndexIn(CharSequence sequence) { + Preconditions.checkNotNull(sequence); + return -1; + } + + @Override + public boolean matchesAllOf(CharSequence sequence) { + return sequence.length() == 0; + } + + @Override + public boolean matchesNoneOf(CharSequence sequence) { + Preconditions.checkNotNull(sequence); + return true; + } + + @Override + public String removeFrom(CharSequence sequence) { + return sequence.toString(); + } + + @Override + public String replaceFrom(CharSequence sequence, char replacement) { + return sequence.toString(); + } + + @Override + public String replaceFrom(CharSequence sequence, CharSequence replacement) { + Preconditions.checkNotNull(replacement); + return sequence.toString(); + } + + @Override + public String collapseFrom(CharSequence sequence, char replacement) { + return sequence.toString(); + } + + @Override + public String trimFrom(CharSequence sequence) { + return sequence.toString(); + } + + @Override + public String trimLeadingFrom(CharSequence sequence) { + return sequence.toString(); + } + + @Override + public String trimTrailingFrom(CharSequence sequence) { + return sequence.toString(); + } + + @Override + public int countIn(CharSequence sequence) { + Preconditions.checkNotNull(sequence); + return 0; + } + + @Override + public CharMatcher and(CharMatcher other) { + Preconditions.checkNotNull(other); + return this; + } + + @Override + public CharMatcher or(CharMatcher other) { + return Preconditions.checkNotNull(other); + } + + @Override + public CharMatcher negate() { + return ANY; + } + }; + WHITESPACE_SHIFT = Integer.numberOfLeadingZeros(WHITESPACE_TABLE.length() - 1); + WHITESPACE = new FastMatcher("WHITESPACE"){ + + @Override + public boolean matches(char c) { + return CharMatcher.WHITESPACE_TABLE.charAt(1682554634 * c >>> WHITESPACE_SHIFT) == c; + } + + @Override + @GwtIncompatible(value="java.util.BitSet") + void setBits(BitSet table) { + for (int i = 0; i < CharMatcher.WHITESPACE_TABLE.length(); ++i) { + table.set(CharMatcher.WHITESPACE_TABLE.charAt(i)); + } + } + }; + } + + @GwtIncompatible(value="java.util.BitSet") + private static class BitSetMatcher + extends FastMatcher { + private final BitSet table; + + private BitSetMatcher(BitSet table, String description) { + super(description); + if (table.length() + 64 < table.size()) { + table = (BitSet)table.clone(); + } + this.table = table; + } + + @Override + public boolean matches(char c) { + return this.table.get(c); + } + + @Override + void setBits(BitSet bitSet) { + bitSet.or(this.table); + } + } + + static final class NegatedFastMatcher + extends NegatedMatcher { + NegatedFastMatcher(CharMatcher original) { + super(original); + } + + NegatedFastMatcher(String toString, CharMatcher original) { + super(toString, original); + } + + @Override + public final CharMatcher precomputed() { + return this; + } + + @Override + CharMatcher withToString(String description) { + return new NegatedFastMatcher(description, this.original); + } + } + + static abstract class FastMatcher + extends CharMatcher { + FastMatcher() { + } + + FastMatcher(String description) { + super(description); + } + + @Override + public final CharMatcher precomputed() { + return this; + } + + @Override + public CharMatcher negate() { + return new NegatedFastMatcher(this); + } + } + + private static class Or + extends CharMatcher { + final CharMatcher first; + final CharMatcher second; + + Or(CharMatcher a, CharMatcher b, String description) { + super(description); + this.first = Preconditions.checkNotNull(a); + this.second = Preconditions.checkNotNull(b); + } + + Or(CharMatcher a, CharMatcher b) { + String string = String.valueOf(String.valueOf(a)); + String string2 = String.valueOf(String.valueOf(b)); + this(a, b, new StringBuilder(18 + string.length() + string2.length()).append("CharMatcher.or(").append(string).append(", ").append(string2).append(")").toString()); + } + + @Override + @GwtIncompatible(value="java.util.BitSet") + void setBits(BitSet table) { + this.first.setBits(table); + this.second.setBits(table); + } + + @Override + public boolean matches(char c) { + return this.first.matches(c) || this.second.matches(c); + } + + @Override + CharMatcher withToString(String description) { + return new Or(this.first, this.second, description); + } + } + + private static class And + extends CharMatcher { + final CharMatcher first; + final CharMatcher second; + + And(CharMatcher a, CharMatcher b) { + String string = String.valueOf(String.valueOf(a)); + String string2 = String.valueOf(String.valueOf(b)); + this(a, b, new StringBuilder(19 + string.length() + string2.length()).append("CharMatcher.and(").append(string).append(", ").append(string2).append(")").toString()); + } + + And(CharMatcher a, CharMatcher b, String description) { + super(description); + this.first = Preconditions.checkNotNull(a); + this.second = Preconditions.checkNotNull(b); + } + + @Override + public boolean matches(char c) { + return this.first.matches(c) && this.second.matches(c); + } + + @Override + @GwtIncompatible(value="java.util.BitSet") + void setBits(BitSet table) { + BitSet tmp1 = new BitSet(); + this.first.setBits(tmp1); + BitSet tmp2 = new BitSet(); + this.second.setBits(tmp2); + tmp1.and(tmp2); + table.or(tmp1); + } + + @Override + CharMatcher withToString(String description) { + return new And(this.first, this.second, description); + } + } + + private static class NegatedMatcher + extends CharMatcher { + final CharMatcher original; + + NegatedMatcher(String toString, CharMatcher original) { + super(toString); + this.original = original; + } + + NegatedMatcher(CharMatcher original) { + String string = String.valueOf(String.valueOf(original)); + this(new StringBuilder(9 + string.length()).append(string).append(".negate()").toString(), original); + } + + @Override + public boolean matches(char c) { + return !this.original.matches(c); + } + + @Override + public boolean matchesAllOf(CharSequence sequence) { + return this.original.matchesNoneOf(sequence); + } + + @Override + public boolean matchesNoneOf(CharSequence sequence) { + return this.original.matchesAllOf(sequence); + } + + @Override + public int countIn(CharSequence sequence) { + return sequence.length() - this.original.countIn(sequence); + } + + @Override + @GwtIncompatible(value="java.util.BitSet") + void setBits(BitSet table) { + BitSet tmp = new BitSet(); + this.original.setBits(tmp); + tmp.flip(0, 65536); + table.or(tmp); + } + + @Override + public CharMatcher negate() { + return this.original; + } + + @Override + CharMatcher withToString(String description) { + return new NegatedMatcher(description, this.original); + } + } + + private static class RangesMatcher + extends CharMatcher { + private final char[] rangeStarts; + private final char[] rangeEnds; + + RangesMatcher(String description, char[] rangeStarts, char[] rangeEnds) { + super(description); + this.rangeStarts = rangeStarts; + this.rangeEnds = rangeEnds; + Preconditions.checkArgument(rangeStarts.length == rangeEnds.length); + for (int i = 0; i < rangeStarts.length; ++i) { + Preconditions.checkArgument(rangeStarts[i] <= rangeEnds[i]); + if (i + 1 >= rangeStarts.length) continue; + Preconditions.checkArgument(rangeEnds[i] < rangeStarts[i + 1]); + } + } + + @Override + public boolean matches(char c) { + int index = Arrays.binarySearch(this.rangeStarts, c); + if (index >= 0) { + return true; + } + return (index = ~index - 1) >= 0 && c <= this.rangeEnds[index]; + } + } +} diff --git a/src/com/google/common/base/Charsets.java b/src/com/google/common/base/Charsets.java new file mode 100644 index 0000000..00cb6da --- /dev/null +++ b/src/com/google/common/base/Charsets.java @@ -0,0 +1,26 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.base; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.GwtIncompatible; +import java.nio.charset.Charset; + +@GwtCompatible(emulated=true) +public final class Charsets { + @GwtIncompatible(value="Non-UTF-8 Charset") + public static final Charset US_ASCII = Charset.forName("US-ASCII"); + @GwtIncompatible(value="Non-UTF-8 Charset") + public static final Charset ISO_8859_1 = Charset.forName("ISO-8859-1"); + public static final Charset UTF_8 = Charset.forName("UTF-8"); + @GwtIncompatible(value="Non-UTF-8 Charset") + public static final Charset UTF_16BE = Charset.forName("UTF-16BE"); + @GwtIncompatible(value="Non-UTF-8 Charset") + public static final Charset UTF_16LE = Charset.forName("UTF-16LE"); + @GwtIncompatible(value="Non-UTF-8 Charset") + public static final Charset UTF_16 = Charset.forName("UTF-16"); + + private Charsets() { + } +} diff --git a/src/com/google/common/base/Converter.java b/src/com/google/common/base/Converter.java new file mode 100644 index 0000000..36468eb --- /dev/null +++ b/src/com/google/common/base/Converter.java @@ -0,0 +1,305 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.base; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Function; +import com.google.common.base.Preconditions; +import java.io.Serializable; +import java.util.Iterator; +import javax.annotation.Nullable; + +@Beta +@GwtCompatible +public abstract class Converter +implements Function { + private final boolean handleNullAutomatically; + private transient Converter reverse; + + protected Converter() { + this(true); + } + + Converter(boolean handleNullAutomatically) { + this.handleNullAutomatically = handleNullAutomatically; + } + + protected abstract B doForward(A var1); + + protected abstract A doBackward(B var1); + + @Nullable + public final B convert(@Nullable A a) { + return this.correctedDoForward(a); + } + + @Nullable + B correctedDoForward(@Nullable A a) { + if (this.handleNullAutomatically) { + return a == null ? null : (B)Preconditions.checkNotNull(this.doForward(a)); + } + return this.doForward(a); + } + + @Nullable + A correctedDoBackward(@Nullable B b) { + if (this.handleNullAutomatically) { + return b == null ? null : (A)Preconditions.checkNotNull(this.doBackward(b)); + } + return this.doBackward(b); + } + + public Iterable convertAll(final Iterable fromIterable) { + Preconditions.checkNotNull(fromIterable, "fromIterable"); + return new Iterable(){ + + @Override + public Iterator iterator() { + return new Iterator(){ + private final Iterator fromIterator; + { + this.fromIterator = fromIterable.iterator(); + } + + @Override + public boolean hasNext() { + return this.fromIterator.hasNext(); + } + + @Override + public B next() { + return Converter.this.convert(this.fromIterator.next()); + } + + @Override + public void remove() { + this.fromIterator.remove(); + } + }; + } + }; + } + + public Converter reverse() { + Converter result = this.reverse; + return result == null ? (this.reverse = new ReverseConverter(this)) : result; + } + + public final Converter andThen(Converter secondConverter) { + return this.doAndThen(secondConverter); + } + + Converter doAndThen(Converter secondConverter) { + return new ConverterComposition(this, Preconditions.checkNotNull(secondConverter)); + } + + @Override + @Deprecated + @Nullable + public final B apply(@Nullable A a) { + return this.convert(a); + } + + @Override + public boolean equals(@Nullable Object object) { + return super.equals(object); + } + + public static Converter from(Function forwardFunction, Function backwardFunction) { + return new FunctionBasedConverter(forwardFunction, backwardFunction); + } + + public static Converter identity() { + return IdentityConverter.INSTANCE; + } + + private static final class IdentityConverter + extends Converter + implements Serializable { + static final IdentityConverter INSTANCE = new IdentityConverter(); + private static final long serialVersionUID = 0L; + + private IdentityConverter() { + } + + @Override + protected T doForward(T t) { + return t; + } + + @Override + protected T doBackward(T t) { + return t; + } + + public IdentityConverter reverse() { + return this; + } + + @Override + Converter doAndThen(Converter otherConverter) { + return Preconditions.checkNotNull(otherConverter, "otherConverter"); + } + + public String toString() { + return "Converter.identity()"; + } + + private Object readResolve() { + return INSTANCE; + } + } + + private static final class FunctionBasedConverter + extends Converter + implements Serializable { + private final Function forwardFunction; + private final Function backwardFunction; + + private FunctionBasedConverter(Function forwardFunction, Function backwardFunction) { + this.forwardFunction = Preconditions.checkNotNull(forwardFunction); + this.backwardFunction = Preconditions.checkNotNull(backwardFunction); + } + + @Override + protected B doForward(A a) { + return this.forwardFunction.apply(a); + } + + @Override + protected A doBackward(B b) { + return this.backwardFunction.apply(b); + } + + @Override + public boolean equals(@Nullable Object object) { + if (object instanceof FunctionBasedConverter) { + FunctionBasedConverter that = (FunctionBasedConverter)object; + return this.forwardFunction.equals(that.forwardFunction) && this.backwardFunction.equals(that.backwardFunction); + } + return false; + } + + public int hashCode() { + return this.forwardFunction.hashCode() * 31 + this.backwardFunction.hashCode(); + } + + public String toString() { + String string = String.valueOf(String.valueOf(this.forwardFunction)); + String string2 = String.valueOf(String.valueOf(this.backwardFunction)); + return new StringBuilder(18 + string.length() + string2.length()).append("Converter.from(").append(string).append(", ").append(string2).append(")").toString(); + } + } + + private static final class ConverterComposition + extends Converter + implements Serializable { + final Converter first; + final Converter second; + private static final long serialVersionUID = 0L; + + ConverterComposition(Converter first, Converter second) { + this.first = first; + this.second = second; + } + + @Override + protected C doForward(A a) { + throw new AssertionError(); + } + + @Override + protected A doBackward(C c) { + throw new AssertionError(); + } + + @Override + @Nullable + C correctedDoForward(@Nullable A a) { + return this.second.correctedDoForward(this.first.correctedDoForward(a)); + } + + @Override + @Nullable + A correctedDoBackward(@Nullable C c) { + return this.first.correctedDoBackward(this.second.correctedDoBackward(c)); + } + + @Override + public boolean equals(@Nullable Object object) { + if (object instanceof ConverterComposition) { + ConverterComposition that = (ConverterComposition)object; + return this.first.equals(that.first) && this.second.equals(that.second); + } + return false; + } + + public int hashCode() { + return 31 * this.first.hashCode() + this.second.hashCode(); + } + + public String toString() { + String string = String.valueOf(String.valueOf(this.first)); + String string2 = String.valueOf(String.valueOf(this.second)); + return new StringBuilder(10 + string.length() + string2.length()).append(string).append(".andThen(").append(string2).append(")").toString(); + } + } + + private static final class ReverseConverter + extends Converter + implements Serializable { + final Converter original; + private static final long serialVersionUID = 0L; + + ReverseConverter(Converter original) { + this.original = original; + } + + @Override + protected A doForward(B b) { + throw new AssertionError(); + } + + @Override + protected B doBackward(A a) { + throw new AssertionError(); + } + + @Override + @Nullable + A correctedDoForward(@Nullable B b) { + return this.original.correctedDoBackward(b); + } + + @Override + @Nullable + B correctedDoBackward(@Nullable A a) { + return this.original.correctedDoForward(a); + } + + @Override + public Converter reverse() { + return this.original; + } + + @Override + public boolean equals(@Nullable Object object) { + if (object instanceof ReverseConverter) { + ReverseConverter that = (ReverseConverter)object; + return this.original.equals(that.original); + } + return false; + } + + public int hashCode() { + return ~this.original.hashCode(); + } + + public String toString() { + String string = String.valueOf(String.valueOf(this.original)); + return new StringBuilder(10 + string.length()).append(string).append(".reverse()").toString(); + } + } +} diff --git a/src/com/google/common/base/Defaults.java b/src/com/google/common/base/Defaults.java new file mode 100644 index 0000000..6f2862d --- /dev/null +++ b/src/com/google/common/base/Defaults.java @@ -0,0 +1,40 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.base; + +import com.google.common.base.Preconditions; +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; +import javax.annotation.Nullable; + +public final class Defaults { + private static final Map, Object> DEFAULTS; + + private Defaults() { + } + + private static void put(Map, Object> map, Class type, T value) { + map.put(type, value); + } + + @Nullable + public static T defaultValue(Class type) { + Object t = DEFAULTS.get(Preconditions.checkNotNull(type)); + return (T)t; + } + + static { + HashMap map = new HashMap(); + Defaults.put(map, Boolean.TYPE, false); + Defaults.put(map, Character.TYPE, Character.valueOf('\u0000')); + Defaults.put(map, Byte.TYPE, (byte)0); + Defaults.put(map, Short.TYPE, (short)0); + Defaults.put(map, Integer.TYPE, 0); + Defaults.put(map, Long.TYPE, 0L); + Defaults.put(map, Float.TYPE, Float.valueOf(0.0f)); + Defaults.put(map, Double.TYPE, 0.0); + DEFAULTS = Collections.unmodifiableMap(map); + } +} diff --git a/src/com/google/common/base/Enums.java b/src/com/google/common/base/Enums.java new file mode 100644 index 0000000..d482b99 --- /dev/null +++ b/src/com/google/common/base/Enums.java @@ -0,0 +1,115 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.base; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.base.Converter; +import com.google.common.base.Optional; +import com.google.common.base.Platform; +import com.google.common.base.Preconditions; +import java.io.Serializable; +import java.lang.ref.WeakReference; +import java.lang.reflect.Field; +import java.util.EnumSet; +import java.util.HashMap; +import java.util.Map; +import java.util.WeakHashMap; +import javax.annotation.Nullable; + +@GwtCompatible(emulated=true) +@Beta +public final class Enums { + @GwtIncompatible(value="java.lang.ref.WeakReference") + private static final Map>, Map>>> enumConstantCache = new WeakHashMap(); + + private Enums() { + } + + @GwtIncompatible(value="reflection") + public static Field getField(Enum enumValue) { + Class clazz = enumValue.getDeclaringClass(); + try { + return clazz.getDeclaredField(enumValue.name()); + } + catch (NoSuchFieldException impossible) { + throw new AssertionError((Object)impossible); + } + } + + public static > Optional getIfPresent(Class enumClass, String value) { + Preconditions.checkNotNull(enumClass); + Preconditions.checkNotNull(value); + return Platform.getEnumIfPresent(enumClass, value); + } + + @GwtIncompatible(value="java.lang.ref.WeakReference") + private static > Map>> populateCache(Class enumClass) { + HashMap result = new HashMap(); + for (Enum enumInstance : EnumSet.allOf(enumClass)) { + result.put(enumInstance.name(), new WeakReference(enumInstance)); + } + enumConstantCache.put(enumClass, result); + return result; + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @GwtIncompatible(value="java.lang.ref.WeakReference") + static > Map>> getEnumConstants(Class enumClass) { + Map>, Map>>> map = enumConstantCache; + synchronized (map) { + Map> constants = enumConstantCache.get(enumClass); + if (constants == null) { + constants = Enums.populateCache(enumClass); + } + return constants; + } + } + + public static > Converter stringConverter(Class enumClass) { + return new StringConverter(enumClass); + } + + private static final class StringConverter> + extends Converter + implements Serializable { + private final Class enumClass; + private static final long serialVersionUID = 0L; + + StringConverter(Class enumClass) { + this.enumClass = Preconditions.checkNotNull(enumClass); + } + + @Override + protected T doForward(String value) { + return Enum.valueOf(this.enumClass, value); + } + + @Override + protected String doBackward(T enumValue) { + return ((Enum)enumValue).name(); + } + + @Override + public boolean equals(@Nullable Object object) { + if (object instanceof StringConverter) { + StringConverter that = (StringConverter)object; + return this.enumClass.equals(that.enumClass); + } + return false; + } + + public int hashCode() { + return this.enumClass.hashCode(); + } + + public String toString() { + String string = String.valueOf(String.valueOf(this.enumClass.getName())); + return new StringBuilder(29 + string.length()).append("Enums.stringConverter(").append(string).append(".class)").toString(); + } + } +} diff --git a/src/com/google/common/base/Equivalence.java b/src/com/google/common/base/Equivalence.java new file mode 100644 index 0000000..2fcaced --- /dev/null +++ b/src/com/google/common/base/Equivalence.java @@ -0,0 +1,199 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.base; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Function; +import com.google.common.base.FunctionalEquivalence; +import com.google.common.base.Objects; +import com.google.common.base.PairwiseEquivalence; +import com.google.common.base.Preconditions; +import com.google.common.base.Predicate; +import java.io.Serializable; +import javax.annotation.Nullable; + +@GwtCompatible +public abstract class Equivalence { + protected Equivalence() { + } + + public final boolean equivalent(@Nullable T a, @Nullable T b) { + if (a == b) { + return true; + } + if (a == null || b == null) { + return false; + } + return this.doEquivalent(a, b); + } + + protected abstract boolean doEquivalent(T var1, T var2); + + public final int hash(@Nullable T t) { + if (t == null) { + return 0; + } + return this.doHash(t); + } + + protected abstract int doHash(T var1); + + public final Equivalence onResultOf(Function function) { + return new FunctionalEquivalence(function, this); + } + + public final Wrapper wrap(@Nullable S reference) { + return new Wrapper(this, reference); + } + + @GwtCompatible(serializable=true) + public final Equivalence> pairwise() { + return new PairwiseEquivalence(this); + } + + @Beta + public final Predicate equivalentTo(@Nullable T target) { + return new EquivalentToPredicate(this, target); + } + + public static Equivalence equals() { + return Equals.INSTANCE; + } + + public static Equivalence identity() { + return Identity.INSTANCE; + } + + static final class Identity + extends Equivalence + implements Serializable { + static final Identity INSTANCE = new Identity(); + private static final long serialVersionUID = 1L; + + Identity() { + } + + @Override + protected boolean doEquivalent(Object a, Object b) { + return false; + } + + @Override + protected int doHash(Object o) { + return System.identityHashCode(o); + } + + private Object readResolve() { + return INSTANCE; + } + } + + static final class Equals + extends Equivalence + implements Serializable { + static final Equals INSTANCE = new Equals(); + private static final long serialVersionUID = 1L; + + Equals() { + } + + @Override + protected boolean doEquivalent(Object a, Object b) { + return a.equals(b); + } + + @Override + protected int doHash(Object o) { + return o.hashCode(); + } + + private Object readResolve() { + return INSTANCE; + } + } + + private static final class EquivalentToPredicate + implements Predicate, + Serializable { + private final Equivalence equivalence; + @Nullable + private final T target; + private static final long serialVersionUID = 0L; + + EquivalentToPredicate(Equivalence equivalence, @Nullable T target) { + this.equivalence = Preconditions.checkNotNull(equivalence); + this.target = target; + } + + @Override + public boolean apply(@Nullable T input) { + return this.equivalence.equivalent(input, this.target); + } + + @Override + public boolean equals(@Nullable Object obj) { + if (this == obj) { + return true; + } + if (obj instanceof EquivalentToPredicate) { + EquivalentToPredicate that = (EquivalentToPredicate)obj; + return this.equivalence.equals(that.equivalence) && Objects.equal(this.target, that.target); + } + return false; + } + + public int hashCode() { + return Objects.hashCode(this.equivalence, this.target); + } + + public String toString() { + String string = String.valueOf(String.valueOf(this.equivalence)); + String string2 = String.valueOf(String.valueOf(this.target)); + return new StringBuilder(15 + string.length() + string2.length()).append(string).append(".equivalentTo(").append(string2).append(")").toString(); + } + } + + public static final class Wrapper + implements Serializable { + private final Equivalence equivalence; + @Nullable + private final T reference; + private static final long serialVersionUID = 0L; + + private Wrapper(Equivalence equivalence, @Nullable T reference) { + this.equivalence = Preconditions.checkNotNull(equivalence); + this.reference = reference; + } + + @Nullable + public T get() { + return this.reference; + } + + public boolean equals(@Nullable Object obj) { + if (obj == this) { + return true; + } + if (obj instanceof Wrapper) { + Wrapper that = (Wrapper)obj; + if (this.equivalence.equals(that.equivalence)) { + Equivalence equivalence = this.equivalence; + return equivalence.equivalent(this.reference, that.reference); + } + } + return false; + } + + public int hashCode() { + return this.equivalence.hash(this.reference); + } + + public String toString() { + String string = String.valueOf(String.valueOf(this.equivalence)); + String string2 = String.valueOf(String.valueOf(this.reference)); + return new StringBuilder(7 + string.length() + string2.length()).append(string).append(".wrap(").append(string2).append(")").toString(); + } + } +} diff --git a/src/com/google/common/base/FinalizablePhantomReference.java b/src/com/google/common/base/FinalizablePhantomReference.java new file mode 100644 index 0000000..d7db526 --- /dev/null +++ b/src/com/google/common/base/FinalizablePhantomReference.java @@ -0,0 +1,17 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.base; + +import com.google.common.base.FinalizableReference; +import com.google.common.base.FinalizableReferenceQueue; +import java.lang.ref.PhantomReference; + +public abstract class FinalizablePhantomReference +extends PhantomReference +implements FinalizableReference { + protected FinalizablePhantomReference(T referent, FinalizableReferenceQueue queue) { + super(referent, queue.queue); + queue.cleanUp(); + } +} diff --git a/src/com/google/common/base/FinalizableReference.java b/src/com/google/common/base/FinalizableReference.java new file mode 100644 index 0000000..a0afedb --- /dev/null +++ b/src/com/google/common/base/FinalizableReference.java @@ -0,0 +1,8 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.base; + +public interface FinalizableReference { + public void finalizeReferent(); +} diff --git a/src/com/google/common/base/FinalizableReferenceQueue.java b/src/com/google/common/base/FinalizableReferenceQueue.java new file mode 100644 index 0000000..2102cd3 --- /dev/null +++ b/src/com/google/common/base/FinalizableReferenceQueue.java @@ -0,0 +1,182 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.base; + +import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.FinalizableReference; +import java.io.Closeable; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.lang.ref.PhantomReference; +import java.lang.ref.Reference; +import java.lang.ref.ReferenceQueue; +import java.lang.reflect.Method; +import java.net.URL; +import java.net.URLClassLoader; +import java.util.logging.Level; +import java.util.logging.Logger; +import javax.annotation.Nullable; + +public class FinalizableReferenceQueue +implements Closeable { + private static final Logger logger = Logger.getLogger(FinalizableReferenceQueue.class.getName()); + private static final String FINALIZER_CLASS_NAME = "com.google.common.base.internal.Finalizer"; + private static final Method startFinalizer; + final ReferenceQueue queue = new ReferenceQueue(); + final PhantomReference frqRef = new PhantomReference(this, this.queue); + final boolean threadStarted; + + public FinalizableReferenceQueue() { + boolean threadStarted = false; + try { + startFinalizer.invoke(null, FinalizableReference.class, this.queue, this.frqRef); + threadStarted = true; + } + catch (IllegalAccessException impossible) { + throw new AssertionError((Object)impossible); + } + catch (Throwable t) { + logger.log(Level.INFO, "Failed to start reference finalizer thread. Reference cleanup will only occur when new references are created.", t); + } + this.threadStarted = threadStarted; + } + + @Override + public void close() { + this.frqRef.enqueue(); + this.cleanUp(); + } + + void cleanUp() { + Reference reference; + if (this.threadStarted) { + return; + } + while ((reference = this.queue.poll()) != null) { + reference.clear(); + try { + ((FinalizableReference)((Object)reference)).finalizeReferent(); + } + catch (Throwable t) { + logger.log(Level.SEVERE, "Error cleaning up after reference.", t); + } + } + } + + private static Class loadFinalizer(FinalizerLoader ... loaders) { + for (FinalizerLoader loader : loaders) { + Class finalizer = loader.loadFinalizer(); + if (finalizer == null) continue; + return finalizer; + } + throw new AssertionError(); + } + + static Method getStartFinalizer(Class finalizer) { + try { + return finalizer.getMethod("startFinalizer", Class.class, ReferenceQueue.class, PhantomReference.class); + } + catch (NoSuchMethodException e) { + throw new AssertionError((Object)e); + } + } + + static { + Class finalizer = FinalizableReferenceQueue.loadFinalizer(new SystemLoader(), new DecoupledLoader(), new DirectLoader()); + startFinalizer = FinalizableReferenceQueue.getStartFinalizer(finalizer); + } + + static class DirectLoader + implements FinalizerLoader { + DirectLoader() { + } + + @Override + public Class loadFinalizer() { + try { + return Class.forName(FinalizableReferenceQueue.FINALIZER_CLASS_NAME); + } + catch (ClassNotFoundException e) { + throw new AssertionError((Object)e); + } + } + } + + static class DecoupledLoader + implements FinalizerLoader { + private static final String LOADING_ERROR = "Could not load Finalizer in its own class loader.Loading Finalizer in the current class loader instead. As a result, you will not be ableto garbage collect this class loader. To support reclaiming this class loader, eitherresolve the underlying issue, or move Google Collections to your system class path."; + + DecoupledLoader() { + } + + @Override + public Class loadFinalizer() { + try { + URLClassLoader finalizerLoader = this.newLoader(this.getBaseUrl()); + return finalizerLoader.loadClass(FinalizableReferenceQueue.FINALIZER_CLASS_NAME); + } + catch (Exception e) { + logger.log(Level.WARNING, LOADING_ERROR, e); + return null; + } + } + + URL getBaseUrl() throws IOException { + String finalizerPath = String.valueOf(FinalizableReferenceQueue.FINALIZER_CLASS_NAME.replace('.', '/')).concat(".class"); + URL finalizerUrl = this.getClass().getClassLoader().getResource(finalizerPath); + if (finalizerUrl == null) { + throw new FileNotFoundException(finalizerPath); + } + String urlString = finalizerUrl.toString(); + if (!urlString.endsWith(finalizerPath)) { + String string = String.valueOf(urlString); + throw new IOException(string.length() != 0 ? "Unsupported path style: ".concat(string) : new String("Unsupported path style: ")); + } + urlString = urlString.substring(0, urlString.length() - finalizerPath.length()); + return new URL(finalizerUrl, urlString); + } + + URLClassLoader newLoader(URL base) { + return new URLClassLoader(new URL[]{base}, null); + } + } + + static class SystemLoader + implements FinalizerLoader { + @VisibleForTesting + static boolean disabled; + + SystemLoader() { + } + + @Override + public Class loadFinalizer() { + ClassLoader systemLoader; + if (disabled) { + return null; + } + try { + systemLoader = ClassLoader.getSystemClassLoader(); + } + catch (SecurityException e) { + logger.info("Not allowed to access system class loader."); + return null; + } + if (systemLoader != null) { + try { + return systemLoader.loadClass(FinalizableReferenceQueue.FINALIZER_CLASS_NAME); + } + catch (ClassNotFoundException e) { + return null; + } + } + return null; + } + } + + static interface FinalizerLoader { + @Nullable + public Class loadFinalizer(); + } +} diff --git a/src/com/google/common/base/FinalizableSoftReference.java b/src/com/google/common/base/FinalizableSoftReference.java new file mode 100644 index 0000000..61838e0 --- /dev/null +++ b/src/com/google/common/base/FinalizableSoftReference.java @@ -0,0 +1,17 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.base; + +import com.google.common.base.FinalizableReference; +import com.google.common.base.FinalizableReferenceQueue; +import java.lang.ref.SoftReference; + +public abstract class FinalizableSoftReference +extends SoftReference +implements FinalizableReference { + protected FinalizableSoftReference(T referent, FinalizableReferenceQueue queue) { + super(referent, queue.queue); + queue.cleanUp(); + } +} diff --git a/src/com/google/common/base/FinalizableWeakReference.java b/src/com/google/common/base/FinalizableWeakReference.java new file mode 100644 index 0000000..3b3f0f0 --- /dev/null +++ b/src/com/google/common/base/FinalizableWeakReference.java @@ -0,0 +1,17 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.base; + +import com.google.common.base.FinalizableReference; +import com.google.common.base.FinalizableReferenceQueue; +import java.lang.ref.WeakReference; + +public abstract class FinalizableWeakReference +extends WeakReference +implements FinalizableReference { + protected FinalizableWeakReference(T referent, FinalizableReferenceQueue queue) { + super(referent, queue.queue); + queue.cleanUp(); + } +} diff --git a/src/com/google/common/base/Function.java b/src/com/google/common/base/Function.java new file mode 100644 index 0000000..77bebd1 --- /dev/null +++ b/src/com/google/common/base/Function.java @@ -0,0 +1,15 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.base; + +import com.google.common.annotations.GwtCompatible; +import javax.annotation.Nullable; + +@GwtCompatible +public interface Function { + @Nullable + public T apply(@Nullable F var1); + + public boolean equals(@Nullable Object var1); +} diff --git a/src/com/google/common/base/FunctionalEquivalence.java b/src/com/google/common/base/FunctionalEquivalence.java new file mode 100644 index 0000000..853dd99 --- /dev/null +++ b/src/com/google/common/base/FunctionalEquivalence.java @@ -0,0 +1,59 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.base; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Equivalence; +import com.google.common.base.Function; +import com.google.common.base.Objects; +import com.google.common.base.Preconditions; +import java.io.Serializable; +import javax.annotation.Nullable; + +@Beta +@GwtCompatible +final class FunctionalEquivalence +extends Equivalence +implements Serializable { + private static final long serialVersionUID = 0L; + private final Function function; + private final Equivalence resultEquivalence; + + FunctionalEquivalence(Function function, Equivalence resultEquivalence) { + this.function = Preconditions.checkNotNull(function); + this.resultEquivalence = Preconditions.checkNotNull(resultEquivalence); + } + + @Override + protected boolean doEquivalent(F a, F b) { + return this.resultEquivalence.equivalent(this.function.apply(a), this.function.apply(b)); + } + + @Override + protected int doHash(F a) { + return this.resultEquivalence.hash(this.function.apply(a)); + } + + public boolean equals(@Nullable Object obj) { + if (obj == this) { + return true; + } + if (obj instanceof FunctionalEquivalence) { + FunctionalEquivalence that = (FunctionalEquivalence)obj; + return this.function.equals(that.function) && this.resultEquivalence.equals(that.resultEquivalence); + } + return false; + } + + public int hashCode() { + return Objects.hashCode(this.function, this.resultEquivalence); + } + + public String toString() { + String string = String.valueOf(String.valueOf(this.resultEquivalence)); + String string2 = String.valueOf(String.valueOf(this.function)); + return new StringBuilder(13 + string.length() + string2.length()).append(string).append(".onResultOf(").append(string2).append(")").toString(); + } +} diff --git a/src/com/google/common/base/Functions.java b/src/com/google/common/base/Functions.java new file mode 100644 index 0000000..c3c4a7b --- /dev/null +++ b/src/com/google/common/base/Functions.java @@ -0,0 +1,299 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.base; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Function; +import com.google.common.base.Objects; +import com.google.common.base.Preconditions; +import com.google.common.base.Predicate; +import com.google.common.base.Supplier; +import java.io.Serializable; +import java.util.Map; +import javax.annotation.Nullable; + +@GwtCompatible +public final class Functions { + private Functions() { + } + + public static Function toStringFunction() { + return ToStringFunction.INSTANCE; + } + + public static Function identity() { + return IdentityFunction.INSTANCE; + } + + public static Function forMap(Map map) { + return new FunctionForMapNoDefault(map); + } + + public static Function forMap(Map map, @Nullable V defaultValue) { + return new ForMapWithDefault(map, defaultValue); + } + + public static Function compose(Function g, Function f) { + return new FunctionComposition(g, f); + } + + public static Function forPredicate(Predicate predicate) { + return new PredicateFunction(predicate); + } + + public static Function constant(@Nullable E value) { + return new ConstantFunction(value); + } + + @Beta + public static Function forSupplier(Supplier supplier) { + return new SupplierFunction(supplier); + } + + private static class SupplierFunction + implements Function, + Serializable { + private final Supplier supplier; + private static final long serialVersionUID = 0L; + + private SupplierFunction(Supplier supplier) { + this.supplier = Preconditions.checkNotNull(supplier); + } + + @Override + public T apply(@Nullable Object input) { + return this.supplier.get(); + } + + @Override + public boolean equals(@Nullable Object obj) { + if (obj instanceof SupplierFunction) { + SupplierFunction that = (SupplierFunction)obj; + return this.supplier.equals(that.supplier); + } + return false; + } + + public int hashCode() { + return this.supplier.hashCode(); + } + + public String toString() { + String string = String.valueOf(String.valueOf(this.supplier)); + return new StringBuilder(13 + string.length()).append("forSupplier(").append(string).append(")").toString(); + } + } + + private static class ConstantFunction + implements Function, + Serializable { + private final E value; + private static final long serialVersionUID = 0L; + + public ConstantFunction(@Nullable E value) { + this.value = value; + } + + @Override + public E apply(@Nullable Object from) { + return this.value; + } + + @Override + public boolean equals(@Nullable Object obj) { + if (obj instanceof ConstantFunction) { + ConstantFunction that = (ConstantFunction)obj; + return Objects.equal(this.value, that.value); + } + return false; + } + + public int hashCode() { + return this.value == null ? 0 : this.value.hashCode(); + } + + public String toString() { + String string = String.valueOf(String.valueOf(this.value)); + return new StringBuilder(10 + string.length()).append("constant(").append(string).append(")").toString(); + } + } + + private static class PredicateFunction + implements Function, + Serializable { + private final Predicate predicate; + private static final long serialVersionUID = 0L; + + private PredicateFunction(Predicate predicate) { + this.predicate = Preconditions.checkNotNull(predicate); + } + + @Override + public Boolean apply(@Nullable T t) { + return this.predicate.apply(t); + } + + @Override + public boolean equals(@Nullable Object obj) { + if (obj instanceof PredicateFunction) { + PredicateFunction that = (PredicateFunction)obj; + return this.predicate.equals(that.predicate); + } + return false; + } + + public int hashCode() { + return this.predicate.hashCode(); + } + + public String toString() { + String string = String.valueOf(String.valueOf(this.predicate)); + return new StringBuilder(14 + string.length()).append("forPredicate(").append(string).append(")").toString(); + } + } + + private static class FunctionComposition + implements Function, + Serializable { + private final Function g; + private final Function f; + private static final long serialVersionUID = 0L; + + public FunctionComposition(Function g, Function f) { + this.g = Preconditions.checkNotNull(g); + this.f = Preconditions.checkNotNull(f); + } + + @Override + public C apply(@Nullable A a) { + return this.g.apply(this.f.apply(a)); + } + + @Override + public boolean equals(@Nullable Object obj) { + if (obj instanceof FunctionComposition) { + FunctionComposition that = (FunctionComposition)obj; + return this.f.equals(that.f) && this.g.equals(that.g); + } + return false; + } + + public int hashCode() { + return this.f.hashCode() ^ this.g.hashCode(); + } + + public String toString() { + String string = String.valueOf(String.valueOf(this.g)); + String string2 = String.valueOf(String.valueOf(this.f)); + return new StringBuilder(2 + string.length() + string2.length()).append(string).append("(").append(string2).append(")").toString(); + } + } + + private static class ForMapWithDefault + implements Function, + Serializable { + final Map map; + final V defaultValue; + private static final long serialVersionUID = 0L; + + ForMapWithDefault(Map map, @Nullable V defaultValue) { + this.map = Preconditions.checkNotNull(map); + this.defaultValue = defaultValue; + } + + @Override + public V apply(@Nullable K key) { + V result = this.map.get(key); + return result != null || this.map.containsKey(key) ? result : this.defaultValue; + } + + @Override + public boolean equals(@Nullable Object o) { + if (o instanceof ForMapWithDefault) { + ForMapWithDefault that = (ForMapWithDefault)o; + return this.map.equals(that.map) && Objects.equal(this.defaultValue, that.defaultValue); + } + return false; + } + + public int hashCode() { + return Objects.hashCode(this.map, this.defaultValue); + } + + public String toString() { + String string = String.valueOf(String.valueOf(this.map)); + String string2 = String.valueOf(String.valueOf(this.defaultValue)); + return new StringBuilder(23 + string.length() + string2.length()).append("forMap(").append(string).append(", defaultValue=").append(string2).append(")").toString(); + } + } + + private static class FunctionForMapNoDefault + implements Function, + Serializable { + final Map map; + private static final long serialVersionUID = 0L; + + FunctionForMapNoDefault(Map map) { + this.map = Preconditions.checkNotNull(map); + } + + @Override + public V apply(@Nullable K key) { + V result = this.map.get(key); + Preconditions.checkArgument(result != null || this.map.containsKey(key), "Key '%s' not present in map", key); + return result; + } + + @Override + public boolean equals(@Nullable Object o) { + if (o instanceof FunctionForMapNoDefault) { + FunctionForMapNoDefault that = (FunctionForMapNoDefault)o; + return this.map.equals(that.map); + } + return false; + } + + public int hashCode() { + return this.map.hashCode(); + } + + public String toString() { + String string = String.valueOf(String.valueOf(this.map)); + return new StringBuilder(8 + string.length()).append("forMap(").append(string).append(")").toString(); + } + } + + private static enum IdentityFunction implements Function + { + INSTANCE; + + + @Override + @Nullable + public Object apply(@Nullable Object o) { + return o; + } + + public String toString() { + return "identity"; + } + } + + private static enum ToStringFunction implements Function + { + INSTANCE; + + + @Override + public String apply(Object o) { + Preconditions.checkNotNull(o); + return o.toString(); + } + + public String toString() { + return "toString"; + } + } +} diff --git a/src/com/google/common/base/Joiner.java b/src/com/google/common/base/Joiner.java new file mode 100644 index 0000000..b3d2deb --- /dev/null +++ b/src/com/google/common/base/Joiner.java @@ -0,0 +1,267 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.base; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Preconditions; +import java.io.IOException; +import java.util.AbstractList; +import java.util.Arrays; +import java.util.Iterator; +import java.util.Map; +import javax.annotation.CheckReturnValue; +import javax.annotation.Nullable; + +@GwtCompatible +public class Joiner { + private final String separator; + + public static Joiner on(String separator) { + return new Joiner(separator); + } + + public static Joiner on(char separator) { + return new Joiner(String.valueOf(separator)); + } + + private Joiner(String separator) { + this.separator = Preconditions.checkNotNull(separator); + } + + private Joiner(Joiner prototype) { + this.separator = prototype.separator; + } + + public A appendTo(A appendable, Iterable parts) throws IOException { + return this.appendTo(appendable, parts.iterator()); + } + + public A appendTo(A appendable, Iterator parts) throws IOException { + Preconditions.checkNotNull(appendable); + if (parts.hasNext()) { + appendable.append(this.toString(parts.next())); + while (parts.hasNext()) { + appendable.append(this.separator); + appendable.append(this.toString(parts.next())); + } + } + return appendable; + } + + public final A appendTo(A appendable, Object[] parts) throws IOException { + return this.appendTo(appendable, Arrays.asList(parts)); + } + + public final A appendTo(A appendable, @Nullable Object first, @Nullable Object second, Object ... rest) throws IOException { + return this.appendTo(appendable, Joiner.iterable(first, second, rest)); + } + + public final StringBuilder appendTo(StringBuilder builder, Iterable parts) { + return this.appendTo(builder, parts.iterator()); + } + + public final StringBuilder appendTo(StringBuilder builder, Iterator parts) { + try { + this.appendTo((Appendable)builder, parts); + } + catch (IOException impossible) { + throw new AssertionError((Object)impossible); + } + return builder; + } + + public final StringBuilder appendTo(StringBuilder builder, Object[] parts) { + return this.appendTo(builder, (Iterable)Arrays.asList(parts)); + } + + public final StringBuilder appendTo(StringBuilder builder, @Nullable Object first, @Nullable Object second, Object ... rest) { + return this.appendTo(builder, Joiner.iterable(first, second, rest)); + } + + public final String join(Iterable parts) { + return this.join(parts.iterator()); + } + + public final String join(Iterator parts) { + return this.appendTo(new StringBuilder(), parts).toString(); + } + + public final String join(Object[] parts) { + return this.join(Arrays.asList(parts)); + } + + public final String join(@Nullable Object first, @Nullable Object second, Object ... rest) { + return this.join(Joiner.iterable(first, second, rest)); + } + + @CheckReturnValue + public Joiner useForNull(final String nullText) { + Preconditions.checkNotNull(nullText); + return new Joiner(this){ + + @Override + CharSequence toString(@Nullable Object part) { + return part == null ? nullText : Joiner.this.toString(part); + } + + @Override + public Joiner useForNull(String nullText2) { + throw new UnsupportedOperationException("already specified useForNull"); + } + + @Override + public Joiner skipNulls() { + throw new UnsupportedOperationException("already specified useForNull"); + } + }; + } + + @CheckReturnValue + public Joiner skipNulls() { + return new Joiner(this){ + + @Override + public A appendTo(A appendable, Iterator parts) throws IOException { + Object part; + Preconditions.checkNotNull(appendable, "appendable"); + Preconditions.checkNotNull(parts, "parts"); + while (parts.hasNext()) { + part = parts.next(); + if (part == null) continue; + appendable.append(Joiner.this.toString(part)); + break; + } + while (parts.hasNext()) { + part = parts.next(); + if (part == null) continue; + appendable.append(Joiner.this.separator); + appendable.append(Joiner.this.toString(part)); + } + return appendable; + } + + @Override + public Joiner useForNull(String nullText) { + throw new UnsupportedOperationException("already specified skipNulls"); + } + + @Override + public MapJoiner withKeyValueSeparator(String kvs) { + throw new UnsupportedOperationException("can't use .skipNulls() with maps"); + } + }; + } + + @CheckReturnValue + public MapJoiner withKeyValueSeparator(String keyValueSeparator) { + return new MapJoiner(this, keyValueSeparator); + } + + CharSequence toString(Object part) { + Preconditions.checkNotNull(part); + return part instanceof CharSequence ? (CharSequence)part : part.toString(); + } + + private static Iterable iterable(final Object first, final Object second, final Object[] rest) { + Preconditions.checkNotNull(rest); + return new AbstractList(){ + + @Override + public int size() { + return rest.length + 2; + } + + @Override + public Object get(int index) { + switch (index) { + case 0: { + return first; + } + case 1: { + return second; + } + } + return rest[index - 2]; + } + }; + } + + public static final class MapJoiner { + private final Joiner joiner; + private final String keyValueSeparator; + + private MapJoiner(Joiner joiner, String keyValueSeparator) { + this.joiner = joiner; + this.keyValueSeparator = Preconditions.checkNotNull(keyValueSeparator); + } + + public A appendTo(A appendable, Map map) throws IOException { + return this.appendTo(appendable, map.entrySet()); + } + + public StringBuilder appendTo(StringBuilder builder, Map map) { + return this.appendTo(builder, (Iterable>)map.entrySet()); + } + + public String join(Map map) { + return this.join(map.entrySet()); + } + + @Beta + public A appendTo(A appendable, Iterable> entries) throws IOException { + return this.appendTo(appendable, entries.iterator()); + } + + @Beta + public A appendTo(A appendable, Iterator> parts) throws IOException { + Preconditions.checkNotNull(appendable); + if (parts.hasNext()) { + Map.Entry entry = parts.next(); + appendable.append(this.joiner.toString(entry.getKey())); + appendable.append(this.keyValueSeparator); + appendable.append(this.joiner.toString(entry.getValue())); + while (parts.hasNext()) { + appendable.append(this.joiner.separator); + Map.Entry e = parts.next(); + appendable.append(this.joiner.toString(e.getKey())); + appendable.append(this.keyValueSeparator); + appendable.append(this.joiner.toString(e.getValue())); + } + } + return appendable; + } + + @Beta + public StringBuilder appendTo(StringBuilder builder, Iterable> entries) { + return this.appendTo(builder, entries.iterator()); + } + + @Beta + public StringBuilder appendTo(StringBuilder builder, Iterator> entries) { + try { + this.appendTo((Appendable)builder, entries); + } + catch (IOException impossible) { + throw new AssertionError((Object)impossible); + } + return builder; + } + + @Beta + public String join(Iterable> entries) { + return this.join(entries.iterator()); + } + + @Beta + public String join(Iterator> entries) { + return this.appendTo(new StringBuilder(), entries).toString(); + } + + @CheckReturnValue + public MapJoiner useForNull(String nullText) { + return new MapJoiner(this.joiner.useForNull(nullText), this.keyValueSeparator); + } + } +} diff --git a/src/com/google/common/base/MoreObjects.java b/src/com/google/common/base/MoreObjects.java new file mode 100644 index 0000000..3408cbe --- /dev/null +++ b/src/com/google/common/base/MoreObjects.java @@ -0,0 +1,160 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.base; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Preconditions; +import javax.annotation.Nullable; + +@GwtCompatible +public final class MoreObjects { + public static T firstNonNull(@Nullable T first, @Nullable T second) { + return first != null ? first : Preconditions.checkNotNull(second); + } + + public static ToStringHelper toStringHelper(Object self) { + return new ToStringHelper(MoreObjects.simpleName(self.getClass())); + } + + public static ToStringHelper toStringHelper(Class clazz) { + return new ToStringHelper(MoreObjects.simpleName(clazz)); + } + + public static ToStringHelper toStringHelper(String className) { + return new ToStringHelper(className); + } + + static String simpleName(Class clazz) { + String name = clazz.getName(); + int start = (name = name.replaceAll("\\$[0-9]+", "\\$")).lastIndexOf(36); + if (start == -1) { + start = name.lastIndexOf(46); + } + return name.substring(start + 1); + } + + private MoreObjects() { + } + + public static final class ToStringHelper { + private final String className; + private ValueHolder holderHead; + private ValueHolder holderTail; + private boolean omitNullValues; + + private ToStringHelper(String className) { + this.holderTail = this.holderHead = new ValueHolder(); + this.omitNullValues = false; + this.className = Preconditions.checkNotNull(className); + } + + public ToStringHelper omitNullValues() { + this.omitNullValues = true; + return this; + } + + public ToStringHelper add(String name, @Nullable Object value) { + return this.addHolder(name, value); + } + + public ToStringHelper add(String name, boolean value) { + return this.addHolder(name, String.valueOf(value)); + } + + public ToStringHelper add(String name, char value) { + return this.addHolder(name, String.valueOf(value)); + } + + public ToStringHelper add(String name, double value) { + return this.addHolder(name, String.valueOf(value)); + } + + public ToStringHelper add(String name, float value) { + return this.addHolder(name, String.valueOf(value)); + } + + public ToStringHelper add(String name, int value) { + return this.addHolder(name, String.valueOf(value)); + } + + public ToStringHelper add(String name, long value) { + return this.addHolder(name, String.valueOf(value)); + } + + public ToStringHelper addValue(@Nullable Object value) { + return this.addHolder(value); + } + + public ToStringHelper addValue(boolean value) { + return this.addHolder(String.valueOf(value)); + } + + public ToStringHelper addValue(char value) { + return this.addHolder(String.valueOf(value)); + } + + public ToStringHelper addValue(double value) { + return this.addHolder(String.valueOf(value)); + } + + public ToStringHelper addValue(float value) { + return this.addHolder(String.valueOf(value)); + } + + public ToStringHelper addValue(int value) { + return this.addHolder(String.valueOf(value)); + } + + public ToStringHelper addValue(long value) { + return this.addHolder(String.valueOf(value)); + } + + public String toString() { + boolean omitNullValuesSnapshot = this.omitNullValues; + String nextSeparator = ""; + StringBuilder builder = new StringBuilder(32).append(this.className).append('{'); + ValueHolder valueHolder = this.holderHead.next; + while (valueHolder != null) { + if (!omitNullValuesSnapshot || valueHolder.value != null) { + builder.append(nextSeparator); + nextSeparator = ", "; + if (valueHolder.name != null) { + builder.append(valueHolder.name).append('='); + } + builder.append(valueHolder.value); + } + valueHolder = valueHolder.next; + } + return builder.append('}').toString(); + } + + private ValueHolder addHolder() { + ValueHolder valueHolder; + this.holderTail = this.holderTail.next = (valueHolder = new ValueHolder()); + return valueHolder; + } + + private ToStringHelper addHolder(@Nullable Object value) { + ValueHolder valueHolder = this.addHolder(); + valueHolder.value = value; + return this; + } + + private ToStringHelper addHolder(String name, @Nullable Object value) { + ValueHolder valueHolder = this.addHolder(); + valueHolder.value = value; + valueHolder.name = Preconditions.checkNotNull(name); + return this; + } + + private static final class ValueHolder { + String name; + Object value; + ValueHolder next; + + private ValueHolder() { + } + } + } +} diff --git a/src/com/google/common/base/Objects.java b/src/com/google/common/base/Objects.java new file mode 100644 index 0000000..62bfb7c --- /dev/null +++ b/src/com/google/common/base/Objects.java @@ -0,0 +1,168 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.base; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.MoreObjects; +import com.google.common.base.Preconditions; +import java.util.Arrays; +import javax.annotation.CheckReturnValue; +import javax.annotation.Nullable; + +@GwtCompatible +public final class Objects { + private Objects() { + } + + @CheckReturnValue + public static boolean equal(@Nullable Object a, @Nullable Object b) { + return a == b || a != null && a.equals(b); + } + + public static int hashCode(Object ... objects) { + return Arrays.hashCode(objects); + } + + @Deprecated + public static ToStringHelper toStringHelper(Object self) { + return new ToStringHelper(MoreObjects.simpleName(self.getClass())); + } + + @Deprecated + public static ToStringHelper toStringHelper(Class clazz) { + return new ToStringHelper(MoreObjects.simpleName(clazz)); + } + + @Deprecated + public static ToStringHelper toStringHelper(String className) { + return new ToStringHelper(className); + } + + @Deprecated + public static T firstNonNull(@Nullable T first, @Nullable T second) { + return MoreObjects.firstNonNull(first, second); + } + + @Deprecated + public static final class ToStringHelper { + private final String className; + private ValueHolder holderHead; + private ValueHolder holderTail; + private boolean omitNullValues; + + private ToStringHelper(String className) { + this.holderTail = this.holderHead = new ValueHolder(); + this.omitNullValues = false; + this.className = Preconditions.checkNotNull(className); + } + + public ToStringHelper omitNullValues() { + this.omitNullValues = true; + return this; + } + + public ToStringHelper add(String name, @Nullable Object value) { + return this.addHolder(name, value); + } + + public ToStringHelper add(String name, boolean value) { + return this.addHolder(name, String.valueOf(value)); + } + + public ToStringHelper add(String name, char value) { + return this.addHolder(name, String.valueOf(value)); + } + + public ToStringHelper add(String name, double value) { + return this.addHolder(name, String.valueOf(value)); + } + + public ToStringHelper add(String name, float value) { + return this.addHolder(name, String.valueOf(value)); + } + + public ToStringHelper add(String name, int value) { + return this.addHolder(name, String.valueOf(value)); + } + + public ToStringHelper add(String name, long value) { + return this.addHolder(name, String.valueOf(value)); + } + + public ToStringHelper addValue(@Nullable Object value) { + return this.addHolder(value); + } + + public ToStringHelper addValue(boolean value) { + return this.addHolder(String.valueOf(value)); + } + + public ToStringHelper addValue(char value) { + return this.addHolder(String.valueOf(value)); + } + + public ToStringHelper addValue(double value) { + return this.addHolder(String.valueOf(value)); + } + + public ToStringHelper addValue(float value) { + return this.addHolder(String.valueOf(value)); + } + + public ToStringHelper addValue(int value) { + return this.addHolder(String.valueOf(value)); + } + + public ToStringHelper addValue(long value) { + return this.addHolder(String.valueOf(value)); + } + + public String toString() { + boolean omitNullValuesSnapshot = this.omitNullValues; + String nextSeparator = ""; + StringBuilder builder = new StringBuilder(32).append(this.className).append('{'); + ValueHolder valueHolder = this.holderHead.next; + while (valueHolder != null) { + if (!omitNullValuesSnapshot || valueHolder.value != null) { + builder.append(nextSeparator); + nextSeparator = ", "; + if (valueHolder.name != null) { + builder.append(valueHolder.name).append('='); + } + builder.append(valueHolder.value); + } + valueHolder = valueHolder.next; + } + return builder.append('}').toString(); + } + + private ValueHolder addHolder() { + ValueHolder valueHolder; + this.holderTail = this.holderTail.next = (valueHolder = new ValueHolder()); + return valueHolder; + } + + private ToStringHelper addHolder(@Nullable Object value) { + ValueHolder valueHolder = this.addHolder(); + valueHolder.value = value; + return this; + } + + private ToStringHelper addHolder(String name, @Nullable Object value) { + ValueHolder valueHolder = this.addHolder(); + valueHolder.value = value; + valueHolder.name = Preconditions.checkNotNull(name); + return this; + } + + private static final class ValueHolder { + String name; + Object value; + ValueHolder next; + + private ValueHolder() { + } + } + } +} diff --git a/src/com/google/common/base/Optional.java b/src/com/google/common/base/Optional.java new file mode 100644 index 0000000..e817827 --- /dev/null +++ b/src/com/google/common/base/Optional.java @@ -0,0 +1,89 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.base; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Absent; +import com.google.common.base.AbstractIterator; +import com.google.common.base.Function; +import com.google.common.base.Preconditions; +import com.google.common.base.Present; +import com.google.common.base.Supplier; +import java.io.Serializable; +import java.util.Iterator; +import java.util.Set; +import javax.annotation.Nullable; + +@GwtCompatible(serializable=true) +public abstract class Optional +implements Serializable { + private static final long serialVersionUID = 0L; + + public static Optional absent() { + return Absent.withType(); + } + + public static Optional of(T reference) { + return new Present(Preconditions.checkNotNull(reference)); + } + + public static Optional fromNullable(@Nullable T nullableReference) { + return nullableReference == null ? Optional.absent() : new Present(nullableReference); + } + + Optional() { + } + + public abstract boolean isPresent(); + + public abstract T get(); + + public abstract T or(T var1); + + public abstract Optional or(Optional var1); + + @Beta + public abstract T or(Supplier var1); + + @Nullable + public abstract T orNull(); + + public abstract Set asSet(); + + public abstract Optional transform(Function var1); + + public abstract boolean equals(@Nullable Object var1); + + public abstract int hashCode(); + + public abstract String toString(); + + @Beta + public static Iterable presentInstances(final Iterable> optionals) { + Preconditions.checkNotNull(optionals); + return new Iterable(){ + + @Override + public Iterator iterator() { + return new AbstractIterator(){ + private final Iterator> iterator; + { + this.iterator = Preconditions.checkNotNull(optionals.iterator()); + } + + @Override + protected T computeNext() { + while (this.iterator.hasNext()) { + Optional optional = this.iterator.next(); + if (!optional.isPresent()) continue; + return optional.get(); + } + return this.endOfData(); + } + }; + } + }; + } +} diff --git a/src/com/google/common/base/PairwiseEquivalence.java b/src/com/google/common/base/PairwiseEquivalence.java new file mode 100644 index 0000000..07201d5 --- /dev/null +++ b/src/com/google/common/base/PairwiseEquivalence.java @@ -0,0 +1,60 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.base; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Equivalence; +import com.google.common.base.Preconditions; +import java.io.Serializable; +import java.util.Iterator; +import javax.annotation.Nullable; + +@GwtCompatible(serializable=true) +final class PairwiseEquivalence +extends Equivalence> +implements Serializable { + final Equivalence elementEquivalence; + private static final long serialVersionUID = 1L; + + PairwiseEquivalence(Equivalence elementEquivalence) { + this.elementEquivalence = Preconditions.checkNotNull(elementEquivalence); + } + + @Override + protected boolean doEquivalent(Iterable iterableA, Iterable iterableB) { + Iterator iteratorA = iterableA.iterator(); + Iterator iteratorB = iterableB.iterator(); + while (iteratorA.hasNext() && iteratorB.hasNext()) { + if (this.elementEquivalence.equivalent(iteratorA.next(), iteratorB.next())) continue; + return false; + } + return !iteratorA.hasNext() && !iteratorB.hasNext(); + } + + @Override + protected int doHash(Iterable iterable) { + int hash = 78721; + for (T element : iterable) { + hash = hash * 24943 + this.elementEquivalence.hash(element); + } + return hash; + } + + public boolean equals(@Nullable Object object) { + if (object instanceof PairwiseEquivalence) { + PairwiseEquivalence that = (PairwiseEquivalence)object; + return this.elementEquivalence.equals(that.elementEquivalence); + } + return false; + } + + public int hashCode() { + return this.elementEquivalence.hashCode() ^ 0x46A3EB07; + } + + public String toString() { + String string = String.valueOf(String.valueOf(this.elementEquivalence)); + return new StringBuilder(11 + string.length()).append(string).append(".pairwise()").toString(); + } +} diff --git a/src/com/google/common/base/Platform.java b/src/com/google/common/base/Platform.java new file mode 100644 index 0000000..c0d053d --- /dev/null +++ b/src/com/google/common/base/Platform.java @@ -0,0 +1,29 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.base; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.CharMatcher; +import com.google.common.base.Enums; +import com.google.common.base.Optional; +import java.lang.ref.WeakReference; + +@GwtCompatible(emulated=true) +final class Platform { + private Platform() { + } + + static long systemNanoTime() { + return System.nanoTime(); + } + + static CharMatcher precomputeCharMatcher(CharMatcher matcher) { + return matcher.precomputedInternal(); + } + + static > Optional getEnumIfPresent(Class enumClass, String value) { + WeakReference> ref = Enums.getEnumConstants(enumClass).get(value); + return ref == null ? Optional.absent() : Optional.of(enumClass.cast(ref.get())); + } +} diff --git a/src/com/google/common/base/Preconditions.java b/src/com/google/common/base/Preconditions.java new file mode 100644 index 0000000..e1d0b3e --- /dev/null +++ b/src/com/google/common/base/Preconditions.java @@ -0,0 +1,154 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.base; + +import com.google.common.annotations.GwtCompatible; +import javax.annotation.Nullable; + +@GwtCompatible +public final class Preconditions { + private Preconditions() { + } + + public static void checkArgument(boolean expression) { + if (!expression) { + throw new IllegalArgumentException(); + } + } + + public static void checkArgument(boolean expression, @Nullable Object errorMessage) { + if (!expression) { + throw new IllegalArgumentException(String.valueOf(errorMessage)); + } + } + + public static void checkArgument(boolean expression, @Nullable String errorMessageTemplate, Object ... errorMessageArgs) { + if (!expression) { + throw new IllegalArgumentException(Preconditions.format(errorMessageTemplate, errorMessageArgs)); + } + } + + public static void checkState(boolean expression) { + if (!expression) { + throw new IllegalStateException(); + } + } + + public static void checkState(boolean expression, @Nullable Object errorMessage) { + if (!expression) { + throw new IllegalStateException(String.valueOf(errorMessage)); + } + } + + public static void checkState(boolean expression, @Nullable String errorMessageTemplate, Object ... errorMessageArgs) { + if (!expression) { + throw new IllegalStateException(Preconditions.format(errorMessageTemplate, errorMessageArgs)); + } + } + + public static T checkNotNull(T reference) { + if (reference == null) { + throw new NullPointerException(); + } + return reference; + } + + public static T checkNotNull(T reference, @Nullable Object errorMessage) { + if (reference == null) { + throw new NullPointerException(String.valueOf(errorMessage)); + } + return reference; + } + + public static T checkNotNull(T reference, @Nullable String errorMessageTemplate, Object ... errorMessageArgs) { + if (reference == null) { + throw new NullPointerException(Preconditions.format(errorMessageTemplate, errorMessageArgs)); + } + return reference; + } + + public static int checkElementIndex(int index, int size) { + return Preconditions.checkElementIndex(index, size, "index"); + } + + public static int checkElementIndex(int index, int size, @Nullable String desc) { + if (index < 0 || index >= size) { + throw new IndexOutOfBoundsException(Preconditions.badElementIndex(index, size, desc)); + } + return index; + } + + private static String badElementIndex(int index, int size, String desc) { + if (index < 0) { + return Preconditions.format("%s (%s) must not be negative", desc, index); + } + if (size < 0) { + int n = size; + throw new IllegalArgumentException(new StringBuilder(26).append("negative size: ").append(n).toString()); + } + return Preconditions.format("%s (%s) must be less than size (%s)", desc, index, size); + } + + public static int checkPositionIndex(int index, int size) { + return Preconditions.checkPositionIndex(index, size, "index"); + } + + public static int checkPositionIndex(int index, int size, @Nullable String desc) { + if (index < 0 || index > size) { + throw new IndexOutOfBoundsException(Preconditions.badPositionIndex(index, size, desc)); + } + return index; + } + + private static String badPositionIndex(int index, int size, String desc) { + if (index < 0) { + return Preconditions.format("%s (%s) must not be negative", desc, index); + } + if (size < 0) { + int n = size; + throw new IllegalArgumentException(new StringBuilder(26).append("negative size: ").append(n).toString()); + } + return Preconditions.format("%s (%s) must not be greater than size (%s)", desc, index, size); + } + + public static void checkPositionIndexes(int start, int end, int size) { + if (start < 0 || end < start || end > size) { + throw new IndexOutOfBoundsException(Preconditions.badPositionIndexes(start, end, size)); + } + } + + private static String badPositionIndexes(int start, int end, int size) { + if (start < 0 || start > size) { + return Preconditions.badPositionIndex(start, size, "start index"); + } + if (end < 0 || end > size) { + return Preconditions.badPositionIndex(end, size, "end index"); + } + return Preconditions.format("end index (%s) must not be less than start index (%s)", end, start); + } + + static String format(String template, Object ... args) { + int placeholderStart; + template = String.valueOf(template); + StringBuilder builder = new StringBuilder(template.length() + 16 * args.length); + int templateStart = 0; + int i = 0; + while (i < args.length && (placeholderStart = template.indexOf("%s", templateStart)) != -1) { + builder.append(template.substring(templateStart, placeholderStart)); + builder.append(args[i++]); + templateStart = placeholderStart + 2; + } + builder.append(template.substring(templateStart)); + if (i < args.length) { + builder.append(" ["); + builder.append(args[i++]); + while (i < args.length) { + builder.append(", "); + builder.append(args[i++]); + } + builder.append(']'); + } + return builder.toString(); + } +} diff --git a/src/com/google/common/base/Predicate.java b/src/com/google/common/base/Predicate.java new file mode 100644 index 0000000..4e297cb --- /dev/null +++ b/src/com/google/common/base/Predicate.java @@ -0,0 +1,14 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.base; + +import com.google.common.annotations.GwtCompatible; +import javax.annotation.Nullable; + +@GwtCompatible +public interface Predicate { + public boolean apply(@Nullable T var1); + + public boolean equals(@Nullable Object var1); +} diff --git a/src/com/google/common/base/Predicates.java b/src/com/google/common/base/Predicates.java new file mode 100644 index 0000000..a126550 --- /dev/null +++ b/src/com/google/common/base/Predicates.java @@ -0,0 +1,526 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.base; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.base.Function; +import com.google.common.base.Joiner; +import com.google.common.base.Objects; +import com.google.common.base.Preconditions; +import com.google.common.base.Predicate; +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; +import java.util.regex.Pattern; +import javax.annotation.Nullable; + +@GwtCompatible(emulated=true) +public final class Predicates { + private static final Joiner COMMA_JOINER = Joiner.on(','); + + private Predicates() { + } + + @GwtCompatible(serializable=true) + public static Predicate alwaysTrue() { + return ObjectPredicate.ALWAYS_TRUE.withNarrowedType(); + } + + @GwtCompatible(serializable=true) + public static Predicate alwaysFalse() { + return ObjectPredicate.ALWAYS_FALSE.withNarrowedType(); + } + + @GwtCompatible(serializable=true) + public static Predicate isNull() { + return ObjectPredicate.IS_NULL.withNarrowedType(); + } + + @GwtCompatible(serializable=true) + public static Predicate notNull() { + return ObjectPredicate.NOT_NULL.withNarrowedType(); + } + + public static Predicate not(Predicate predicate) { + return new NotPredicate(predicate); + } + + public static Predicate and(Iterable> components) { + return new AndPredicate(Predicates.defensiveCopy(components)); + } + + public static Predicate and(Predicate ... components) { + return new AndPredicate(Predicates.defensiveCopy(components)); + } + + public static Predicate and(Predicate first, Predicate second) { + return new AndPredicate(Predicates.asList(Preconditions.checkNotNull(first), Preconditions.checkNotNull(second))); + } + + public static Predicate or(Iterable> components) { + return new OrPredicate(Predicates.defensiveCopy(components)); + } + + public static Predicate or(Predicate ... components) { + return new OrPredicate(Predicates.defensiveCopy(components)); + } + + public static Predicate or(Predicate first, Predicate second) { + return new OrPredicate(Predicates.asList(Preconditions.checkNotNull(first), Preconditions.checkNotNull(second))); + } + + public static Predicate equalTo(@Nullable T target) { + return target == null ? Predicates.isNull() : new IsEqualToPredicate(target); + } + + @GwtIncompatible(value="Class.isInstance") + public static Predicate instanceOf(Class clazz) { + return new InstanceOfPredicate(clazz); + } + + @GwtIncompatible(value="Class.isAssignableFrom") + @Beta + public static Predicate> assignableFrom(Class clazz) { + return new AssignableFromPredicate(clazz); + } + + public static Predicate in(Collection target) { + return new InPredicate(target); + } + + public static Predicate compose(Predicate predicate, Function function) { + return new CompositionPredicate(predicate, function); + } + + @GwtIncompatible(value="java.util.regex.Pattern") + public static Predicate containsPattern(String pattern) { + return new ContainsPatternFromStringPredicate(pattern); + } + + @GwtIncompatible(value="java.util.regex.Pattern") + public static Predicate contains(Pattern pattern) { + return new ContainsPatternPredicate(pattern); + } + + private static List> asList(Predicate first, Predicate second) { + return Arrays.asList(first, second); + } + + private static List defensiveCopy(T ... array) { + return Predicates.defensiveCopy(Arrays.asList(array)); + } + + static List defensiveCopy(Iterable iterable) { + ArrayList list = new ArrayList(); + for (T element : iterable) { + list.add(Preconditions.checkNotNull(element)); + } + return list; + } + + @GwtIncompatible(value="Only used by other GWT-incompatible code.") + private static class ContainsPatternFromStringPredicate + extends ContainsPatternPredicate { + private static final long serialVersionUID = 0L; + + ContainsPatternFromStringPredicate(String string) { + super(Pattern.compile(string)); + } + + @Override + public String toString() { + String string = String.valueOf(String.valueOf(this.pattern.pattern())); + return new StringBuilder(28 + string.length()).append("Predicates.containsPattern(").append(string).append(")").toString(); + } + } + + @GwtIncompatible(value="Only used by other GWT-incompatible code.") + private static class ContainsPatternPredicate + implements Predicate, + Serializable { + final Pattern pattern; + private static final long serialVersionUID = 0L; + + ContainsPatternPredicate(Pattern pattern) { + this.pattern = Preconditions.checkNotNull(pattern); + } + + @Override + public boolean apply(CharSequence t) { + return this.pattern.matcher(t).find(); + } + + public int hashCode() { + return Objects.hashCode(this.pattern.pattern(), this.pattern.flags()); + } + + @Override + public boolean equals(@Nullable Object obj) { + if (obj instanceof ContainsPatternPredicate) { + ContainsPatternPredicate that = (ContainsPatternPredicate)obj; + return Objects.equal(this.pattern.pattern(), that.pattern.pattern()) && Objects.equal(this.pattern.flags(), that.pattern.flags()); + } + return false; + } + + public String toString() { + String patternString = Objects.toStringHelper(this.pattern).add("pattern", this.pattern.pattern()).add("pattern.flags", this.pattern.flags()).toString(); + String string = String.valueOf(String.valueOf(patternString)); + return new StringBuilder(21 + string.length()).append("Predicates.contains(").append(string).append(")").toString(); + } + } + + private static class CompositionPredicate + implements Predicate, + Serializable { + final Predicate p; + final Function f; + private static final long serialVersionUID = 0L; + + private CompositionPredicate(Predicate p, Function f) { + this.p = Preconditions.checkNotNull(p); + this.f = Preconditions.checkNotNull(f); + } + + @Override + public boolean apply(@Nullable A a) { + return this.p.apply(this.f.apply(a)); + } + + @Override + public boolean equals(@Nullable Object obj) { + if (obj instanceof CompositionPredicate) { + CompositionPredicate that = (CompositionPredicate)obj; + return this.f.equals(that.f) && this.p.equals(that.p); + } + return false; + } + + public int hashCode() { + return this.f.hashCode() ^ this.p.hashCode(); + } + + public String toString() { + String string = String.valueOf(String.valueOf(this.p.toString())); + String string2 = String.valueOf(String.valueOf(this.f.toString())); + return new StringBuilder(2 + string.length() + string2.length()).append(string).append("(").append(string2).append(")").toString(); + } + } + + private static class InPredicate + implements Predicate, + Serializable { + private final Collection target; + private static final long serialVersionUID = 0L; + + private InPredicate(Collection target) { + this.target = Preconditions.checkNotNull(target); + } + + @Override + public boolean apply(@Nullable T t) { + try { + return this.target.contains(t); + } + catch (NullPointerException e) { + return false; + } + catch (ClassCastException e) { + return false; + } + } + + @Override + public boolean equals(@Nullable Object obj) { + if (obj instanceof InPredicate) { + InPredicate that = (InPredicate)obj; + return this.target.equals(that.target); + } + return false; + } + + public int hashCode() { + return this.target.hashCode(); + } + + public String toString() { + String string = String.valueOf(String.valueOf(this.target)); + return new StringBuilder(15 + string.length()).append("Predicates.in(").append(string).append(")").toString(); + } + } + + @GwtIncompatible(value="Class.isAssignableFrom") + private static class AssignableFromPredicate + implements Predicate>, + Serializable { + private final Class clazz; + private static final long serialVersionUID = 0L; + + private AssignableFromPredicate(Class clazz) { + this.clazz = Preconditions.checkNotNull(clazz); + } + + @Override + public boolean apply(Class input) { + return this.clazz.isAssignableFrom(input); + } + + public int hashCode() { + return this.clazz.hashCode(); + } + + @Override + public boolean equals(@Nullable Object obj) { + if (obj instanceof AssignableFromPredicate) { + AssignableFromPredicate that = (AssignableFromPredicate)obj; + return this.clazz == that.clazz; + } + return false; + } + + public String toString() { + String string = String.valueOf(String.valueOf(this.clazz.getName())); + return new StringBuilder(27 + string.length()).append("Predicates.assignableFrom(").append(string).append(")").toString(); + } + } + + @GwtIncompatible(value="Class.isInstance") + private static class InstanceOfPredicate + implements Predicate, + Serializable { + private final Class clazz; + private static final long serialVersionUID = 0L; + + private InstanceOfPredicate(Class clazz) { + this.clazz = Preconditions.checkNotNull(clazz); + } + + @Override + public boolean apply(@Nullable Object o) { + return this.clazz.isInstance(o); + } + + public int hashCode() { + return this.clazz.hashCode(); + } + + @Override + public boolean equals(@Nullable Object obj) { + if (obj instanceof InstanceOfPredicate) { + InstanceOfPredicate that = (InstanceOfPredicate)obj; + return this.clazz == that.clazz; + } + return false; + } + + public String toString() { + String string = String.valueOf(String.valueOf(this.clazz.getName())); + return new StringBuilder(23 + string.length()).append("Predicates.instanceOf(").append(string).append(")").toString(); + } + } + + private static class IsEqualToPredicate + implements Predicate, + Serializable { + private final T target; + private static final long serialVersionUID = 0L; + + private IsEqualToPredicate(T target) { + this.target = target; + } + + @Override + public boolean apply(T t) { + return this.target.equals(t); + } + + public int hashCode() { + return this.target.hashCode(); + } + + @Override + public boolean equals(@Nullable Object obj) { + if (obj instanceof IsEqualToPredicate) { + IsEqualToPredicate that = (IsEqualToPredicate)obj; + return this.target.equals(that.target); + } + return false; + } + + public String toString() { + String string = String.valueOf(String.valueOf(this.target)); + return new StringBuilder(20 + string.length()).append("Predicates.equalTo(").append(string).append(")").toString(); + } + } + + private static class OrPredicate + implements Predicate, + Serializable { + private final List> components; + private static final long serialVersionUID = 0L; + + private OrPredicate(List> components) { + this.components = components; + } + + @Override + public boolean apply(@Nullable T t) { + for (int i = 0; i < this.components.size(); ++i) { + if (!this.components.get(i).apply(t)) continue; + return true; + } + return false; + } + + public int hashCode() { + return this.components.hashCode() + 87855567; + } + + @Override + public boolean equals(@Nullable Object obj) { + if (obj instanceof OrPredicate) { + OrPredicate that = (OrPredicate)obj; + return this.components.equals(that.components); + } + return false; + } + + public String toString() { + String string = String.valueOf(String.valueOf(COMMA_JOINER.join(this.components))); + return new StringBuilder(15 + string.length()).append("Predicates.or(").append(string).append(")").toString(); + } + } + + private static class AndPredicate + implements Predicate, + Serializable { + private final List> components; + private static final long serialVersionUID = 0L; + + private AndPredicate(List> components) { + this.components = components; + } + + @Override + public boolean apply(@Nullable T t) { + for (int i = 0; i < this.components.size(); ++i) { + if (this.components.get(i).apply(t)) continue; + return false; + } + return true; + } + + public int hashCode() { + return this.components.hashCode() + 306654252; + } + + @Override + public boolean equals(@Nullable Object obj) { + if (obj instanceof AndPredicate) { + AndPredicate that = (AndPredicate)obj; + return this.components.equals(that.components); + } + return false; + } + + public String toString() { + String string = String.valueOf(String.valueOf(COMMA_JOINER.join(this.components))); + return new StringBuilder(16 + string.length()).append("Predicates.and(").append(string).append(")").toString(); + } + } + + private static class NotPredicate + implements Predicate, + Serializable { + final Predicate predicate; + private static final long serialVersionUID = 0L; + + NotPredicate(Predicate predicate) { + this.predicate = Preconditions.checkNotNull(predicate); + } + + @Override + public boolean apply(@Nullable T t) { + return !this.predicate.apply(t); + } + + public int hashCode() { + return ~this.predicate.hashCode(); + } + + @Override + public boolean equals(@Nullable Object obj) { + if (obj instanceof NotPredicate) { + NotPredicate that = (NotPredicate)obj; + return this.predicate.equals(that.predicate); + } + return false; + } + + public String toString() { + String string = String.valueOf(String.valueOf(this.predicate.toString())); + return new StringBuilder(16 + string.length()).append("Predicates.not(").append(string).append(")").toString(); + } + } + + static enum ObjectPredicate implements Predicate + { + ALWAYS_TRUE{ + + @Override + public boolean apply(@Nullable Object o) { + return true; + } + + public String toString() { + return "Predicates.alwaysTrue()"; + } + } + , + ALWAYS_FALSE{ + + @Override + public boolean apply(@Nullable Object o) { + return false; + } + + public String toString() { + return "Predicates.alwaysFalse()"; + } + } + , + IS_NULL{ + + @Override + public boolean apply(@Nullable Object o) { + return o == null; + } + + public String toString() { + return "Predicates.isNull()"; + } + } + , + NOT_NULL{ + + @Override + public boolean apply(@Nullable Object o) { + return o != null; + } + + public String toString() { + return "Predicates.notNull()"; + } + }; + + + Predicate withNarrowedType() { + return this; + } + } +} diff --git a/src/com/google/common/base/Present.java b/src/com/google/common/base/Present.java new file mode 100644 index 0000000..1047845 --- /dev/null +++ b/src/com/google/common/base/Present.java @@ -0,0 +1,87 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.base; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Function; +import com.google.common.base.Optional; +import com.google.common.base.Preconditions; +import com.google.common.base.Supplier; +import java.util.Collections; +import java.util.Set; +import javax.annotation.Nullable; + +@GwtCompatible +final class Present +extends Optional { + private final T reference; + private static final long serialVersionUID = 0L; + + Present(T reference) { + this.reference = reference; + } + + @Override + public boolean isPresent() { + return true; + } + + @Override + public T get() { + return this.reference; + } + + @Override + public T or(T defaultValue) { + Preconditions.checkNotNull(defaultValue, "use Optional.orNull() instead of Optional.or(null)"); + return this.reference; + } + + @Override + public Optional or(Optional secondChoice) { + Preconditions.checkNotNull(secondChoice); + return this; + } + + @Override + public T or(Supplier supplier) { + Preconditions.checkNotNull(supplier); + return this.reference; + } + + @Override + public T orNull() { + return this.reference; + } + + @Override + public Set asSet() { + return Collections.singleton(this.reference); + } + + @Override + public Optional transform(Function function) { + return new Present(Preconditions.checkNotNull(function.apply(this.reference), "the Function passed to Optional.transform() must not return null.")); + } + + @Override + public boolean equals(@Nullable Object object) { + if (object instanceof Present) { + Present other = (Present)object; + return this.reference.equals(other.reference); + } + return false; + } + + @Override + public int hashCode() { + return 1502476572 + this.reference.hashCode(); + } + + @Override + public String toString() { + String string = String.valueOf(String.valueOf(this.reference)); + return new StringBuilder(13 + string.length()).append("Optional.of(").append(string).append(")").toString(); + } +} diff --git a/src/com/google/common/base/SmallCharMatcher.java b/src/com/google/common/base/SmallCharMatcher.java new file mode 100644 index 0000000..c887db3 --- /dev/null +++ b/src/com/google/common/base/SmallCharMatcher.java @@ -0,0 +1,100 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.base; + +import com.google.common.annotations.GwtIncompatible; +import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.CharMatcher; +import java.util.BitSet; + +@GwtIncompatible(value="no precomputation is done in GWT") +final class SmallCharMatcher +extends CharMatcher.FastMatcher { + static final int MAX_SIZE = 1023; + private final char[] table; + private final boolean containsZero; + private final long filter; + private static final int C1 = -862048943; + private static final int C2 = 461845907; + private static final double DESIRED_LOAD_FACTOR = 0.5; + + private SmallCharMatcher(char[] table, long filter, boolean containsZero, String description) { + super(description); + this.table = table; + this.filter = filter; + this.containsZero = containsZero; + } + + static int smear(int hashCode) { + return 461845907 * Integer.rotateLeft(hashCode * -862048943, 15); + } + + private boolean checkFilter(int c) { + return 1L == (1L & this.filter >> c); + } + + @VisibleForTesting + static int chooseTableSize(int setSize) { + if (setSize == 1) { + return 2; + } + int tableSize = Integer.highestOneBit(setSize - 1) << 1; + while ((double)tableSize * 0.5 < (double)setSize) { + tableSize <<= 1; + } + return tableSize; + } + + static CharMatcher from(BitSet chars, String description) { + long filter = 0L; + int size = chars.cardinality(); + boolean containsZero = chars.get(0); + char[] table = new char[SmallCharMatcher.chooseTableSize(size)]; + int mask = table.length - 1; + int c = chars.nextSetBit(0); + while (c != -1) { + filter |= 1L << c; + int index = SmallCharMatcher.smear(c) & mask; + while (true) { + if (table[index] == '\u0000') break; + index = index + 1 & mask; + } + table[index] = (char)c; + c = chars.nextSetBit(c + 1); + } + return new SmallCharMatcher(table, filter, containsZero, description); + } + + @Override + public boolean matches(char c) { + int startingIndex; + if (c == '\u0000') { + return this.containsZero; + } + if (!this.checkFilter(c)) { + return false; + } + int mask = this.table.length - 1; + int index = startingIndex = SmallCharMatcher.smear(c) & mask; + do { + if (this.table[index] == '\u0000') { + return false; + } + if (this.table[index] != c) continue; + return true; + } while ((index = index + 1 & mask) != startingIndex); + return false; + } + + @Override + void setBits(BitSet table) { + if (this.containsZero) { + table.set(0); + } + for (char c : this.table) { + if (c == '\u0000') continue; + table.set(c); + } + } +} diff --git a/src/com/google/common/base/Splitter.java b/src/com/google/common/base/Splitter.java new file mode 100644 index 0000000..09798bf --- /dev/null +++ b/src/com/google/common/base/Splitter.java @@ -0,0 +1,308 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.base; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.base.AbstractIterator; +import com.google.common.base.CharMatcher; +import com.google.common.base.Joiner; +import com.google.common.base.Preconditions; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import javax.annotation.CheckReturnValue; + +@GwtCompatible(emulated=true) +public final class Splitter { + private final CharMatcher trimmer; + private final boolean omitEmptyStrings; + private final Strategy strategy; + private final int limit; + + private Splitter(Strategy strategy) { + this(strategy, false, CharMatcher.NONE, Integer.MAX_VALUE); + } + + private Splitter(Strategy strategy, boolean omitEmptyStrings, CharMatcher trimmer, int limit) { + this.strategy = strategy; + this.omitEmptyStrings = omitEmptyStrings; + this.trimmer = trimmer; + this.limit = limit; + } + + public static Splitter on(char separator) { + return Splitter.on(CharMatcher.is(separator)); + } + + public static Splitter on(final CharMatcher separatorMatcher) { + Preconditions.checkNotNull(separatorMatcher); + return new Splitter(new Strategy(){ + + public SplittingIterator iterator(Splitter splitter, CharSequence toSplit) { + return new SplittingIterator(splitter, toSplit){ + + @Override + int separatorStart(int start) { + return separatorMatcher.indexIn(this.toSplit, start); + } + + @Override + int separatorEnd(int separatorPosition) { + return separatorPosition + 1; + } + }; + } + }); + } + + public static Splitter on(final String separator) { + Preconditions.checkArgument(separator.length() != 0, "The separator may not be the empty string."); + return new Splitter(new Strategy(){ + + public SplittingIterator iterator(Splitter splitter, CharSequence toSplit) { + return new SplittingIterator(splitter, toSplit){ + + @Override + public int separatorStart(int start) { + int separatorLength = separator.length(); + int last = this.toSplit.length() - separatorLength; + block0: for (int p = start; p <= last; ++p) { + for (int i = 0; i < separatorLength; ++i) { + if (this.toSplit.charAt(i + p) != separator.charAt(i)) continue block0; + } + return p; + } + return -1; + } + + @Override + public int separatorEnd(int separatorPosition) { + return separatorPosition + separator.length(); + } + }; + } + }); + } + + @GwtIncompatible(value="java.util.regex") + public static Splitter on(final Pattern separatorPattern) { + Preconditions.checkNotNull(separatorPattern); + Preconditions.checkArgument(!separatorPattern.matcher("").matches(), "The pattern may not match the empty string: %s", separatorPattern); + return new Splitter(new Strategy(){ + + public SplittingIterator iterator(Splitter splitter, CharSequence toSplit) { + final Matcher matcher = separatorPattern.matcher(toSplit); + return new SplittingIterator(splitter, toSplit){ + + @Override + public int separatorStart(int start) { + return matcher.find(start) ? matcher.start() : -1; + } + + @Override + public int separatorEnd(int separatorPosition) { + return matcher.end(); + } + }; + } + }); + } + + @GwtIncompatible(value="java.util.regex") + public static Splitter onPattern(String separatorPattern) { + return Splitter.on(Pattern.compile(separatorPattern)); + } + + public static Splitter fixedLength(final int length) { + Preconditions.checkArgument(length > 0, "The length may not be less than 1"); + return new Splitter(new Strategy(){ + + public SplittingIterator iterator(Splitter splitter, CharSequence toSplit) { + return new SplittingIterator(splitter, toSplit){ + + @Override + public int separatorStart(int start) { + int nextChunkStart = start + length; + return nextChunkStart < this.toSplit.length() ? nextChunkStart : -1; + } + + @Override + public int separatorEnd(int separatorPosition) { + return separatorPosition; + } + }; + } + }); + } + + @CheckReturnValue + public Splitter omitEmptyStrings() { + return new Splitter(this.strategy, true, this.trimmer, this.limit); + } + + @CheckReturnValue + public Splitter limit(int limit) { + Preconditions.checkArgument(limit > 0, "must be greater than zero: %s", limit); + return new Splitter(this.strategy, this.omitEmptyStrings, this.trimmer, limit); + } + + @CheckReturnValue + public Splitter trimResults() { + return this.trimResults(CharMatcher.WHITESPACE); + } + + @CheckReturnValue + public Splitter trimResults(CharMatcher trimmer) { + Preconditions.checkNotNull(trimmer); + return new Splitter(this.strategy, this.omitEmptyStrings, trimmer, this.limit); + } + + public Iterable split(final CharSequence sequence) { + Preconditions.checkNotNull(sequence); + return new Iterable(){ + + @Override + public Iterator iterator() { + return Splitter.this.splittingIterator(sequence); + } + + public String toString() { + return Joiner.on(", ").appendTo(new StringBuilder().append('['), (Iterable)this).append(']').toString(); + } + }; + } + + private Iterator splittingIterator(CharSequence sequence) { + return this.strategy.iterator(this, sequence); + } + + @Beta + public List splitToList(CharSequence sequence) { + Preconditions.checkNotNull(sequence); + Iterator iterator = this.splittingIterator(sequence); + ArrayList result = new ArrayList(); + while (iterator.hasNext()) { + result.add(iterator.next()); + } + return Collections.unmodifiableList(result); + } + + @CheckReturnValue + @Beta + public MapSplitter withKeyValueSeparator(String separator) { + return this.withKeyValueSeparator(Splitter.on(separator)); + } + + @CheckReturnValue + @Beta + public MapSplitter withKeyValueSeparator(char separator) { + return this.withKeyValueSeparator(Splitter.on(separator)); + } + + @CheckReturnValue + @Beta + public MapSplitter withKeyValueSeparator(Splitter keyValueSplitter) { + return new MapSplitter(this, keyValueSplitter); + } + + private static abstract class SplittingIterator + extends AbstractIterator { + final CharSequence toSplit; + final CharMatcher trimmer; + final boolean omitEmptyStrings; + int offset = 0; + int limit; + + abstract int separatorStart(int var1); + + abstract int separatorEnd(int var1); + + protected SplittingIterator(Splitter splitter, CharSequence toSplit) { + this.trimmer = splitter.trimmer; + this.omitEmptyStrings = splitter.omitEmptyStrings; + this.limit = splitter.limit; + this.toSplit = toSplit; + } + + @Override + protected String computeNext() { + int nextStart = this.offset; + while (this.offset != -1) { + int end; + int start = nextStart; + int separatorPosition = this.separatorStart(this.offset); + if (separatorPosition == -1) { + end = this.toSplit.length(); + this.offset = -1; + } else { + end = separatorPosition; + this.offset = this.separatorEnd(separatorPosition); + } + if (this.offset == nextStart) { + ++this.offset; + if (this.offset < this.toSplit.length()) continue; + this.offset = -1; + continue; + } + while (start < end && this.trimmer.matches(this.toSplit.charAt(start))) { + ++start; + } + while (end > start && this.trimmer.matches(this.toSplit.charAt(end - 1))) { + --end; + } + if (this.omitEmptyStrings && start == end) { + nextStart = this.offset; + continue; + } + if (this.limit == 1) { + this.offset = -1; + for (end = this.toSplit.length(); end > start && this.trimmer.matches(this.toSplit.charAt(end - 1)); --end) { + } + } else { + --this.limit; + } + return this.toSplit.subSequence(start, end).toString(); + } + return (String)this.endOfData(); + } + } + + private static interface Strategy { + public Iterator iterator(Splitter var1, CharSequence var2); + } + + @Beta + public static final class MapSplitter { + private static final String INVALID_ENTRY_MESSAGE = "Chunk [%s] is not a valid entry"; + private final Splitter outerSplitter; + private final Splitter entrySplitter; + + private MapSplitter(Splitter outerSplitter, Splitter entrySplitter) { + this.outerSplitter = outerSplitter; + this.entrySplitter = Preconditions.checkNotNull(entrySplitter); + } + + public Map split(CharSequence sequence) { + LinkedHashMap map = new LinkedHashMap(); + for (String entry : this.outerSplitter.split(sequence)) { + Iterator entryFields = this.entrySplitter.splittingIterator(entry); + Preconditions.checkArgument(entryFields.hasNext(), INVALID_ENTRY_MESSAGE, entry); + String key = (String)entryFields.next(); + Preconditions.checkArgument(!map.containsKey(key), "Duplicate key [%s] found.", key); + Preconditions.checkArgument(entryFields.hasNext(), INVALID_ENTRY_MESSAGE, entry); + String value = (String)entryFields.next(); + map.put(key, value); + Preconditions.checkArgument(!entryFields.hasNext(), INVALID_ENTRY_MESSAGE, entry); + } + return Collections.unmodifiableMap(map); + } + } +} diff --git a/src/com/google/common/base/StandardSystemProperty.java b/src/com/google/common/base/StandardSystemProperty.java new file mode 100644 index 0000000..66c42b3 --- /dev/null +++ b/src/com/google/common/base/StandardSystemProperty.java @@ -0,0 +1,62 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.base; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtIncompatible; +import javax.annotation.Nullable; + +@Beta +@GwtIncompatible(value="java.lang.System#getProperty") +public enum StandardSystemProperty { + JAVA_VERSION("java.version"), + JAVA_VENDOR("java.vendor"), + JAVA_VENDOR_URL("java.vendor.url"), + JAVA_HOME("java.home"), + JAVA_VM_SPECIFICATION_VERSION("java.vm.specification.version"), + JAVA_VM_SPECIFICATION_VENDOR("java.vm.specification.vendor"), + JAVA_VM_SPECIFICATION_NAME("java.vm.specification.name"), + JAVA_VM_VERSION("java.vm.version"), + JAVA_VM_VENDOR("java.vm.vendor"), + JAVA_VM_NAME("java.vm.name"), + JAVA_SPECIFICATION_VERSION("java.specification.version"), + JAVA_SPECIFICATION_VENDOR("java.specification.vendor"), + JAVA_SPECIFICATION_NAME("java.specification.name"), + JAVA_CLASS_VERSION("java.class.version"), + JAVA_CLASS_PATH("java.class.path"), + JAVA_LIBRARY_PATH("java.library.path"), + JAVA_IO_TMPDIR("java.io.tmpdir"), + JAVA_COMPILER("java.compiler"), + JAVA_EXT_DIRS("java.ext.dirs"), + OS_NAME("os.name"), + OS_ARCH("os.arch"), + OS_VERSION("os.version"), + FILE_SEPARATOR("file.separator"), + PATH_SEPARATOR("path.separator"), + LINE_SEPARATOR("line.separator"), + USER_NAME("user.name"), + USER_HOME("user.home"), + USER_DIR("user.dir"); + + private final String key; + + private StandardSystemProperty(String key) { + this.key = key; + } + + public String key() { + return this.key; + } + + @Nullable + public String value() { + return System.getProperty(this.key); + } + + public String toString() { + String string = String.valueOf(String.valueOf(this.key())); + String string2 = String.valueOf(String.valueOf(this.value())); + return new StringBuilder(1 + string.length() + string2.length()).append(string).append("=").append(string2).toString(); + } +} diff --git a/src/com/google/common/base/Stopwatch.java b/src/com/google/common/base/Stopwatch.java new file mode 100644 index 0000000..d00acdf --- /dev/null +++ b/src/com/google/common/base/Stopwatch.java @@ -0,0 +1,136 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.base; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.base.Preconditions; +import com.google.common.base.Ticker; +import java.util.concurrent.TimeUnit; + +@Beta +@GwtCompatible(emulated=true) +public final class Stopwatch { + private final Ticker ticker; + private boolean isRunning; + private long elapsedNanos; + private long startTick; + + public static Stopwatch createUnstarted() { + return new Stopwatch(); + } + + public static Stopwatch createUnstarted(Ticker ticker) { + return new Stopwatch(ticker); + } + + public static Stopwatch createStarted() { + return new Stopwatch().start(); + } + + public static Stopwatch createStarted(Ticker ticker) { + return new Stopwatch(ticker).start(); + } + + @Deprecated + Stopwatch() { + this(Ticker.systemTicker()); + } + + @Deprecated + Stopwatch(Ticker ticker) { + this.ticker = Preconditions.checkNotNull(ticker, "ticker"); + } + + public boolean isRunning() { + return this.isRunning; + } + + public Stopwatch start() { + Preconditions.checkState(!this.isRunning, "This stopwatch is already running."); + this.isRunning = true; + this.startTick = this.ticker.read(); + return this; + } + + public Stopwatch stop() { + long tick = this.ticker.read(); + Preconditions.checkState(this.isRunning, "This stopwatch is already stopped."); + this.isRunning = false; + this.elapsedNanos += tick - this.startTick; + return this; + } + + public Stopwatch reset() { + this.elapsedNanos = 0L; + this.isRunning = false; + return this; + } + + private long elapsedNanos() { + return this.isRunning ? this.ticker.read() - this.startTick + this.elapsedNanos : this.elapsedNanos; + } + + public long elapsed(TimeUnit desiredUnit) { + return desiredUnit.convert(this.elapsedNanos(), TimeUnit.NANOSECONDS); + } + + @GwtIncompatible(value="String.format()") + public String toString() { + long nanos = this.elapsedNanos(); + TimeUnit unit = Stopwatch.chooseUnit(nanos); + double value = (double)nanos / (double)TimeUnit.NANOSECONDS.convert(1L, unit); + return String.format("%.4g %s", value, Stopwatch.abbreviate(unit)); + } + + private static TimeUnit chooseUnit(long nanos) { + if (TimeUnit.DAYS.convert(nanos, TimeUnit.NANOSECONDS) > 0L) { + return TimeUnit.DAYS; + } + if (TimeUnit.HOURS.convert(nanos, TimeUnit.NANOSECONDS) > 0L) { + return TimeUnit.HOURS; + } + if (TimeUnit.MINUTES.convert(nanos, TimeUnit.NANOSECONDS) > 0L) { + return TimeUnit.MINUTES; + } + if (TimeUnit.SECONDS.convert(nanos, TimeUnit.NANOSECONDS) > 0L) { + return TimeUnit.SECONDS; + } + if (TimeUnit.MILLISECONDS.convert(nanos, TimeUnit.NANOSECONDS) > 0L) { + return TimeUnit.MILLISECONDS; + } + if (TimeUnit.MICROSECONDS.convert(nanos, TimeUnit.NANOSECONDS) > 0L) { + return TimeUnit.MICROSECONDS; + } + return TimeUnit.NANOSECONDS; + } + + private static String abbreviate(TimeUnit unit) { + switch (unit) { + case NANOSECONDS: { + return "ns"; + } + case MICROSECONDS: { + return "\u03bcs"; + } + case MILLISECONDS: { + return "ms"; + } + case SECONDS: { + return "s"; + } + case MINUTES: { + return "min"; + } + case HOURS: { + return "h"; + } + case DAYS: { + return "d"; + } + } + throw new AssertionError(); + } +} diff --git a/src/com/google/common/base/Strings.java b/src/com/google/common/base/Strings.java new file mode 100644 index 0000000..3ab343a --- /dev/null +++ b/src/com/google/common/base/Strings.java @@ -0,0 +1,108 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.base; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.Preconditions; +import javax.annotation.Nullable; + +@GwtCompatible +public final class Strings { + private Strings() { + } + + public static String nullToEmpty(@Nullable String string) { + return string == null ? "" : string; + } + + @Nullable + public static String emptyToNull(@Nullable String string) { + return Strings.isNullOrEmpty(string) ? null : string; + } + + public static boolean isNullOrEmpty(@Nullable String string) { + return string == null || string.length() == 0; + } + + public static String padStart(String string, int minLength, char padChar) { + Preconditions.checkNotNull(string); + if (string.length() >= minLength) { + return string; + } + StringBuilder sb = new StringBuilder(minLength); + for (int i = string.length(); i < minLength; ++i) { + sb.append(padChar); + } + sb.append(string); + return sb.toString(); + } + + public static String padEnd(String string, int minLength, char padChar) { + Preconditions.checkNotNull(string); + if (string.length() >= minLength) { + return string; + } + StringBuilder sb = new StringBuilder(minLength); + sb.append(string); + for (int i = string.length(); i < minLength; ++i) { + sb.append(padChar); + } + return sb.toString(); + } + + public static String repeat(String string, int count) { + int n; + Preconditions.checkNotNull(string); + if (count <= 1) { + Preconditions.checkArgument(count >= 0, "invalid count: %s", count); + return count == 0 ? "" : string; + } + int len = string.length(); + long longSize = (long)len * (long)count; + int size = (int)longSize; + if ((long)size != longSize) { + long l = longSize; + throw new ArrayIndexOutOfBoundsException(new StringBuilder(51).append("Required array size too large: ").append(l).toString()); + } + char[] array = new char[size]; + string.getChars(0, len, array, 0); + for (n = len; n < size - n; n <<= 1) { + System.arraycopy(array, 0, array, n, n); + } + System.arraycopy(array, 0, array, n, size - n); + return new String(array); + } + + public static String commonPrefix(CharSequence a, CharSequence b) { + int p; + Preconditions.checkNotNull(a); + Preconditions.checkNotNull(b); + int maxPrefixLength = Math.min(a.length(), b.length()); + for (p = 0; p < maxPrefixLength && a.charAt(p) == b.charAt(p); ++p) { + } + if (Strings.validSurrogatePairAt(a, p - 1) || Strings.validSurrogatePairAt(b, p - 1)) { + --p; + } + return a.subSequence(0, p).toString(); + } + + public static String commonSuffix(CharSequence a, CharSequence b) { + int s; + Preconditions.checkNotNull(a); + Preconditions.checkNotNull(b); + int maxSuffixLength = Math.min(a.length(), b.length()); + for (s = 0; s < maxSuffixLength && a.charAt(a.length() - s - 1) == b.charAt(b.length() - s - 1); ++s) { + } + if (Strings.validSurrogatePairAt(a, a.length() - s - 1) || Strings.validSurrogatePairAt(b, b.length() - s - 1)) { + --s; + } + return a.subSequence(a.length() - s, a.length()).toString(); + } + + @VisibleForTesting + static boolean validSurrogatePairAt(CharSequence string, int index) { + return index >= 0 && index <= string.length() - 2 && Character.isHighSurrogate(string.charAt(index)) && Character.isLowSurrogate(string.charAt(index + 1)); + } +} diff --git a/src/com/google/common/base/Supplier.java b/src/com/google/common/base/Supplier.java new file mode 100644 index 0000000..70cbabf --- /dev/null +++ b/src/com/google/common/base/Supplier.java @@ -0,0 +1,11 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.base; + +import com.google.common.annotations.GwtCompatible; + +@GwtCompatible +public interface Supplier { + public T get(); +} diff --git a/src/com/google/common/base/Suppliers.java b/src/com/google/common/base/Suppliers.java new file mode 100644 index 0000000..e6affa3 --- /dev/null +++ b/src/com/google/common/base/Suppliers.java @@ -0,0 +1,248 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.base; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.Function; +import com.google.common.base.Objects; +import com.google.common.base.Platform; +import com.google.common.base.Preconditions; +import com.google.common.base.Supplier; +import java.io.Serializable; +import java.util.concurrent.TimeUnit; +import javax.annotation.Nullable; + +@GwtCompatible +public final class Suppliers { + private Suppliers() { + } + + public static Supplier compose(Function function, Supplier supplier) { + Preconditions.checkNotNull(function); + Preconditions.checkNotNull(supplier); + return new SupplierComposition(function, supplier); + } + + public static Supplier memoize(Supplier delegate) { + return delegate instanceof MemoizingSupplier ? delegate : new MemoizingSupplier(Preconditions.checkNotNull(delegate)); + } + + public static Supplier memoizeWithExpiration(Supplier delegate, long duration, TimeUnit unit) { + return new ExpiringMemoizingSupplier(delegate, duration, unit); + } + + public static Supplier ofInstance(@Nullable T instance) { + return new SupplierOfInstance(instance); + } + + public static Supplier synchronizedSupplier(Supplier delegate) { + return new ThreadSafeSupplier(Preconditions.checkNotNull(delegate)); + } + + @Beta + public static Function, T> supplierFunction() { + SupplierFunctionImpl sf = SupplierFunctionImpl.INSTANCE; + return sf; + } + + private static enum SupplierFunctionImpl implements SupplierFunction + { + INSTANCE; + + + @Override + public Object apply(Supplier input) { + return input.get(); + } + + public String toString() { + return "Suppliers.supplierFunction()"; + } + } + + private static interface SupplierFunction + extends Function, T> { + } + + private static class ThreadSafeSupplier + implements Supplier, + Serializable { + final Supplier delegate; + private static final long serialVersionUID = 0L; + + ThreadSafeSupplier(Supplier delegate) { + this.delegate = delegate; + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public T get() { + Supplier supplier = this.delegate; + synchronized (supplier) { + return this.delegate.get(); + } + } + + public String toString() { + String string = String.valueOf(String.valueOf(this.delegate)); + return new StringBuilder(32 + string.length()).append("Suppliers.synchronizedSupplier(").append(string).append(")").toString(); + } + } + + private static class SupplierOfInstance + implements Supplier, + Serializable { + final T instance; + private static final long serialVersionUID = 0L; + + SupplierOfInstance(@Nullable T instance) { + this.instance = instance; + } + + @Override + public T get() { + return this.instance; + } + + public boolean equals(@Nullable Object obj) { + if (obj instanceof SupplierOfInstance) { + SupplierOfInstance that = (SupplierOfInstance)obj; + return Objects.equal(this.instance, that.instance); + } + return false; + } + + public int hashCode() { + return Objects.hashCode(this.instance); + } + + public String toString() { + String string = String.valueOf(String.valueOf(this.instance)); + return new StringBuilder(22 + string.length()).append("Suppliers.ofInstance(").append(string).append(")").toString(); + } + } + + @VisibleForTesting + static class ExpiringMemoizingSupplier + implements Supplier, + Serializable { + final Supplier delegate; + final long durationNanos; + volatile transient T value; + volatile transient long expirationNanos; + private static final long serialVersionUID = 0L; + + ExpiringMemoizingSupplier(Supplier delegate, long duration, TimeUnit unit) { + this.delegate = Preconditions.checkNotNull(delegate); + this.durationNanos = unit.toNanos(duration); + Preconditions.checkArgument(duration > 0L); + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public T get() { + long nanos = this.expirationNanos; + long now = Platform.systemNanoTime(); + if (nanos == 0L || now - nanos >= 0L) { + ExpiringMemoizingSupplier expiringMemoizingSupplier = this; + synchronized (expiringMemoizingSupplier) { + if (nanos == this.expirationNanos) { + T t = this.delegate.get(); + this.value = t; + nanos = now + this.durationNanos; + this.expirationNanos = nanos == 0L ? 1L : nanos; + return t; + } + } + } + return this.value; + } + + public String toString() { + String string = String.valueOf(String.valueOf(this.delegate)); + long l = this.durationNanos; + return new StringBuilder(62 + string.length()).append("Suppliers.memoizeWithExpiration(").append(string).append(", ").append(l).append(", NANOS)").toString(); + } + } + + @VisibleForTesting + static class MemoizingSupplier + implements Supplier, + Serializable { + final Supplier delegate; + volatile transient boolean initialized; + transient T value; + private static final long serialVersionUID = 0L; + + MemoizingSupplier(Supplier delegate) { + this.delegate = delegate; + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public T get() { + if (!this.initialized) { + MemoizingSupplier memoizingSupplier = this; + synchronized (memoizingSupplier) { + if (!this.initialized) { + T t = this.delegate.get(); + this.value = t; + this.initialized = true; + return t; + } + } + } + return this.value; + } + + public String toString() { + String string = String.valueOf(String.valueOf(this.delegate)); + return new StringBuilder(19 + string.length()).append("Suppliers.memoize(").append(string).append(")").toString(); + } + } + + private static class SupplierComposition + implements Supplier, + Serializable { + final Function function; + final Supplier supplier; + private static final long serialVersionUID = 0L; + + SupplierComposition(Function function, Supplier supplier) { + this.function = function; + this.supplier = supplier; + } + + @Override + public T get() { + return this.function.apply(this.supplier.get()); + } + + public boolean equals(@Nullable Object obj) { + if (obj instanceof SupplierComposition) { + SupplierComposition that = (SupplierComposition)obj; + return this.function.equals(that.function) && this.supplier.equals(that.supplier); + } + return false; + } + + public int hashCode() { + return Objects.hashCode(this.function, this.supplier); + } + + public String toString() { + String string = String.valueOf(String.valueOf(this.function)); + String string2 = String.valueOf(String.valueOf(this.supplier)); + return new StringBuilder(21 + string.length() + string2.length()).append("Suppliers.compose(").append(string).append(", ").append(string2).append(")").toString(); + } + } +} diff --git a/src/com/google/common/base/Throwables.java b/src/com/google/common/base/Throwables.java new file mode 100644 index 0000000..7b2e300 --- /dev/null +++ b/src/com/google/common/base/Throwables.java @@ -0,0 +1,70 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.base; + +import com.google.common.annotations.Beta; +import com.google.common.base.Preconditions; +import java.io.PrintWriter; +import java.io.StringWriter; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import javax.annotation.Nullable; + +public final class Throwables { + private Throwables() { + } + + public static void propagateIfInstanceOf(@Nullable Throwable throwable, Class declaredType) throws X { + if (throwable != null && declaredType.isInstance(throwable)) { + throw (Throwable)declaredType.cast(throwable); + } + } + + public static void propagateIfPossible(@Nullable Throwable throwable) { + Throwables.propagateIfInstanceOf(throwable, Error.class); + Throwables.propagateIfInstanceOf(throwable, RuntimeException.class); + } + + public static void propagateIfPossible(@Nullable Throwable throwable, Class declaredType) throws X { + Throwables.propagateIfInstanceOf(throwable, declaredType); + Throwables.propagateIfPossible(throwable); + } + + public static void propagateIfPossible(@Nullable Throwable throwable, Class declaredType1, Class declaredType2) throws X1, X2 { + Preconditions.checkNotNull(declaredType2); + Throwables.propagateIfInstanceOf(throwable, declaredType1); + Throwables.propagateIfPossible(throwable, declaredType2); + } + + public static RuntimeException propagate(Throwable throwable) { + Throwables.propagateIfPossible(Preconditions.checkNotNull(throwable)); + throw new RuntimeException(throwable); + } + + public static Throwable getRootCause(Throwable throwable) { + Throwable cause; + while ((cause = throwable.getCause()) != null) { + throwable = cause; + } + return throwable; + } + + @Beta + public static List getCausalChain(Throwable throwable) { + Preconditions.checkNotNull(throwable); + ArrayList causes = new ArrayList(4); + while (throwable != null) { + causes.add(throwable); + throwable = throwable.getCause(); + } + return Collections.unmodifiableList(causes); + } + + public static String getStackTraceAsString(Throwable throwable) { + StringWriter stringWriter = new StringWriter(); + throwable.printStackTrace(new PrintWriter(stringWriter)); + return stringWriter.toString(); + } +} diff --git a/src/com/google/common/base/Ticker.java b/src/com/google/common/base/Ticker.java new file mode 100644 index 0000000..ceeacd3 --- /dev/null +++ b/src/com/google/common/base/Ticker.java @@ -0,0 +1,29 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.base; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Platform; + +@Beta +@GwtCompatible +public abstract class Ticker { + private static final Ticker SYSTEM_TICKER = new Ticker(){ + + @Override + public long read() { + return Platform.systemNanoTime(); + } + }; + + protected Ticker() { + } + + public abstract long read(); + + public static Ticker systemTicker() { + return SYSTEM_TICKER; + } +} diff --git a/src/com/google/common/base/Utf8.java b/src/com/google/common/base/Utf8.java new file mode 100644 index 0000000..56ee509 --- /dev/null +++ b/src/com/google/common/base/Utf8.java @@ -0,0 +1,104 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.base; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Preconditions; + +@Beta +@GwtCompatible +public final class Utf8 { + public static int encodedLength(CharSequence sequence) { + int i; + int utf16Length; + int utf8Length = utf16Length = sequence.length(); + for (i = 0; i < utf16Length && sequence.charAt(i) < '\u0080'; ++i) { + } + while (i < utf16Length) { + char c = sequence.charAt(i); + if (c < '\u0800') { + utf8Length += 127 - c >>> 31; + } else { + utf8Length += Utf8.encodedLengthGeneral(sequence, i); + break; + } + ++i; + } + if (utf8Length < utf16Length) { + long l = (long)utf8Length + 0x100000000L; + throw new IllegalArgumentException(new StringBuilder(54).append("UTF-8 length does not fit in int: ").append(l).toString()); + } + return utf8Length; + } + + private static int encodedLengthGeneral(CharSequence sequence, int start) { + int utf16Length = sequence.length(); + int utf8Length = 0; + for (int i = start; i < utf16Length; ++i) { + char c = sequence.charAt(i); + if (c < '\u0800') { + utf8Length += 127 - c >>> 31; + continue; + } + utf8Length += 2; + if ('\ud800' > c || c > '\udfff') continue; + int cp = Character.codePointAt(sequence, i); + if (cp < 65536) { + int n = i; + throw new IllegalArgumentException(new StringBuilder(39).append("Unpaired surrogate at index ").append(n).toString()); + } + ++i; + } + return utf8Length; + } + + public static boolean isWellFormed(byte[] bytes) { + return Utf8.isWellFormed(bytes, 0, bytes.length); + } + + public static boolean isWellFormed(byte[] bytes, int off, int len) { + int end = off + len; + Preconditions.checkPositionIndexes(off, end, bytes.length); + for (int i = off; i < end; ++i) { + if (bytes[i] >= 0) continue; + return Utf8.isWellFormedSlowPath(bytes, i, end); + } + return true; + } + + private static boolean isWellFormedSlowPath(byte[] bytes, int off, int end) { + int index = off; + while (true) { + byte byte2; + byte byte1; + if (index >= end) { + return true; + } + if ((byte1 = bytes[index++]) >= 0) continue; + if (byte1 < -32) { + if (index == end) { + return false; + } + if (byte1 >= -62 && bytes[index++] <= -65) continue; + return false; + } + if (byte1 < -16) { + if (index + 1 >= end) { + return false; + } + if (!((byte2 = bytes[index++]) > -65 || byte1 == -32 && byte2 < -96 || byte1 == -19 && -96 <= byte2) && bytes[index++] <= -65) continue; + return false; + } + if (index + 2 >= end) { + return false; + } + if ((byte2 = bytes[index++]) > -65 || (byte1 << 28) + (byte2 - -112) >> 30 != 0 || bytes[index++] > -65 || bytes[index++] > -65) break; + } + return false; + } + + private Utf8() { + } +} diff --git a/src/com/google/common/base/Verify.java b/src/com/google/common/base/Verify.java new file mode 100644 index 0000000..46bd27c --- /dev/null +++ b/src/com/google/common/base/Verify.java @@ -0,0 +1,38 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.base; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Preconditions; +import com.google.common.base.VerifyException; +import javax.annotation.Nullable; + +@Beta +@GwtCompatible +public final class Verify { + public static void verify(boolean expression) { + if (!expression) { + throw new VerifyException(); + } + } + + public static void verify(boolean expression, @Nullable String errorMessageTemplate, Object ... errorMessageArgs) { + if (!expression) { + throw new VerifyException(Preconditions.format(errorMessageTemplate, errorMessageArgs)); + } + } + + public static T verifyNotNull(@Nullable T reference) { + return Verify.verifyNotNull(reference, "expected a non-null reference", new Object[0]); + } + + public static T verifyNotNull(@Nullable T reference, @Nullable String errorMessageTemplate, Object ... errorMessageArgs) { + Verify.verify(reference != null, errorMessageTemplate, errorMessageArgs); + return reference; + } + + private Verify() { + } +} diff --git a/src/com/google/common/base/VerifyException.java b/src/com/google/common/base/VerifyException.java new file mode 100644 index 0000000..0e03d9b --- /dev/null +++ b/src/com/google/common/base/VerifyException.java @@ -0,0 +1,20 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.base; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import javax.annotation.Nullable; + +@Beta +@GwtCompatible +public class VerifyException +extends RuntimeException { + public VerifyException() { + } + + public VerifyException(@Nullable String message) { + super(message); + } +} diff --git a/src/com/google/common/base/internal/Finalizer.java b/src/com/google/common/base/internal/Finalizer.java new file mode 100644 index 0000000..415ea71 --- /dev/null +++ b/src/com/google/common/base/internal/Finalizer.java @@ -0,0 +1,107 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.base.internal; + +import java.lang.ref.PhantomReference; +import java.lang.ref.Reference; +import java.lang.ref.ReferenceQueue; +import java.lang.ref.WeakReference; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.util.logging.Level; +import java.util.logging.Logger; + +public class Finalizer +implements Runnable { + private static final Logger logger = Logger.getLogger(Finalizer.class.getName()); + private static final String FINALIZABLE_REFERENCE = "com.google.common.base.FinalizableReference"; + private final WeakReference> finalizableReferenceClassReference; + private final PhantomReference frqReference; + private final ReferenceQueue queue; + private static final Field inheritableThreadLocals = Finalizer.getInheritableThreadLocalsField(); + + public static void startFinalizer(Class finalizableReferenceClass, ReferenceQueue queue, PhantomReference frqReference) { + if (!finalizableReferenceClass.getName().equals(FINALIZABLE_REFERENCE)) { + throw new IllegalArgumentException("Expected com.google.common.base.FinalizableReference."); + } + Finalizer finalizer = new Finalizer(finalizableReferenceClass, queue, frqReference); + Thread thread = new Thread(finalizer); + thread.setName(Finalizer.class.getName()); + thread.setDaemon(true); + try { + if (inheritableThreadLocals != null) { + inheritableThreadLocals.set(thread, null); + } + } + catch (Throwable t) { + logger.log(Level.INFO, "Failed to clear thread local values inherited by reference finalizer thread.", t); + } + thread.start(); + } + + private Finalizer(Class finalizableReferenceClass, ReferenceQueue queue, PhantomReference frqReference) { + this.queue = queue; + this.finalizableReferenceClassReference = new WeakReference(finalizableReferenceClass); + this.frqReference = frqReference; + } + + @Override + public void run() { + while (true) { + try { + while (this.cleanUp(this.queue.remove())) { + } + } + catch (InterruptedException interruptedException) { + continue; + } + break; + } + } + + private boolean cleanUp(Reference reference) { + Method finalizeReferentMethod = this.getFinalizeReferentMethod(); + if (finalizeReferentMethod == null) { + return false; + } + do { + reference.clear(); + if (reference == this.frqReference) { + return false; + } + try { + finalizeReferentMethod.invoke(reference, new Object[0]); + } + catch (Throwable t) { + logger.log(Level.SEVERE, "Error cleaning up after reference.", t); + } + } while ((reference = this.queue.poll()) != null); + return true; + } + + private Method getFinalizeReferentMethod() { + Class finalizableReferenceClass = (Class)this.finalizableReferenceClassReference.get(); + if (finalizableReferenceClass == null) { + return null; + } + try { + return finalizableReferenceClass.getMethod("finalizeReferent", new Class[0]); + } + catch (NoSuchMethodException e) { + throw new AssertionError((Object)e); + } + } + + public static Field getInheritableThreadLocalsField() { + try { + Field inheritableThreadLocals = Thread.class.getDeclaredField("inheritableThreadLocals"); + inheritableThreadLocals.setAccessible(true); + return inheritableThreadLocals; + } + catch (Throwable t) { + logger.log(Level.INFO, "Couldn't access Thread.inheritableThreadLocals. Reference finalizer threads will inherit thread local values."); + return null; + } + } +} diff --git a/src/com/google/common/base/package-info.java b/src/com/google/common/base/package-info.java new file mode 100644 index 0000000..bb0dd62 --- /dev/null +++ b/src/com/google/common/base/package-info.java @@ -0,0 +1,8 @@ +/* + * Decompiled with CFR 0.152. + */ +@ParametersAreNonnullByDefault +package com.google.common.base; + +import javax.annotation.ParametersAreNonnullByDefault; + diff --git a/src/com/google/common/cache/AbstractCache.java b/src/com/google/common/cache/AbstractCache.java new file mode 100644 index 0000000..84d176c --- /dev/null +++ b/src/com/google/common/cache/AbstractCache.java @@ -0,0 +1,160 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.cache; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.cache.Cache; +import com.google.common.cache.CacheStats; +import com.google.common.cache.LongAddable; +import com.google.common.cache.LongAddables; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.Maps; +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.concurrent.Callable; +import java.util.concurrent.ConcurrentMap; +import java.util.concurrent.ExecutionException; + +@Beta +@GwtCompatible +public abstract class AbstractCache +implements Cache { + protected AbstractCache() { + } + + @Override + public V get(K key, Callable valueLoader) throws ExecutionException { + throw new UnsupportedOperationException(); + } + + @Override + public ImmutableMap getAllPresent(Iterable keys) { + LinkedHashMap result = Maps.newLinkedHashMap(); + for (Object key : keys) { + if (result.containsKey(key)) continue; + Object castKey = key; + Object value = this.getIfPresent(key); + if (value == null) continue; + result.put(castKey, value); + } + return ImmutableMap.copyOf(result); + } + + @Override + public void put(K key, V value) { + throw new UnsupportedOperationException(); + } + + @Override + public void putAll(Map m) { + for (Map.Entry entry : m.entrySet()) { + this.put(entry.getKey(), entry.getValue()); + } + } + + @Override + public void cleanUp() { + } + + @Override + public long size() { + throw new UnsupportedOperationException(); + } + + @Override + public void invalidate(Object key) { + throw new UnsupportedOperationException(); + } + + @Override + public void invalidateAll(Iterable keys) { + for (Object key : keys) { + this.invalidate(key); + } + } + + @Override + public void invalidateAll() { + throw new UnsupportedOperationException(); + } + + @Override + public CacheStats stats() { + throw new UnsupportedOperationException(); + } + + @Override + public ConcurrentMap asMap() { + throw new UnsupportedOperationException(); + } + + @Beta + public static final class SimpleStatsCounter + implements StatsCounter { + private final LongAddable hitCount = LongAddables.create(); + private final LongAddable missCount = LongAddables.create(); + private final LongAddable loadSuccessCount = LongAddables.create(); + private final LongAddable loadExceptionCount = LongAddables.create(); + private final LongAddable totalLoadTime = LongAddables.create(); + private final LongAddable evictionCount = LongAddables.create(); + + @Override + public void recordHits(int count) { + this.hitCount.add(count); + } + + @Override + public void recordMisses(int count) { + this.missCount.add(count); + } + + @Override + public void recordLoadSuccess(long loadTime) { + this.loadSuccessCount.increment(); + this.totalLoadTime.add(loadTime); + } + + @Override + public void recordLoadException(long loadTime) { + this.loadExceptionCount.increment(); + this.totalLoadTime.add(loadTime); + } + + @Override + public void recordEviction() { + this.evictionCount.increment(); + } + + @Override + public CacheStats snapshot() { + return new CacheStats(this.hitCount.sum(), this.missCount.sum(), this.loadSuccessCount.sum(), this.loadExceptionCount.sum(), this.totalLoadTime.sum(), this.evictionCount.sum()); + } + + public void incrementBy(StatsCounter other) { + CacheStats otherStats = other.snapshot(); + this.hitCount.add(otherStats.hitCount()); + this.missCount.add(otherStats.missCount()); + this.loadSuccessCount.add(otherStats.loadSuccessCount()); + this.loadExceptionCount.add(otherStats.loadExceptionCount()); + this.totalLoadTime.add(otherStats.totalLoadTime()); + this.evictionCount.add(otherStats.evictionCount()); + } + } + + @Beta + public static interface StatsCounter { + public void recordHits(int var1); + + public void recordMisses(int var1); + + public void recordLoadSuccess(long var1); + + public void recordLoadException(long var1); + + public void recordEviction(); + + public CacheStats snapshot(); + } +} diff --git a/src/com/google/common/cache/AbstractLoadingCache.java b/src/com/google/common/cache/AbstractLoadingCache.java new file mode 100644 index 0000000..bda1535 --- /dev/null +++ b/src/com/google/common/cache/AbstractLoadingCache.java @@ -0,0 +1,51 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.cache; + +import com.google.common.annotations.Beta; +import com.google.common.cache.AbstractCache; +import com.google.common.cache.LoadingCache; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.Maps; +import com.google.common.util.concurrent.UncheckedExecutionException; +import java.util.LinkedHashMap; +import java.util.concurrent.ExecutionException; + +@Beta +public abstract class AbstractLoadingCache +extends AbstractCache +implements LoadingCache { + protected AbstractLoadingCache() { + } + + @Override + public V getUnchecked(K key) { + try { + return this.get(key); + } + catch (ExecutionException e) { + throw new UncheckedExecutionException(e.getCause()); + } + } + + @Override + public ImmutableMap getAll(Iterable keys) throws ExecutionException { + LinkedHashMap result = Maps.newLinkedHashMap(); + for (K key : keys) { + if (result.containsKey(key)) continue; + result.put(key, this.get(key)); + } + return ImmutableMap.copyOf(result); + } + + @Override + public final V apply(K key) { + return this.getUnchecked(key); + } + + @Override + public void refresh(K key) { + throw new UnsupportedOperationException(); + } +} diff --git a/src/com/google/common/cache/Cache.java b/src/com/google/common/cache/Cache.java new file mode 100644 index 0000000..6bf3c93 --- /dev/null +++ b/src/com/google/common/cache/Cache.java @@ -0,0 +1,43 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.cache; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.cache.CacheStats; +import com.google.common.collect.ImmutableMap; +import java.util.Map; +import java.util.concurrent.Callable; +import java.util.concurrent.ConcurrentMap; +import java.util.concurrent.ExecutionException; +import javax.annotation.Nullable; + +@Beta +@GwtCompatible +public interface Cache { + @Nullable + public V getIfPresent(Object var1); + + public V get(K var1, Callable var2) throws ExecutionException; + + public ImmutableMap getAllPresent(Iterable var1); + + public void put(K var1, V var2); + + public void putAll(Map var1); + + public void invalidate(Object var1); + + public void invalidateAll(Iterable var1); + + public void invalidateAll(); + + public long size(); + + public CacheStats stats(); + + public ConcurrentMap asMap(); + + public void cleanUp(); +} diff --git a/src/com/google/common/cache/CacheBuilder.java b/src/com/google/common/cache/CacheBuilder.java new file mode 100644 index 0000000..bd99385 --- /dev/null +++ b/src/com/google/common/cache/CacheBuilder.java @@ -0,0 +1,402 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.cache; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.base.Ascii; +import com.google.common.base.Equivalence; +import com.google.common.base.MoreObjects; +import com.google.common.base.Preconditions; +import com.google.common.base.Supplier; +import com.google.common.base.Suppliers; +import com.google.common.base.Ticker; +import com.google.common.cache.AbstractCache; +import com.google.common.cache.Cache; +import com.google.common.cache.CacheBuilderSpec; +import com.google.common.cache.CacheLoader; +import com.google.common.cache.CacheStats; +import com.google.common.cache.LoadingCache; +import com.google.common.cache.LocalCache; +import com.google.common.cache.RemovalListener; +import com.google.common.cache.RemovalNotification; +import com.google.common.cache.Weigher; +import java.util.concurrent.TimeUnit; +import java.util.logging.Level; +import java.util.logging.Logger; +import javax.annotation.CheckReturnValue; + +@GwtCompatible(emulated=true) +public final class CacheBuilder { + private static final int DEFAULT_INITIAL_CAPACITY = 16; + private static final int DEFAULT_CONCURRENCY_LEVEL = 4; + private static final int DEFAULT_EXPIRATION_NANOS = 0; + private static final int DEFAULT_REFRESH_NANOS = 0; + static final Supplier NULL_STATS_COUNTER = Suppliers.ofInstance(new AbstractCache.StatsCounter(){ + + @Override + public void recordHits(int count) { + } + + @Override + public void recordMisses(int count) { + } + + @Override + public void recordLoadSuccess(long loadTime) { + } + + @Override + public void recordLoadException(long loadTime) { + } + + @Override + public void recordEviction() { + } + + @Override + public CacheStats snapshot() { + return EMPTY_STATS; + } + }); + static final CacheStats EMPTY_STATS = new CacheStats(0L, 0L, 0L, 0L, 0L, 0L); + static final Supplier CACHE_STATS_COUNTER = new Supplier(){ + + @Override + public AbstractCache.StatsCounter get() { + return new AbstractCache.SimpleStatsCounter(); + } + }; + static final Ticker NULL_TICKER = new Ticker(){ + + @Override + public long read() { + return 0L; + } + }; + private static final Logger logger = Logger.getLogger(CacheBuilder.class.getName()); + static final int UNSET_INT = -1; + boolean strictParsing = true; + int initialCapacity = -1; + int concurrencyLevel = -1; + long maximumSize = -1L; + long maximumWeight = -1L; + Weigher weigher; + LocalCache.Strength keyStrength; + LocalCache.Strength valueStrength; + long expireAfterWriteNanos = -1L; + long expireAfterAccessNanos = -1L; + long refreshNanos = -1L; + Equivalence keyEquivalence; + Equivalence valueEquivalence; + RemovalListener removalListener; + Ticker ticker; + Supplier statsCounterSupplier = NULL_STATS_COUNTER; + + CacheBuilder() { + } + + public static CacheBuilder newBuilder() { + return new CacheBuilder(); + } + + @Beta + @GwtIncompatible(value="To be supported") + public static CacheBuilder from(CacheBuilderSpec spec) { + return spec.toCacheBuilder().lenientParsing(); + } + + @Beta + @GwtIncompatible(value="To be supported") + public static CacheBuilder from(String spec) { + return CacheBuilder.from(CacheBuilderSpec.parse(spec)); + } + + @GwtIncompatible(value="To be supported") + CacheBuilder lenientParsing() { + this.strictParsing = false; + return this; + } + + @GwtIncompatible(value="To be supported") + CacheBuilder keyEquivalence(Equivalence equivalence) { + Preconditions.checkState(this.keyEquivalence == null, "key equivalence was already set to %s", this.keyEquivalence); + this.keyEquivalence = Preconditions.checkNotNull(equivalence); + return this; + } + + Equivalence getKeyEquivalence() { + return MoreObjects.firstNonNull(this.keyEquivalence, this.getKeyStrength().defaultEquivalence()); + } + + @GwtIncompatible(value="To be supported") + CacheBuilder valueEquivalence(Equivalence equivalence) { + Preconditions.checkState(this.valueEquivalence == null, "value equivalence was already set to %s", this.valueEquivalence); + this.valueEquivalence = Preconditions.checkNotNull(equivalence); + return this; + } + + Equivalence getValueEquivalence() { + return MoreObjects.firstNonNull(this.valueEquivalence, this.getValueStrength().defaultEquivalence()); + } + + public CacheBuilder initialCapacity(int initialCapacity) { + Preconditions.checkState(this.initialCapacity == -1, "initial capacity was already set to %s", this.initialCapacity); + Preconditions.checkArgument(initialCapacity >= 0); + this.initialCapacity = initialCapacity; + return this; + } + + int getInitialCapacity() { + return this.initialCapacity == -1 ? 16 : this.initialCapacity; + } + + public CacheBuilder concurrencyLevel(int concurrencyLevel) { + Preconditions.checkState(this.concurrencyLevel == -1, "concurrency level was already set to %s", this.concurrencyLevel); + Preconditions.checkArgument(concurrencyLevel > 0); + this.concurrencyLevel = concurrencyLevel; + return this; + } + + int getConcurrencyLevel() { + return this.concurrencyLevel == -1 ? 4 : this.concurrencyLevel; + } + + public CacheBuilder maximumSize(long size) { + Preconditions.checkState(this.maximumSize == -1L, "maximum size was already set to %s", this.maximumSize); + Preconditions.checkState(this.maximumWeight == -1L, "maximum weight was already set to %s", this.maximumWeight); + Preconditions.checkState(this.weigher == null, "maximum size can not be combined with weigher"); + Preconditions.checkArgument(size >= 0L, "maximum size must not be negative"); + this.maximumSize = size; + return this; + } + + @GwtIncompatible(value="To be supported") + public CacheBuilder maximumWeight(long weight) { + Preconditions.checkState(this.maximumWeight == -1L, "maximum weight was already set to %s", this.maximumWeight); + Preconditions.checkState(this.maximumSize == -1L, "maximum size was already set to %s", this.maximumSize); + this.maximumWeight = weight; + Preconditions.checkArgument(weight >= 0L, "maximum weight must not be negative"); + return this; + } + + @GwtIncompatible(value="To be supported") + public CacheBuilder weigher(Weigher weigher) { + Preconditions.checkState(this.weigher == null); + if (this.strictParsing) { + Preconditions.checkState(this.maximumSize == -1L, "weigher can not be combined with maximum size", this.maximumSize); + } + CacheBuilder me = this; + me.weigher = Preconditions.checkNotNull(weigher); + return me; + } + + long getMaximumWeight() { + if (this.expireAfterWriteNanos == 0L || this.expireAfterAccessNanos == 0L) { + return 0L; + } + return this.weigher == null ? this.maximumSize : this.maximumWeight; + } + + Weigher getWeigher() { + return MoreObjects.firstNonNull(this.weigher, OneWeigher.INSTANCE); + } + + @GwtIncompatible(value="java.lang.ref.WeakReference") + public CacheBuilder weakKeys() { + return this.setKeyStrength(LocalCache.Strength.WEAK); + } + + CacheBuilder setKeyStrength(LocalCache.Strength strength) { + Preconditions.checkState(this.keyStrength == null, "Key strength was already set to %s", new Object[]{this.keyStrength}); + this.keyStrength = Preconditions.checkNotNull(strength); + return this; + } + + LocalCache.Strength getKeyStrength() { + return MoreObjects.firstNonNull(this.keyStrength, LocalCache.Strength.STRONG); + } + + @GwtIncompatible(value="java.lang.ref.WeakReference") + public CacheBuilder weakValues() { + return this.setValueStrength(LocalCache.Strength.WEAK); + } + + @GwtIncompatible(value="java.lang.ref.SoftReference") + public CacheBuilder softValues() { + return this.setValueStrength(LocalCache.Strength.SOFT); + } + + CacheBuilder setValueStrength(LocalCache.Strength strength) { + Preconditions.checkState(this.valueStrength == null, "Value strength was already set to %s", new Object[]{this.valueStrength}); + this.valueStrength = Preconditions.checkNotNull(strength); + return this; + } + + LocalCache.Strength getValueStrength() { + return MoreObjects.firstNonNull(this.valueStrength, LocalCache.Strength.STRONG); + } + + public CacheBuilder expireAfterWrite(long duration, TimeUnit unit) { + Preconditions.checkState(this.expireAfterWriteNanos == -1L, "expireAfterWrite was already set to %s ns", this.expireAfterWriteNanos); + Preconditions.checkArgument(duration >= 0L, "duration cannot be negative: %s %s", new Object[]{duration, unit}); + this.expireAfterWriteNanos = unit.toNanos(duration); + return this; + } + + long getExpireAfterWriteNanos() { + return this.expireAfterWriteNanos == -1L ? 0L : this.expireAfterWriteNanos; + } + + public CacheBuilder expireAfterAccess(long duration, TimeUnit unit) { + Preconditions.checkState(this.expireAfterAccessNanos == -1L, "expireAfterAccess was already set to %s ns", this.expireAfterAccessNanos); + Preconditions.checkArgument(duration >= 0L, "duration cannot be negative: %s %s", new Object[]{duration, unit}); + this.expireAfterAccessNanos = unit.toNanos(duration); + return this; + } + + long getExpireAfterAccessNanos() { + return this.expireAfterAccessNanos == -1L ? 0L : this.expireAfterAccessNanos; + } + + @Beta + @GwtIncompatible(value="To be supported (synchronously).") + public CacheBuilder refreshAfterWrite(long duration, TimeUnit unit) { + Preconditions.checkNotNull(unit); + Preconditions.checkState(this.refreshNanos == -1L, "refresh was already set to %s ns", this.refreshNanos); + Preconditions.checkArgument(duration > 0L, "duration must be positive: %s %s", new Object[]{duration, unit}); + this.refreshNanos = unit.toNanos(duration); + return this; + } + + long getRefreshNanos() { + return this.refreshNanos == -1L ? 0L : this.refreshNanos; + } + + public CacheBuilder ticker(Ticker ticker) { + Preconditions.checkState(this.ticker == null); + this.ticker = Preconditions.checkNotNull(ticker); + return this; + } + + Ticker getTicker(boolean recordsTime) { + if (this.ticker != null) { + return this.ticker; + } + return recordsTime ? Ticker.systemTicker() : NULL_TICKER; + } + + @CheckReturnValue + public CacheBuilder removalListener(RemovalListener listener) { + Preconditions.checkState(this.removalListener == null); + CacheBuilder me = this; + me.removalListener = Preconditions.checkNotNull(listener); + return me; + } + + RemovalListener getRemovalListener() { + return MoreObjects.firstNonNull(this.removalListener, NullListener.INSTANCE); + } + + public CacheBuilder recordStats() { + this.statsCounterSupplier = CACHE_STATS_COUNTER; + return this; + } + + boolean isRecordingStats() { + return this.statsCounterSupplier == CACHE_STATS_COUNTER; + } + + Supplier getStatsCounterSupplier() { + return this.statsCounterSupplier; + } + + public LoadingCache build(CacheLoader loader) { + this.checkWeightWithWeigher(); + return new LocalCache.LocalLoadingCache(this, loader); + } + + public Cache build() { + this.checkWeightWithWeigher(); + this.checkNonLoadingCache(); + return new LocalCache.LocalManualCache(this); + } + + private void checkNonLoadingCache() { + Preconditions.checkState(this.refreshNanos == -1L, "refreshAfterWrite requires a LoadingCache"); + } + + private void checkWeightWithWeigher() { + if (this.weigher == null) { + Preconditions.checkState(this.maximumWeight == -1L, "maximumWeight requires weigher"); + } else if (this.strictParsing) { + Preconditions.checkState(this.maximumWeight != -1L, "weigher requires maximumWeight"); + } else if (this.maximumWeight == -1L) { + logger.log(Level.WARNING, "ignoring weigher specified without maximumWeight"); + } + } + + public String toString() { + long l; + MoreObjects.ToStringHelper s = MoreObjects.toStringHelper(this); + if (this.initialCapacity != -1) { + s.add("initialCapacity", this.initialCapacity); + } + if (this.concurrencyLevel != -1) { + s.add("concurrencyLevel", this.concurrencyLevel); + } + if (this.maximumSize != -1L) { + s.add("maximumSize", this.maximumSize); + } + if (this.maximumWeight != -1L) { + s.add("maximumWeight", this.maximumWeight); + } + if (this.expireAfterWriteNanos != -1L) { + l = this.expireAfterWriteNanos; + s.add("expireAfterWrite", new StringBuilder(22).append(l).append("ns").toString()); + } + if (this.expireAfterAccessNanos != -1L) { + l = this.expireAfterAccessNanos; + s.add("expireAfterAccess", new StringBuilder(22).append(l).append("ns").toString()); + } + if (this.keyStrength != null) { + s.add("keyStrength", Ascii.toLowerCase(this.keyStrength.toString())); + } + if (this.valueStrength != null) { + s.add("valueStrength", Ascii.toLowerCase(this.valueStrength.toString())); + } + if (this.keyEquivalence != null) { + s.addValue("keyEquivalence"); + } + if (this.valueEquivalence != null) { + s.addValue("valueEquivalence"); + } + if (this.removalListener != null) { + s.addValue("removalListener"); + } + return s.toString(); + } + + static enum OneWeigher implements Weigher + { + INSTANCE; + + + @Override + public int weigh(Object key, Object value) { + return 1; + } + } + + static enum NullListener implements RemovalListener + { + INSTANCE; + + + @Override + public void onRemoval(RemovalNotification notification) { + } + } +} diff --git a/src/com/google/common/cache/CacheBuilderSpec.java b/src/com/google/common/cache/CacheBuilderSpec.java new file mode 100644 index 0000000..f0bb88a --- /dev/null +++ b/src/com/google/common/cache/CacheBuilderSpec.java @@ -0,0 +1,378 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.cache; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.MoreObjects; +import com.google.common.base.Objects; +import com.google.common.base.Preconditions; +import com.google.common.base.Splitter; +import com.google.common.cache.CacheBuilder; +import com.google.common.cache.LocalCache; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; +import java.util.concurrent.TimeUnit; +import javax.annotation.Nullable; + +@Beta +public final class CacheBuilderSpec { + private static final Splitter KEYS_SPLITTER = Splitter.on(',').trimResults(); + private static final Splitter KEY_VALUE_SPLITTER = Splitter.on('=').trimResults(); + private static final ImmutableMap VALUE_PARSERS = ImmutableMap.builder().put("initialCapacity", new InitialCapacityParser()).put("maximumSize", (InitialCapacityParser)((Object)new MaximumSizeParser())).put("maximumWeight", (InitialCapacityParser)((Object)new MaximumWeightParser())).put("concurrencyLevel", (InitialCapacityParser)((Object)new ConcurrencyLevelParser())).put("weakKeys", (InitialCapacityParser)((Object)new KeyStrengthParser(LocalCache.Strength.WEAK))).put("softValues", (InitialCapacityParser)((Object)new ValueStrengthParser(LocalCache.Strength.SOFT))).put("weakValues", (InitialCapacityParser)((Object)new ValueStrengthParser(LocalCache.Strength.WEAK))).put("recordStats", (InitialCapacityParser)((Object)new RecordStatsParser())).put("expireAfterAccess", (InitialCapacityParser)((Object)new AccessDurationParser())).put("expireAfterWrite", (InitialCapacityParser)((Object)new WriteDurationParser())).put("refreshAfterWrite", (InitialCapacityParser)((Object)new RefreshDurationParser())).put("refreshInterval", (InitialCapacityParser)((Object)new RefreshDurationParser())).build(); + @VisibleForTesting + Integer initialCapacity; + @VisibleForTesting + Long maximumSize; + @VisibleForTesting + Long maximumWeight; + @VisibleForTesting + Integer concurrencyLevel; + @VisibleForTesting + LocalCache.Strength keyStrength; + @VisibleForTesting + LocalCache.Strength valueStrength; + @VisibleForTesting + Boolean recordStats; + @VisibleForTesting + long writeExpirationDuration; + @VisibleForTesting + TimeUnit writeExpirationTimeUnit; + @VisibleForTesting + long accessExpirationDuration; + @VisibleForTesting + TimeUnit accessExpirationTimeUnit; + @VisibleForTesting + long refreshDuration; + @VisibleForTesting + TimeUnit refreshTimeUnit; + private final String specification; + + private CacheBuilderSpec(String specification) { + this.specification = specification; + } + + public static CacheBuilderSpec parse(String cacheBuilderSpecification) { + CacheBuilderSpec spec = new CacheBuilderSpec(cacheBuilderSpecification); + if (!cacheBuilderSpecification.isEmpty()) { + for (String keyValuePair : KEYS_SPLITTER.split(cacheBuilderSpecification)) { + ImmutableList keyAndValue = ImmutableList.copyOf(KEY_VALUE_SPLITTER.split(keyValuePair)); + Preconditions.checkArgument(!keyAndValue.isEmpty(), "blank key-value pair"); + Preconditions.checkArgument(keyAndValue.size() <= 2, "key-value pair %s with more than one equals sign", keyValuePair); + String key = (String)keyAndValue.get(0); + ValueParser valueParser = VALUE_PARSERS.get(key); + Preconditions.checkArgument(valueParser != null, "unknown key %s", key); + String value = keyAndValue.size() == 1 ? null : (String)keyAndValue.get(1); + valueParser.parse(spec, key, value); + } + } + return spec; + } + + public static CacheBuilderSpec disableCaching() { + return CacheBuilderSpec.parse("maximumSize=0"); + } + + CacheBuilder toCacheBuilder() { + CacheBuilder builder = CacheBuilder.newBuilder(); + if (this.initialCapacity != null) { + builder.initialCapacity(this.initialCapacity); + } + if (this.maximumSize != null) { + builder.maximumSize(this.maximumSize); + } + if (this.maximumWeight != null) { + builder.maximumWeight(this.maximumWeight); + } + if (this.concurrencyLevel != null) { + builder.concurrencyLevel(this.concurrencyLevel); + } + if (this.keyStrength != null) { + switch (this.keyStrength) { + case WEAK: { + builder.weakKeys(); + break; + } + default: { + throw new AssertionError(); + } + } + } + if (this.valueStrength != null) { + switch (this.valueStrength) { + case SOFT: { + builder.softValues(); + break; + } + case WEAK: { + builder.weakValues(); + break; + } + default: { + throw new AssertionError(); + } + } + } + if (this.recordStats != null && this.recordStats.booleanValue()) { + builder.recordStats(); + } + if (this.writeExpirationTimeUnit != null) { + builder.expireAfterWrite(this.writeExpirationDuration, this.writeExpirationTimeUnit); + } + if (this.accessExpirationTimeUnit != null) { + builder.expireAfterAccess(this.accessExpirationDuration, this.accessExpirationTimeUnit); + } + if (this.refreshTimeUnit != null) { + builder.refreshAfterWrite(this.refreshDuration, this.refreshTimeUnit); + } + return builder; + } + + public String toParsableString() { + return this.specification; + } + + public String toString() { + return MoreObjects.toStringHelper(this).addValue(this.toParsableString()).toString(); + } + + public int hashCode() { + return Objects.hashCode(new Object[]{this.initialCapacity, this.maximumSize, this.maximumWeight, this.concurrencyLevel, this.keyStrength, this.valueStrength, this.recordStats, CacheBuilderSpec.durationInNanos(this.writeExpirationDuration, this.writeExpirationTimeUnit), CacheBuilderSpec.durationInNanos(this.accessExpirationDuration, this.accessExpirationTimeUnit), CacheBuilderSpec.durationInNanos(this.refreshDuration, this.refreshTimeUnit)}); + } + + public boolean equals(@Nullable Object obj) { + if (this == obj) { + return true; + } + if (!(obj instanceof CacheBuilderSpec)) { + return false; + } + CacheBuilderSpec that = (CacheBuilderSpec)obj; + return Objects.equal(this.initialCapacity, that.initialCapacity) && Objects.equal(this.maximumSize, that.maximumSize) && Objects.equal(this.maximumWeight, that.maximumWeight) && Objects.equal(this.concurrencyLevel, that.concurrencyLevel) && Objects.equal((Object)this.keyStrength, (Object)that.keyStrength) && Objects.equal((Object)this.valueStrength, (Object)that.valueStrength) && Objects.equal(this.recordStats, that.recordStats) && Objects.equal(CacheBuilderSpec.durationInNanos(this.writeExpirationDuration, this.writeExpirationTimeUnit), CacheBuilderSpec.durationInNanos(that.writeExpirationDuration, that.writeExpirationTimeUnit)) && Objects.equal(CacheBuilderSpec.durationInNanos(this.accessExpirationDuration, this.accessExpirationTimeUnit), CacheBuilderSpec.durationInNanos(that.accessExpirationDuration, that.accessExpirationTimeUnit)) && Objects.equal(CacheBuilderSpec.durationInNanos(this.refreshDuration, this.refreshTimeUnit), CacheBuilderSpec.durationInNanos(that.refreshDuration, that.refreshTimeUnit)); + } + + @Nullable + private static Long durationInNanos(long duration, @Nullable TimeUnit unit) { + return unit == null ? null : Long.valueOf(unit.toNanos(duration)); + } + + static class RefreshDurationParser + extends DurationParser { + RefreshDurationParser() { + } + + @Override + protected void parseDuration(CacheBuilderSpec spec, long duration, TimeUnit unit) { + Preconditions.checkArgument(spec.refreshTimeUnit == null, "refreshAfterWrite already set"); + spec.refreshDuration = duration; + spec.refreshTimeUnit = unit; + } + } + + static class WriteDurationParser + extends DurationParser { + WriteDurationParser() { + } + + @Override + protected void parseDuration(CacheBuilderSpec spec, long duration, TimeUnit unit) { + Preconditions.checkArgument(spec.writeExpirationTimeUnit == null, "expireAfterWrite already set"); + spec.writeExpirationDuration = duration; + spec.writeExpirationTimeUnit = unit; + } + } + + static class AccessDurationParser + extends DurationParser { + AccessDurationParser() { + } + + @Override + protected void parseDuration(CacheBuilderSpec spec, long duration, TimeUnit unit) { + Preconditions.checkArgument(spec.accessExpirationTimeUnit == null, "expireAfterAccess already set"); + spec.accessExpirationDuration = duration; + spec.accessExpirationTimeUnit = unit; + } + } + + static abstract class DurationParser + implements ValueParser { + DurationParser() { + } + + protected abstract void parseDuration(CacheBuilderSpec var1, long var2, TimeUnit var4); + + @Override + public void parse(CacheBuilderSpec spec, String key, String value) { + Preconditions.checkArgument(value != null && !value.isEmpty(), "value of key %s omitted", key); + try { + TimeUnit timeUnit; + char lastChar = value.charAt(value.length() - 1); + switch (lastChar) { + case 'd': { + timeUnit = TimeUnit.DAYS; + break; + } + case 'h': { + timeUnit = TimeUnit.HOURS; + break; + } + case 'm': { + timeUnit = TimeUnit.MINUTES; + break; + } + case 's': { + timeUnit = TimeUnit.SECONDS; + break; + } + default: { + throw new IllegalArgumentException(String.format("key %s invalid format. was %s, must end with one of [dDhHmMsS]", key, value)); + } + } + long duration = Long.parseLong(value.substring(0, value.length() - 1)); + this.parseDuration(spec, duration, timeUnit); + } + catch (NumberFormatException e) { + throw new IllegalArgumentException(String.format("key %s value set to %s, must be integer", key, value)); + } + } + } + + static class RecordStatsParser + implements ValueParser { + RecordStatsParser() { + } + + @Override + public void parse(CacheBuilderSpec spec, String key, @Nullable String value) { + Preconditions.checkArgument(value == null, "recordStats does not take values"); + Preconditions.checkArgument(spec.recordStats == null, "recordStats already set"); + spec.recordStats = true; + } + } + + static class ValueStrengthParser + implements ValueParser { + private final LocalCache.Strength strength; + + public ValueStrengthParser(LocalCache.Strength strength) { + this.strength = strength; + } + + @Override + public void parse(CacheBuilderSpec spec, String key, @Nullable String value) { + Preconditions.checkArgument(value == null, "key %s does not take values", key); + Preconditions.checkArgument(spec.valueStrength == null, "%s was already set to %s", new Object[]{key, spec.valueStrength}); + spec.valueStrength = this.strength; + } + } + + static class KeyStrengthParser + implements ValueParser { + private final LocalCache.Strength strength; + + public KeyStrengthParser(LocalCache.Strength strength) { + this.strength = strength; + } + + @Override + public void parse(CacheBuilderSpec spec, String key, @Nullable String value) { + Preconditions.checkArgument(value == null, "key %s does not take values", key); + Preconditions.checkArgument(spec.keyStrength == null, "%s was already set to %s", new Object[]{key, spec.keyStrength}); + spec.keyStrength = this.strength; + } + } + + static class ConcurrencyLevelParser + extends IntegerParser { + ConcurrencyLevelParser() { + } + + @Override + protected void parseInteger(CacheBuilderSpec spec, int value) { + Preconditions.checkArgument(spec.concurrencyLevel == null, "concurrency level was already set to ", spec.concurrencyLevel); + spec.concurrencyLevel = value; + } + } + + static class MaximumWeightParser + extends LongParser { + MaximumWeightParser() { + } + + @Override + protected void parseLong(CacheBuilderSpec spec, long value) { + Preconditions.checkArgument(spec.maximumWeight == null, "maximum weight was already set to ", spec.maximumWeight); + Preconditions.checkArgument(spec.maximumSize == null, "maximum size was already set to ", spec.maximumSize); + spec.maximumWeight = value; + } + } + + static class MaximumSizeParser + extends LongParser { + MaximumSizeParser() { + } + + @Override + protected void parseLong(CacheBuilderSpec spec, long value) { + Preconditions.checkArgument(spec.maximumSize == null, "maximum size was already set to ", spec.maximumSize); + Preconditions.checkArgument(spec.maximumWeight == null, "maximum weight was already set to ", spec.maximumWeight); + spec.maximumSize = value; + } + } + + static class InitialCapacityParser + extends IntegerParser { + InitialCapacityParser() { + } + + @Override + protected void parseInteger(CacheBuilderSpec spec, int value) { + Preconditions.checkArgument(spec.initialCapacity == null, "initial capacity was already set to ", spec.initialCapacity); + spec.initialCapacity = value; + } + } + + static abstract class LongParser + implements ValueParser { + LongParser() { + } + + protected abstract void parseLong(CacheBuilderSpec var1, long var2); + + @Override + public void parse(CacheBuilderSpec spec, String key, String value) { + Preconditions.checkArgument(value != null && !value.isEmpty(), "value of key %s omitted", key); + try { + this.parseLong(spec, Long.parseLong(value)); + } + catch (NumberFormatException e) { + throw new IllegalArgumentException(String.format("key %s value set to %s, must be integer", key, value), e); + } + } + } + + static abstract class IntegerParser + implements ValueParser { + IntegerParser() { + } + + protected abstract void parseInteger(CacheBuilderSpec var1, int var2); + + @Override + public void parse(CacheBuilderSpec spec, String key, String value) { + Preconditions.checkArgument(value != null && !value.isEmpty(), "value of key %s omitted", key); + try { + this.parseInteger(spec, Integer.parseInt(value)); + } + catch (NumberFormatException e) { + throw new IllegalArgumentException(String.format("key %s value set to %s, must be integer", key, value), e); + } + } + } + + private static interface ValueParser { + public void parse(CacheBuilderSpec var1, String var2, @Nullable String var3); + } +} diff --git a/src/com/google/common/cache/CacheLoader.java b/src/com/google/common/cache/CacheLoader.java new file mode 100644 index 0000000..967e118 --- /dev/null +++ b/src/com/google/common/cache/CacheLoader.java @@ -0,0 +1,125 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.cache; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.base.Function; +import com.google.common.base.Preconditions; +import com.google.common.base.Supplier; +import com.google.common.util.concurrent.Futures; +import com.google.common.util.concurrent.ListenableFuture; +import com.google.common.util.concurrent.ListenableFutureTask; +import java.io.Serializable; +import java.util.Map; +import java.util.concurrent.Callable; +import java.util.concurrent.Executor; + +@GwtCompatible(emulated=true) +public abstract class CacheLoader { + protected CacheLoader() { + } + + public abstract V load(K var1) throws Exception; + + @GwtIncompatible(value="Futures") + public ListenableFuture reload(K key, V oldValue) throws Exception { + Preconditions.checkNotNull(key); + Preconditions.checkNotNull(oldValue); + return Futures.immediateFuture(this.load(key)); + } + + public Map loadAll(Iterable keys) throws Exception { + throw new UnsupportedLoadingOperationException(); + } + + @Beta + public static CacheLoader from(Function function) { + return new FunctionToCacheLoader(function); + } + + @Beta + public static CacheLoader from(Supplier supplier) { + return new SupplierToCacheLoader(supplier); + } + + @Beta + @GwtIncompatible(value="Executor + Futures") + public static CacheLoader asyncReloading(final CacheLoader loader, final Executor executor) { + Preconditions.checkNotNull(loader); + Preconditions.checkNotNull(executor); + return new CacheLoader(){ + + @Override + public V load(K key) throws Exception { + return loader.load(key); + } + + @Override + public ListenableFuture reload(final K key, final V oldValue) throws Exception { + ListenableFutureTask task = ListenableFutureTask.create(new Callable(){ + + @Override + public V call() throws Exception { + return loader.reload(key, oldValue).get(); + } + }); + executor.execute(task); + return task; + } + + @Override + public Map loadAll(Iterable keys) throws Exception { + return loader.loadAll(keys); + } + }; + } + + public static final class InvalidCacheLoadException + extends RuntimeException { + public InvalidCacheLoadException(String message) { + super(message); + } + } + + static final class UnsupportedLoadingOperationException + extends UnsupportedOperationException { + UnsupportedLoadingOperationException() { + } + } + + private static final class SupplierToCacheLoader + extends CacheLoader + implements Serializable { + private final Supplier computingSupplier; + private static final long serialVersionUID = 0L; + + public SupplierToCacheLoader(Supplier computingSupplier) { + this.computingSupplier = Preconditions.checkNotNull(computingSupplier); + } + + @Override + public V load(Object key) { + Preconditions.checkNotNull(key); + return this.computingSupplier.get(); + } + } + + private static final class FunctionToCacheLoader + extends CacheLoader + implements Serializable { + private final Function computingFunction; + private static final long serialVersionUID = 0L; + + public FunctionToCacheLoader(Function computingFunction) { + this.computingFunction = Preconditions.checkNotNull(computingFunction); + } + + @Override + public V load(K key) { + return this.computingFunction.apply(Preconditions.checkNotNull(key)); + } + } +} diff --git a/src/com/google/common/cache/CacheStats.java b/src/com/google/common/cache/CacheStats.java new file mode 100644 index 0000000..a2883a7 --- /dev/null +++ b/src/com/google/common/cache/CacheStats.java @@ -0,0 +1,113 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.cache; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.MoreObjects; +import com.google.common.base.Objects; +import com.google.common.base.Preconditions; +import javax.annotation.Nullable; + +@Beta +@GwtCompatible +public final class CacheStats { + private final long hitCount; + private final long missCount; + private final long loadSuccessCount; + private final long loadExceptionCount; + private final long totalLoadTime; + private final long evictionCount; + + public CacheStats(long hitCount, long missCount, long loadSuccessCount, long loadExceptionCount, long totalLoadTime, long evictionCount) { + Preconditions.checkArgument(hitCount >= 0L); + Preconditions.checkArgument(missCount >= 0L); + Preconditions.checkArgument(loadSuccessCount >= 0L); + Preconditions.checkArgument(loadExceptionCount >= 0L); + Preconditions.checkArgument(totalLoadTime >= 0L); + Preconditions.checkArgument(evictionCount >= 0L); + this.hitCount = hitCount; + this.missCount = missCount; + this.loadSuccessCount = loadSuccessCount; + this.loadExceptionCount = loadExceptionCount; + this.totalLoadTime = totalLoadTime; + this.evictionCount = evictionCount; + } + + public long requestCount() { + return this.hitCount + this.missCount; + } + + public long hitCount() { + return this.hitCount; + } + + public double hitRate() { + long requestCount = this.requestCount(); + return requestCount == 0L ? 1.0 : (double)this.hitCount / (double)requestCount; + } + + public long missCount() { + return this.missCount; + } + + public double missRate() { + long requestCount = this.requestCount(); + return requestCount == 0L ? 0.0 : (double)this.missCount / (double)requestCount; + } + + public long loadCount() { + return this.loadSuccessCount + this.loadExceptionCount; + } + + public long loadSuccessCount() { + return this.loadSuccessCount; + } + + public long loadExceptionCount() { + return this.loadExceptionCount; + } + + public double loadExceptionRate() { + long totalLoadCount = this.loadSuccessCount + this.loadExceptionCount; + return totalLoadCount == 0L ? 0.0 : (double)this.loadExceptionCount / (double)totalLoadCount; + } + + public long totalLoadTime() { + return this.totalLoadTime; + } + + public double averageLoadPenalty() { + long totalLoadCount = this.loadSuccessCount + this.loadExceptionCount; + return totalLoadCount == 0L ? 0.0 : (double)this.totalLoadTime / (double)totalLoadCount; + } + + public long evictionCount() { + return this.evictionCount; + } + + public CacheStats minus(CacheStats other) { + return new CacheStats(Math.max(0L, this.hitCount - other.hitCount), Math.max(0L, this.missCount - other.missCount), Math.max(0L, this.loadSuccessCount - other.loadSuccessCount), Math.max(0L, this.loadExceptionCount - other.loadExceptionCount), Math.max(0L, this.totalLoadTime - other.totalLoadTime), Math.max(0L, this.evictionCount - other.evictionCount)); + } + + public CacheStats plus(CacheStats other) { + return new CacheStats(this.hitCount + other.hitCount, this.missCount + other.missCount, this.loadSuccessCount + other.loadSuccessCount, this.loadExceptionCount + other.loadExceptionCount, this.totalLoadTime + other.totalLoadTime, this.evictionCount + other.evictionCount); + } + + public int hashCode() { + return Objects.hashCode(this.hitCount, this.missCount, this.loadSuccessCount, this.loadExceptionCount, this.totalLoadTime, this.evictionCount); + } + + public boolean equals(@Nullable Object object) { + if (object instanceof CacheStats) { + CacheStats other = (CacheStats)object; + return this.hitCount == other.hitCount && this.missCount == other.missCount && this.loadSuccessCount == other.loadSuccessCount && this.loadExceptionCount == other.loadExceptionCount && this.totalLoadTime == other.totalLoadTime && this.evictionCount == other.evictionCount; + } + return false; + } + + public String toString() { + return MoreObjects.toStringHelper(this).add("hitCount", this.hitCount).add("missCount", this.missCount).add("loadSuccessCount", this.loadSuccessCount).add("loadExceptionCount", this.loadExceptionCount).add("totalLoadTime", this.totalLoadTime).add("evictionCount", this.evictionCount).toString(); + } +} diff --git a/src/com/google/common/cache/ForwardingCache.java b/src/com/google/common/cache/ForwardingCache.java new file mode 100644 index 0000000..053e3af --- /dev/null +++ b/src/com/google/common/cache/ForwardingCache.java @@ -0,0 +1,103 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.cache; + +import com.google.common.annotations.Beta; +import com.google.common.base.Preconditions; +import com.google.common.cache.Cache; +import com.google.common.cache.CacheStats; +import com.google.common.collect.ForwardingObject; +import com.google.common.collect.ImmutableMap; +import java.util.Map; +import java.util.concurrent.Callable; +import java.util.concurrent.ConcurrentMap; +import java.util.concurrent.ExecutionException; +import javax.annotation.Nullable; + +@Beta +public abstract class ForwardingCache +extends ForwardingObject +implements Cache { + protected ForwardingCache() { + } + + @Override + protected abstract Cache delegate(); + + @Override + @Nullable + public V getIfPresent(Object key) { + return this.delegate().getIfPresent(key); + } + + @Override + public V get(K key, Callable valueLoader) throws ExecutionException { + return this.delegate().get(key, valueLoader); + } + + @Override + public ImmutableMap getAllPresent(Iterable keys) { + return this.delegate().getAllPresent(keys); + } + + @Override + public void put(K key, V value) { + this.delegate().put(key, value); + } + + @Override + public void putAll(Map m) { + this.delegate().putAll(m); + } + + @Override + public void invalidate(Object key) { + this.delegate().invalidate(key); + } + + @Override + public void invalidateAll(Iterable keys) { + this.delegate().invalidateAll(keys); + } + + @Override + public void invalidateAll() { + this.delegate().invalidateAll(); + } + + @Override + public long size() { + return this.delegate().size(); + } + + @Override + public CacheStats stats() { + return this.delegate().stats(); + } + + @Override + public ConcurrentMap asMap() { + return this.delegate().asMap(); + } + + @Override + public void cleanUp() { + this.delegate().cleanUp(); + } + + @Beta + public static abstract class SimpleForwardingCache + extends ForwardingCache { + private final Cache delegate; + + protected SimpleForwardingCache(Cache delegate) { + this.delegate = Preconditions.checkNotNull(delegate); + } + + @Override + protected final Cache delegate() { + return this.delegate; + } + } +} diff --git a/src/com/google/common/cache/ForwardingLoadingCache.java b/src/com/google/common/cache/ForwardingLoadingCache.java new file mode 100644 index 0000000..b9cca2e --- /dev/null +++ b/src/com/google/common/cache/ForwardingLoadingCache.java @@ -0,0 +1,62 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.cache; + +import com.google.common.annotations.Beta; +import com.google.common.base.Preconditions; +import com.google.common.cache.ForwardingCache; +import com.google.common.cache.LoadingCache; +import com.google.common.collect.ImmutableMap; +import java.util.concurrent.ExecutionException; + +@Beta +public abstract class ForwardingLoadingCache +extends ForwardingCache +implements LoadingCache { + protected ForwardingLoadingCache() { + } + + @Override + protected abstract LoadingCache delegate(); + + @Override + public V get(K key) throws ExecutionException { + return this.delegate().get(key); + } + + @Override + public V getUnchecked(K key) { + return this.delegate().getUnchecked(key); + } + + @Override + public ImmutableMap getAll(Iterable keys) throws ExecutionException { + return this.delegate().getAll(keys); + } + + @Override + public V apply(K key) { + return this.delegate().apply(key); + } + + @Override + public void refresh(K key) { + this.delegate().refresh(key); + } + + @Beta + public static abstract class SimpleForwardingLoadingCache + extends ForwardingLoadingCache { + private final LoadingCache delegate; + + protected SimpleForwardingLoadingCache(LoadingCache delegate) { + this.delegate = Preconditions.checkNotNull(delegate); + } + + @Override + protected final LoadingCache delegate() { + return this.delegate; + } + } +} diff --git a/src/com/google/common/cache/LoadingCache.java b/src/com/google/common/cache/LoadingCache.java new file mode 100644 index 0000000..285c63a --- /dev/null +++ b/src/com/google/common/cache/LoadingCache.java @@ -0,0 +1,33 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.cache; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Function; +import com.google.common.cache.Cache; +import com.google.common.collect.ImmutableMap; +import java.util.concurrent.ConcurrentMap; +import java.util.concurrent.ExecutionException; + +@Beta +@GwtCompatible +public interface LoadingCache +extends Cache, +Function { + public V get(K var1) throws ExecutionException; + + public V getUnchecked(K var1); + + public ImmutableMap getAll(Iterable var1) throws ExecutionException; + + @Override + @Deprecated + public V apply(K var1); + + public void refresh(K var1); + + @Override + public ConcurrentMap asMap(); +} diff --git a/src/com/google/common/cache/LocalCache.java b/src/com/google/common/cache/LocalCache.java new file mode 100644 index 0000000..c2a6ce6 --- /dev/null +++ b/src/com/google/common/cache/LocalCache.java @@ -0,0 +1,3939 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.cache; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.Equivalence; +import com.google.common.base.Function; +import com.google.common.base.Preconditions; +import com.google.common.base.Stopwatch; +import com.google.common.base.Ticker; +import com.google.common.cache.AbstractCache; +import com.google.common.cache.Cache; +import com.google.common.cache.CacheBuilder; +import com.google.common.cache.CacheLoader; +import com.google.common.cache.CacheStats; +import com.google.common.cache.ForwardingCache; +import com.google.common.cache.LoadingCache; +import com.google.common.cache.RemovalCause; +import com.google.common.cache.RemovalListener; +import com.google.common.cache.RemovalNotification; +import com.google.common.cache.Weigher; +import com.google.common.collect.AbstractSequentialIterator; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Maps; +import com.google.common.collect.Sets; +import com.google.common.primitives.Ints; +import com.google.common.util.concurrent.ExecutionError; +import com.google.common.util.concurrent.Futures; +import com.google.common.util.concurrent.ListenableFuture; +import com.google.common.util.concurrent.MoreExecutors; +import com.google.common.util.concurrent.SettableFuture; +import com.google.common.util.concurrent.UncheckedExecutionException; +import com.google.common.util.concurrent.Uninterruptibles; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.Serializable; +import java.lang.ref.Reference; +import java.lang.ref.ReferenceQueue; +import java.lang.ref.SoftReference; +import java.lang.ref.WeakReference; +import java.util.AbstractCollection; +import java.util.AbstractMap; +import java.util.AbstractQueue; +import java.util.AbstractSet; +import java.util.Collection; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.LinkedHashSet; +import java.util.Map; +import java.util.NoSuchElementException; +import java.util.Queue; +import java.util.Set; +import java.util.concurrent.Callable; +import java.util.concurrent.ConcurrentLinkedQueue; +import java.util.concurrent.ConcurrentMap; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.atomic.AtomicReferenceArray; +import java.util.concurrent.locks.ReentrantLock; +import java.util.logging.Level; +import java.util.logging.Logger; +import javax.annotation.Nullable; +import javax.annotation.concurrent.GuardedBy; + +@GwtCompatible(emulated=true) +class LocalCache +extends AbstractMap +implements ConcurrentMap { + static final int MAXIMUM_CAPACITY = 0x40000000; + static final int MAX_SEGMENTS = 65536; + static final int CONTAINS_VALUE_RETRIES = 3; + static final int DRAIN_THRESHOLD = 63; + static final int DRAIN_MAX = 16; + static final Logger logger = Logger.getLogger(LocalCache.class.getName()); + final int segmentMask; + final int segmentShift; + final Segment[] segments; + final int concurrencyLevel; + final Equivalence keyEquivalence; + final Equivalence valueEquivalence; + final Strength keyStrength; + final Strength valueStrength; + final long maxWeight; + final Weigher weigher; + final long expireAfterAccessNanos; + final long expireAfterWriteNanos; + final long refreshNanos; + final Queue> removalNotificationQueue; + final RemovalListener removalListener; + final Ticker ticker; + final EntryFactory entryFactory; + final AbstractCache.StatsCounter globalStatsCounter; + @Nullable + final CacheLoader defaultLoader; + static final ValueReference UNSET = new ValueReference(){ + + @Override + public Object get() { + return null; + } + + @Override + public int getWeight() { + return 0; + } + + @Override + public ReferenceEntry getEntry() { + return null; + } + + @Override + public ValueReference copyFor(ReferenceQueue queue, @Nullable Object value, ReferenceEntry entry) { + return this; + } + + @Override + public boolean isLoading() { + return false; + } + + @Override + public boolean isActive() { + return false; + } + + @Override + public Object waitForValue() { + return null; + } + + @Override + public void notifyNewValue(Object newValue) { + } + }; + static final Queue DISCARDING_QUEUE = new AbstractQueue(){ + + @Override + public boolean offer(Object o) { + return true; + } + + @Override + public Object peek() { + return null; + } + + @Override + public Object poll() { + return null; + } + + @Override + public int size() { + return 0; + } + + @Override + public Iterator iterator() { + return ImmutableSet.of().iterator(); + } + }; + Set keySet; + Collection values; + Set> entrySet; + + LocalCache(CacheBuilder builder, @Nullable CacheLoader loader) { + int segmentSize; + int segmentCount; + this.concurrencyLevel = Math.min(builder.getConcurrencyLevel(), 65536); + this.keyStrength = builder.getKeyStrength(); + this.valueStrength = builder.getValueStrength(); + this.keyEquivalence = builder.getKeyEquivalence(); + this.valueEquivalence = builder.getValueEquivalence(); + this.maxWeight = builder.getMaximumWeight(); + this.weigher = builder.getWeigher(); + this.expireAfterAccessNanos = builder.getExpireAfterAccessNanos(); + this.expireAfterWriteNanos = builder.getExpireAfterWriteNanos(); + this.refreshNanos = builder.getRefreshNanos(); + this.removalListener = builder.getRemovalListener(); + this.removalNotificationQueue = this.removalListener == CacheBuilder.NullListener.INSTANCE ? LocalCache.discardingQueue() : new ConcurrentLinkedQueue(); + this.ticker = builder.getTicker(this.recordsTime()); + this.entryFactory = EntryFactory.getFactory(this.keyStrength, this.usesAccessEntries(), this.usesWriteEntries()); + this.globalStatsCounter = builder.getStatsCounterSupplier().get(); + this.defaultLoader = loader; + int initialCapacity = Math.min(builder.getInitialCapacity(), 0x40000000); + if (this.evictsBySize() && !this.customWeigher()) { + initialCapacity = Math.min(initialCapacity, (int)this.maxWeight); + } + int segmentShift = 0; + for (segmentCount = 1; !(segmentCount >= this.concurrencyLevel || this.evictsBySize() && (long)(segmentCount * 20) > this.maxWeight); segmentCount <<= 1) { + ++segmentShift; + } + this.segmentShift = 32 - segmentShift; + this.segmentMask = segmentCount - 1; + this.segments = this.newSegmentArray(segmentCount); + int segmentCapacity = initialCapacity / segmentCount; + if (segmentCapacity * segmentCount < initialCapacity) { + ++segmentCapacity; + } + for (segmentSize = 1; segmentSize < segmentCapacity; segmentSize <<= 1) { + } + if (this.evictsBySize()) { + long maxSegmentWeight = this.maxWeight / (long)segmentCount + 1L; + long remainder = this.maxWeight % (long)segmentCount; + for (int i = 0; i < this.segments.length; ++i) { + if ((long)i == remainder) { + --maxSegmentWeight; + } + this.segments[i] = this.createSegment(segmentSize, maxSegmentWeight, builder.getStatsCounterSupplier().get()); + } + } else { + for (int i = 0; i < this.segments.length; ++i) { + this.segments[i] = this.createSegment(segmentSize, -1L, builder.getStatsCounterSupplier().get()); + } + } + } + + boolean evictsBySize() { + return this.maxWeight >= 0L; + } + + boolean customWeigher() { + return this.weigher != CacheBuilder.OneWeigher.INSTANCE; + } + + boolean expires() { + return this.expiresAfterWrite() || this.expiresAfterAccess(); + } + + boolean expiresAfterWrite() { + return this.expireAfterWriteNanos > 0L; + } + + boolean expiresAfterAccess() { + return this.expireAfterAccessNanos > 0L; + } + + boolean refreshes() { + return this.refreshNanos > 0L; + } + + boolean usesAccessQueue() { + return this.expiresAfterAccess() || this.evictsBySize(); + } + + boolean usesWriteQueue() { + return this.expiresAfterWrite(); + } + + boolean recordsWrite() { + return this.expiresAfterWrite() || this.refreshes(); + } + + boolean recordsAccess() { + return this.expiresAfterAccess(); + } + + boolean recordsTime() { + return this.recordsWrite() || this.recordsAccess(); + } + + boolean usesWriteEntries() { + return this.usesWriteQueue() || this.recordsWrite(); + } + + boolean usesAccessEntries() { + return this.usesAccessQueue() || this.recordsAccess(); + } + + boolean usesKeyReferences() { + return this.keyStrength != Strength.STRONG; + } + + boolean usesValueReferences() { + return this.valueStrength != Strength.STRONG; + } + + static ValueReference unset() { + return UNSET; + } + + static ReferenceEntry nullEntry() { + return NullEntry.INSTANCE; + } + + static Queue discardingQueue() { + return DISCARDING_QUEUE; + } + + static int rehash(int h) { + h += h << 15 ^ 0xFFFFCD7D; + h ^= h >>> 10; + h += h << 3; + h ^= h >>> 6; + h += (h << 2) + (h << 14); + return h ^ h >>> 16; + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @VisibleForTesting + ReferenceEntry newEntry(K key, int hash, @Nullable ReferenceEntry next) { + Segment segment = this.segmentFor(hash); + segment.lock(); + try { + ReferenceEntry referenceEntry = segment.newEntry(key, hash, next); + return referenceEntry; + } + finally { + segment.unlock(); + } + } + + @VisibleForTesting + ReferenceEntry copyEntry(ReferenceEntry original, ReferenceEntry newNext) { + int hash = original.getHash(); + return this.segmentFor(hash).copyEntry(original, newNext); + } + + @VisibleForTesting + ValueReference newValueReference(ReferenceEntry entry, V value, int weight) { + int hash = entry.getHash(); + return this.valueStrength.referenceValue(this.segmentFor(hash), entry, Preconditions.checkNotNull(value), weight); + } + + int hash(@Nullable Object key) { + int h = this.keyEquivalence.hash(key); + return LocalCache.rehash(h); + } + + void reclaimValue(ValueReference valueReference) { + ReferenceEntry entry = valueReference.getEntry(); + int hash = entry.getHash(); + this.segmentFor(hash).reclaimValue(entry.getKey(), hash, valueReference); + } + + void reclaimKey(ReferenceEntry entry) { + int hash = entry.getHash(); + this.segmentFor(hash).reclaimKey(entry, hash); + } + + @VisibleForTesting + boolean isLive(ReferenceEntry entry, long now) { + return this.segmentFor(entry.getHash()).getLiveValue(entry, now) != null; + } + + Segment segmentFor(int hash) { + return this.segments[hash >>> this.segmentShift & this.segmentMask]; + } + + Segment createSegment(int initialCapacity, long maxSegmentWeight, AbstractCache.StatsCounter statsCounter) { + return new Segment(this, initialCapacity, maxSegmentWeight, statsCounter); + } + + @Nullable + V getLiveValue(ReferenceEntry entry, long now) { + if (entry.getKey() == null) { + return null; + } + V value = entry.getValueReference().get(); + if (value == null) { + return null; + } + if (this.isExpired(entry, now)) { + return null; + } + return value; + } + + boolean isExpired(ReferenceEntry entry, long now) { + Preconditions.checkNotNull(entry); + if (this.expiresAfterAccess() && now - entry.getAccessTime() >= this.expireAfterAccessNanos) { + return true; + } + return this.expiresAfterWrite() && now - entry.getWriteTime() >= this.expireAfterWriteNanos; + } + + static void connectAccessOrder(ReferenceEntry previous, ReferenceEntry next) { + previous.setNextInAccessQueue(next); + next.setPreviousInAccessQueue(previous); + } + + static void nullifyAccessOrder(ReferenceEntry nulled) { + ReferenceEntry nullEntry = LocalCache.nullEntry(); + nulled.setNextInAccessQueue(nullEntry); + nulled.setPreviousInAccessQueue(nullEntry); + } + + static void connectWriteOrder(ReferenceEntry previous, ReferenceEntry next) { + previous.setNextInWriteQueue(next); + next.setPreviousInWriteQueue(previous); + } + + static void nullifyWriteOrder(ReferenceEntry nulled) { + ReferenceEntry nullEntry = LocalCache.nullEntry(); + nulled.setNextInWriteQueue(nullEntry); + nulled.setPreviousInWriteQueue(nullEntry); + } + + void processPendingNotifications() { + RemovalNotification notification; + while ((notification = this.removalNotificationQueue.poll()) != null) { + try { + this.removalListener.onRemoval(notification); + } + catch (Throwable e) { + logger.log(Level.WARNING, "Exception thrown by removal listener", e); + } + } + } + + final Segment[] newSegmentArray(int ssize) { + return new Segment[ssize]; + } + + public void cleanUp() { + for (Segment segment : this.segments) { + segment.cleanUp(); + } + } + + @Override + public boolean isEmpty() { + int i; + long sum = 0L; + Segment[] segments = this.segments; + for (i = 0; i < segments.length; ++i) { + if (segments[i].count != 0) { + return false; + } + sum += (long)segments[i].modCount; + } + if (sum != 0L) { + for (i = 0; i < segments.length; ++i) { + if (segments[i].count != 0) { + return false; + } + sum -= (long)segments[i].modCount; + } + if (sum != 0L) { + return false; + } + } + return true; + } + + long longSize() { + Segment[] segments = this.segments; + long sum = 0L; + for (int i = 0; i < segments.length; ++i) { + sum += (long)segments[i].count; + } + return sum; + } + + @Override + public int size() { + return Ints.saturatedCast(this.longSize()); + } + + @Override + @Nullable + public V get(@Nullable Object key) { + if (key == null) { + return null; + } + int hash = this.hash(key); + return this.segmentFor(hash).get(key, hash); + } + + @Nullable + public V getIfPresent(Object key) { + int hash = this.hash(Preconditions.checkNotNull(key)); + V value = this.segmentFor(hash).get(key, hash); + if (value == null) { + this.globalStatsCounter.recordMisses(1); + } else { + this.globalStatsCounter.recordHits(1); + } + return value; + } + + V get(K key, CacheLoader loader) throws ExecutionException { + int hash = this.hash(Preconditions.checkNotNull(key)); + return this.segmentFor(hash).get((K)key, hash, loader); + } + + V getOrLoad(K key) throws ExecutionException { + return this.get(key, this.defaultLoader); + } + + ImmutableMap getAllPresent(Iterable keys) { + int hits = 0; + int misses = 0; + LinkedHashMap result = Maps.newLinkedHashMap(); + for (Object key : keys) { + V value = this.get(key); + if (value == null) { + ++misses; + continue; + } + Object castKey = key; + result.put(castKey, value); + ++hits; + } + this.globalStatsCounter.recordHits(hits); + this.globalStatsCounter.recordMisses(misses); + return ImmutableMap.copyOf(result); + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + ImmutableMap getAll(Iterable keys) throws ExecutionException { + int hits = 0; + int misses = 0; + LinkedHashMap result = Maps.newLinkedHashMap(); + LinkedHashSet keysToLoad = Sets.newLinkedHashSet(); + for (K key : keys) { + V value = this.get(key); + if (result.containsKey(key)) continue; + result.put(key, value); + if (value == null) { + ++misses; + keysToLoad.add(key); + continue; + } + ++hits; + } + try { + if (!keysToLoad.isEmpty()) { + try { + Map newEntries = this.loadAll(keysToLoad, this.defaultLoader); + for (Object key : keysToLoad) { + V value = newEntries.get(key); + if (value == null) { + String string = String.valueOf(String.valueOf(key)); + throw new CacheLoader.InvalidCacheLoadException(new StringBuilder(37 + string.length()).append("loadAll failed to return a value for ").append(string).toString()); + } + result.put(key, value); + } + } + catch (CacheLoader.UnsupportedLoadingOperationException e) { + for (Object key : keysToLoad) { + --misses; + result.put(key, this.get(key, this.defaultLoader)); + } + } + } + ImmutableMap immutableMap = ImmutableMap.copyOf(result); + return immutableMap; + } + finally { + this.globalStatsCounter.recordHits(hits); + this.globalStatsCounter.recordMisses(misses); + } + } + + @Nullable + Map loadAll(Set keys, CacheLoader loader) throws ExecutionException { + Map result; + Preconditions.checkNotNull(loader); + Preconditions.checkNotNull(keys); + Stopwatch stopwatch = Stopwatch.createStarted(); + boolean success = false; + try { + Map map; + result = map = loader.loadAll(keys); + success = true; + } + catch (CacheLoader.UnsupportedLoadingOperationException e) { + success = true; + throw e; + } + catch (InterruptedException e) { + Thread.currentThread().interrupt(); + throw new ExecutionException(e); + } + catch (RuntimeException e) { + throw new UncheckedExecutionException(e); + } + catch (Exception e) { + throw new ExecutionException(e); + } + catch (Error e) { + throw new ExecutionError(e); + } + finally { + if (!success) { + this.globalStatsCounter.recordLoadException(stopwatch.elapsed(TimeUnit.NANOSECONDS)); + } + } + if (result == null) { + this.globalStatsCounter.recordLoadException(stopwatch.elapsed(TimeUnit.NANOSECONDS)); + String e = String.valueOf(String.valueOf(loader)); + throw new CacheLoader.InvalidCacheLoadException(new StringBuilder(31 + e.length()).append(e).append(" returned null map from loadAll").toString()); + } + stopwatch.stop(); + boolean nullsPresent = false; + for (Map.Entry entry : result.entrySet()) { + K key = entry.getKey(); + V value = entry.getValue(); + if (key == null || value == null) { + nullsPresent = true; + continue; + } + this.put(key, value); + } + if (nullsPresent) { + this.globalStatsCounter.recordLoadException(stopwatch.elapsed(TimeUnit.NANOSECONDS)); + String string = String.valueOf(String.valueOf(loader)); + throw new CacheLoader.InvalidCacheLoadException(new StringBuilder(42 + string.length()).append(string).append(" returned null keys or values from loadAll").toString()); + } + this.globalStatsCounter.recordLoadSuccess(stopwatch.elapsed(TimeUnit.NANOSECONDS)); + return result; + } + + ReferenceEntry getEntry(@Nullable Object key) { + if (key == null) { + return null; + } + int hash = this.hash(key); + return this.segmentFor(hash).getEntry(key, hash); + } + + void refresh(K key) { + int hash = this.hash(Preconditions.checkNotNull(key)); + this.segmentFor(hash).refresh((K)key, hash, this.defaultLoader, false); + } + + @Override + public boolean containsKey(@Nullable Object key) { + if (key == null) { + return false; + } + int hash = this.hash(key); + return this.segmentFor(hash).containsKey(key, hash); + } + + @Override + public boolean containsValue(@Nullable Object value) { + if (value == null) { + return false; + } + long now = this.ticker.read(); + Segment[] segments = this.segments; + long last = -1L; + for (int i = 0; i < 3; ++i) { + long sum = 0L; + for (Segment segment : segments) { + int c = segment.count; + AtomicReferenceArray table = segment.table; + for (int j = 0; j < table.length(); ++j) { + for (ReferenceEntry e = table.get(j); e != null; e = e.getNext()) { + V v = segment.getLiveValue(e, now); + if (v == null || !this.valueEquivalence.equivalent(value, v)) continue; + return true; + } + } + sum += (long)segment.modCount; + } + if (sum == last) break; + last = sum; + } + return false; + } + + @Override + public V put(K key, V value) { + Preconditions.checkNotNull(key); + Preconditions.checkNotNull(value); + int hash = this.hash(key); + return this.segmentFor(hash).put(key, hash, value, false); + } + + @Override + public V putIfAbsent(K key, V value) { + Preconditions.checkNotNull(key); + Preconditions.checkNotNull(value); + int hash = this.hash(key); + return this.segmentFor(hash).put(key, hash, value, true); + } + + @Override + public void putAll(Map m) { + for (Map.Entry e : m.entrySet()) { + this.put(e.getKey(), e.getValue()); + } + } + + @Override + public V remove(@Nullable Object key) { + if (key == null) { + return null; + } + int hash = this.hash(key); + return this.segmentFor(hash).remove(key, hash); + } + + @Override + public boolean remove(@Nullable Object key, @Nullable Object value) { + if (key == null || value == null) { + return false; + } + int hash = this.hash(key); + return this.segmentFor(hash).remove(key, hash, value); + } + + @Override + public boolean replace(K key, @Nullable V oldValue, V newValue) { + Preconditions.checkNotNull(key); + Preconditions.checkNotNull(newValue); + if (oldValue == null) { + return false; + } + int hash = this.hash(key); + return this.segmentFor(hash).replace(key, hash, oldValue, newValue); + } + + @Override + public V replace(K key, V value) { + Preconditions.checkNotNull(key); + Preconditions.checkNotNull(value); + int hash = this.hash(key); + return this.segmentFor(hash).replace(key, hash, value); + } + + @Override + public void clear() { + for (Segment segment : this.segments) { + segment.clear(); + } + } + + void invalidateAll(Iterable keys) { + for (Object key : keys) { + this.remove(key); + } + } + + @Override + public Set keySet() { + KeySet ks = this.keySet; + return ks != null ? ks : (this.keySet = new KeySet(this)); + } + + @Override + public Collection values() { + Values vs = this.values; + return vs != null ? vs : (this.values = new Values(this)); + } + + @Override + @GwtIncompatible(value="Not supported.") + public Set> entrySet() { + EntrySet es = this.entrySet; + return es != null ? es : (this.entrySet = new EntrySet(this)); + } + + static class LocalLoadingCache + extends LocalManualCache + implements LoadingCache { + private static final long serialVersionUID = 1L; + + LocalLoadingCache(CacheBuilder builder, CacheLoader loader) { + super(new LocalCache(builder, Preconditions.checkNotNull(loader))); + } + + @Override + public V get(K key) throws ExecutionException { + return this.localCache.getOrLoad(key); + } + + @Override + public V getUnchecked(K key) { + try { + return this.get(key); + } + catch (ExecutionException e) { + throw new UncheckedExecutionException(e.getCause()); + } + } + + @Override + public ImmutableMap getAll(Iterable keys) throws ExecutionException { + return this.localCache.getAll(keys); + } + + @Override + public void refresh(K key) { + this.localCache.refresh(key); + } + + @Override + public final V apply(K key) { + return this.getUnchecked(key); + } + + @Override + Object writeReplace() { + return new LoadingSerializationProxy(this.localCache); + } + } + + static class LocalManualCache + implements Cache, + Serializable { + final LocalCache localCache; + private static final long serialVersionUID = 1L; + + LocalManualCache(CacheBuilder builder) { + this(new LocalCache(builder, null)); + } + + private LocalManualCache(LocalCache localCache) { + this.localCache = localCache; + } + + @Override + @Nullable + public V getIfPresent(Object key) { + return this.localCache.getIfPresent(key); + } + + @Override + public V get(K key, final Callable valueLoader) throws ExecutionException { + Preconditions.checkNotNull(valueLoader); + return this.localCache.get(key, new CacheLoader(){ + + @Override + public V load(Object key) throws Exception { + return valueLoader.call(); + } + }); + } + + @Override + public ImmutableMap getAllPresent(Iterable keys) { + return this.localCache.getAllPresent(keys); + } + + @Override + public void put(K key, V value) { + this.localCache.put(key, value); + } + + @Override + public void putAll(Map m) { + this.localCache.putAll(m); + } + + @Override + public void invalidate(Object key) { + Preconditions.checkNotNull(key); + this.localCache.remove(key); + } + + @Override + public void invalidateAll(Iterable keys) { + this.localCache.invalidateAll(keys); + } + + @Override + public void invalidateAll() { + this.localCache.clear(); + } + + @Override + public long size() { + return this.localCache.longSize(); + } + + @Override + public ConcurrentMap asMap() { + return this.localCache; + } + + @Override + public CacheStats stats() { + AbstractCache.SimpleStatsCounter aggregator = new AbstractCache.SimpleStatsCounter(); + aggregator.incrementBy(this.localCache.globalStatsCounter); + for (Segment segment : this.localCache.segments) { + aggregator.incrementBy(segment.statsCounter); + } + return aggregator.snapshot(); + } + + @Override + public void cleanUp() { + this.localCache.cleanUp(); + } + + Object writeReplace() { + return new ManualSerializationProxy(this.localCache); + } + } + + static final class LoadingSerializationProxy + extends ManualSerializationProxy + implements LoadingCache, + Serializable { + private static final long serialVersionUID = 1L; + transient LoadingCache autoDelegate; + + LoadingSerializationProxy(LocalCache cache) { + super(cache); + } + + private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException { + in.defaultReadObject(); + CacheBuilder builder = this.recreateCacheBuilder(); + this.autoDelegate = builder.build(this.loader); + } + + @Override + public V get(K key) throws ExecutionException { + return this.autoDelegate.get(key); + } + + @Override + public V getUnchecked(K key) { + return this.autoDelegate.getUnchecked(key); + } + + @Override + public ImmutableMap getAll(Iterable keys) throws ExecutionException { + return this.autoDelegate.getAll(keys); + } + + @Override + public final V apply(K key) { + return this.autoDelegate.apply(key); + } + + @Override + public void refresh(K key) { + this.autoDelegate.refresh(key); + } + + private Object readResolve() { + return this.autoDelegate; + } + } + + static class ManualSerializationProxy + extends ForwardingCache + implements Serializable { + private static final long serialVersionUID = 1L; + final Strength keyStrength; + final Strength valueStrength; + final Equivalence keyEquivalence; + final Equivalence valueEquivalence; + final long expireAfterWriteNanos; + final long expireAfterAccessNanos; + final long maxWeight; + final Weigher weigher; + final int concurrencyLevel; + final RemovalListener removalListener; + final Ticker ticker; + final CacheLoader loader; + transient Cache delegate; + + ManualSerializationProxy(LocalCache cache) { + this(cache.keyStrength, cache.valueStrength, cache.keyEquivalence, cache.valueEquivalence, cache.expireAfterWriteNanos, cache.expireAfterAccessNanos, cache.maxWeight, cache.weigher, cache.concurrencyLevel, cache.removalListener, cache.ticker, cache.defaultLoader); + } + + private ManualSerializationProxy(Strength keyStrength, Strength valueStrength, Equivalence keyEquivalence, Equivalence valueEquivalence, long expireAfterWriteNanos, long expireAfterAccessNanos, long maxWeight, Weigher weigher, int concurrencyLevel, RemovalListener removalListener, Ticker ticker, CacheLoader loader) { + this.keyStrength = keyStrength; + this.valueStrength = valueStrength; + this.keyEquivalence = keyEquivalence; + this.valueEquivalence = valueEquivalence; + this.expireAfterWriteNanos = expireAfterWriteNanos; + this.expireAfterAccessNanos = expireAfterAccessNanos; + this.maxWeight = maxWeight; + this.weigher = weigher; + this.concurrencyLevel = concurrencyLevel; + this.removalListener = removalListener; + this.ticker = ticker == Ticker.systemTicker() || ticker == CacheBuilder.NULL_TICKER ? null : ticker; + this.loader = loader; + } + + CacheBuilder recreateCacheBuilder() { + CacheBuilder builder = CacheBuilder.newBuilder().setKeyStrength(this.keyStrength).setValueStrength(this.valueStrength).keyEquivalence(this.keyEquivalence).valueEquivalence(this.valueEquivalence).concurrencyLevel(this.concurrencyLevel).removalListener(this.removalListener); + builder.strictParsing = false; + if (this.expireAfterWriteNanos > 0L) { + builder.expireAfterWrite(this.expireAfterWriteNanos, TimeUnit.NANOSECONDS); + } + if (this.expireAfterAccessNanos > 0L) { + builder.expireAfterAccess(this.expireAfterAccessNanos, TimeUnit.NANOSECONDS); + } + if (this.weigher != CacheBuilder.OneWeigher.INSTANCE) { + builder.weigher(this.weigher); + if (this.maxWeight != -1L) { + builder.maximumWeight(this.maxWeight); + } + } else if (this.maxWeight != -1L) { + builder.maximumSize(this.maxWeight); + } + if (this.ticker != null) { + builder.ticker(this.ticker); + } + return builder; + } + + private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException { + in.defaultReadObject(); + CacheBuilder builder = this.recreateCacheBuilder(); + this.delegate = builder.build(); + } + + private Object readResolve() { + return this.delegate; + } + + @Override + protected Cache delegate() { + return this.delegate; + } + } + + final class EntrySet + extends AbstractCacheSet> { + EntrySet(ConcurrentMap map) { + super(map); + } + + @Override + public Iterator> iterator() { + return new EntryIterator(); + } + + @Override + public boolean contains(Object o) { + if (!(o instanceof Map.Entry)) { + return false; + } + Map.Entry e = (Map.Entry)o; + Object key = e.getKey(); + if (key == null) { + return false; + } + Object v = LocalCache.this.get(key); + return v != null && LocalCache.this.valueEquivalence.equivalent(e.getValue(), v); + } + + @Override + public boolean remove(Object o) { + if (!(o instanceof Map.Entry)) { + return false; + } + Map.Entry e = (Map.Entry)o; + Object key = e.getKey(); + return key != null && LocalCache.this.remove(key, e.getValue()); + } + } + + final class Values + extends AbstractCollection { + private final ConcurrentMap map; + + Values(ConcurrentMap map) { + this.map = map; + } + + @Override + public int size() { + return this.map.size(); + } + + @Override + public boolean isEmpty() { + return this.map.isEmpty(); + } + + @Override + public void clear() { + this.map.clear(); + } + + @Override + public Iterator iterator() { + return new ValueIterator(); + } + + @Override + public boolean contains(Object o) { + return this.map.containsValue(o); + } + } + + final class KeySet + extends AbstractCacheSet { + KeySet(ConcurrentMap map) { + super(map); + } + + @Override + public Iterator iterator() { + return new KeyIterator(); + } + + @Override + public boolean contains(Object o) { + return this.map.containsKey(o); + } + + @Override + public boolean remove(Object o) { + return this.map.remove(o) != null; + } + } + + abstract class AbstractCacheSet + extends AbstractSet { + final ConcurrentMap map; + + AbstractCacheSet(ConcurrentMap map) { + this.map = map; + } + + @Override + public int size() { + return this.map.size(); + } + + @Override + public boolean isEmpty() { + return this.map.isEmpty(); + } + + @Override + public void clear() { + this.map.clear(); + } + } + + final class EntryIterator + extends HashIterator> { + EntryIterator() { + } + + @Override + public Map.Entry next() { + return this.nextEntry(); + } + } + + final class WriteThroughEntry + implements Map.Entry { + final K key; + V value; + + WriteThroughEntry(K key, V value) { + this.key = key; + this.value = value; + } + + @Override + public K getKey() { + return this.key; + } + + @Override + public V getValue() { + return this.value; + } + + @Override + public boolean equals(@Nullable Object object) { + if (object instanceof Map.Entry) { + Map.Entry that = (Map.Entry)object; + return this.key.equals(that.getKey()) && this.value.equals(that.getValue()); + } + return false; + } + + @Override + public int hashCode() { + return this.key.hashCode() ^ this.value.hashCode(); + } + + @Override + public V setValue(V newValue) { + throw new UnsupportedOperationException(); + } + + public String toString() { + String string = String.valueOf(String.valueOf(this.getKey())); + String string2 = String.valueOf(String.valueOf(this.getValue())); + return new StringBuilder(1 + string.length() + string2.length()).append(string).append("=").append(string2).toString(); + } + } + + final class ValueIterator + extends HashIterator { + ValueIterator() { + } + + @Override + public V next() { + return this.nextEntry().getValue(); + } + } + + final class KeyIterator + extends HashIterator { + KeyIterator() { + } + + @Override + public K next() { + return this.nextEntry().getKey(); + } + } + + abstract class HashIterator + implements Iterator { + int nextSegmentIndex; + int nextTableIndex; + Segment currentSegment; + AtomicReferenceArray> currentTable; + ReferenceEntry nextEntry; + WriteThroughEntry nextExternal; + WriteThroughEntry lastReturned; + + HashIterator() { + this.nextSegmentIndex = LocalCache.this.segments.length - 1; + this.nextTableIndex = -1; + this.advance(); + } + + @Override + public abstract T next(); + + final void advance() { + this.nextExternal = null; + if (this.nextInChain()) { + return; + } + if (this.nextInTable()) { + return; + } + while (this.nextSegmentIndex >= 0) { + this.currentSegment = LocalCache.this.segments[this.nextSegmentIndex--]; + if (this.currentSegment.count == 0) continue; + this.currentTable = this.currentSegment.table; + this.nextTableIndex = this.currentTable.length() - 1; + if (!this.nextInTable()) continue; + return; + } + } + + boolean nextInChain() { + if (this.nextEntry != null) { + this.nextEntry = this.nextEntry.getNext(); + while (this.nextEntry != null) { + if (this.advanceTo(this.nextEntry)) { + return true; + } + this.nextEntry = this.nextEntry.getNext(); + } + } + return false; + } + + boolean nextInTable() { + while (this.nextTableIndex >= 0) { + if ((this.nextEntry = this.currentTable.get(this.nextTableIndex--)) == null || !this.advanceTo(this.nextEntry) && !this.nextInChain()) continue; + return true; + } + return false; + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + boolean advanceTo(ReferenceEntry entry) { + try { + long now = LocalCache.this.ticker.read(); + Object key = entry.getKey(); + Object value = LocalCache.this.getLiveValue(entry, now); + if (value != null) { + this.nextExternal = new WriteThroughEntry(key, value); + boolean bl = true; + return bl; + } + boolean bl = false; + return bl; + } + finally { + this.currentSegment.postReadCleanup(); + } + } + + @Override + public boolean hasNext() { + return this.nextExternal != null; + } + + WriteThroughEntry nextEntry() { + if (this.nextExternal == null) { + throw new NoSuchElementException(); + } + this.lastReturned = this.nextExternal; + this.advance(); + return this.lastReturned; + } + + @Override + public void remove() { + Preconditions.checkState(this.lastReturned != null); + LocalCache.this.remove(this.lastReturned.getKey()); + this.lastReturned = null; + } + } + + static final class AccessQueue + extends AbstractQueue> { + final ReferenceEntry head = new AbstractReferenceEntry(){ + ReferenceEntry nextAccess = this; + ReferenceEntry previousAccess = this; + + @Override + public long getAccessTime() { + return Long.MAX_VALUE; + } + + @Override + public void setAccessTime(long time) { + } + + @Override + public ReferenceEntry getNextInAccessQueue() { + return this.nextAccess; + } + + @Override + public void setNextInAccessQueue(ReferenceEntry next) { + this.nextAccess = next; + } + + @Override + public ReferenceEntry getPreviousInAccessQueue() { + return this.previousAccess; + } + + @Override + public void setPreviousInAccessQueue(ReferenceEntry previous) { + this.previousAccess = previous; + } + }; + + AccessQueue() { + } + + @Override + public boolean offer(ReferenceEntry entry) { + LocalCache.connectAccessOrder(entry.getPreviousInAccessQueue(), entry.getNextInAccessQueue()); + LocalCache.connectAccessOrder(this.head.getPreviousInAccessQueue(), entry); + LocalCache.connectAccessOrder(entry, this.head); + return true; + } + + @Override + public ReferenceEntry peek() { + ReferenceEntry next = this.head.getNextInAccessQueue(); + return next == this.head ? null : next; + } + + @Override + public ReferenceEntry poll() { + ReferenceEntry next = this.head.getNextInAccessQueue(); + if (next == this.head) { + return null; + } + this.remove(next); + return next; + } + + @Override + public boolean remove(Object o) { + ReferenceEntry e = (ReferenceEntry)o; + ReferenceEntry previous = e.getPreviousInAccessQueue(); + ReferenceEntry next = e.getNextInAccessQueue(); + LocalCache.connectAccessOrder(previous, next); + LocalCache.nullifyAccessOrder(e); + return next != NullEntry.INSTANCE; + } + + @Override + public boolean contains(Object o) { + ReferenceEntry e = (ReferenceEntry)o; + return e.getNextInAccessQueue() != NullEntry.INSTANCE; + } + + @Override + public boolean isEmpty() { + return this.head.getNextInAccessQueue() == this.head; + } + + @Override + public int size() { + int size = 0; + for (ReferenceEntry e = this.head.getNextInAccessQueue(); e != this.head; e = e.getNextInAccessQueue()) { + ++size; + } + return size; + } + + @Override + public void clear() { + ReferenceEntry e = this.head.getNextInAccessQueue(); + while (e != this.head) { + ReferenceEntry next = e.getNextInAccessQueue(); + LocalCache.nullifyAccessOrder(e); + e = next; + } + this.head.setNextInAccessQueue(this.head); + this.head.setPreviousInAccessQueue(this.head); + } + + @Override + public Iterator> iterator() { + return new AbstractSequentialIterator>((ReferenceEntry)this.peek()){ + + @Override + protected ReferenceEntry computeNext(ReferenceEntry previous) { + ReferenceEntry next = previous.getNextInAccessQueue(); + return next == AccessQueue.this.head ? null : next; + } + }; + } + } + + static final class WriteQueue + extends AbstractQueue> { + final ReferenceEntry head = new AbstractReferenceEntry(){ + ReferenceEntry nextWrite = this; + ReferenceEntry previousWrite = this; + + @Override + public long getWriteTime() { + return Long.MAX_VALUE; + } + + @Override + public void setWriteTime(long time) { + } + + @Override + public ReferenceEntry getNextInWriteQueue() { + return this.nextWrite; + } + + @Override + public void setNextInWriteQueue(ReferenceEntry next) { + this.nextWrite = next; + } + + @Override + public ReferenceEntry getPreviousInWriteQueue() { + return this.previousWrite; + } + + @Override + public void setPreviousInWriteQueue(ReferenceEntry previous) { + this.previousWrite = previous; + } + }; + + WriteQueue() { + } + + @Override + public boolean offer(ReferenceEntry entry) { + LocalCache.connectWriteOrder(entry.getPreviousInWriteQueue(), entry.getNextInWriteQueue()); + LocalCache.connectWriteOrder(this.head.getPreviousInWriteQueue(), entry); + LocalCache.connectWriteOrder(entry, this.head); + return true; + } + + @Override + public ReferenceEntry peek() { + ReferenceEntry next = this.head.getNextInWriteQueue(); + return next == this.head ? null : next; + } + + @Override + public ReferenceEntry poll() { + ReferenceEntry next = this.head.getNextInWriteQueue(); + if (next == this.head) { + return null; + } + this.remove(next); + return next; + } + + @Override + public boolean remove(Object o) { + ReferenceEntry e = (ReferenceEntry)o; + ReferenceEntry previous = e.getPreviousInWriteQueue(); + ReferenceEntry next = e.getNextInWriteQueue(); + LocalCache.connectWriteOrder(previous, next); + LocalCache.nullifyWriteOrder(e); + return next != NullEntry.INSTANCE; + } + + @Override + public boolean contains(Object o) { + ReferenceEntry e = (ReferenceEntry)o; + return e.getNextInWriteQueue() != NullEntry.INSTANCE; + } + + @Override + public boolean isEmpty() { + return this.head.getNextInWriteQueue() == this.head; + } + + @Override + public int size() { + int size = 0; + for (ReferenceEntry e = this.head.getNextInWriteQueue(); e != this.head; e = e.getNextInWriteQueue()) { + ++size; + } + return size; + } + + @Override + public void clear() { + ReferenceEntry e = this.head.getNextInWriteQueue(); + while (e != this.head) { + ReferenceEntry next = e.getNextInWriteQueue(); + LocalCache.nullifyWriteOrder(e); + e = next; + } + this.head.setNextInWriteQueue(this.head); + this.head.setPreviousInWriteQueue(this.head); + } + + @Override + public Iterator> iterator() { + return new AbstractSequentialIterator>((ReferenceEntry)this.peek()){ + + @Override + protected ReferenceEntry computeNext(ReferenceEntry previous) { + ReferenceEntry next = previous.getNextInWriteQueue(); + return next == WriteQueue.this.head ? null : next; + } + }; + } + } + + static class LoadingValueReference + implements ValueReference { + volatile ValueReference oldValue; + final SettableFuture futureValue = SettableFuture.create(); + final Stopwatch stopwatch = Stopwatch.createUnstarted(); + + public LoadingValueReference() { + this(LocalCache.unset()); + } + + public LoadingValueReference(ValueReference oldValue) { + this.oldValue = oldValue; + } + + @Override + public boolean isLoading() { + return true; + } + + @Override + public boolean isActive() { + return this.oldValue.isActive(); + } + + @Override + public int getWeight() { + return this.oldValue.getWeight(); + } + + public boolean set(@Nullable V newValue) { + return this.futureValue.set(newValue); + } + + public boolean setException(Throwable t) { + return this.futureValue.setException(t); + } + + private ListenableFuture fullyFailedFuture(Throwable t) { + return Futures.immediateFailedFuture(t); + } + + @Override + public void notifyNewValue(@Nullable V newValue) { + if (newValue != null) { + this.set(newValue); + } else { + this.oldValue = LocalCache.unset(); + } + } + + public ListenableFuture loadFuture(K key, CacheLoader loader) { + this.stopwatch.start(); + V previousValue = this.oldValue.get(); + try { + if (previousValue == null) { + V newValue = loader.load(key); + return this.set(newValue) ? this.futureValue : Futures.immediateFuture(newValue); + } + ListenableFuture newValue = loader.reload(key, previousValue); + if (newValue == null) { + return Futures.immediateFuture(null); + } + return Futures.transform(newValue, new Function(){ + + @Override + public V apply(V newValue) { + LoadingValueReference.this.set(newValue); + return newValue; + } + }); + } + catch (Throwable t) { + if (t instanceof InterruptedException) { + Thread.currentThread().interrupt(); + } + return this.setException(t) ? this.futureValue : this.fullyFailedFuture(t); + } + } + + public long elapsedNanos() { + return this.stopwatch.elapsed(TimeUnit.NANOSECONDS); + } + + @Override + public V waitForValue() throws ExecutionException { + return Uninterruptibles.getUninterruptibly(this.futureValue); + } + + @Override + public V get() { + return this.oldValue.get(); + } + + public ValueReference getOldValue() { + return this.oldValue; + } + + @Override + public ReferenceEntry getEntry() { + return null; + } + + @Override + public ValueReference copyFor(ReferenceQueue queue, @Nullable V value, ReferenceEntry entry) { + return this; + } + } + + static class Segment + extends ReentrantLock { + final LocalCache map; + volatile int count; + @GuardedBy(value="this") + long totalWeight; + int modCount; + int threshold; + volatile AtomicReferenceArray> table; + final long maxSegmentWeight; + final ReferenceQueue keyReferenceQueue; + final ReferenceQueue valueReferenceQueue; + final Queue> recencyQueue; + final AtomicInteger readCount = new AtomicInteger(); + @GuardedBy(value="this") + final Queue> writeQueue; + @GuardedBy(value="this") + final Queue> accessQueue; + final AbstractCache.StatsCounter statsCounter; + + Segment(LocalCache map, int initialCapacity, long maxSegmentWeight, AbstractCache.StatsCounter statsCounter) { + this.map = map; + this.maxSegmentWeight = maxSegmentWeight; + this.statsCounter = Preconditions.checkNotNull(statsCounter); + this.initTable(this.newEntryArray(initialCapacity)); + this.keyReferenceQueue = map.usesKeyReferences() ? new ReferenceQueue() : null; + this.valueReferenceQueue = map.usesValueReferences() ? new ReferenceQueue() : null; + this.recencyQueue = map.usesAccessQueue() ? new ConcurrentLinkedQueue() : LocalCache.discardingQueue(); + this.writeQueue = map.usesWriteQueue() ? new WriteQueue() : LocalCache.discardingQueue(); + this.accessQueue = map.usesAccessQueue() ? new AccessQueue() : LocalCache.discardingQueue(); + } + + AtomicReferenceArray> newEntryArray(int size) { + return new AtomicReferenceArray>(size); + } + + void initTable(AtomicReferenceArray> newTable) { + this.threshold = newTable.length() * 3 / 4; + if (!this.map.customWeigher() && (long)this.threshold == this.maxSegmentWeight) { + ++this.threshold; + } + this.table = newTable; + } + + @GuardedBy(value="this") + ReferenceEntry newEntry(K key, int hash, @Nullable ReferenceEntry next) { + return this.map.entryFactory.newEntry(this, Preconditions.checkNotNull(key), hash, next); + } + + @GuardedBy(value="this") + ReferenceEntry copyEntry(ReferenceEntry original, ReferenceEntry newNext) { + if (original.getKey() == null) { + return null; + } + ValueReference valueReference = original.getValueReference(); + V value = valueReference.get(); + if (value == null && valueReference.isActive()) { + return null; + } + ReferenceEntry newEntry = this.map.entryFactory.copyEntry(this, original, newNext); + newEntry.setValueReference(valueReference.copyFor(this.valueReferenceQueue, value, newEntry)); + return newEntry; + } + + @GuardedBy(value="this") + void setValue(ReferenceEntry entry, K key, V value, long now) { + ValueReference previous = entry.getValueReference(); + int weight = this.map.weigher.weigh(key, value); + Preconditions.checkState(weight >= 0, "Weights must be non-negative"); + ValueReference valueReference = this.map.valueStrength.referenceValue(this, entry, value, weight); + entry.setValueReference(valueReference); + this.recordWrite(entry, weight, now); + previous.notifyNewValue(value); + } + + V get(K key, int hash, CacheLoader loader) throws ExecutionException { + Preconditions.checkNotNull(key); + Preconditions.checkNotNull(loader); + try { + ReferenceEntry e; + if (this.count != 0 && (e = this.getEntry(key, hash)) != null) { + long now = this.map.ticker.read(); + V value = this.getLiveValue(e, now); + if (value != null) { + this.recordRead(e, now); + this.statsCounter.recordHits(1); + V v = this.scheduleRefresh(e, key, hash, value, now, loader); + return v; + } + ValueReference valueReference = e.getValueReference(); + if (valueReference.isLoading()) { + V v = this.waitForLoadingValue(e, key, valueReference); + return v; + } + } + e = this.lockedGetOrLoad(key, hash, loader); + return (V)e; + } + catch (ExecutionException ee) { + Throwable cause = ee.getCause(); + if (cause instanceof Error) { + throw new ExecutionError((Error)cause); + } + if (cause instanceof RuntimeException) { + throw new UncheckedExecutionException(cause); + } + throw ee; + } + finally { + this.postReadCleanup(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + V lockedGetOrLoad(K key, int hash, CacheLoader loader) throws ExecutionException { + ReferenceEntry e; + ValueReference valueReference = null; + LoadingValueReference loadingValueReference = null; + boolean createNewEntry = true; + this.lock(); + try { + ReferenceEntry first; + long now = this.map.ticker.read(); + this.preWriteCleanup(now); + int newCount = this.count - 1; + AtomicReferenceArray> table = this.table; + int index = hash & table.length() - 1; + for (e = first = table.get(index); e != null; e = e.getNext()) { + K entryKey = e.getKey(); + if (e.getHash() != hash || entryKey == null || !this.map.keyEquivalence.equivalent(key, entryKey)) continue; + valueReference = e.getValueReference(); + if (valueReference.isLoading()) { + createNewEntry = false; + break; + } + V value = valueReference.get(); + if (value == null) { + this.enqueueNotification(entryKey, hash, valueReference, RemovalCause.COLLECTED); + } else if (this.map.isExpired(e, now)) { + this.enqueueNotification(entryKey, hash, valueReference, RemovalCause.EXPIRED); + } else { + this.recordLockedRead(e, now); + this.statsCounter.recordHits(1); + V v = value; + return v; + } + this.writeQueue.remove(e); + this.accessQueue.remove(e); + this.count = newCount; + break; + } + if (createNewEntry) { + loadingValueReference = new LoadingValueReference(); + if (e == null) { + e = this.newEntry(key, hash, first); + e.setValueReference(loadingValueReference); + table.set(index, e); + } else { + e.setValueReference(loadingValueReference); + } + } + } + finally { + this.unlock(); + this.postWriteCleanup(); + } + if (createNewEntry) { + try { + ReferenceEntry referenceEntry = e; + synchronized (referenceEntry) { + Object v = this.loadSync(key, hash, loadingValueReference, loader); + return v; + } + } + finally { + this.statsCounter.recordMisses(1); + } + } + return this.waitForLoadingValue(e, key, valueReference); + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + V waitForLoadingValue(ReferenceEntry e, K key, ValueReference valueReference) throws ExecutionException { + if (!valueReference.isLoading()) { + throw new AssertionError(); + } + Preconditions.checkState(!Thread.holdsLock(e), "Recursive load of: %s", key); + try { + V value = valueReference.waitForValue(); + if (value == null) { + String string = String.valueOf(String.valueOf(key)); + throw new CacheLoader.InvalidCacheLoadException(new StringBuilder(35 + string.length()).append("CacheLoader returned null for key ").append(string).append(".").toString()); + } + long now = this.map.ticker.read(); + this.recordRead(e, now); + V v = value; + return v; + } + finally { + this.statsCounter.recordMisses(1); + } + } + + V loadSync(K key, int hash, LoadingValueReference loadingValueReference, CacheLoader loader) throws ExecutionException { + ListenableFuture loadingFuture = loadingValueReference.loadFuture((K)key, loader); + return this.getAndRecordStats(key, hash, loadingValueReference, loadingFuture); + } + + ListenableFuture loadAsync(final K key, final int hash, final LoadingValueReference loadingValueReference, CacheLoader loader) { + final ListenableFuture loadingFuture = loadingValueReference.loadFuture((K)key, loader); + loadingFuture.addListener(new Runnable(){ + + @Override + public void run() { + try { + Object newValue = Segment.this.getAndRecordStats(key, hash, loadingValueReference, loadingFuture); + } + catch (Throwable t) { + logger.log(Level.WARNING, "Exception thrown during refresh", t); + loadingValueReference.setException(t); + } + } + }, MoreExecutors.directExecutor()); + return loadingFuture; + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + V getAndRecordStats(K key, int hash, LoadingValueReference loadingValueReference, ListenableFuture newValue) throws ExecutionException { + V value = null; + try { + value = Uninterruptibles.getUninterruptibly(newValue); + if (value == null) { + String string = String.valueOf(String.valueOf(key)); + throw new CacheLoader.InvalidCacheLoadException(new StringBuilder(35 + string.length()).append("CacheLoader returned null for key ").append(string).append(".").toString()); + } + this.statsCounter.recordLoadSuccess(loadingValueReference.elapsedNanos()); + this.storeLoadedValue(key, hash, loadingValueReference, value); + V v = value; + return v; + } + finally { + if (value == null) { + this.statsCounter.recordLoadException(loadingValueReference.elapsedNanos()); + this.removeLoadingValue(key, hash, loadingValueReference); + } + } + } + + V scheduleRefresh(ReferenceEntry entry, K key, int hash, V oldValue, long now, CacheLoader loader) { + V newValue; + if (this.map.refreshes() && now - entry.getWriteTime() > this.map.refreshNanos && !entry.getValueReference().isLoading() && (newValue = this.refresh(key, hash, loader, true)) != null) { + return newValue; + } + return oldValue; + } + + @Nullable + V refresh(K key, int hash, CacheLoader loader, boolean checkTime) { + LoadingValueReference loadingValueReference = this.insertLoadingValueReference(key, hash, checkTime); + if (loadingValueReference == null) { + return null; + } + ListenableFuture result = this.loadAsync(key, hash, loadingValueReference, loader); + if (result.isDone()) { + try { + return Uninterruptibles.getUninterruptibly(result); + } + catch (Throwable t) { + // empty catch block + } + } + return null; + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Nullable + LoadingValueReference insertLoadingValueReference(K key, int hash, boolean checkTime) { + ReferenceEntry e = null; + this.lock(); + try { + ReferenceEntry first; + long now = this.map.ticker.read(); + this.preWriteCleanup(now); + AtomicReferenceArray> table = this.table; + int index = hash & table.length() - 1; + for (e = first = table.get(index); e != null; e = e.getNext()) { + K entryKey = e.getKey(); + if (e.getHash() != hash || entryKey == null || !this.map.keyEquivalence.equivalent(key, entryKey)) continue; + ValueReference valueReference = e.getValueReference(); + if (valueReference.isLoading() || checkTime && now - e.getWriteTime() < this.map.refreshNanos) { + LoadingValueReference loadingValueReference = null; + return loadingValueReference; + } + ++this.modCount; + LoadingValueReference loadingValueReference = new LoadingValueReference(valueReference); + e.setValueReference(loadingValueReference); + LoadingValueReference loadingValueReference2 = loadingValueReference; + return loadingValueReference2; + } + ++this.modCount; + LoadingValueReference loadingValueReference = new LoadingValueReference(); + e = this.newEntry(key, hash, first); + e.setValueReference(loadingValueReference); + table.set(index, e); + LoadingValueReference loadingValueReference3 = loadingValueReference; + return loadingValueReference3; + } + finally { + this.unlock(); + this.postWriteCleanup(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + void tryDrainReferenceQueues() { + if (this.tryLock()) { + try { + this.drainReferenceQueues(); + } + finally { + this.unlock(); + } + } + } + + @GuardedBy(value="this") + void drainReferenceQueues() { + if (this.map.usesKeyReferences()) { + this.drainKeyReferenceQueue(); + } + if (this.map.usesValueReferences()) { + this.drainValueReferenceQueue(); + } + } + + @GuardedBy(value="this") + void drainKeyReferenceQueue() { + Reference ref; + int i = 0; + while ((ref = this.keyReferenceQueue.poll()) != null) { + ReferenceEntry entry = (ReferenceEntry)((Object)ref); + this.map.reclaimKey(entry); + if (++i != 16) continue; + break; + } + } + + @GuardedBy(value="this") + void drainValueReferenceQueue() { + Reference ref; + int i = 0; + while ((ref = this.valueReferenceQueue.poll()) != null) { + ValueReference valueReference = (ValueReference)((Object)ref); + this.map.reclaimValue(valueReference); + if (++i != 16) continue; + break; + } + } + + void clearReferenceQueues() { + if (this.map.usesKeyReferences()) { + this.clearKeyReferenceQueue(); + } + if (this.map.usesValueReferences()) { + this.clearValueReferenceQueue(); + } + } + + void clearKeyReferenceQueue() { + while (this.keyReferenceQueue.poll() != null) { + } + } + + void clearValueReferenceQueue() { + while (this.valueReferenceQueue.poll() != null) { + } + } + + void recordRead(ReferenceEntry entry, long now) { + if (this.map.recordsAccess()) { + entry.setAccessTime(now); + } + this.recencyQueue.add(entry); + } + + @GuardedBy(value="this") + void recordLockedRead(ReferenceEntry entry, long now) { + if (this.map.recordsAccess()) { + entry.setAccessTime(now); + } + this.accessQueue.add(entry); + } + + @GuardedBy(value="this") + void recordWrite(ReferenceEntry entry, int weight, long now) { + this.drainRecencyQueue(); + this.totalWeight += (long)weight; + if (this.map.recordsAccess()) { + entry.setAccessTime(now); + } + if (this.map.recordsWrite()) { + entry.setWriteTime(now); + } + this.accessQueue.add(entry); + this.writeQueue.add(entry); + } + + @GuardedBy(value="this") + void drainRecencyQueue() { + ReferenceEntry e; + while ((e = this.recencyQueue.poll()) != null) { + if (!this.accessQueue.contains(e)) continue; + this.accessQueue.add(e); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + void tryExpireEntries(long now) { + if (this.tryLock()) { + try { + this.expireEntries(now); + } + finally { + this.unlock(); + } + } + } + + @GuardedBy(value="this") + void expireEntries(long now) { + ReferenceEntry e; + this.drainRecencyQueue(); + while ((e = this.writeQueue.peek()) != null && this.map.isExpired(e, now)) { + if (!this.removeEntry(e, e.getHash(), RemovalCause.EXPIRED)) { + throw new AssertionError(); + } + } + while ((e = this.accessQueue.peek()) != null && this.map.isExpired(e, now)) { + if (!this.removeEntry(e, e.getHash(), RemovalCause.EXPIRED)) { + throw new AssertionError(); + } + } + } + + @GuardedBy(value="this") + void enqueueNotification(ReferenceEntry entry, RemovalCause cause) { + this.enqueueNotification(entry.getKey(), entry.getHash(), entry.getValueReference(), cause); + } + + @GuardedBy(value="this") + void enqueueNotification(@Nullable K key, int hash, ValueReference valueReference, RemovalCause cause) { + this.totalWeight -= (long)valueReference.getWeight(); + if (cause.wasEvicted()) { + this.statsCounter.recordEviction(); + } + if (this.map.removalNotificationQueue != DISCARDING_QUEUE) { + V value = valueReference.get(); + RemovalNotification notification = new RemovalNotification(key, value, cause); + this.map.removalNotificationQueue.offer(notification); + } + } + + @GuardedBy(value="this") + void evictEntries() { + if (!this.map.evictsBySize()) { + return; + } + this.drainRecencyQueue(); + while (this.totalWeight > this.maxSegmentWeight) { + ReferenceEntry e = this.getNextEvictable(); + if (!this.removeEntry(e, e.getHash(), RemovalCause.SIZE)) { + throw new AssertionError(); + } + } + } + + @GuardedBy(value="this") + ReferenceEntry getNextEvictable() { + for (ReferenceEntry referenceEntry : this.accessQueue) { + int weight = referenceEntry.getValueReference().getWeight(); + if (weight <= 0) continue; + return referenceEntry; + } + throw new AssertionError(); + } + + ReferenceEntry getFirst(int hash) { + AtomicReferenceArray> table = this.table; + return table.get(hash & table.length() - 1); + } + + @Nullable + ReferenceEntry getEntry(Object key, int hash) { + for (ReferenceEntry e = this.getFirst(hash); e != null; e = e.getNext()) { + if (e.getHash() != hash) continue; + K entryKey = e.getKey(); + if (entryKey == null) { + this.tryDrainReferenceQueues(); + continue; + } + if (!this.map.keyEquivalence.equivalent(key, entryKey)) continue; + return e; + } + return null; + } + + @Nullable + ReferenceEntry getLiveEntry(Object key, int hash, long now) { + ReferenceEntry e = this.getEntry(key, hash); + if (e == null) { + return null; + } + if (this.map.isExpired(e, now)) { + this.tryExpireEntries(now); + return null; + } + return e; + } + + V getLiveValue(ReferenceEntry entry, long now) { + if (entry.getKey() == null) { + this.tryDrainReferenceQueues(); + return null; + } + V value = entry.getValueReference().get(); + if (value == null) { + this.tryDrainReferenceQueues(); + return null; + } + if (this.map.isExpired(entry, now)) { + this.tryExpireEntries(now); + return null; + } + return value; + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Nullable + V get(Object key, int hash) { + try { + if (this.count != 0) { + long now = this.map.ticker.read(); + ReferenceEntry e = this.getLiveEntry(key, hash, now); + if (e == null) { + V v = null; + return v; + } + V value = e.getValueReference().get(); + if (value != null) { + this.recordRead(e, now); + V v = this.scheduleRefresh(e, e.getKey(), hash, value, now, this.map.defaultLoader); + return v; + } + this.tryDrainReferenceQueues(); + } + V v = null; + return v; + } + finally { + this.postReadCleanup(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + boolean containsKey(Object key, int hash) { + try { + if (this.count != 0) { + long now = this.map.ticker.read(); + ReferenceEntry e = this.getLiveEntry(key, hash, now); + if (e == null) { + boolean bl = false; + return bl; + } + boolean bl = e.getValueReference().get() != null; + return bl; + } + boolean bl = false; + return bl; + } + finally { + this.postReadCleanup(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @VisibleForTesting + boolean containsValue(Object value) { + try { + if (this.count != 0) { + long now = this.map.ticker.read(); + AtomicReferenceArray> table = this.table; + int length = table.length(); + for (int i = 0; i < length; ++i) { + for (ReferenceEntry e = table.get(i); e != null; e = e.getNext()) { + V entryValue = this.getLiveValue(e, now); + if (entryValue == null || !this.map.valueEquivalence.equivalent(value, entryValue)) continue; + boolean bl = true; + return bl; + } + } + } + boolean bl = false; + return bl; + } + finally { + this.postReadCleanup(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Nullable + V put(K key, int hash, V value, boolean onlyIfAbsent) { + this.lock(); + try { + ReferenceEntry first; + long now = this.map.ticker.read(); + this.preWriteCleanup(now); + int newCount = this.count + 1; + if (newCount > this.threshold) { + this.expand(); + newCount = this.count + 1; + } + AtomicReferenceArray> table = this.table; + int index = hash & table.length() - 1; + for (ReferenceEntry e = first = table.get(index); e != null; e = e.getNext()) { + K entryKey = e.getKey(); + if (e.getHash() != hash || entryKey == null || !this.map.keyEquivalence.equivalent(key, entryKey)) continue; + ValueReference valueReference = e.getValueReference(); + V entryValue = valueReference.get(); + if (entryValue == null) { + ++this.modCount; + if (valueReference.isActive()) { + this.enqueueNotification(key, hash, valueReference, RemovalCause.COLLECTED); + this.setValue(e, key, value, now); + newCount = this.count; + } else { + this.setValue(e, key, value, now); + newCount = this.count + 1; + } + this.count = newCount; + this.evictEntries(); + V v = null; + return v; + } + if (onlyIfAbsent) { + this.recordLockedRead(e, now); + V v = entryValue; + return v; + } + ++this.modCount; + this.enqueueNotification(key, hash, valueReference, RemovalCause.REPLACED); + this.setValue(e, key, value, now); + this.evictEntries(); + V v = entryValue; + return v; + } + ++this.modCount; + ReferenceEntry newEntry = this.newEntry(key, hash, first); + this.setValue(newEntry, key, value, now); + table.set(index, newEntry); + this.count = newCount = this.count + 1; + this.evictEntries(); + V v = null; + return v; + } + finally { + this.unlock(); + this.postWriteCleanup(); + } + } + + @GuardedBy(value="this") + void expand() { + AtomicReferenceArray> oldTable = this.table; + int oldCapacity = oldTable.length(); + if (oldCapacity >= 0x40000000) { + return; + } + int newCount = this.count; + AtomicReferenceArray> newTable = this.newEntryArray(oldCapacity << 1); + this.threshold = newTable.length() * 3 / 4; + int newMask = newTable.length() - 1; + for (int oldIndex = 0; oldIndex < oldCapacity; ++oldIndex) { + int newIndex; + ReferenceEntry e; + ReferenceEntry head = oldTable.get(oldIndex); + if (head == null) continue; + ReferenceEntry next = head.getNext(); + int headIndex = head.getHash() & newMask; + if (next == null) { + newTable.set(headIndex, head); + continue; + } + ReferenceEntry tail = head; + int tailIndex = headIndex; + for (e = next; e != null; e = e.getNext()) { + newIndex = e.getHash() & newMask; + if (newIndex == tailIndex) continue; + tailIndex = newIndex; + tail = e; + } + newTable.set(tailIndex, tail); + for (e = head; e != tail; e = e.getNext()) { + newIndex = e.getHash() & newMask; + ReferenceEntry newNext = newTable.get(newIndex); + ReferenceEntry newFirst = this.copyEntry(e, newNext); + if (newFirst != null) { + newTable.set(newIndex, newFirst); + continue; + } + this.removeCollectedEntry(e); + --newCount; + } + } + this.table = newTable; + this.count = newCount; + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + boolean replace(K key, int hash, V oldValue, V newValue) { + this.lock(); + try { + ReferenceEntry first; + long now = this.map.ticker.read(); + this.preWriteCleanup(now); + AtomicReferenceArray> table = this.table; + int index = hash & table.length() - 1; + for (ReferenceEntry e = first = table.get(index); e != null; e = e.getNext()) { + K entryKey = e.getKey(); + if (e.getHash() != hash || entryKey == null || !this.map.keyEquivalence.equivalent(key, entryKey)) continue; + ValueReference valueReference = e.getValueReference(); + V entryValue = valueReference.get(); + if (entryValue == null) { + if (valueReference.isActive()) { + int newCount = this.count - 1; + ++this.modCount; + ReferenceEntry newFirst = this.removeValueFromChain(first, e, entryKey, hash, valueReference, RemovalCause.COLLECTED); + newCount = this.count - 1; + table.set(index, newFirst); + this.count = newCount; + } + boolean bl = false; + return bl; + } + if (this.map.valueEquivalence.equivalent(oldValue, entryValue)) { + ++this.modCount; + this.enqueueNotification(key, hash, valueReference, RemovalCause.REPLACED); + this.setValue(e, key, newValue, now); + this.evictEntries(); + boolean bl = true; + return bl; + } + this.recordLockedRead(e, now); + boolean bl = false; + return bl; + } + boolean bl = false; + return bl; + } + finally { + this.unlock(); + this.postWriteCleanup(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Nullable + V replace(K key, int hash, V newValue) { + this.lock(); + try { + ReferenceEntry first; + long now = this.map.ticker.read(); + this.preWriteCleanup(now); + AtomicReferenceArray> table = this.table; + int index = hash & table.length() - 1; + for (ReferenceEntry e = first = table.get(index); e != null; e = e.getNext()) { + K entryKey = e.getKey(); + if (e.getHash() != hash || entryKey == null || !this.map.keyEquivalence.equivalent(key, entryKey)) continue; + ValueReference valueReference = e.getValueReference(); + V entryValue = valueReference.get(); + if (entryValue == null) { + if (valueReference.isActive()) { + int newCount = this.count - 1; + ++this.modCount; + ReferenceEntry newFirst = this.removeValueFromChain(first, e, entryKey, hash, valueReference, RemovalCause.COLLECTED); + newCount = this.count - 1; + table.set(index, newFirst); + this.count = newCount; + } + V v = null; + return v; + } + ++this.modCount; + this.enqueueNotification(key, hash, valueReference, RemovalCause.REPLACED); + this.setValue(e, key, newValue, now); + this.evictEntries(); + V v = entryValue; + return v; + } + V v = null; + return v; + } + finally { + this.unlock(); + this.postWriteCleanup(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Nullable + V remove(Object key, int hash) { + this.lock(); + try { + ReferenceEntry first; + long now = this.map.ticker.read(); + this.preWriteCleanup(now); + int newCount = this.count - 1; + AtomicReferenceArray> table = this.table; + int index = hash & table.length() - 1; + for (ReferenceEntry e = first = table.get(index); e != null; e = e.getNext()) { + RemovalCause cause; + K entryKey = e.getKey(); + if (e.getHash() != hash || entryKey == null || !this.map.keyEquivalence.equivalent(key, entryKey)) continue; + ValueReference valueReference = e.getValueReference(); + V entryValue = valueReference.get(); + if (entryValue != null) { + cause = RemovalCause.EXPLICIT; + } else if (valueReference.isActive()) { + cause = RemovalCause.COLLECTED; + } else { + V v = null; + return v; + } + ++this.modCount; + ReferenceEntry newFirst = this.removeValueFromChain(first, e, entryKey, hash, valueReference, cause); + newCount = this.count - 1; + table.set(index, newFirst); + this.count = newCount; + V v = entryValue; + return v; + } + V v = null; + return v; + } + finally { + this.unlock(); + this.postWriteCleanup(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + boolean storeLoadedValue(K key, int hash, LoadingValueReference oldValueReference, V newValue) { + this.lock(); + try { + ReferenceEntry first; + long now = this.map.ticker.read(); + this.preWriteCleanup(now); + int newCount = this.count + 1; + if (newCount > this.threshold) { + this.expand(); + newCount = this.count + 1; + } + AtomicReferenceArray> table = this.table; + int index = hash & table.length() - 1; + for (ReferenceEntry e = first = table.get(index); e != null; e = e.getNext()) { + K entryKey = e.getKey(); + if (e.getHash() != hash || entryKey == null || !this.map.keyEquivalence.equivalent(key, entryKey)) continue; + ValueReference valueReference = e.getValueReference(); + V entryValue = valueReference.get(); + if (oldValueReference == valueReference || entryValue == null && valueReference != UNSET) { + ++this.modCount; + if (oldValueReference.isActive()) { + RemovalCause cause = entryValue == null ? RemovalCause.COLLECTED : RemovalCause.REPLACED; + this.enqueueNotification(key, hash, oldValueReference, cause); + --newCount; + } + this.setValue(e, key, newValue, now); + this.count = newCount; + this.evictEntries(); + boolean bl = true; + return bl; + } + valueReference = new WeightedStrongValueReference(newValue, 0); + this.enqueueNotification(key, hash, valueReference, RemovalCause.REPLACED); + boolean bl = false; + return bl; + } + ++this.modCount; + ReferenceEntry newEntry = this.newEntry(key, hash, first); + this.setValue(newEntry, key, newValue, now); + table.set(index, newEntry); + this.count = newCount; + this.evictEntries(); + boolean bl = true; + return bl; + } + finally { + this.unlock(); + this.postWriteCleanup(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + boolean remove(Object key, int hash, Object value) { + this.lock(); + try { + ReferenceEntry first; + long now = this.map.ticker.read(); + this.preWriteCleanup(now); + int newCount = this.count - 1; + AtomicReferenceArray> table = this.table; + int index = hash & table.length() - 1; + for (ReferenceEntry e = first = table.get(index); e != null; e = e.getNext()) { + RemovalCause cause; + K entryKey = e.getKey(); + if (e.getHash() != hash || entryKey == null || !this.map.keyEquivalence.equivalent(key, entryKey)) continue; + ValueReference valueReference = e.getValueReference(); + V entryValue = valueReference.get(); + if (this.map.valueEquivalence.equivalent(value, entryValue)) { + cause = RemovalCause.EXPLICIT; + } else if (entryValue == null && valueReference.isActive()) { + cause = RemovalCause.COLLECTED; + } else { + boolean bl = false; + return bl; + } + ++this.modCount; + ReferenceEntry newFirst = this.removeValueFromChain(first, e, entryKey, hash, valueReference, cause); + newCount = this.count - 1; + table.set(index, newFirst); + this.count = newCount; + boolean bl = cause == RemovalCause.EXPLICIT; + return bl; + } + boolean bl = false; + return bl; + } + finally { + this.unlock(); + this.postWriteCleanup(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + void clear() { + if (this.count != 0) { + this.lock(); + try { + int i; + AtomicReferenceArray> table = this.table; + for (i = 0; i < table.length(); ++i) { + for (ReferenceEntry e = table.get(i); e != null; e = e.getNext()) { + if (!e.getValueReference().isActive()) continue; + this.enqueueNotification(e, RemovalCause.EXPLICIT); + } + } + for (i = 0; i < table.length(); ++i) { + table.set(i, null); + } + this.clearReferenceQueues(); + this.writeQueue.clear(); + this.accessQueue.clear(); + this.readCount.set(0); + ++this.modCount; + this.count = 0; + } + finally { + this.unlock(); + this.postWriteCleanup(); + } + } + } + + @Nullable + @GuardedBy(value="this") + ReferenceEntry removeValueFromChain(ReferenceEntry first, ReferenceEntry entry, @Nullable K key, int hash, ValueReference valueReference, RemovalCause cause) { + this.enqueueNotification(key, hash, valueReference, cause); + this.writeQueue.remove(entry); + this.accessQueue.remove(entry); + if (valueReference.isLoading()) { + valueReference.notifyNewValue(null); + return first; + } + return this.removeEntryFromChain(first, entry); + } + + @Nullable + @GuardedBy(value="this") + ReferenceEntry removeEntryFromChain(ReferenceEntry first, ReferenceEntry entry) { + int newCount = this.count; + ReferenceEntry newFirst = entry.getNext(); + for (ReferenceEntry e = first; e != entry; e = e.getNext()) { + ReferenceEntry next = this.copyEntry(e, newFirst); + if (next != null) { + newFirst = next; + continue; + } + this.removeCollectedEntry(e); + --newCount; + } + this.count = newCount; + return newFirst; + } + + @GuardedBy(value="this") + void removeCollectedEntry(ReferenceEntry entry) { + this.enqueueNotification(entry, RemovalCause.COLLECTED); + this.writeQueue.remove(entry); + this.accessQueue.remove(entry); + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + boolean reclaimKey(ReferenceEntry entry, int hash) { + this.lock(); + try { + ReferenceEntry first; + int newCount = this.count - 1; + AtomicReferenceArray> table = this.table; + int index = hash & table.length() - 1; + for (ReferenceEntry e = first = table.get(index); e != null; e = e.getNext()) { + if (e != entry) continue; + ++this.modCount; + ReferenceEntry newFirst = this.removeValueFromChain(first, e, e.getKey(), hash, e.getValueReference(), RemovalCause.COLLECTED); + newCount = this.count - 1; + table.set(index, newFirst); + this.count = newCount; + boolean bl = true; + return bl; + } + boolean bl = false; + return bl; + } + finally { + this.unlock(); + this.postWriteCleanup(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + boolean reclaimValue(K key, int hash, ValueReference valueReference) { + this.lock(); + try { + ReferenceEntry first; + int newCount = this.count - 1; + AtomicReferenceArray> table = this.table; + int index = hash & table.length() - 1; + for (ReferenceEntry e = first = table.get(index); e != null; e = e.getNext()) { + K entryKey = e.getKey(); + if (e.getHash() != hash || entryKey == null || !this.map.keyEquivalence.equivalent(key, entryKey)) continue; + ValueReference v = e.getValueReference(); + if (v == valueReference) { + ++this.modCount; + ReferenceEntry newFirst = this.removeValueFromChain(first, e, entryKey, hash, valueReference, RemovalCause.COLLECTED); + newCount = this.count - 1; + table.set(index, newFirst); + this.count = newCount; + boolean bl = true; + return bl; + } + boolean bl = false; + return bl; + } + boolean bl = false; + return bl; + } + finally { + this.unlock(); + if (!this.isHeldByCurrentThread()) { + this.postWriteCleanup(); + } + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + boolean removeLoadingValue(K key, int hash, LoadingValueReference valueReference) { + this.lock(); + try { + ReferenceEntry first; + AtomicReferenceArray> table = this.table; + int index = hash & table.length() - 1; + for (ReferenceEntry e = first = table.get(index); e != null; e = e.getNext()) { + K entryKey = e.getKey(); + if (e.getHash() != hash || entryKey == null || !this.map.keyEquivalence.equivalent(key, entryKey)) continue; + ValueReference v = e.getValueReference(); + if (v == valueReference) { + if (valueReference.isActive()) { + e.setValueReference(valueReference.getOldValue()); + } else { + ReferenceEntry newFirst = this.removeEntryFromChain(first, e); + table.set(index, newFirst); + } + boolean bl = true; + return bl; + } + boolean bl = false; + return bl; + } + boolean bl = false; + return bl; + } + finally { + this.unlock(); + this.postWriteCleanup(); + } + } + + @GuardedBy(value="this") + boolean removeEntry(ReferenceEntry entry, int hash, RemovalCause cause) { + ReferenceEntry first; + int newCount = this.count - 1; + AtomicReferenceArray> table = this.table; + int index = hash & table.length() - 1; + for (ReferenceEntry e = first = table.get(index); e != null; e = e.getNext()) { + if (e != entry) continue; + ++this.modCount; + ReferenceEntry newFirst = this.removeValueFromChain(first, e, e.getKey(), hash, e.getValueReference(), cause); + newCount = this.count - 1; + table.set(index, newFirst); + this.count = newCount; + return true; + } + return false; + } + + void postReadCleanup() { + if ((this.readCount.incrementAndGet() & 0x3F) == 0) { + this.cleanUp(); + } + } + + @GuardedBy(value="this") + void preWriteCleanup(long now) { + this.runLockedCleanup(now); + } + + void postWriteCleanup() { + this.runUnlockedCleanup(); + } + + void cleanUp() { + long now = this.map.ticker.read(); + this.runLockedCleanup(now); + this.runUnlockedCleanup(); + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + void runLockedCleanup(long now) { + if (this.tryLock()) { + try { + this.drainReferenceQueues(); + this.expireEntries(now); + this.readCount.set(0); + } + finally { + this.unlock(); + } + } + } + + void runUnlockedCleanup() { + if (!this.isHeldByCurrentThread()) { + this.map.processPendingNotifications(); + } + } + } + + static final class WeightedStrongValueReference + extends StrongValueReference { + final int weight; + + WeightedStrongValueReference(V referent, int weight) { + super(referent); + this.weight = weight; + } + + @Override + public int getWeight() { + return this.weight; + } + } + + static final class WeightedSoftValueReference + extends SoftValueReference { + final int weight; + + WeightedSoftValueReference(ReferenceQueue queue, V referent, ReferenceEntry entry, int weight) { + super(queue, referent, entry); + this.weight = weight; + } + + @Override + public int getWeight() { + return this.weight; + } + + @Override + public ValueReference copyFor(ReferenceQueue queue, V value, ReferenceEntry entry) { + return new WeightedSoftValueReference(queue, value, entry, this.weight); + } + } + + static final class WeightedWeakValueReference + extends WeakValueReference { + final int weight; + + WeightedWeakValueReference(ReferenceQueue queue, V referent, ReferenceEntry entry, int weight) { + super(queue, referent, entry); + this.weight = weight; + } + + @Override + public int getWeight() { + return this.weight; + } + + @Override + public ValueReference copyFor(ReferenceQueue queue, V value, ReferenceEntry entry) { + return new WeightedWeakValueReference(queue, value, entry, this.weight); + } + } + + static class StrongValueReference + implements ValueReference { + final V referent; + + StrongValueReference(V referent) { + this.referent = referent; + } + + @Override + public V get() { + return this.referent; + } + + @Override + public int getWeight() { + return 1; + } + + @Override + public ReferenceEntry getEntry() { + return null; + } + + @Override + public ValueReference copyFor(ReferenceQueue queue, V value, ReferenceEntry entry) { + return this; + } + + @Override + public boolean isLoading() { + return false; + } + + @Override + public boolean isActive() { + return true; + } + + @Override + public V waitForValue() { + return this.get(); + } + + @Override + public void notifyNewValue(V newValue) { + } + } + + static class SoftValueReference + extends SoftReference + implements ValueReference { + final ReferenceEntry entry; + + SoftValueReference(ReferenceQueue queue, V referent, ReferenceEntry entry) { + super(referent, queue); + this.entry = entry; + } + + @Override + public int getWeight() { + return 1; + } + + @Override + public ReferenceEntry getEntry() { + return this.entry; + } + + @Override + public void notifyNewValue(V newValue) { + } + + @Override + public ValueReference copyFor(ReferenceQueue queue, V value, ReferenceEntry entry) { + return new SoftValueReference(queue, value, entry); + } + + @Override + public boolean isLoading() { + return false; + } + + @Override + public boolean isActive() { + return true; + } + + @Override + public V waitForValue() { + return (V)this.get(); + } + } + + static class WeakValueReference + extends WeakReference + implements ValueReference { + final ReferenceEntry entry; + + WeakValueReference(ReferenceQueue queue, V referent, ReferenceEntry entry) { + super(referent, queue); + this.entry = entry; + } + + @Override + public int getWeight() { + return 1; + } + + @Override + public ReferenceEntry getEntry() { + return this.entry; + } + + @Override + public void notifyNewValue(V newValue) { + } + + @Override + public ValueReference copyFor(ReferenceQueue queue, V value, ReferenceEntry entry) { + return new WeakValueReference(queue, value, entry); + } + + @Override + public boolean isLoading() { + return false; + } + + @Override + public boolean isActive() { + return true; + } + + @Override + public V waitForValue() { + return (V)this.get(); + } + } + + static final class WeakAccessWriteEntry + extends WeakEntry { + volatile long accessTime = Long.MAX_VALUE; + ReferenceEntry nextAccess = LocalCache.nullEntry(); + ReferenceEntry previousAccess = LocalCache.nullEntry(); + volatile long writeTime = Long.MAX_VALUE; + ReferenceEntry nextWrite = LocalCache.nullEntry(); + ReferenceEntry previousWrite = LocalCache.nullEntry(); + + WeakAccessWriteEntry(ReferenceQueue queue, K key, int hash, @Nullable ReferenceEntry next) { + super(queue, key, hash, next); + } + + @Override + public long getAccessTime() { + return this.accessTime; + } + + @Override + public void setAccessTime(long time) { + this.accessTime = time; + } + + @Override + public ReferenceEntry getNextInAccessQueue() { + return this.nextAccess; + } + + @Override + public void setNextInAccessQueue(ReferenceEntry next) { + this.nextAccess = next; + } + + @Override + public ReferenceEntry getPreviousInAccessQueue() { + return this.previousAccess; + } + + @Override + public void setPreviousInAccessQueue(ReferenceEntry previous) { + this.previousAccess = previous; + } + + @Override + public long getWriteTime() { + return this.writeTime; + } + + @Override + public void setWriteTime(long time) { + this.writeTime = time; + } + + @Override + public ReferenceEntry getNextInWriteQueue() { + return this.nextWrite; + } + + @Override + public void setNextInWriteQueue(ReferenceEntry next) { + this.nextWrite = next; + } + + @Override + public ReferenceEntry getPreviousInWriteQueue() { + return this.previousWrite; + } + + @Override + public void setPreviousInWriteQueue(ReferenceEntry previous) { + this.previousWrite = previous; + } + } + + static final class WeakWriteEntry + extends WeakEntry { + volatile long writeTime = Long.MAX_VALUE; + ReferenceEntry nextWrite = LocalCache.nullEntry(); + ReferenceEntry previousWrite = LocalCache.nullEntry(); + + WeakWriteEntry(ReferenceQueue queue, K key, int hash, @Nullable ReferenceEntry next) { + super(queue, key, hash, next); + } + + @Override + public long getWriteTime() { + return this.writeTime; + } + + @Override + public void setWriteTime(long time) { + this.writeTime = time; + } + + @Override + public ReferenceEntry getNextInWriteQueue() { + return this.nextWrite; + } + + @Override + public void setNextInWriteQueue(ReferenceEntry next) { + this.nextWrite = next; + } + + @Override + public ReferenceEntry getPreviousInWriteQueue() { + return this.previousWrite; + } + + @Override + public void setPreviousInWriteQueue(ReferenceEntry previous) { + this.previousWrite = previous; + } + } + + static final class WeakAccessEntry + extends WeakEntry { + volatile long accessTime = Long.MAX_VALUE; + ReferenceEntry nextAccess = LocalCache.nullEntry(); + ReferenceEntry previousAccess = LocalCache.nullEntry(); + + WeakAccessEntry(ReferenceQueue queue, K key, int hash, @Nullable ReferenceEntry next) { + super(queue, key, hash, next); + } + + @Override + public long getAccessTime() { + return this.accessTime; + } + + @Override + public void setAccessTime(long time) { + this.accessTime = time; + } + + @Override + public ReferenceEntry getNextInAccessQueue() { + return this.nextAccess; + } + + @Override + public void setNextInAccessQueue(ReferenceEntry next) { + this.nextAccess = next; + } + + @Override + public ReferenceEntry getPreviousInAccessQueue() { + return this.previousAccess; + } + + @Override + public void setPreviousInAccessQueue(ReferenceEntry previous) { + this.previousAccess = previous; + } + } + + static class WeakEntry + extends WeakReference + implements ReferenceEntry { + final int hash; + final ReferenceEntry next; + volatile ValueReference valueReference = LocalCache.unset(); + + WeakEntry(ReferenceQueue queue, K key, int hash, @Nullable ReferenceEntry next) { + super(key, queue); + this.hash = hash; + this.next = next; + } + + @Override + public K getKey() { + return (K)this.get(); + } + + @Override + public long getAccessTime() { + throw new UnsupportedOperationException(); + } + + @Override + public void setAccessTime(long time) { + throw new UnsupportedOperationException(); + } + + @Override + public ReferenceEntry getNextInAccessQueue() { + throw new UnsupportedOperationException(); + } + + @Override + public void setNextInAccessQueue(ReferenceEntry next) { + throw new UnsupportedOperationException(); + } + + @Override + public ReferenceEntry getPreviousInAccessQueue() { + throw new UnsupportedOperationException(); + } + + @Override + public void setPreviousInAccessQueue(ReferenceEntry previous) { + throw new UnsupportedOperationException(); + } + + @Override + public long getWriteTime() { + throw new UnsupportedOperationException(); + } + + @Override + public void setWriteTime(long time) { + throw new UnsupportedOperationException(); + } + + @Override + public ReferenceEntry getNextInWriteQueue() { + throw new UnsupportedOperationException(); + } + + @Override + public void setNextInWriteQueue(ReferenceEntry next) { + throw new UnsupportedOperationException(); + } + + @Override + public ReferenceEntry getPreviousInWriteQueue() { + throw new UnsupportedOperationException(); + } + + @Override + public void setPreviousInWriteQueue(ReferenceEntry previous) { + throw new UnsupportedOperationException(); + } + + @Override + public ValueReference getValueReference() { + return this.valueReference; + } + + @Override + public void setValueReference(ValueReference valueReference) { + this.valueReference = valueReference; + } + + @Override + public int getHash() { + return this.hash; + } + + @Override + public ReferenceEntry getNext() { + return this.next; + } + } + + static final class StrongAccessWriteEntry + extends StrongEntry { + volatile long accessTime = Long.MAX_VALUE; + ReferenceEntry nextAccess = LocalCache.nullEntry(); + ReferenceEntry previousAccess = LocalCache.nullEntry(); + volatile long writeTime = Long.MAX_VALUE; + ReferenceEntry nextWrite = LocalCache.nullEntry(); + ReferenceEntry previousWrite = LocalCache.nullEntry(); + + StrongAccessWriteEntry(K key, int hash, @Nullable ReferenceEntry next) { + super(key, hash, next); + } + + @Override + public long getAccessTime() { + return this.accessTime; + } + + @Override + public void setAccessTime(long time) { + this.accessTime = time; + } + + @Override + public ReferenceEntry getNextInAccessQueue() { + return this.nextAccess; + } + + @Override + public void setNextInAccessQueue(ReferenceEntry next) { + this.nextAccess = next; + } + + @Override + public ReferenceEntry getPreviousInAccessQueue() { + return this.previousAccess; + } + + @Override + public void setPreviousInAccessQueue(ReferenceEntry previous) { + this.previousAccess = previous; + } + + @Override + public long getWriteTime() { + return this.writeTime; + } + + @Override + public void setWriteTime(long time) { + this.writeTime = time; + } + + @Override + public ReferenceEntry getNextInWriteQueue() { + return this.nextWrite; + } + + @Override + public void setNextInWriteQueue(ReferenceEntry next) { + this.nextWrite = next; + } + + @Override + public ReferenceEntry getPreviousInWriteQueue() { + return this.previousWrite; + } + + @Override + public void setPreviousInWriteQueue(ReferenceEntry previous) { + this.previousWrite = previous; + } + } + + static final class StrongWriteEntry + extends StrongEntry { + volatile long writeTime = Long.MAX_VALUE; + ReferenceEntry nextWrite = LocalCache.nullEntry(); + ReferenceEntry previousWrite = LocalCache.nullEntry(); + + StrongWriteEntry(K key, int hash, @Nullable ReferenceEntry next) { + super(key, hash, next); + } + + @Override + public long getWriteTime() { + return this.writeTime; + } + + @Override + public void setWriteTime(long time) { + this.writeTime = time; + } + + @Override + public ReferenceEntry getNextInWriteQueue() { + return this.nextWrite; + } + + @Override + public void setNextInWriteQueue(ReferenceEntry next) { + this.nextWrite = next; + } + + @Override + public ReferenceEntry getPreviousInWriteQueue() { + return this.previousWrite; + } + + @Override + public void setPreviousInWriteQueue(ReferenceEntry previous) { + this.previousWrite = previous; + } + } + + static final class StrongAccessEntry + extends StrongEntry { + volatile long accessTime = Long.MAX_VALUE; + ReferenceEntry nextAccess = LocalCache.nullEntry(); + ReferenceEntry previousAccess = LocalCache.nullEntry(); + + StrongAccessEntry(K key, int hash, @Nullable ReferenceEntry next) { + super(key, hash, next); + } + + @Override + public long getAccessTime() { + return this.accessTime; + } + + @Override + public void setAccessTime(long time) { + this.accessTime = time; + } + + @Override + public ReferenceEntry getNextInAccessQueue() { + return this.nextAccess; + } + + @Override + public void setNextInAccessQueue(ReferenceEntry next) { + this.nextAccess = next; + } + + @Override + public ReferenceEntry getPreviousInAccessQueue() { + return this.previousAccess; + } + + @Override + public void setPreviousInAccessQueue(ReferenceEntry previous) { + this.previousAccess = previous; + } + } + + static class StrongEntry + extends AbstractReferenceEntry { + final K key; + final int hash; + final ReferenceEntry next; + volatile ValueReference valueReference = LocalCache.unset(); + + StrongEntry(K key, int hash, @Nullable ReferenceEntry next) { + this.key = key; + this.hash = hash; + this.next = next; + } + + @Override + public K getKey() { + return this.key; + } + + @Override + public ValueReference getValueReference() { + return this.valueReference; + } + + @Override + public void setValueReference(ValueReference valueReference) { + this.valueReference = valueReference; + } + + @Override + public int getHash() { + return this.hash; + } + + @Override + public ReferenceEntry getNext() { + return this.next; + } + } + + static abstract class AbstractReferenceEntry + implements ReferenceEntry { + AbstractReferenceEntry() { + } + + @Override + public ValueReference getValueReference() { + throw new UnsupportedOperationException(); + } + + @Override + public void setValueReference(ValueReference valueReference) { + throw new UnsupportedOperationException(); + } + + @Override + public ReferenceEntry getNext() { + throw new UnsupportedOperationException(); + } + + @Override + public int getHash() { + throw new UnsupportedOperationException(); + } + + @Override + public K getKey() { + throw new UnsupportedOperationException(); + } + + @Override + public long getAccessTime() { + throw new UnsupportedOperationException(); + } + + @Override + public void setAccessTime(long time) { + throw new UnsupportedOperationException(); + } + + @Override + public ReferenceEntry getNextInAccessQueue() { + throw new UnsupportedOperationException(); + } + + @Override + public void setNextInAccessQueue(ReferenceEntry next) { + throw new UnsupportedOperationException(); + } + + @Override + public ReferenceEntry getPreviousInAccessQueue() { + throw new UnsupportedOperationException(); + } + + @Override + public void setPreviousInAccessQueue(ReferenceEntry previous) { + throw new UnsupportedOperationException(); + } + + @Override + public long getWriteTime() { + throw new UnsupportedOperationException(); + } + + @Override + public void setWriteTime(long time) { + throw new UnsupportedOperationException(); + } + + @Override + public ReferenceEntry getNextInWriteQueue() { + throw new UnsupportedOperationException(); + } + + @Override + public void setNextInWriteQueue(ReferenceEntry next) { + throw new UnsupportedOperationException(); + } + + @Override + public ReferenceEntry getPreviousInWriteQueue() { + throw new UnsupportedOperationException(); + } + + @Override + public void setPreviousInWriteQueue(ReferenceEntry previous) { + throw new UnsupportedOperationException(); + } + } + + private static enum NullEntry implements ReferenceEntry + { + INSTANCE; + + + @Override + public ValueReference getValueReference() { + return null; + } + + @Override + public void setValueReference(ValueReference valueReference) { + } + + @Override + public ReferenceEntry getNext() { + return null; + } + + @Override + public int getHash() { + return 0; + } + + @Override + public Object getKey() { + return null; + } + + @Override + public long getAccessTime() { + return 0L; + } + + @Override + public void setAccessTime(long time) { + } + + @Override + public ReferenceEntry getNextInAccessQueue() { + return this; + } + + @Override + public void setNextInAccessQueue(ReferenceEntry next) { + } + + @Override + public ReferenceEntry getPreviousInAccessQueue() { + return this; + } + + @Override + public void setPreviousInAccessQueue(ReferenceEntry previous) { + } + + @Override + public long getWriteTime() { + return 0L; + } + + @Override + public void setWriteTime(long time) { + } + + @Override + public ReferenceEntry getNextInWriteQueue() { + return this; + } + + @Override + public void setNextInWriteQueue(ReferenceEntry next) { + } + + @Override + public ReferenceEntry getPreviousInWriteQueue() { + return this; + } + + @Override + public void setPreviousInWriteQueue(ReferenceEntry previous) { + } + } + + static interface ReferenceEntry { + public ValueReference getValueReference(); + + public void setValueReference(ValueReference var1); + + @Nullable + public ReferenceEntry getNext(); + + public int getHash(); + + @Nullable + public K getKey(); + + public long getAccessTime(); + + public void setAccessTime(long var1); + + public ReferenceEntry getNextInAccessQueue(); + + public void setNextInAccessQueue(ReferenceEntry var1); + + public ReferenceEntry getPreviousInAccessQueue(); + + public void setPreviousInAccessQueue(ReferenceEntry var1); + + public long getWriteTime(); + + public void setWriteTime(long var1); + + public ReferenceEntry getNextInWriteQueue(); + + public void setNextInWriteQueue(ReferenceEntry var1); + + public ReferenceEntry getPreviousInWriteQueue(); + + public void setPreviousInWriteQueue(ReferenceEntry var1); + } + + static interface ValueReference { + @Nullable + public V get(); + + public V waitForValue() throws ExecutionException; + + public int getWeight(); + + @Nullable + public ReferenceEntry getEntry(); + + public ValueReference copyFor(ReferenceQueue var1, @Nullable V var2, ReferenceEntry var3); + + public void notifyNewValue(@Nullable V var1); + + public boolean isLoading(); + + public boolean isActive(); + } + + static enum EntryFactory { + STRONG{ + + @Override + ReferenceEntry newEntry(Segment segment, K key, int hash, @Nullable ReferenceEntry next) { + return new StrongEntry(key, hash, next); + } + } + , + STRONG_ACCESS{ + + @Override + ReferenceEntry newEntry(Segment segment, K key, int hash, @Nullable ReferenceEntry next) { + return new StrongAccessEntry(key, hash, next); + } + + @Override + ReferenceEntry copyEntry(Segment segment, ReferenceEntry original, ReferenceEntry newNext) { + ReferenceEntry newEntry = super.copyEntry(segment, original, newNext); + this.copyAccessEntry(original, newEntry); + return newEntry; + } + } + , + STRONG_WRITE{ + + @Override + ReferenceEntry newEntry(Segment segment, K key, int hash, @Nullable ReferenceEntry next) { + return new StrongWriteEntry(key, hash, next); + } + + @Override + ReferenceEntry copyEntry(Segment segment, ReferenceEntry original, ReferenceEntry newNext) { + ReferenceEntry newEntry = super.copyEntry(segment, original, newNext); + this.copyWriteEntry(original, newEntry); + return newEntry; + } + } + , + STRONG_ACCESS_WRITE{ + + @Override + ReferenceEntry newEntry(Segment segment, K key, int hash, @Nullable ReferenceEntry next) { + return new StrongAccessWriteEntry(key, hash, next); + } + + @Override + ReferenceEntry copyEntry(Segment segment, ReferenceEntry original, ReferenceEntry newNext) { + ReferenceEntry newEntry = super.copyEntry(segment, original, newNext); + this.copyAccessEntry(original, newEntry); + this.copyWriteEntry(original, newEntry); + return newEntry; + } + } + , + WEAK{ + + @Override + ReferenceEntry newEntry(Segment segment, K key, int hash, @Nullable ReferenceEntry next) { + return new WeakEntry(segment.keyReferenceQueue, key, hash, next); + } + } + , + WEAK_ACCESS{ + + @Override + ReferenceEntry newEntry(Segment segment, K key, int hash, @Nullable ReferenceEntry next) { + return new WeakAccessEntry(segment.keyReferenceQueue, key, hash, next); + } + + @Override + ReferenceEntry copyEntry(Segment segment, ReferenceEntry original, ReferenceEntry newNext) { + ReferenceEntry newEntry = super.copyEntry(segment, original, newNext); + this.copyAccessEntry(original, newEntry); + return newEntry; + } + } + , + WEAK_WRITE{ + + @Override + ReferenceEntry newEntry(Segment segment, K key, int hash, @Nullable ReferenceEntry next) { + return new WeakWriteEntry(segment.keyReferenceQueue, key, hash, next); + } + + @Override + ReferenceEntry copyEntry(Segment segment, ReferenceEntry original, ReferenceEntry newNext) { + ReferenceEntry newEntry = super.copyEntry(segment, original, newNext); + this.copyWriteEntry(original, newEntry); + return newEntry; + } + } + , + WEAK_ACCESS_WRITE{ + + @Override + ReferenceEntry newEntry(Segment segment, K key, int hash, @Nullable ReferenceEntry next) { + return new WeakAccessWriteEntry(segment.keyReferenceQueue, key, hash, next); + } + + @Override + ReferenceEntry copyEntry(Segment segment, ReferenceEntry original, ReferenceEntry newNext) { + ReferenceEntry newEntry = super.copyEntry(segment, original, newNext); + this.copyAccessEntry(original, newEntry); + this.copyWriteEntry(original, newEntry); + return newEntry; + } + }; + + static final int ACCESS_MASK = 1; + static final int WRITE_MASK = 2; + static final int WEAK_MASK = 4; + static final EntryFactory[] factories; + + static EntryFactory getFactory(Strength keyStrength, boolean usesAccessQueue, boolean usesWriteQueue) { + int flags = (keyStrength == Strength.WEAK ? 4 : 0) | (usesAccessQueue ? 1 : 0) | (usesWriteQueue ? 2 : 0); + return factories[flags]; + } + + abstract ReferenceEntry newEntry(Segment var1, K var2, int var3, @Nullable ReferenceEntry var4); + + ReferenceEntry copyEntry(Segment segment, ReferenceEntry original, ReferenceEntry newNext) { + return this.newEntry(segment, original.getKey(), original.getHash(), newNext); + } + + void copyAccessEntry(ReferenceEntry original, ReferenceEntry newEntry) { + newEntry.setAccessTime(original.getAccessTime()); + LocalCache.connectAccessOrder(original.getPreviousInAccessQueue(), newEntry); + LocalCache.connectAccessOrder(newEntry, original.getNextInAccessQueue()); + LocalCache.nullifyAccessOrder(original); + } + + void copyWriteEntry(ReferenceEntry original, ReferenceEntry newEntry) { + newEntry.setWriteTime(original.getWriteTime()); + LocalCache.connectWriteOrder(original.getPreviousInWriteQueue(), newEntry); + LocalCache.connectWriteOrder(newEntry, original.getNextInWriteQueue()); + LocalCache.nullifyWriteOrder(original); + } + + static { + factories = new EntryFactory[]{STRONG, STRONG_ACCESS, STRONG_WRITE, STRONG_ACCESS_WRITE, WEAK, WEAK_ACCESS, WEAK_WRITE, WEAK_ACCESS_WRITE}; + } + } + + static enum Strength { + STRONG{ + + @Override + ValueReference referenceValue(Segment segment, ReferenceEntry entry, V value, int weight) { + return weight == 1 ? new StrongValueReference(value) : new WeightedStrongValueReference(value, weight); + } + + @Override + Equivalence defaultEquivalence() { + return Equivalence.equals(); + } + } + , + SOFT{ + + @Override + ValueReference referenceValue(Segment segment, ReferenceEntry entry, V value, int weight) { + return weight == 1 ? new SoftValueReference(segment.valueReferenceQueue, value, entry) : new WeightedSoftValueReference(segment.valueReferenceQueue, value, entry, weight); + } + + @Override + Equivalence defaultEquivalence() { + return Equivalence.identity(); + } + } + , + WEAK{ + + @Override + ValueReference referenceValue(Segment segment, ReferenceEntry entry, V value, int weight) { + return weight == 1 ? new WeakValueReference(segment.valueReferenceQueue, value, entry) : new WeightedWeakValueReference(segment.valueReferenceQueue, value, entry, weight); + } + + @Override + Equivalence defaultEquivalence() { + return Equivalence.identity(); + } + }; + + + abstract ValueReference referenceValue(Segment var1, ReferenceEntry var2, V var3, int var4); + + abstract Equivalence defaultEquivalence(); + } +} diff --git a/src/com/google/common/cache/LongAddable.java b/src/com/google/common/cache/LongAddable.java new file mode 100644 index 0000000..8870c85 --- /dev/null +++ b/src/com/google/common/cache/LongAddable.java @@ -0,0 +1,15 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.cache; + +import com.google.common.annotations.GwtCompatible; + +@GwtCompatible +interface LongAddable { + public void increment(); + + public void add(long var1); + + public long sum(); +} diff --git a/src/com/google/common/cache/LongAddables.java b/src/com/google/common/cache/LongAddables.java new file mode 100644 index 0000000..998fef6 --- /dev/null +++ b/src/com/google/common/cache/LongAddables.java @@ -0,0 +1,68 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.cache; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Supplier; +import com.google.common.cache.LongAddable; +import com.google.common.cache.LongAdder; +import java.util.concurrent.atomic.AtomicLong; + +@GwtCompatible(emulated=true) +final class LongAddables { + private static final Supplier SUPPLIER; + + LongAddables() { + } + + public static LongAddable create() { + return SUPPLIER.get(); + } + + static { + Supplier supplier; + try { + new LongAdder(); + supplier = new Supplier(){ + + @Override + public LongAddable get() { + return new LongAdder(); + } + }; + } + catch (Throwable t) { + supplier = new Supplier(){ + + @Override + public LongAddable get() { + return new PureJavaLongAddable(); + } + }; + } + SUPPLIER = supplier; + } + + private static final class PureJavaLongAddable + extends AtomicLong + implements LongAddable { + private PureJavaLongAddable() { + } + + @Override + public void increment() { + this.getAndIncrement(); + } + + @Override + public void add(long x) { + this.getAndAdd(x); + } + + @Override + public long sum() { + return this.get(); + } + } +} diff --git a/src/com/google/common/cache/LongAdder.java b/src/com/google/common/cache/LongAdder.java new file mode 100644 index 0000000..fa93bd5 --- /dev/null +++ b/src/com/google/common/cache/LongAdder.java @@ -0,0 +1,117 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.cache; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.cache.LongAddable; +import com.google.common.cache.Striped64; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.io.Serializable; + +@GwtCompatible(emulated=true) +final class LongAdder +extends Striped64 +implements Serializable, +LongAddable { + private static final long serialVersionUID = 7249069246863182397L; + + @Override + final long fn(long v, long x) { + return v + x; + } + + @Override + public void add(long x) { + long b; + Striped64.Cell[] as = this.cells; + if (this.cells != null || !this.casBase(b = this.base, b + x)) { + long v; + Striped64.Cell a; + int n; + boolean uncontended = true; + int[] hc = (int[])threadHashCode.get(); + if (hc == null || as == null || (n = as.length) < 1 || (a = as[n - 1 & hc[0]]) == null || !(uncontended = a.cas(v = a.value, v + x))) { + this.retryUpdate(x, hc, uncontended); + } + } + } + + @Override + public void increment() { + this.add(1L); + } + + public void decrement() { + this.add(-1L); + } + + @Override + public long sum() { + long sum = this.base; + Striped64.Cell[] as = this.cells; + if (as != null) { + for (Striped64.Cell a : as) { + if (a == null) continue; + sum += a.value; + } + } + return sum; + } + + public void reset() { + this.internalReset(0L); + } + + public long sumThenReset() { + long sum = this.base; + Striped64.Cell[] as = this.cells; + this.base = 0L; + if (as != null) { + for (Striped64.Cell a : as) { + if (a == null) continue; + sum += a.value; + a.value = 0L; + } + } + return sum; + } + + public String toString() { + return Long.toString(this.sum()); + } + + @Override + public long longValue() { + return this.sum(); + } + + @Override + public int intValue() { + return (int)this.sum(); + } + + @Override + public float floatValue() { + return this.sum(); + } + + @Override + public double doubleValue() { + return this.sum(); + } + + private void writeObject(ObjectOutputStream s) throws IOException { + s.defaultWriteObject(); + s.writeLong(this.sum()); + } + + private void readObject(ObjectInputStream s) throws IOException, ClassNotFoundException { + s.defaultReadObject(); + this.busy = 0; + this.cells = null; + this.base = s.readLong(); + } +} diff --git a/src/com/google/common/cache/RemovalCause.java b/src/com/google/common/cache/RemovalCause.java new file mode 100644 index 0000000..98992b6 --- /dev/null +++ b/src/com/google/common/cache/RemovalCause.java @@ -0,0 +1,54 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.cache; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; + +@Beta +@GwtCompatible +public enum RemovalCause { + EXPLICIT{ + + @Override + boolean wasEvicted() { + return false; + } + } + , + REPLACED{ + + @Override + boolean wasEvicted() { + return false; + } + } + , + COLLECTED{ + + @Override + boolean wasEvicted() { + return true; + } + } + , + EXPIRED{ + + @Override + boolean wasEvicted() { + return true; + } + } + , + SIZE{ + + @Override + boolean wasEvicted() { + return true; + } + }; + + + abstract boolean wasEvicted(); +} diff --git a/src/com/google/common/cache/RemovalListener.java b/src/com/google/common/cache/RemovalListener.java new file mode 100644 index 0000000..9678320 --- /dev/null +++ b/src/com/google/common/cache/RemovalListener.java @@ -0,0 +1,14 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.cache; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.cache.RemovalNotification; + +@Beta +@GwtCompatible +public interface RemovalListener { + public void onRemoval(RemovalNotification var1); +} diff --git a/src/com/google/common/cache/RemovalListeners.java b/src/com/google/common/cache/RemovalListeners.java new file mode 100644 index 0000000..ff777b7 --- /dev/null +++ b/src/com/google/common/cache/RemovalListeners.java @@ -0,0 +1,34 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.cache; + +import com.google.common.annotations.Beta; +import com.google.common.base.Preconditions; +import com.google.common.cache.RemovalListener; +import com.google.common.cache.RemovalNotification; +import java.util.concurrent.Executor; + +@Beta +public final class RemovalListeners { + private RemovalListeners() { + } + + public static RemovalListener asynchronous(final RemovalListener listener, final Executor executor) { + Preconditions.checkNotNull(listener); + Preconditions.checkNotNull(executor); + return new RemovalListener(){ + + @Override + public void onRemoval(final RemovalNotification notification) { + executor.execute(new Runnable(){ + + @Override + public void run() { + listener.onRemoval(notification); + } + }); + } + }; + } +} diff --git a/src/com/google/common/cache/RemovalNotification.java b/src/com/google/common/cache/RemovalNotification.java new file mode 100644 index 0000000..901ffce --- /dev/null +++ b/src/com/google/common/cache/RemovalNotification.java @@ -0,0 +1,77 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.cache; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Objects; +import com.google.common.base.Preconditions; +import com.google.common.cache.RemovalCause; +import java.util.Map; +import javax.annotation.Nullable; + +@Beta +@GwtCompatible +public final class RemovalNotification +implements Map.Entry { + @Nullable + private final K key; + @Nullable + private final V value; + private final RemovalCause cause; + private static final long serialVersionUID = 0L; + + RemovalNotification(@Nullable K key, @Nullable V value, RemovalCause cause) { + this.key = key; + this.value = value; + this.cause = Preconditions.checkNotNull(cause); + } + + public RemovalCause getCause() { + return this.cause; + } + + public boolean wasEvicted() { + return this.cause.wasEvicted(); + } + + @Override + @Nullable + public K getKey() { + return this.key; + } + + @Override + @Nullable + public V getValue() { + return this.value; + } + + @Override + public final V setValue(V value) { + throw new UnsupportedOperationException(); + } + + @Override + public boolean equals(@Nullable Object object) { + if (object instanceof Map.Entry) { + Map.Entry that = (Map.Entry)object; + return Objects.equal(this.getKey(), that.getKey()) && Objects.equal(this.getValue(), that.getValue()); + } + return false; + } + + @Override + public int hashCode() { + K k = this.getKey(); + V v = this.getValue(); + return (k == null ? 0 : k.hashCode()) ^ (v == null ? 0 : v.hashCode()); + } + + public String toString() { + String string = String.valueOf(String.valueOf(this.getKey())); + String string2 = String.valueOf(String.valueOf(this.getValue())); + return new StringBuilder(1 + string.length() + string2.length()).append(string).append("=").append(string2).toString(); + } +} diff --git a/src/com/google/common/cache/Striped64.java b/src/com/google/common/cache/Striped64.java new file mode 100644 index 0000000..8ad45f0 --- /dev/null +++ b/src/com/google/common/cache/Striped64.java @@ -0,0 +1,224 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.cache; + +import java.lang.reflect.Field; +import java.security.AccessController; +import java.security.PrivilegedActionException; +import java.security.PrivilegedExceptionAction; +import java.util.Random; +import sun.misc.Unsafe; + +abstract class Striped64 +extends Number { + static final ThreadLocal threadHashCode = new ThreadLocal(); + static final Random rng = new Random(); + static final int NCPU = Runtime.getRuntime().availableProcessors(); + volatile transient Cell[] cells; + volatile transient long base; + volatile transient int busy; + private static final Unsafe UNSAFE; + private static final long baseOffset; + private static final long busyOffset; + + Striped64() { + } + + final boolean casBase(long cmp, long val) { + return UNSAFE.compareAndSwapLong(this, baseOffset, cmp, val); + } + + final boolean casBusy() { + return UNSAFE.compareAndSwapInt(this, busyOffset, 0, 1); + } + + abstract long fn(long var1, long var3); + + /* + * WARNING - Removed try catching itself - possible behaviour change. + * Enabled force condition propagation + * Lifted jumps to return sites + */ + final void retryUpdate(long x, int[] hc, boolean wasUncontended) { + int h; + if (hc == null) { + hc = new int[1]; + threadHashCode.set(hc); + int r = rng.nextInt(); + hc[0] = r == 0 ? 1 : r; + h = hc[0]; + } else { + h = hc[0]; + } + boolean collide = false; + while (true) { + long v; + int n; + Cell[] as = this.cells; + if (this.cells != null && (n = as.length) > 0) { + Cell a = as[n - 1 & h]; + if (a == null) { + if (this.busy == 0) { + Cell r = new Cell(x); + if (this.busy == 0 && this.casBusy()) { + boolean created = false; + try { + int j; + int m; + Cell[] rs = this.cells; + if (this.cells != null && (m = rs.length) > 0 && rs[j = m - 1 & h] == null) { + rs[j] = r; + created = true; + } + } + finally { + this.busy = 0; + } + if (!created) continue; + return; + } + } + collide = false; + } else if (!wasUncontended) { + wasUncontended = true; + } else { + v = a.value; + if (a.cas(v, this.fn(v, x))) return; + if (n >= NCPU || this.cells != as) { + collide = false; + } else if (!collide) { + collide = true; + } else if (this.busy == 0 && this.casBusy()) { + try { + if (this.cells == as) { + Cell[] rs = new Cell[n << 1]; + for (int i = 0; i < n; ++i) { + rs[i] = as[i]; + } + this.cells = rs; + } + } + finally { + this.busy = 0; + } + collide = false; + continue; + } + } + h ^= h << 13; + h ^= h >>> 17; + h ^= h << 5; + hc[0] = h; + continue; + } + if (this.busy == 0 && this.cells == as && this.casBusy()) { + boolean init = false; + try { + if (this.cells == as) { + Cell[] rs = new Cell[2]; + rs[h & 1] = new Cell(x); + this.cells = rs; + init = true; + } + } + finally { + this.busy = 0; + } + if (!init) continue; + return; + } + v = this.base; + if (this.casBase(v, this.fn(v, x))) return; + } + } + + final void internalReset(long initialValue) { + Cell[] as = this.cells; + this.base = initialValue; + if (as != null) { + for (Cell a : as) { + if (a == null) continue; + a.value = initialValue; + } + } + } + + private static Unsafe getUnsafe() { + try { + return Unsafe.getUnsafe(); + } + catch (SecurityException tryReflectionInstead) { + try { + return AccessController.doPrivileged(new PrivilegedExceptionAction(){ + + @Override + public Unsafe run() throws Exception { + Class k = Unsafe.class; + for (Field f : k.getDeclaredFields()) { + f.setAccessible(true); + Object x = f.get(null); + if (!k.isInstance(x)) continue; + return (Unsafe)k.cast(x); + } + throw new NoSuchFieldError("the Unsafe"); + } + }); + } + catch (PrivilegedActionException e) { + throw new RuntimeException("Could not initialize intrinsics", e.getCause()); + } + } + } + + static { + try { + UNSAFE = Striped64.getUnsafe(); + Class sk = Striped64.class; + baseOffset = UNSAFE.objectFieldOffset(sk.getDeclaredField("base")); + busyOffset = UNSAFE.objectFieldOffset(sk.getDeclaredField("busy")); + } + catch (Exception e) { + throw new Error(e); + } + } + + static final class Cell { + volatile long p0; + volatile long p1; + volatile long p2; + volatile long p3; + volatile long p4; + volatile long p5; + volatile long p6; + volatile long value; + volatile long q0; + volatile long q1; + volatile long q2; + volatile long q3; + volatile long q4; + volatile long q5; + volatile long q6; + private static final Unsafe UNSAFE; + private static final long valueOffset; + + Cell(long x) { + this.value = x; + } + + final boolean cas(long cmp, long val) { + return UNSAFE.compareAndSwapLong(this, valueOffset, cmp, val); + } + + static { + try { + UNSAFE = Striped64.getUnsafe(); + Class ak = Cell.class; + valueOffset = UNSAFE.objectFieldOffset(ak.getDeclaredField("value")); + } + catch (Exception e) { + throw new Error(e); + } + } + } +} diff --git a/src/com/google/common/cache/Weigher.java b/src/com/google/common/cache/Weigher.java new file mode 100644 index 0000000..397a3d7 --- /dev/null +++ b/src/com/google/common/cache/Weigher.java @@ -0,0 +1,13 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.cache; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; + +@Beta +@GwtCompatible +public interface Weigher { + public int weigh(K var1, V var2); +} diff --git a/src/com/google/common/cache/package-info.java b/src/com/google/common/cache/package-info.java new file mode 100644 index 0000000..98e3b2a --- /dev/null +++ b/src/com/google/common/cache/package-info.java @@ -0,0 +1,8 @@ +/* + * Decompiled with CFR 0.152. + */ +@ParametersAreNonnullByDefault +package com.google.common.cache; + +import javax.annotation.ParametersAreNonnullByDefault; + diff --git a/src/com/google/common/collect/AbstractBiMap.java b/src/com/google/common/collect/AbstractBiMap.java new file mode 100644 index 0000000..b52343c --- /dev/null +++ b/src/com/google/common/collect/AbstractBiMap.java @@ -0,0 +1,382 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.base.Objects; +import com.google.common.base.Preconditions; +import com.google.common.collect.BiMap; +import com.google.common.collect.CollectPreconditions; +import com.google.common.collect.ForwardingMap; +import com.google.common.collect.ForwardingMapEntry; +import com.google.common.collect.ForwardingSet; +import com.google.common.collect.Maps; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.io.Serializable; +import java.util.Collection; +import java.util.Iterator; +import java.util.Map; +import java.util.Set; +import javax.annotation.Nullable; + +@GwtCompatible(emulated=true) +abstract class AbstractBiMap +extends ForwardingMap +implements BiMap, +Serializable { + private transient Map delegate; + transient AbstractBiMap inverse; + private transient Set keySet; + private transient Set valueSet; + private transient Set> entrySet; + @GwtIncompatible(value="Not needed in emulated source.") + private static final long serialVersionUID = 0L; + + AbstractBiMap(Map forward, Map backward) { + this.setDelegates(forward, backward); + } + + private AbstractBiMap(Map backward, AbstractBiMap forward) { + this.delegate = backward; + this.inverse = forward; + } + + @Override + protected Map delegate() { + return this.delegate; + } + + K checkKey(@Nullable K key) { + return key; + } + + V checkValue(@Nullable V value) { + return value; + } + + void setDelegates(Map forward, Map backward) { + Preconditions.checkState(this.delegate == null); + Preconditions.checkState(this.inverse == null); + Preconditions.checkArgument(forward.isEmpty()); + Preconditions.checkArgument(backward.isEmpty()); + Preconditions.checkArgument(forward != backward); + this.delegate = forward; + this.inverse = new Inverse(backward, this); + } + + void setInverse(AbstractBiMap inverse) { + this.inverse = inverse; + } + + @Override + public boolean containsValue(@Nullable Object value) { + return this.inverse.containsKey(value); + } + + @Override + public V put(@Nullable K key, @Nullable V value) { + return this.putInBothMaps(key, value, false); + } + + @Override + public V forcePut(@Nullable K key, @Nullable V value) { + return this.putInBothMaps(key, value, true); + } + + private V putInBothMaps(@Nullable K key, @Nullable V value, boolean force) { + this.checkKey(key); + this.checkValue(value); + boolean containedKey = this.containsKey(key); + if (containedKey && Objects.equal(value, this.get(key))) { + return value; + } + if (force) { + this.inverse().remove(value); + } else { + Preconditions.checkArgument(!this.containsValue(value), "value already present: %s", value); + } + V oldValue = this.delegate.put(key, value); + this.updateInverseMap(key, containedKey, oldValue, value); + return oldValue; + } + + private void updateInverseMap(K key, boolean containedKey, V oldValue, V newValue) { + if (containedKey) { + this.removeFromInverseMap(oldValue); + } + this.inverse.delegate.put(newValue, key); + } + + @Override + public V remove(@Nullable Object key) { + return this.containsKey(key) ? (V)this.removeFromBothMaps(key) : null; + } + + private V removeFromBothMaps(Object key) { + V oldValue = this.delegate.remove(key); + this.removeFromInverseMap(oldValue); + return oldValue; + } + + private void removeFromInverseMap(V oldValue) { + this.inverse.delegate.remove(oldValue); + } + + @Override + public void putAll(Map map) { + for (Map.Entry entry : map.entrySet()) { + this.put(entry.getKey(), entry.getValue()); + } + } + + @Override + public void clear() { + this.delegate.clear(); + this.inverse.delegate.clear(); + } + + @Override + public BiMap inverse() { + return this.inverse; + } + + @Override + public Set keySet() { + KeySet result = this.keySet; + return result == null ? (this.keySet = new KeySet()) : result; + } + + @Override + public Set values() { + ValueSet result = this.valueSet; + return result == null ? (this.valueSet = new ValueSet()) : result; + } + + @Override + public Set> entrySet() { + EntrySet result = this.entrySet; + return result == null ? (this.entrySet = new EntrySet()) : result; + } + + private static class Inverse + extends AbstractBiMap { + @GwtIncompatible(value="Not needed in emulated source.") + private static final long serialVersionUID = 0L; + + private Inverse(Map backward, AbstractBiMap forward) { + super(backward, forward); + } + + @Override + K checkKey(K key) { + return this.inverse.checkValue(key); + } + + @Override + V checkValue(V value) { + return this.inverse.checkKey(value); + } + + @GwtIncompatible(value="java.io.ObjectOuputStream") + private void writeObject(ObjectOutputStream stream) throws IOException { + stream.defaultWriteObject(); + stream.writeObject(this.inverse()); + } + + @GwtIncompatible(value="java.io.ObjectInputStream") + private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException { + stream.defaultReadObject(); + this.setInverse((AbstractBiMap)stream.readObject()); + } + + @GwtIncompatible(value="Not needed in the emulated source.") + Object readResolve() { + return this.inverse().inverse(); + } + } + + private class EntrySet + extends ForwardingSet> { + final Set> esDelegate; + + private EntrySet() { + this.esDelegate = AbstractBiMap.this.delegate.entrySet(); + } + + @Override + protected Set> delegate() { + return this.esDelegate; + } + + @Override + public void clear() { + AbstractBiMap.this.clear(); + } + + @Override + public boolean remove(Object object) { + if (!this.esDelegate.contains(object)) { + return false; + } + Map.Entry entry = (Map.Entry)object; + AbstractBiMap.this.inverse.delegate.remove(entry.getValue()); + this.esDelegate.remove(entry); + return true; + } + + @Override + public Iterator> iterator() { + final Iterator iterator = this.esDelegate.iterator(); + return new Iterator>(){ + Map.Entry entry; + + @Override + public boolean hasNext() { + return iterator.hasNext(); + } + + @Override + public Map.Entry next() { + this.entry = (Map.Entry)iterator.next(); + final Map.Entry finalEntry = this.entry; + return new ForwardingMapEntry(){ + + @Override + protected Map.Entry delegate() { + return finalEntry; + } + + @Override + public V setValue(V value) { + Preconditions.checkState(EntrySet.this.contains(this), "entry no longer in map"); + if (Objects.equal(value, this.getValue())) { + return value; + } + Preconditions.checkArgument(!AbstractBiMap.this.containsValue(value), "value already present: %s", value); + Object oldValue = finalEntry.setValue(value); + Preconditions.checkState(Objects.equal(value, AbstractBiMap.this.get(this.getKey())), "entry no longer in map"); + AbstractBiMap.this.updateInverseMap(this.getKey(), true, oldValue, value); + return oldValue; + } + }; + } + + @Override + public void remove() { + CollectPreconditions.checkRemove(this.entry != null); + Object value = this.entry.getValue(); + iterator.remove(); + AbstractBiMap.this.removeFromInverseMap(value); + } + }; + } + + @Override + public Object[] toArray() { + return this.standardToArray(); + } + + @Override + public T[] toArray(T[] array) { + return this.standardToArray(array); + } + + @Override + public boolean contains(Object o) { + return Maps.containsEntryImpl(this.delegate(), o); + } + + @Override + public boolean containsAll(Collection c) { + return this.standardContainsAll(c); + } + + @Override + public boolean removeAll(Collection c) { + return this.standardRemoveAll(c); + } + + @Override + public boolean retainAll(Collection c) { + return this.standardRetainAll(c); + } + } + + private class ValueSet + extends ForwardingSet { + final Set valuesDelegate; + + private ValueSet() { + this.valuesDelegate = AbstractBiMap.this.inverse.keySet(); + } + + @Override + protected Set delegate() { + return this.valuesDelegate; + } + + @Override + public Iterator iterator() { + return Maps.valueIterator(AbstractBiMap.this.entrySet().iterator()); + } + + @Override + public Object[] toArray() { + return this.standardToArray(); + } + + @Override + public T[] toArray(T[] array) { + return this.standardToArray(array); + } + + @Override + public String toString() { + return this.standardToString(); + } + } + + private class KeySet + extends ForwardingSet { + private KeySet() { + } + + @Override + protected Set delegate() { + return AbstractBiMap.this.delegate.keySet(); + } + + @Override + public void clear() { + AbstractBiMap.this.clear(); + } + + @Override + public boolean remove(Object key) { + if (!this.contains(key)) { + return false; + } + AbstractBiMap.this.removeFromBothMaps(key); + return true; + } + + @Override + public boolean removeAll(Collection keysToRemove) { + return this.standardRemoveAll(keysToRemove); + } + + @Override + public boolean retainAll(Collection keysToRetain) { + return this.standardRetainAll(keysToRetain); + } + + @Override + public Iterator iterator() { + return Maps.keyIterator(AbstractBiMap.this.entrySet().iterator()); + } + } +} diff --git a/src/com/google/common/collect/AbstractIndexedListIterator.java b/src/com/google/common/collect/AbstractIndexedListIterator.java new file mode 100644 index 0000000..975ecc0 --- /dev/null +++ b/src/com/google/common/collect/AbstractIndexedListIterator.java @@ -0,0 +1,64 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Preconditions; +import com.google.common.collect.UnmodifiableListIterator; +import java.util.NoSuchElementException; + +@GwtCompatible +abstract class AbstractIndexedListIterator +extends UnmodifiableListIterator { + private final int size; + private int position; + + protected abstract E get(int var1); + + protected AbstractIndexedListIterator(int size) { + this(size, 0); + } + + protected AbstractIndexedListIterator(int size, int position) { + Preconditions.checkPositionIndex(position, size); + this.size = size; + this.position = position; + } + + @Override + public final boolean hasNext() { + return this.position < this.size; + } + + @Override + public final E next() { + if (!this.hasNext()) { + throw new NoSuchElementException(); + } + return this.get(this.position++); + } + + @Override + public final int nextIndex() { + return this.position; + } + + @Override + public final boolean hasPrevious() { + return this.position > 0; + } + + @Override + public final E previous() { + if (!this.hasPrevious()) { + throw new NoSuchElementException(); + } + return this.get(--this.position); + } + + @Override + public final int previousIndex() { + return this.position - 1; + } +} diff --git a/src/com/google/common/collect/AbstractIterator.java b/src/com/google/common/collect/AbstractIterator.java new file mode 100644 index 0000000..961b64c --- /dev/null +++ b/src/com/google/common/collect/AbstractIterator.java @@ -0,0 +1,76 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Preconditions; +import com.google.common.collect.UnmodifiableIterator; +import java.util.NoSuchElementException; + +@GwtCompatible +public abstract class AbstractIterator +extends UnmodifiableIterator { + private State state = State.NOT_READY; + private T next; + + protected AbstractIterator() { + } + + protected abstract T computeNext(); + + protected final T endOfData() { + this.state = State.DONE; + return null; + } + + @Override + public final boolean hasNext() { + Preconditions.checkState(this.state != State.FAILED); + switch (this.state) { + case DONE: { + return false; + } + case READY: { + return true; + } + } + return this.tryToComputeNext(); + } + + private boolean tryToComputeNext() { + this.state = State.FAILED; + this.next = this.computeNext(); + if (this.state != State.DONE) { + this.state = State.READY; + return true; + } + return false; + } + + @Override + public final T next() { + if (!this.hasNext()) { + throw new NoSuchElementException(); + } + this.state = State.NOT_READY; + T result = this.next; + this.next = null; + return result; + } + + public final T peek() { + if (!this.hasNext()) { + throw new NoSuchElementException(); + } + return this.next; + } + + private static enum State { + READY, + NOT_READY, + DONE, + FAILED; + + } +} diff --git a/src/com/google/common/collect/AbstractListMultimap.java b/src/com/google/common/collect/AbstractListMultimap.java new file mode 100644 index 0000000..ae609db --- /dev/null +++ b/src/com/google/common/collect/AbstractListMultimap.java @@ -0,0 +1,62 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.collect.AbstractMapBasedMultimap; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ListMultimap; +import java.util.Collection; +import java.util.List; +import java.util.Map; +import javax.annotation.Nullable; + +@GwtCompatible +abstract class AbstractListMultimap +extends AbstractMapBasedMultimap +implements ListMultimap { + private static final long serialVersionUID = 6588350623831699109L; + + protected AbstractListMultimap(Map> map) { + super(map); + } + + @Override + abstract List createCollection(); + + @Override + List createUnmodifiableEmptyCollection() { + return ImmutableList.of(); + } + + @Override + public List get(@Nullable K key) { + return (List)super.get(key); + } + + @Override + public List removeAll(@Nullable Object key) { + return (List)super.removeAll(key); + } + + @Override + public List replaceValues(@Nullable K key, Iterable values) { + return (List)super.replaceValues(key, values); + } + + @Override + public boolean put(@Nullable K key, @Nullable V value) { + return super.put(key, value); + } + + @Override + public Map> asMap() { + return super.asMap(); + } + + @Override + public boolean equals(@Nullable Object object) { + return super.equals(object); + } +} diff --git a/src/com/google/common/collect/AbstractMapBasedMultimap.java b/src/com/google/common/collect/AbstractMapBasedMultimap.java new file mode 100644 index 0000000..7497d0a --- /dev/null +++ b/src/com/google/common/collect/AbstractMapBasedMultimap.java @@ -0,0 +1,1336 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.base.Preconditions; +import com.google.common.collect.AbstractMultimap; +import com.google.common.collect.CollectPreconditions; +import com.google.common.collect.Collections2; +import com.google.common.collect.Iterators; +import com.google.common.collect.Maps; +import com.google.common.collect.Sets; +import java.io.Serializable; +import java.util.AbstractCollection; +import java.util.Collection; +import java.util.Collections; +import java.util.Comparator; +import java.util.ConcurrentModificationException; +import java.util.Iterator; +import java.util.List; +import java.util.ListIterator; +import java.util.Map; +import java.util.NavigableMap; +import java.util.NavigableSet; +import java.util.RandomAccess; +import java.util.Set; +import java.util.SortedMap; +import java.util.SortedSet; +import javax.annotation.Nullable; + +@GwtCompatible(emulated=true) +abstract class AbstractMapBasedMultimap +extends AbstractMultimap +implements Serializable { + private transient Map> map; + private transient int totalSize; + private static final long serialVersionUID = 2447537837011683357L; + + protected AbstractMapBasedMultimap(Map> map) { + Preconditions.checkArgument(map.isEmpty()); + this.map = map; + } + + final void setMap(Map> map) { + this.map = map; + this.totalSize = 0; + for (Collection> values : map.values()) { + Preconditions.checkArgument(!values.isEmpty()); + this.totalSize += values.size(); + } + } + + Collection createUnmodifiableEmptyCollection() { + return this.unmodifiableCollectionSubclass(this.createCollection()); + } + + abstract Collection createCollection(); + + Collection createCollection(@Nullable K key) { + return this.createCollection(); + } + + Map> backingMap() { + return this.map; + } + + @Override + public int size() { + return this.totalSize; + } + + @Override + public boolean containsKey(@Nullable Object key) { + return this.map.containsKey(key); + } + + @Override + public boolean put(@Nullable K key, @Nullable V value) { + Collection collection = this.map.get(key); + if (collection == null) { + collection = this.createCollection(key); + if (collection.add(value)) { + ++this.totalSize; + this.map.put(key, collection); + return true; + } + throw new AssertionError((Object)"New Collection violated the Collection spec"); + } + if (collection.add(value)) { + ++this.totalSize; + return true; + } + return false; + } + + private Collection getOrCreateCollection(@Nullable K key) { + Collection collection = this.map.get(key); + if (collection == null) { + collection = this.createCollection(key); + this.map.put(key, collection); + } + return collection; + } + + @Override + public Collection replaceValues(@Nullable K key, Iterable values) { + Iterator iterator = values.iterator(); + if (!iterator.hasNext()) { + return this.removeAll(key); + } + Collection collection = this.getOrCreateCollection(key); + Collection oldValues = this.createCollection(); + oldValues.addAll(collection); + this.totalSize -= collection.size(); + collection.clear(); + while (iterator.hasNext()) { + if (!collection.add(iterator.next())) continue; + ++this.totalSize; + } + return this.unmodifiableCollectionSubclass(oldValues); + } + + @Override + public Collection removeAll(@Nullable Object key) { + Collection collection = this.map.remove(key); + if (collection == null) { + return this.createUnmodifiableEmptyCollection(); + } + Collection output = this.createCollection(); + output.addAll(collection); + this.totalSize -= collection.size(); + collection.clear(); + return this.unmodifiableCollectionSubclass(output); + } + + Collection unmodifiableCollectionSubclass(Collection collection) { + if (collection instanceof SortedSet) { + return Collections.unmodifiableSortedSet((SortedSet)collection); + } + if (collection instanceof Set) { + return Collections.unmodifiableSet((Set)collection); + } + if (collection instanceof List) { + return Collections.unmodifiableList((List)collection); + } + return Collections.unmodifiableCollection(collection); + } + + @Override + public void clear() { + for (Collection collection : this.map.values()) { + collection.clear(); + } + this.map.clear(); + this.totalSize = 0; + } + + @Override + public Collection get(@Nullable K key) { + Collection collection = this.map.get(key); + if (collection == null) { + collection = this.createCollection(key); + } + return this.wrapCollection(key, collection); + } + + Collection wrapCollection(@Nullable K key, Collection collection) { + if (collection instanceof SortedSet) { + return new WrappedSortedSet(key, (SortedSet)collection, null); + } + if (collection instanceof Set) { + return new WrappedSet(key, (Set)collection); + } + if (collection instanceof List) { + return this.wrapList(key, (List)collection, null); + } + return new WrappedCollection(key, collection, null); + } + + private List wrapList(@Nullable K key, List list, @Nullable WrappedCollection ancestor) { + return list instanceof RandomAccess ? new RandomAccessWrappedList(key, list, ancestor) : new WrappedList(key, list, ancestor); + } + + private Iterator iteratorOrListIterator(Collection collection) { + return collection instanceof List ? ((List)collection).listIterator() : collection.iterator(); + } + + @Override + Set createKeySet() { + return this.map instanceof SortedMap ? new SortedKeySet((SortedMap)this.map) : new KeySet(this.map); + } + + private int removeValuesForKey(Object key) { + Collection collection = Maps.safeRemove(this.map, key); + int count = 0; + if (collection != null) { + count = collection.size(); + collection.clear(); + this.totalSize -= count; + } + return count; + } + + @Override + public Collection values() { + return super.values(); + } + + @Override + Iterator valueIterator() { + return new Itr(){ + + @Override + V output(K key, V value) { + return value; + } + }; + } + + @Override + public Collection> entries() { + return super.entries(); + } + + @Override + Iterator> entryIterator() { + return new Itr>(){ + + @Override + Map.Entry output(K key, V value) { + return Maps.immutableEntry(key, value); + } + }; + } + + @Override + Map> createAsMap() { + return this.map instanceof SortedMap ? new SortedAsMap((SortedMap)this.map) : new AsMap(this.map); + } + + @GwtIncompatible(value="NavigableAsMap") + class NavigableAsMap + extends SortedAsMap + implements NavigableMap> { + NavigableAsMap(NavigableMap> submap) { + super(submap); + } + + NavigableMap> sortedMap() { + return (NavigableMap)super.sortedMap(); + } + + @Override + public Map.Entry> lowerEntry(K key) { + Map.Entry entry = this.sortedMap().lowerEntry(key); + return entry == null ? null : this.wrapEntry(entry); + } + + @Override + public K lowerKey(K key) { + return this.sortedMap().lowerKey(key); + } + + @Override + public Map.Entry> floorEntry(K key) { + Map.Entry entry = this.sortedMap().floorEntry(key); + return entry == null ? null : this.wrapEntry(entry); + } + + @Override + public K floorKey(K key) { + return this.sortedMap().floorKey(key); + } + + @Override + public Map.Entry> ceilingEntry(K key) { + Map.Entry entry = this.sortedMap().ceilingEntry(key); + return entry == null ? null : this.wrapEntry(entry); + } + + @Override + public K ceilingKey(K key) { + return this.sortedMap().ceilingKey(key); + } + + @Override + public Map.Entry> higherEntry(K key) { + Map.Entry entry = this.sortedMap().higherEntry(key); + return entry == null ? null : this.wrapEntry(entry); + } + + @Override + public K higherKey(K key) { + return this.sortedMap().higherKey(key); + } + + @Override + public Map.Entry> firstEntry() { + Map.Entry entry = this.sortedMap().firstEntry(); + return entry == null ? null : this.wrapEntry(entry); + } + + @Override + public Map.Entry> lastEntry() { + Map.Entry entry = this.sortedMap().lastEntry(); + return entry == null ? null : this.wrapEntry(entry); + } + + @Override + public Map.Entry> pollFirstEntry() { + return this.pollAsMapEntry(this.entrySet().iterator()); + } + + @Override + public Map.Entry> pollLastEntry() { + return this.pollAsMapEntry(this.descendingMap().entrySet().iterator()); + } + + Map.Entry> pollAsMapEntry(Iterator>> entryIterator) { + if (!entryIterator.hasNext()) { + return null; + } + Map.Entry entry = entryIterator.next(); + Collection output = AbstractMapBasedMultimap.this.createCollection(); + output.addAll(entry.getValue()); + entryIterator.remove(); + return Maps.immutableEntry(entry.getKey(), AbstractMapBasedMultimap.this.unmodifiableCollectionSubclass(output)); + } + + @Override + public NavigableMap> descendingMap() { + return new NavigableAsMap(this.sortedMap().descendingMap()); + } + + @Override + public NavigableSet keySet() { + return (NavigableSet)super.keySet(); + } + + @Override + NavigableSet createKeySet() { + return new NavigableKeySet(this.sortedMap()); + } + + @Override + public NavigableSet navigableKeySet() { + return this.keySet(); + } + + @Override + public NavigableSet descendingKeySet() { + return this.descendingMap().navigableKeySet(); + } + + @Override + public NavigableMap> subMap(K fromKey, K toKey) { + return this.subMap(fromKey, true, toKey, false); + } + + @Override + public NavigableMap> subMap(K fromKey, boolean fromInclusive, K toKey, boolean toInclusive) { + return new NavigableAsMap(this.sortedMap().subMap(fromKey, fromInclusive, toKey, toInclusive)); + } + + @Override + public NavigableMap> headMap(K toKey) { + return this.headMap(toKey, false); + } + + @Override + public NavigableMap> headMap(K toKey, boolean inclusive) { + return new NavigableAsMap(this.sortedMap().headMap(toKey, inclusive)); + } + + @Override + public NavigableMap> tailMap(K fromKey) { + return this.tailMap(fromKey, true); + } + + @Override + public NavigableMap> tailMap(K fromKey, boolean inclusive) { + return new NavigableAsMap(this.sortedMap().tailMap(fromKey, inclusive)); + } + } + + private class SortedAsMap + extends AsMap + implements SortedMap> { + SortedSet sortedKeySet; + + SortedAsMap(SortedMap> submap) { + super(submap); + } + + SortedMap> sortedMap() { + return (SortedMap)this.submap; + } + + @Override + public Comparator comparator() { + return this.sortedMap().comparator(); + } + + @Override + public K firstKey() { + return this.sortedMap().firstKey(); + } + + @Override + public K lastKey() { + return this.sortedMap().lastKey(); + } + + @Override + public SortedMap> headMap(K toKey) { + return new SortedAsMap(this.sortedMap().headMap(toKey)); + } + + @Override + public SortedMap> subMap(K fromKey, K toKey) { + return new SortedAsMap(this.sortedMap().subMap(fromKey, toKey)); + } + + @Override + public SortedMap> tailMap(K fromKey) { + return new SortedAsMap(this.sortedMap().tailMap(fromKey)); + } + + @Override + public SortedSet keySet() { + SortedSet result = this.sortedKeySet; + return result == null ? (this.sortedKeySet = this.createKeySet()) : result; + } + + @Override + SortedSet createKeySet() { + return new SortedKeySet(this.sortedMap()); + } + } + + private class AsMap + extends Maps.ImprovedAbstractMap> { + final transient Map> submap; + + AsMap(Map> submap) { + this.submap = submap; + } + + @Override + protected Set>> createEntrySet() { + return new AsMapEntries(); + } + + @Override + public boolean containsKey(Object key) { + return Maps.safeContainsKey(this.submap, key); + } + + @Override + public Collection get(Object key) { + Collection collection = Maps.safeGet(this.submap, key); + if (collection == null) { + return null; + } + Object k = key; + return AbstractMapBasedMultimap.this.wrapCollection(k, collection); + } + + @Override + public Set keySet() { + return AbstractMapBasedMultimap.this.keySet(); + } + + @Override + public int size() { + return this.submap.size(); + } + + @Override + public Collection remove(Object key) { + Collection collection = this.submap.remove(key); + if (collection == null) { + return null; + } + Collection output = AbstractMapBasedMultimap.this.createCollection(); + output.addAll(collection); + AbstractMapBasedMultimap.this.totalSize -= collection.size(); + collection.clear(); + return output; + } + + @Override + public boolean equals(@Nullable Object object) { + return this == object || this.submap.equals(object); + } + + @Override + public int hashCode() { + return this.submap.hashCode(); + } + + @Override + public String toString() { + return this.submap.toString(); + } + + @Override + public void clear() { + if (this.submap == AbstractMapBasedMultimap.this.map) { + AbstractMapBasedMultimap.this.clear(); + } else { + Iterators.clear(new AsMapIterator()); + } + } + + Map.Entry> wrapEntry(Map.Entry> entry) { + Object key = entry.getKey(); + return Maps.immutableEntry(key, AbstractMapBasedMultimap.this.wrapCollection(key, entry.getValue())); + } + + class AsMapIterator + implements Iterator>> { + final Iterator>> delegateIterator; + Collection collection; + + AsMapIterator() { + this.delegateIterator = AsMap.this.submap.entrySet().iterator(); + } + + @Override + public boolean hasNext() { + return this.delegateIterator.hasNext(); + } + + @Override + public Map.Entry> next() { + Map.Entry entry = this.delegateIterator.next(); + this.collection = entry.getValue(); + return AsMap.this.wrapEntry(entry); + } + + @Override + public void remove() { + this.delegateIterator.remove(); + AbstractMapBasedMultimap.this.totalSize -= this.collection.size(); + this.collection.clear(); + } + } + + class AsMapEntries + extends Maps.EntrySet> { + AsMapEntries() { + } + + @Override + Map> map() { + return AsMap.this; + } + + @Override + public Iterator>> iterator() { + return new AsMapIterator(); + } + + @Override + public boolean contains(Object o) { + return Collections2.safeContains(AsMap.this.submap.entrySet(), o); + } + + @Override + public boolean remove(Object o) { + if (!this.contains(o)) { + return false; + } + Map.Entry entry = (Map.Entry)o; + AbstractMapBasedMultimap.this.removeValuesForKey(entry.getKey()); + return true; + } + } + } + + private abstract class Itr + implements Iterator { + final Iterator>> keyIterator; + K key; + Collection collection; + Iterator valueIterator; + + Itr() { + this.keyIterator = AbstractMapBasedMultimap.this.map.entrySet().iterator(); + this.key = null; + this.collection = null; + this.valueIterator = Iterators.emptyModifiableIterator(); + } + + abstract T output(K var1, V var2); + + @Override + public boolean hasNext() { + return this.keyIterator.hasNext() || this.valueIterator.hasNext(); + } + + @Override + public T next() { + if (!this.valueIterator.hasNext()) { + Map.Entry mapEntry = this.keyIterator.next(); + this.key = mapEntry.getKey(); + this.collection = mapEntry.getValue(); + this.valueIterator = this.collection.iterator(); + } + return this.output(this.key, this.valueIterator.next()); + } + + @Override + public void remove() { + this.valueIterator.remove(); + if (this.collection.isEmpty()) { + this.keyIterator.remove(); + } + AbstractMapBasedMultimap.this.totalSize--; + } + } + + @GwtIncompatible(value="NavigableSet") + class NavigableKeySet + extends SortedKeySet + implements NavigableSet { + NavigableKeySet(NavigableMap> subMap) { + super(subMap); + } + + NavigableMap> sortedMap() { + return (NavigableMap)super.sortedMap(); + } + + @Override + public K lower(K k) { + return this.sortedMap().lowerKey(k); + } + + @Override + public K floor(K k) { + return this.sortedMap().floorKey(k); + } + + @Override + public K ceiling(K k) { + return this.sortedMap().ceilingKey(k); + } + + @Override + public K higher(K k) { + return this.sortedMap().higherKey(k); + } + + @Override + public K pollFirst() { + return Iterators.pollNext(this.iterator()); + } + + @Override + public K pollLast() { + return Iterators.pollNext(this.descendingIterator()); + } + + @Override + public NavigableSet descendingSet() { + return new NavigableKeySet(this.sortedMap().descendingMap()); + } + + @Override + public Iterator descendingIterator() { + return this.descendingSet().iterator(); + } + + @Override + public NavigableSet headSet(K toElement) { + return this.headSet((K)toElement, false); + } + + @Override + public NavigableSet headSet(K toElement, boolean inclusive) { + return new NavigableKeySet(this.sortedMap().headMap(toElement, inclusive)); + } + + @Override + public NavigableSet subSet(K fromElement, K toElement) { + return this.subSet((K)fromElement, true, (K)toElement, false); + } + + @Override + public NavigableSet subSet(K fromElement, boolean fromInclusive, K toElement, boolean toInclusive) { + return new NavigableKeySet(this.sortedMap().subMap(fromElement, fromInclusive, toElement, toInclusive)); + } + + @Override + public NavigableSet tailSet(K fromElement) { + return this.tailSet((K)fromElement, true); + } + + @Override + public NavigableSet tailSet(K fromElement, boolean inclusive) { + return new NavigableKeySet(this.sortedMap().tailMap(fromElement, inclusive)); + } + } + + private class SortedKeySet + extends KeySet + implements SortedSet { + SortedKeySet(SortedMap> subMap) { + super(subMap); + } + + SortedMap> sortedMap() { + return (SortedMap)super.map(); + } + + @Override + public Comparator comparator() { + return this.sortedMap().comparator(); + } + + @Override + public K first() { + return this.sortedMap().firstKey(); + } + + @Override + public SortedSet headSet(K toElement) { + return new SortedKeySet(this.sortedMap().headMap(toElement)); + } + + @Override + public K last() { + return this.sortedMap().lastKey(); + } + + @Override + public SortedSet subSet(K fromElement, K toElement) { + return new SortedKeySet(this.sortedMap().subMap(fromElement, toElement)); + } + + @Override + public SortedSet tailSet(K fromElement) { + return new SortedKeySet(this.sortedMap().tailMap(fromElement)); + } + } + + private class KeySet + extends Maps.KeySet> { + KeySet(Map> subMap) { + super(subMap); + } + + @Override + public Iterator iterator() { + final Iterator entryIterator = this.map().entrySet().iterator(); + return new Iterator(){ + Map.Entry> entry; + + @Override + public boolean hasNext() { + return entryIterator.hasNext(); + } + + @Override + public K next() { + this.entry = (Map.Entry)entryIterator.next(); + return this.entry.getKey(); + } + + @Override + public void remove() { + CollectPreconditions.checkRemove(this.entry != null); + Collection collection = this.entry.getValue(); + entryIterator.remove(); + AbstractMapBasedMultimap.this.totalSize -= collection.size(); + collection.clear(); + } + }; + } + + @Override + public boolean remove(Object key) { + int count = 0; + Collection collection = (Collection)this.map().remove(key); + if (collection != null) { + count = collection.size(); + collection.clear(); + AbstractMapBasedMultimap.this.totalSize -= count; + } + return count > 0; + } + + @Override + public void clear() { + Iterators.clear(this.iterator()); + } + + @Override + public boolean containsAll(Collection c) { + return this.map().keySet().containsAll(c); + } + + @Override + public boolean equals(@Nullable Object object) { + return this == object || this.map().keySet().equals(object); + } + + @Override + public int hashCode() { + return this.map().keySet().hashCode(); + } + } + + private class RandomAccessWrappedList + extends WrappedList + implements RandomAccess { + RandomAccessWrappedList(K key, @Nullable List delegate, WrappedCollection ancestor) { + super(key, delegate, ancestor); + } + } + + private class WrappedList + extends WrappedCollection + implements List { + WrappedList(K key, @Nullable List delegate, WrappedCollection ancestor) { + super(key, delegate, ancestor); + } + + List getListDelegate() { + return (List)this.getDelegate(); + } + + @Override + public boolean addAll(int index, Collection c) { + if (c.isEmpty()) { + return false; + } + int oldSize = this.size(); + boolean changed = this.getListDelegate().addAll(index, c); + if (changed) { + int newSize = this.getDelegate().size(); + AbstractMapBasedMultimap.this.totalSize += newSize - oldSize; + if (oldSize == 0) { + this.addToMap(); + } + } + return changed; + } + + @Override + public V get(int index) { + this.refreshIfEmpty(); + return this.getListDelegate().get(index); + } + + @Override + public V set(int index, V element) { + this.refreshIfEmpty(); + return this.getListDelegate().set(index, element); + } + + @Override + public void add(int index, V element) { + this.refreshIfEmpty(); + boolean wasEmpty = this.getDelegate().isEmpty(); + this.getListDelegate().add(index, element); + AbstractMapBasedMultimap.this.totalSize++; + if (wasEmpty) { + this.addToMap(); + } + } + + @Override + public V remove(int index) { + this.refreshIfEmpty(); + Object value = this.getListDelegate().remove(index); + AbstractMapBasedMultimap.this.totalSize--; + this.removeIfEmpty(); + return value; + } + + @Override + public int indexOf(Object o) { + this.refreshIfEmpty(); + return this.getListDelegate().indexOf(o); + } + + @Override + public int lastIndexOf(Object o) { + this.refreshIfEmpty(); + return this.getListDelegate().lastIndexOf(o); + } + + @Override + public ListIterator listIterator() { + this.refreshIfEmpty(); + return new WrappedListIterator(); + } + + @Override + public ListIterator listIterator(int index) { + this.refreshIfEmpty(); + return new WrappedListIterator(index); + } + + @Override + public List subList(int fromIndex, int toIndex) { + this.refreshIfEmpty(); + return AbstractMapBasedMultimap.this.wrapList(this.getKey(), this.getListDelegate().subList(fromIndex, toIndex), this.getAncestor() == null ? this : this.getAncestor()); + } + + /* + * Signature claims super is com.google.common.collect.AbstractMapBasedMultimap$WrappedCollection.WrappedIterator, not com.google.common.collect.AbstractMapBasedMultimap$WrappedCollection$WrappedIterator - discarding signature. + */ + private class WrappedListIterator + extends WrappedCollection.WrappedIterator + implements ListIterator { + WrappedListIterator() { + } + + public WrappedListIterator(int index) { + super(WrappedList.this.getListDelegate().listIterator(index)); + } + + private ListIterator getDelegateListIterator() { + return (ListIterator)this.getDelegateIterator(); + } + + @Override + public boolean hasPrevious() { + return this.getDelegateListIterator().hasPrevious(); + } + + public V previous() { + return this.getDelegateListIterator().previous(); + } + + @Override + public int nextIndex() { + return this.getDelegateListIterator().nextIndex(); + } + + @Override + public int previousIndex() { + return this.getDelegateListIterator().previousIndex(); + } + + public void set(V value) { + this.getDelegateListIterator().set(value); + } + + public void add(V value) { + boolean wasEmpty = WrappedList.this.isEmpty(); + this.getDelegateListIterator().add(value); + AbstractMapBasedMultimap.this.totalSize++; + if (wasEmpty) { + WrappedList.this.addToMap(); + } + } + } + } + + @GwtIncompatible(value="NavigableSet") + class WrappedNavigableSet + extends WrappedSortedSet + implements NavigableSet { + WrappedNavigableSet(K key, @Nullable NavigableSet delegate, WrappedCollection ancestor) { + super(key, delegate, ancestor); + } + + NavigableSet getSortedSetDelegate() { + return (NavigableSet)super.getSortedSetDelegate(); + } + + @Override + public V lower(V v) { + return this.getSortedSetDelegate().lower(v); + } + + @Override + public V floor(V v) { + return this.getSortedSetDelegate().floor(v); + } + + @Override + public V ceiling(V v) { + return this.getSortedSetDelegate().ceiling(v); + } + + @Override + public V higher(V v) { + return this.getSortedSetDelegate().higher(v); + } + + @Override + public V pollFirst() { + return Iterators.pollNext(this.iterator()); + } + + @Override + public V pollLast() { + return Iterators.pollNext(this.descendingIterator()); + } + + private NavigableSet wrap(NavigableSet wrapped) { + return new WrappedNavigableSet(this.key, wrapped, this.getAncestor() == null ? this : this.getAncestor()); + } + + @Override + public NavigableSet descendingSet() { + return this.wrap(this.getSortedSetDelegate().descendingSet()); + } + + @Override + public Iterator descendingIterator() { + return new WrappedCollection.WrappedIterator(this.getSortedSetDelegate().descendingIterator()); + } + + @Override + public NavigableSet subSet(V fromElement, boolean fromInclusive, V toElement, boolean toInclusive) { + return this.wrap(this.getSortedSetDelegate().subSet(fromElement, fromInclusive, toElement, toInclusive)); + } + + @Override + public NavigableSet headSet(V toElement, boolean inclusive) { + return this.wrap(this.getSortedSetDelegate().headSet(toElement, inclusive)); + } + + @Override + public NavigableSet tailSet(V fromElement, boolean inclusive) { + return this.wrap(this.getSortedSetDelegate().tailSet(fromElement, inclusive)); + } + } + + private class WrappedSortedSet + extends WrappedCollection + implements SortedSet { + WrappedSortedSet(K key, @Nullable SortedSet delegate, WrappedCollection ancestor) { + super(key, delegate, ancestor); + } + + SortedSet getSortedSetDelegate() { + return (SortedSet)this.getDelegate(); + } + + @Override + public Comparator comparator() { + return this.getSortedSetDelegate().comparator(); + } + + @Override + public V first() { + this.refreshIfEmpty(); + return this.getSortedSetDelegate().first(); + } + + @Override + public V last() { + this.refreshIfEmpty(); + return this.getSortedSetDelegate().last(); + } + + @Override + public SortedSet headSet(V toElement) { + this.refreshIfEmpty(); + return new WrappedSortedSet(this.getKey(), this.getSortedSetDelegate().headSet(toElement), this.getAncestor() == null ? this : this.getAncestor()); + } + + @Override + public SortedSet subSet(V fromElement, V toElement) { + this.refreshIfEmpty(); + return new WrappedSortedSet(this.getKey(), this.getSortedSetDelegate().subSet(fromElement, toElement), this.getAncestor() == null ? this : this.getAncestor()); + } + + @Override + public SortedSet tailSet(V fromElement) { + this.refreshIfEmpty(); + return new WrappedSortedSet(this.getKey(), this.getSortedSetDelegate().tailSet(fromElement), this.getAncestor() == null ? this : this.getAncestor()); + } + } + + private class WrappedSet + extends WrappedCollection + implements Set { + WrappedSet(K key, Set delegate) { + super(key, delegate, null); + } + + @Override + public boolean removeAll(Collection c) { + if (c.isEmpty()) { + return false; + } + int oldSize = this.size(); + boolean changed = Sets.removeAllImpl((Set)this.delegate, c); + if (changed) { + int newSize = this.delegate.size(); + AbstractMapBasedMultimap.this.totalSize += newSize - oldSize; + this.removeIfEmpty(); + } + return changed; + } + } + + private class WrappedCollection + extends AbstractCollection { + final K key; + Collection delegate; + final WrappedCollection ancestor; + final Collection ancestorDelegate; + + WrappedCollection(K key, @Nullable Collection delegate, WrappedCollection ancestor) { + this.key = key; + this.delegate = delegate; + this.ancestor = ancestor; + this.ancestorDelegate = ancestor == null ? null : ancestor.getDelegate(); + } + + void refreshIfEmpty() { + Collection newDelegate; + if (this.ancestor != null) { + this.ancestor.refreshIfEmpty(); + if (this.ancestor.getDelegate() != this.ancestorDelegate) { + throw new ConcurrentModificationException(); + } + } else if (this.delegate.isEmpty() && (newDelegate = (Collection)AbstractMapBasedMultimap.this.map.get(this.key)) != null) { + this.delegate = newDelegate; + } + } + + void removeIfEmpty() { + if (this.ancestor != null) { + this.ancestor.removeIfEmpty(); + } else if (this.delegate.isEmpty()) { + AbstractMapBasedMultimap.this.map.remove(this.key); + } + } + + K getKey() { + return this.key; + } + + void addToMap() { + if (this.ancestor != null) { + this.ancestor.addToMap(); + } else { + AbstractMapBasedMultimap.this.map.put(this.key, this.delegate); + } + } + + @Override + public int size() { + this.refreshIfEmpty(); + return this.delegate.size(); + } + + @Override + public boolean equals(@Nullable Object object) { + if (object == this) { + return true; + } + this.refreshIfEmpty(); + return this.delegate.equals(object); + } + + @Override + public int hashCode() { + this.refreshIfEmpty(); + return this.delegate.hashCode(); + } + + @Override + public String toString() { + this.refreshIfEmpty(); + return this.delegate.toString(); + } + + Collection getDelegate() { + return this.delegate; + } + + @Override + public Iterator iterator() { + this.refreshIfEmpty(); + return new WrappedIterator(); + } + + @Override + public boolean add(V value) { + this.refreshIfEmpty(); + boolean wasEmpty = this.delegate.isEmpty(); + boolean changed = this.delegate.add(value); + if (changed) { + AbstractMapBasedMultimap.this.totalSize++; + if (wasEmpty) { + this.addToMap(); + } + } + return changed; + } + + WrappedCollection getAncestor() { + return this.ancestor; + } + + @Override + public boolean addAll(Collection collection) { + if (collection.isEmpty()) { + return false; + } + int oldSize = this.size(); + boolean changed = this.delegate.addAll(collection); + if (changed) { + int newSize = this.delegate.size(); + AbstractMapBasedMultimap.this.totalSize += newSize - oldSize; + if (oldSize == 0) { + this.addToMap(); + } + } + return changed; + } + + @Override + public boolean contains(Object o) { + this.refreshIfEmpty(); + return this.delegate.contains(o); + } + + @Override + public boolean containsAll(Collection c) { + this.refreshIfEmpty(); + return this.delegate.containsAll(c); + } + + @Override + public void clear() { + int oldSize = this.size(); + if (oldSize == 0) { + return; + } + this.delegate.clear(); + AbstractMapBasedMultimap.this.totalSize -= oldSize; + this.removeIfEmpty(); + } + + @Override + public boolean remove(Object o) { + this.refreshIfEmpty(); + boolean changed = this.delegate.remove(o); + if (changed) { + AbstractMapBasedMultimap.this.totalSize--; + this.removeIfEmpty(); + } + return changed; + } + + @Override + public boolean removeAll(Collection c) { + if (c.isEmpty()) { + return false; + } + int oldSize = this.size(); + boolean changed = this.delegate.removeAll(c); + if (changed) { + int newSize = this.delegate.size(); + AbstractMapBasedMultimap.this.totalSize += newSize - oldSize; + this.removeIfEmpty(); + } + return changed; + } + + @Override + public boolean retainAll(Collection c) { + Preconditions.checkNotNull(c); + int oldSize = this.size(); + boolean changed = this.delegate.retainAll(c); + if (changed) { + int newSize = this.delegate.size(); + AbstractMapBasedMultimap.this.totalSize += newSize - oldSize; + this.removeIfEmpty(); + } + return changed; + } + + class WrappedIterator + implements Iterator { + final Iterator delegateIterator; + final Collection originalDelegate; + + WrappedIterator() { + this.originalDelegate = WrappedCollection.this.delegate; + this.delegateIterator = AbstractMapBasedMultimap.this.iteratorOrListIterator(WrappedCollection.this.delegate); + } + + WrappedIterator(Iterator delegateIterator) { + this.originalDelegate = WrappedCollection.this.delegate; + this.delegateIterator = delegateIterator; + } + + void validateIterator() { + WrappedCollection.this.refreshIfEmpty(); + if (WrappedCollection.this.delegate != this.originalDelegate) { + throw new ConcurrentModificationException(); + } + } + + @Override + public boolean hasNext() { + this.validateIterator(); + return this.delegateIterator.hasNext(); + } + + @Override + public V next() { + this.validateIterator(); + return this.delegateIterator.next(); + } + + @Override + public void remove() { + this.delegateIterator.remove(); + AbstractMapBasedMultimap.this.totalSize--; + WrappedCollection.this.removeIfEmpty(); + } + + Iterator getDelegateIterator() { + this.validateIterator(); + return this.delegateIterator; + } + } + } +} diff --git a/src/com/google/common/collect/AbstractMapBasedMultiset.java b/src/com/google/common/collect/AbstractMapBasedMultiset.java new file mode 100644 index 0000000..2efd32e --- /dev/null +++ b/src/com/google/common/collect/AbstractMapBasedMultiset.java @@ -0,0 +1,237 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.base.Preconditions; +import com.google.common.collect.AbstractMultiset; +import com.google.common.collect.CollectPreconditions; +import com.google.common.collect.Count; +import com.google.common.collect.Maps; +import com.google.common.collect.Multiset; +import com.google.common.collect.Multisets; +import com.google.common.primitives.Ints; +import java.io.InvalidObjectException; +import java.io.ObjectStreamException; +import java.io.Serializable; +import java.util.ConcurrentModificationException; +import java.util.Iterator; +import java.util.Map; +import java.util.Set; +import javax.annotation.Nullable; + +@GwtCompatible(emulated=true) +abstract class AbstractMapBasedMultiset +extends AbstractMultiset +implements Serializable { + private transient Map backingMap; + private transient long size; + @GwtIncompatible(value="not needed in emulated source.") + private static final long serialVersionUID = -2250766705698539974L; + + protected AbstractMapBasedMultiset(Map backingMap) { + this.backingMap = Preconditions.checkNotNull(backingMap); + this.size = super.size(); + } + + void setBackingMap(Map backingMap) { + this.backingMap = backingMap; + } + + @Override + public Set> entrySet() { + return super.entrySet(); + } + + @Override + Iterator> entryIterator() { + final Iterator> backingEntries = this.backingMap.entrySet().iterator(); + return new Iterator>(){ + Map.Entry toRemove; + + @Override + public boolean hasNext() { + return backingEntries.hasNext(); + } + + @Override + public Multiset.Entry next() { + Map.Entry mapEntry; + this.toRemove = mapEntry = (Map.Entry)backingEntries.next(); + return new Multisets.AbstractEntry(){ + + @Override + public E getElement() { + return mapEntry.getKey(); + } + + @Override + public int getCount() { + Count frequency; + Count count = (Count)mapEntry.getValue(); + if ((count == null || count.get() == 0) && (frequency = (Count)AbstractMapBasedMultiset.this.backingMap.get(this.getElement())) != null) { + return frequency.get(); + } + return count == null ? 0 : count.get(); + } + }; + } + + @Override + public void remove() { + CollectPreconditions.checkRemove(this.toRemove != null); + AbstractMapBasedMultiset.this.size -= this.toRemove.getValue().getAndSet(0); + backingEntries.remove(); + this.toRemove = null; + } + }; + } + + @Override + public void clear() { + for (Count frequency : this.backingMap.values()) { + frequency.set(0); + } + this.backingMap.clear(); + this.size = 0L; + } + + @Override + int distinctElements() { + return this.backingMap.size(); + } + + @Override + public int size() { + return Ints.saturatedCast(this.size); + } + + @Override + public Iterator iterator() { + return new MapBasedMultisetIterator(); + } + + @Override + public int count(@Nullable Object element) { + Count frequency = Maps.safeGet(this.backingMap, element); + return frequency == null ? 0 : frequency.get(); + } + + @Override + public int add(@Nullable E element, int occurrences) { + int oldCount; + if (occurrences == 0) { + return this.count(element); + } + Preconditions.checkArgument(occurrences > 0, "occurrences cannot be negative: %s", occurrences); + Count frequency = this.backingMap.get(element); + if (frequency == null) { + oldCount = 0; + this.backingMap.put(element, new Count(occurrences)); + } else { + oldCount = frequency.get(); + long newCount = (long)oldCount + (long)occurrences; + Preconditions.checkArgument(newCount <= Integer.MAX_VALUE, "too many occurrences: %s", newCount); + frequency.getAndAdd(occurrences); + } + this.size += (long)occurrences; + return oldCount; + } + + @Override + public int remove(@Nullable Object element, int occurrences) { + int numberRemoved; + if (occurrences == 0) { + return this.count(element); + } + Preconditions.checkArgument(occurrences > 0, "occurrences cannot be negative: %s", occurrences); + Count frequency = this.backingMap.get(element); + if (frequency == null) { + return 0; + } + int oldCount = frequency.get(); + if (oldCount > occurrences) { + numberRemoved = occurrences; + } else { + numberRemoved = oldCount; + this.backingMap.remove(element); + } + frequency.addAndGet(-numberRemoved); + this.size -= (long)numberRemoved; + return oldCount; + } + + @Override + public int setCount(@Nullable E element, int count) { + int oldCount; + CollectPreconditions.checkNonnegative(count, "count"); + if (count == 0) { + Count existingCounter = this.backingMap.remove(element); + oldCount = AbstractMapBasedMultiset.getAndSet(existingCounter, count); + } else { + Count existingCounter = this.backingMap.get(element); + oldCount = AbstractMapBasedMultiset.getAndSet(existingCounter, count); + if (existingCounter == null) { + this.backingMap.put(element, new Count(count)); + } + } + this.size += (long)(count - oldCount); + return oldCount; + } + + private static int getAndSet(Count i, int count) { + if (i == null) { + return 0; + } + return i.getAndSet(count); + } + + @GwtIncompatible(value="java.io.ObjectStreamException") + private void readObjectNoData() throws ObjectStreamException { + throw new InvalidObjectException("Stream data required"); + } + + private class MapBasedMultisetIterator + implements Iterator { + final Iterator> entryIterator; + Map.Entry currentEntry; + int occurrencesLeft; + boolean canRemove; + + MapBasedMultisetIterator() { + this.entryIterator = AbstractMapBasedMultiset.this.backingMap.entrySet().iterator(); + } + + @Override + public boolean hasNext() { + return this.occurrencesLeft > 0 || this.entryIterator.hasNext(); + } + + @Override + public E next() { + if (this.occurrencesLeft == 0) { + this.currentEntry = this.entryIterator.next(); + this.occurrencesLeft = this.currentEntry.getValue().get(); + } + --this.occurrencesLeft; + this.canRemove = true; + return this.currentEntry.getKey(); + } + + @Override + public void remove() { + CollectPreconditions.checkRemove(this.canRemove); + int frequency = this.currentEntry.getValue().get(); + if (frequency <= 0) { + throw new ConcurrentModificationException(); + } + if (this.currentEntry.getValue().addAndGet(-1) == 0) { + this.entryIterator.remove(); + } + AbstractMapBasedMultiset.this.size--; + this.canRemove = false; + } + } +} diff --git a/src/com/google/common/collect/AbstractMapEntry.java b/src/com/google/common/collect/AbstractMapEntry.java new file mode 100644 index 0000000..2626d74 --- /dev/null +++ b/src/com/google/common/collect/AbstractMapEntry.java @@ -0,0 +1,49 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Objects; +import java.util.Map; +import javax.annotation.Nullable; + +@GwtCompatible +abstract class AbstractMapEntry +implements Map.Entry { + AbstractMapEntry() { + } + + @Override + public abstract K getKey(); + + @Override + public abstract V getValue(); + + @Override + public V setValue(V value) { + throw new UnsupportedOperationException(); + } + + @Override + public boolean equals(@Nullable Object object) { + if (object instanceof Map.Entry) { + Map.Entry that = (Map.Entry)object; + return Objects.equal(this.getKey(), that.getKey()) && Objects.equal(this.getValue(), that.getValue()); + } + return false; + } + + @Override + public int hashCode() { + K k = this.getKey(); + V v = this.getValue(); + return (k == null ? 0 : k.hashCode()) ^ (v == null ? 0 : v.hashCode()); + } + + public String toString() { + String string = String.valueOf(String.valueOf(this.getKey())); + String string2 = String.valueOf(String.valueOf(this.getValue())); + return new StringBuilder(1 + string.length() + string2.length()).append(string).append("=").append(string2).toString(); + } +} diff --git a/src/com/google/common/collect/AbstractMultimap.java b/src/com/google/common/collect/AbstractMultimap.java new file mode 100644 index 0000000..8f8d0ac --- /dev/null +++ b/src/com/google/common/collect/AbstractMultimap.java @@ -0,0 +1,222 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Preconditions; +import com.google.common.collect.Iterators; +import com.google.common.collect.Maps; +import com.google.common.collect.Multimap; +import com.google.common.collect.Multimaps; +import com.google.common.collect.Multiset; +import com.google.common.collect.SetMultimap; +import com.google.common.collect.Sets; +import java.util.AbstractCollection; +import java.util.Collection; +import java.util.Iterator; +import java.util.Map; +import java.util.Set; +import javax.annotation.Nullable; + +@GwtCompatible +abstract class AbstractMultimap +implements Multimap { + private transient Collection> entries; + private transient Set keySet; + private transient Multiset keys; + private transient Collection values; + private transient Map> asMap; + + AbstractMultimap() { + } + + @Override + public boolean isEmpty() { + return this.size() == 0; + } + + @Override + public boolean containsValue(@Nullable Object value) { + for (Collection collection : this.asMap().values()) { + if (!collection.contains(value)) continue; + return true; + } + return false; + } + + @Override + public boolean containsEntry(@Nullable Object key, @Nullable Object value) { + Collection collection = this.asMap().get(key); + return collection != null && collection.contains(value); + } + + @Override + public boolean remove(@Nullable Object key, @Nullable Object value) { + Collection collection = this.asMap().get(key); + return collection != null && collection.remove(value); + } + + @Override + public boolean put(@Nullable K key, @Nullable V value) { + return this.get(key).add(value); + } + + @Override + public boolean putAll(@Nullable K key, Iterable values) { + Preconditions.checkNotNull(values); + if (values instanceof Collection) { + Collection valueCollection = (Collection)values; + return !valueCollection.isEmpty() && this.get(key).addAll(valueCollection); + } + Iterator valueItr = values.iterator(); + return valueItr.hasNext() && Iterators.addAll(this.get(key), valueItr); + } + + @Override + public boolean putAll(Multimap multimap) { + boolean changed = false; + for (Map.Entry entry : multimap.entries()) { + changed |= this.put(entry.getKey(), entry.getValue()); + } + return changed; + } + + @Override + public Collection replaceValues(@Nullable K key, Iterable values) { + Preconditions.checkNotNull(values); + Collection result = this.removeAll(key); + this.putAll(key, values); + return result; + } + + @Override + public Collection> entries() { + Collection> result = this.entries; + return result == null ? (this.entries = this.createEntries()) : result; + } + + Collection> createEntries() { + if (this instanceof SetMultimap) { + return new EntrySet(); + } + return new Entries(); + } + + abstract Iterator> entryIterator(); + + @Override + public Set keySet() { + Set result = this.keySet; + return result == null ? (this.keySet = this.createKeySet()) : result; + } + + Set createKeySet() { + return new Maps.KeySet>(this.asMap()); + } + + @Override + public Multiset keys() { + Multiset result = this.keys; + return result == null ? (this.keys = this.createKeys()) : result; + } + + Multiset createKeys() { + return new Multimaps.Keys(this); + } + + @Override + public Collection values() { + Collection result = this.values; + return result == null ? (this.values = this.createValues()) : result; + } + + Collection createValues() { + return new Values(); + } + + Iterator valueIterator() { + return Maps.valueIterator(this.entries().iterator()); + } + + @Override + public Map> asMap() { + Map>> result = this.asMap; + return result == null ? (this.asMap = this.createAsMap()) : result; + } + + abstract Map> createAsMap(); + + @Override + public boolean equals(@Nullable Object object) { + return Multimaps.equalsImpl(this, object); + } + + @Override + public int hashCode() { + return this.asMap().hashCode(); + } + + public String toString() { + return this.asMap().toString(); + } + + class Values + extends AbstractCollection { + Values() { + } + + @Override + public Iterator iterator() { + return AbstractMultimap.this.valueIterator(); + } + + @Override + public int size() { + return AbstractMultimap.this.size(); + } + + @Override + public boolean contains(@Nullable Object o) { + return AbstractMultimap.this.containsValue(o); + } + + @Override + public void clear() { + AbstractMultimap.this.clear(); + } + } + + private class EntrySet + extends Entries + implements Set> { + private EntrySet() { + } + + @Override + public int hashCode() { + return Sets.hashCodeImpl(this); + } + + @Override + public boolean equals(@Nullable Object obj) { + return Sets.equalsImpl(this, obj); + } + } + + private class Entries + extends Multimaps.Entries { + private Entries() { + } + + @Override + Multimap multimap() { + return AbstractMultimap.this; + } + + @Override + public Iterator> iterator() { + return AbstractMultimap.this.entryIterator(); + } + } +} diff --git a/src/com/google/common/collect/AbstractMultiset.java b/src/com/google/common/collect/AbstractMultiset.java new file mode 100644 index 0000000..7f51672 --- /dev/null +++ b/src/com/google/common/collect/AbstractMultiset.java @@ -0,0 +1,183 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Objects; +import com.google.common.collect.Iterators; +import com.google.common.collect.Multiset; +import com.google.common.collect.Multisets; +import java.util.AbstractCollection; +import java.util.Collection; +import java.util.Iterator; +import java.util.Set; +import javax.annotation.Nullable; + +@GwtCompatible +abstract class AbstractMultiset +extends AbstractCollection +implements Multiset { + private transient Set elementSet; + private transient Set> entrySet; + + AbstractMultiset() { + } + + @Override + public int size() { + return Multisets.sizeImpl(this); + } + + @Override + public boolean isEmpty() { + return this.entrySet().isEmpty(); + } + + @Override + public boolean contains(@Nullable Object element) { + return this.count(element) > 0; + } + + @Override + public Iterator iterator() { + return Multisets.iteratorImpl(this); + } + + @Override + public int count(@Nullable Object element) { + for (Multiset.Entry entry : this.entrySet()) { + if (!Objects.equal(entry.getElement(), element)) continue; + return entry.getCount(); + } + return 0; + } + + @Override + public boolean add(@Nullable E element) { + this.add(element, 1); + return true; + } + + @Override + public int add(@Nullable E element, int occurrences) { + throw new UnsupportedOperationException(); + } + + @Override + public boolean remove(@Nullable Object element) { + return this.remove(element, 1) > 0; + } + + @Override + public int remove(@Nullable Object element, int occurrences) { + throw new UnsupportedOperationException(); + } + + @Override + public int setCount(@Nullable E element, int count) { + return Multisets.setCountImpl(this, element, count); + } + + @Override + public boolean setCount(@Nullable E element, int oldCount, int newCount) { + return Multisets.setCountImpl(this, element, oldCount, newCount); + } + + @Override + public boolean addAll(Collection elementsToAdd) { + return Multisets.addAllImpl(this, elementsToAdd); + } + + @Override + public boolean removeAll(Collection elementsToRemove) { + return Multisets.removeAllImpl(this, elementsToRemove); + } + + @Override + public boolean retainAll(Collection elementsToRetain) { + return Multisets.retainAllImpl(this, elementsToRetain); + } + + @Override + public void clear() { + Iterators.clear(this.entryIterator()); + } + + @Override + public Set elementSet() { + Set result = this.elementSet; + if (result == null) { + this.elementSet = result = this.createElementSet(); + } + return result; + } + + Set createElementSet() { + return new ElementSet(); + } + + abstract Iterator> entryIterator(); + + abstract int distinctElements(); + + @Override + public Set> entrySet() { + Set>> result = this.entrySet; + if (result == null) { + this.entrySet = result = this.createEntrySet(); + } + return result; + } + + Set> createEntrySet() { + return new EntrySet(); + } + + @Override + public boolean equals(@Nullable Object object) { + return Multisets.equalsImpl(this, object); + } + + @Override + public int hashCode() { + return this.entrySet().hashCode(); + } + + @Override + public String toString() { + return this.entrySet().toString(); + } + + class EntrySet + extends Multisets.EntrySet { + EntrySet() { + } + + @Override + Multiset multiset() { + return AbstractMultiset.this; + } + + @Override + public Iterator> iterator() { + return AbstractMultiset.this.entryIterator(); + } + + @Override + public int size() { + return AbstractMultiset.this.distinctElements(); + } + } + + class ElementSet + extends Multisets.ElementSet { + ElementSet() { + } + + @Override + Multiset multiset() { + return AbstractMultiset.this; + } + } +} diff --git a/src/com/google/common/collect/AbstractNavigableMap.java b/src/com/google/common/collect/AbstractNavigableMap.java new file mode 100644 index 0000000..b608561 --- /dev/null +++ b/src/com/google/common/collect/AbstractNavigableMap.java @@ -0,0 +1,187 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.collect.Iterators; +import com.google.common.collect.Maps; +import java.util.AbstractMap; +import java.util.Iterator; +import java.util.Map; +import java.util.NavigableMap; +import java.util.NavigableSet; +import java.util.NoSuchElementException; +import java.util.Set; +import java.util.SortedMap; +import javax.annotation.Nullable; + +abstract class AbstractNavigableMap +extends AbstractMap +implements NavigableMap { + AbstractNavigableMap() { + } + + @Override + @Nullable + public abstract V get(@Nullable Object var1); + + @Override + @Nullable + public Map.Entry firstEntry() { + return Iterators.getNext(this.entryIterator(), null); + } + + @Override + @Nullable + public Map.Entry lastEntry() { + return Iterators.getNext(this.descendingEntryIterator(), null); + } + + @Override + @Nullable + public Map.Entry pollFirstEntry() { + return Iterators.pollNext(this.entryIterator()); + } + + @Override + @Nullable + public Map.Entry pollLastEntry() { + return Iterators.pollNext(this.descendingEntryIterator()); + } + + @Override + public K firstKey() { + Map.Entry entry = this.firstEntry(); + if (entry == null) { + throw new NoSuchElementException(); + } + return entry.getKey(); + } + + @Override + public K lastKey() { + Map.Entry entry = this.lastEntry(); + if (entry == null) { + throw new NoSuchElementException(); + } + return entry.getKey(); + } + + @Override + @Nullable + public Map.Entry lowerEntry(K key) { + return this.headMap(key, false).lastEntry(); + } + + @Override + @Nullable + public Map.Entry floorEntry(K key) { + return this.headMap(key, true).lastEntry(); + } + + @Override + @Nullable + public Map.Entry ceilingEntry(K key) { + return this.tailMap(key, true).firstEntry(); + } + + @Override + @Nullable + public Map.Entry higherEntry(K key) { + return this.tailMap(key, false).firstEntry(); + } + + @Override + public K lowerKey(K key) { + return Maps.keyOrNull(this.lowerEntry(key)); + } + + @Override + public K floorKey(K key) { + return Maps.keyOrNull(this.floorEntry(key)); + } + + @Override + public K ceilingKey(K key) { + return Maps.keyOrNull(this.ceilingEntry(key)); + } + + @Override + public K higherKey(K key) { + return Maps.keyOrNull(this.higherEntry(key)); + } + + abstract Iterator> entryIterator(); + + abstract Iterator> descendingEntryIterator(); + + @Override + public SortedMap subMap(K fromKey, K toKey) { + return this.subMap(fromKey, true, toKey, false); + } + + @Override + public SortedMap headMap(K toKey) { + return this.headMap(toKey, false); + } + + @Override + public SortedMap tailMap(K fromKey) { + return this.tailMap(fromKey, true); + } + + @Override + public NavigableSet navigableKeySet() { + return new Maps.NavigableKeySet(this); + } + + @Override + public Set keySet() { + return this.navigableKeySet(); + } + + @Override + public abstract int size(); + + @Override + public Set> entrySet() { + return new Maps.EntrySet(){ + + @Override + Map map() { + return AbstractNavigableMap.this; + } + + @Override + public Iterator> iterator() { + return AbstractNavigableMap.this.entryIterator(); + } + }; + } + + @Override + public NavigableSet descendingKeySet() { + return this.descendingMap().navigableKeySet(); + } + + @Override + public NavigableMap descendingMap() { + return new DescendingMap(); + } + + private final class DescendingMap + extends Maps.DescendingMap { + private DescendingMap() { + } + + @Override + NavigableMap forward() { + return AbstractNavigableMap.this; + } + + @Override + Iterator> entryIterator() { + return AbstractNavigableMap.this.descendingEntryIterator(); + } + } +} diff --git a/src/com/google/common/collect/AbstractRangeSet.java b/src/com/google/common/collect/AbstractRangeSet.java new file mode 100644 index 0000000..e574a9f --- /dev/null +++ b/src/com/google/common/collect/AbstractRangeSet.java @@ -0,0 +1,90 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.collect.Range; +import com.google.common.collect.RangeSet; +import javax.annotation.Nullable; + +abstract class AbstractRangeSet +implements RangeSet { + AbstractRangeSet() { + } + + @Override + public boolean contains(C value) { + return this.rangeContaining(value) != null; + } + + @Override + public abstract Range rangeContaining(C var1); + + @Override + public boolean isEmpty() { + return this.asRanges().isEmpty(); + } + + @Override + public void add(Range range) { + throw new UnsupportedOperationException(); + } + + @Override + public void remove(Range range) { + throw new UnsupportedOperationException(); + } + + @Override + public void clear() { + this.remove(Range.all()); + } + + @Override + public boolean enclosesAll(RangeSet other) { + for (Range range : other.asRanges()) { + if (this.encloses(range)) continue; + return false; + } + return true; + } + + @Override + public void addAll(RangeSet other) { + for (Range range : other.asRanges()) { + this.add(range); + } + } + + @Override + public void removeAll(RangeSet other) { + for (Range range : other.asRanges()) { + this.remove(range); + } + } + + @Override + public abstract boolean encloses(Range var1); + + @Override + public boolean equals(@Nullable Object obj) { + if (obj == this) { + return true; + } + if (obj instanceof RangeSet) { + RangeSet other = (RangeSet)obj; + return this.asRanges().equals(other.asRanges()); + } + return false; + } + + @Override + public final int hashCode() { + return this.asRanges().hashCode(); + } + + @Override + public final String toString() { + return this.asRanges().toString(); + } +} diff --git a/src/com/google/common/collect/AbstractSequentialIterator.java b/src/com/google/common/collect/AbstractSequentialIterator.java new file mode 100644 index 0000000..8d027fa --- /dev/null +++ b/src/com/google/common/collect/AbstractSequentialIterator.java @@ -0,0 +1,43 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.collect.UnmodifiableIterator; +import java.util.NoSuchElementException; +import javax.annotation.Nullable; + +@GwtCompatible +public abstract class AbstractSequentialIterator +extends UnmodifiableIterator { + private T nextOrNull; + + protected AbstractSequentialIterator(@Nullable T firstOrNull) { + this.nextOrNull = firstOrNull; + } + + protected abstract T computeNext(T var1); + + @Override + public final boolean hasNext() { + return this.nextOrNull != null; + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public final T next() { + if (!this.hasNext()) { + throw new NoSuchElementException(); + } + try { + T t = this.nextOrNull; + return t; + } + finally { + this.nextOrNull = this.computeNext(this.nextOrNull); + } + } +} diff --git a/src/com/google/common/collect/AbstractSetMultimap.java b/src/com/google/common/collect/AbstractSetMultimap.java new file mode 100644 index 0000000..aaa6d7b --- /dev/null +++ b/src/com/google/common/collect/AbstractSetMultimap.java @@ -0,0 +1,67 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.collect.AbstractMapBasedMultimap; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.SetMultimap; +import java.util.Collection; +import java.util.Map; +import java.util.Set; +import javax.annotation.Nullable; + +@GwtCompatible +abstract class AbstractSetMultimap +extends AbstractMapBasedMultimap +implements SetMultimap { + private static final long serialVersionUID = 7431625294878419160L; + + protected AbstractSetMultimap(Map> map) { + super(map); + } + + @Override + abstract Set createCollection(); + + @Override + Set createUnmodifiableEmptyCollection() { + return ImmutableSet.of(); + } + + @Override + public Set get(@Nullable K key) { + return (Set)super.get(key); + } + + @Override + public Set> entries() { + return (Set)super.entries(); + } + + @Override + public Set removeAll(@Nullable Object key) { + return (Set)super.removeAll(key); + } + + @Override + public Set replaceValues(@Nullable K key, Iterable values) { + return (Set)super.replaceValues(key, values); + } + + @Override + public Map> asMap() { + return super.asMap(); + } + + @Override + public boolean put(@Nullable K key, @Nullable V value) { + return super.put(key, value); + } + + @Override + public boolean equals(@Nullable Object object) { + return super.equals(object); + } +} diff --git a/src/com/google/common/collect/AbstractSortedKeySortedSetMultimap.java b/src/com/google/common/collect/AbstractSortedKeySortedSetMultimap.java new file mode 100644 index 0000000..f264eb4 --- /dev/null +++ b/src/com/google/common/collect/AbstractSortedKeySortedSetMultimap.java @@ -0,0 +1,33 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.collect.AbstractSortedSetMultimap; +import java.util.Collection; +import java.util.SortedMap; +import java.util.SortedSet; + +@GwtCompatible +abstract class AbstractSortedKeySortedSetMultimap +extends AbstractSortedSetMultimap { + AbstractSortedKeySortedSetMultimap(SortedMap> map) { + super(map); + } + + @Override + public SortedMap> asMap() { + return (SortedMap)super.asMap(); + } + + @Override + SortedMap> backingMap() { + return (SortedMap)super.backingMap(); + } + + @Override + public SortedSet keySet() { + return (SortedSet)super.keySet(); + } +} diff --git a/src/com/google/common/collect/AbstractSortedMultiset.java b/src/com/google/common/collect/AbstractSortedMultiset.java new file mode 100644 index 0000000..8ee29fb --- /dev/null +++ b/src/com/google/common/collect/AbstractSortedMultiset.java @@ -0,0 +1,127 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Preconditions; +import com.google.common.collect.AbstractMultiset; +import com.google.common.collect.BoundType; +import com.google.common.collect.DescendingMultiset; +import com.google.common.collect.GwtTransient; +import com.google.common.collect.Multiset; +import com.google.common.collect.Multisets; +import com.google.common.collect.Ordering; +import com.google.common.collect.SortedMultiset; +import com.google.common.collect.SortedMultisets; +import java.util.Comparator; +import java.util.Iterator; +import java.util.NavigableSet; +import javax.annotation.Nullable; + +@GwtCompatible(emulated=true) +abstract class AbstractSortedMultiset +extends AbstractMultiset +implements SortedMultiset { + @GwtTransient + final Comparator comparator; + private transient SortedMultiset descendingMultiset; + + AbstractSortedMultiset() { + this(Ordering.natural()); + } + + AbstractSortedMultiset(Comparator comparator) { + this.comparator = Preconditions.checkNotNull(comparator); + } + + @Override + public NavigableSet elementSet() { + return (NavigableSet)super.elementSet(); + } + + @Override + NavigableSet createElementSet() { + return new SortedMultisets.NavigableElementSet(this); + } + + @Override + public Comparator comparator() { + return this.comparator; + } + + @Override + public Multiset.Entry firstEntry() { + Iterator entryIterator = this.entryIterator(); + return entryIterator.hasNext() ? entryIterator.next() : null; + } + + @Override + public Multiset.Entry lastEntry() { + Iterator> entryIterator = this.descendingEntryIterator(); + return entryIterator.hasNext() ? entryIterator.next() : null; + } + + @Override + public Multiset.Entry pollFirstEntry() { + Iterator entryIterator = this.entryIterator(); + if (entryIterator.hasNext()) { + Multiset.Entry result = entryIterator.next(); + result = Multisets.immutableEntry(result.getElement(), result.getCount()); + entryIterator.remove(); + return result; + } + return null; + } + + @Override + public Multiset.Entry pollLastEntry() { + Iterator> entryIterator = this.descendingEntryIterator(); + if (entryIterator.hasNext()) { + Multiset.Entry result = entryIterator.next(); + result = Multisets.immutableEntry(result.getElement(), result.getCount()); + entryIterator.remove(); + return result; + } + return null; + } + + @Override + public SortedMultiset subMultiset(@Nullable E fromElement, BoundType fromBoundType, @Nullable E toElement, BoundType toBoundType) { + Preconditions.checkNotNull(fromBoundType); + Preconditions.checkNotNull(toBoundType); + return this.tailMultiset(fromElement, fromBoundType).headMultiset(toElement, toBoundType); + } + + abstract Iterator> descendingEntryIterator(); + + Iterator descendingIterator() { + return Multisets.iteratorImpl(this.descendingMultiset()); + } + + @Override + public SortedMultiset descendingMultiset() { + SortedMultiset result = this.descendingMultiset; + return result == null ? (this.descendingMultiset = this.createDescendingMultiset()) : result; + } + + SortedMultiset createDescendingMultiset() { + return new DescendingMultiset(){ + + @Override + SortedMultiset forwardMultiset() { + return AbstractSortedMultiset.this; + } + + @Override + Iterator> entryIterator() { + return AbstractSortedMultiset.this.descendingEntryIterator(); + } + + @Override + public Iterator iterator() { + return AbstractSortedMultiset.this.descendingIterator(); + } + }; + } +} diff --git a/src/com/google/common/collect/AbstractSortedSetMultimap.java b/src/com/google/common/collect/AbstractSortedSetMultimap.java new file mode 100644 index 0000000..b6ff1d7 --- /dev/null +++ b/src/com/google/common/collect/AbstractSortedSetMultimap.java @@ -0,0 +1,63 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.collect.AbstractSetMultimap; +import com.google.common.collect.ImmutableSortedSet; +import com.google.common.collect.SortedSetMultimap; +import java.util.Collection; +import java.util.Collections; +import java.util.Comparator; +import java.util.Map; +import java.util.SortedSet; +import javax.annotation.Nullable; + +@GwtCompatible +abstract class AbstractSortedSetMultimap +extends AbstractSetMultimap +implements SortedSetMultimap { + private static final long serialVersionUID = 430848587173315748L; + + protected AbstractSortedSetMultimap(Map> map) { + super(map); + } + + @Override + abstract SortedSet createCollection(); + + @Override + SortedSet createUnmodifiableEmptyCollection() { + Comparator comparator = this.valueComparator(); + if (comparator == null) { + return Collections.unmodifiableSortedSet(this.createCollection()); + } + return ImmutableSortedSet.emptySet(this.valueComparator()); + } + + @Override + public SortedSet get(@Nullable K key) { + return (SortedSet)super.get((Object)key); + } + + @Override + public SortedSet removeAll(@Nullable Object key) { + return (SortedSet)super.removeAll(key); + } + + @Override + public SortedSet replaceValues(@Nullable K key, Iterable values) { + return (SortedSet)super.replaceValues((Object)key, (Iterable)values); + } + + @Override + public Map> asMap() { + return super.asMap(); + } + + @Override + public Collection values() { + return super.values(); + } +} diff --git a/src/com/google/common/collect/AbstractTable.java b/src/com/google/common/collect/AbstractTable.java new file mode 100644 index 0000000..f5c8da1 --- /dev/null +++ b/src/com/google/common/collect/AbstractTable.java @@ -0,0 +1,211 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.collect.Collections2; +import com.google.common.collect.Iterators; +import com.google.common.collect.Maps; +import com.google.common.collect.Table; +import com.google.common.collect.Tables; +import com.google.common.collect.TransformedIterator; +import java.util.AbstractCollection; +import java.util.AbstractSet; +import java.util.Collection; +import java.util.Iterator; +import java.util.Map; +import java.util.Set; +import javax.annotation.Nullable; + +@GwtCompatible +abstract class AbstractTable +implements Table { + private transient Set> cellSet; + private transient Collection values; + + AbstractTable() { + } + + @Override + public boolean containsRow(@Nullable Object rowKey) { + return Maps.safeContainsKey(this.rowMap(), rowKey); + } + + @Override + public boolean containsColumn(@Nullable Object columnKey) { + return Maps.safeContainsKey(this.columnMap(), columnKey); + } + + @Override + public Set rowKeySet() { + return this.rowMap().keySet(); + } + + @Override + public Set columnKeySet() { + return this.columnMap().keySet(); + } + + @Override + public boolean containsValue(@Nullable Object value) { + for (Map row : this.rowMap().values()) { + if (!row.containsValue(value)) continue; + return true; + } + return false; + } + + @Override + public boolean contains(@Nullable Object rowKey, @Nullable Object columnKey) { + Map row = Maps.safeGet(this.rowMap(), rowKey); + return row != null && Maps.safeContainsKey(row, columnKey); + } + + @Override + public V get(@Nullable Object rowKey, @Nullable Object columnKey) { + Map row = Maps.safeGet(this.rowMap(), rowKey); + return row == null ? null : (V)Maps.safeGet(row, columnKey); + } + + @Override + public boolean isEmpty() { + return this.size() == 0; + } + + @Override + public void clear() { + Iterators.clear(this.cellSet().iterator()); + } + + @Override + public V remove(@Nullable Object rowKey, @Nullable Object columnKey) { + Map row = Maps.safeGet(this.rowMap(), rowKey); + return row == null ? null : (V)Maps.safeRemove(row, columnKey); + } + + @Override + public V put(R rowKey, C columnKey, V value) { + return this.row(rowKey).put(columnKey, value); + } + + @Override + public void putAll(Table table) { + for (Table.Cell cell : table.cellSet()) { + this.put(cell.getRowKey(), cell.getColumnKey(), cell.getValue()); + } + } + + @Override + public Set> cellSet() { + Set> result = this.cellSet; + return result == null ? (this.cellSet = this.createCellSet()) : result; + } + + Set> createCellSet() { + return new CellSet(); + } + + abstract Iterator> cellIterator(); + + @Override + public Collection values() { + Collection result = this.values; + return result == null ? (this.values = this.createValues()) : result; + } + + Collection createValues() { + return new Values(); + } + + Iterator valuesIterator() { + return new TransformedIterator, V>(this.cellSet().iterator()){ + + @Override + V transform(Table.Cell cell) { + return cell.getValue(); + } + }; + } + + @Override + public boolean equals(@Nullable Object obj) { + return Tables.equalsImpl(this, obj); + } + + @Override + public int hashCode() { + return this.cellSet().hashCode(); + } + + public String toString() { + return this.rowMap().toString(); + } + + class Values + extends AbstractCollection { + Values() { + } + + @Override + public Iterator iterator() { + return AbstractTable.this.valuesIterator(); + } + + @Override + public boolean contains(Object o) { + return AbstractTable.this.containsValue(o); + } + + @Override + public void clear() { + AbstractTable.this.clear(); + } + + @Override + public int size() { + return AbstractTable.this.size(); + } + } + + class CellSet + extends AbstractSet> { + CellSet() { + } + + @Override + public boolean contains(Object o) { + if (o instanceof Table.Cell) { + Table.Cell cell = (Table.Cell)o; + Map row = Maps.safeGet(AbstractTable.this.rowMap(), cell.getRowKey()); + return row != null && Collections2.safeContains(row.entrySet(), Maps.immutableEntry(cell.getColumnKey(), cell.getValue())); + } + return false; + } + + @Override + public boolean remove(@Nullable Object o) { + if (o instanceof Table.Cell) { + Table.Cell cell = (Table.Cell)o; + Map row = Maps.safeGet(AbstractTable.this.rowMap(), cell.getRowKey()); + return row != null && Collections2.safeRemove(row.entrySet(), Maps.immutableEntry(cell.getColumnKey(), cell.getValue())); + } + return false; + } + + @Override + public void clear() { + AbstractTable.this.clear(); + } + + @Override + public Iterator> iterator() { + return AbstractTable.this.cellIterator(); + } + + @Override + public int size() { + return AbstractTable.this.size(); + } + } +} diff --git a/src/com/google/common/collect/AllEqualOrdering.java b/src/com/google/common/collect/AllEqualOrdering.java new file mode 100644 index 0000000..cf2db97 --- /dev/null +++ b/src/com/google/common/collect/AllEqualOrdering.java @@ -0,0 +1,51 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.Lists; +import com.google.common.collect.Ordering; +import java.io.Serializable; +import java.util.List; +import javax.annotation.Nullable; + +@GwtCompatible(serializable=true) +final class AllEqualOrdering +extends Ordering +implements Serializable { + static final AllEqualOrdering INSTANCE = new AllEqualOrdering(); + private static final long serialVersionUID = 0L; + + AllEqualOrdering() { + } + + @Override + public int compare(@Nullable Object left, @Nullable Object right) { + return 0; + } + + @Override + public List sortedCopy(Iterable iterable) { + return Lists.newArrayList(iterable); + } + + @Override + public ImmutableList immutableSortedCopy(Iterable iterable) { + return ImmutableList.copyOf(iterable); + } + + @Override + public Ordering reverse() { + return this; + } + + private Object readResolve() { + return INSTANCE; + } + + public String toString() { + return "Ordering.allEqual()"; + } +} diff --git a/src/com/google/common/collect/ArrayListMultimap.java b/src/com/google/common/collect/ArrayListMultimap.java new file mode 100644 index 0000000..c3960b2 --- /dev/null +++ b/src/com/google/common/collect/ArrayListMultimap.java @@ -0,0 +1,87 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.annotations.VisibleForTesting; +import com.google.common.collect.AbstractListMultimap; +import com.google.common.collect.CollectPreconditions; +import com.google.common.collect.Maps; +import com.google.common.collect.Multimap; +import com.google.common.collect.Serialization; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; + +@GwtCompatible(serializable=true, emulated=true) +public final class ArrayListMultimap +extends AbstractListMultimap { + private static final int DEFAULT_VALUES_PER_KEY = 3; + @VisibleForTesting + transient int expectedValuesPerKey; + @GwtIncompatible(value="Not needed in emulated source.") + private static final long serialVersionUID = 0L; + + public static ArrayListMultimap create() { + return new ArrayListMultimap(); + } + + public static ArrayListMultimap create(int expectedKeys, int expectedValuesPerKey) { + return new ArrayListMultimap(expectedKeys, expectedValuesPerKey); + } + + public static ArrayListMultimap create(Multimap multimap) { + return new ArrayListMultimap(multimap); + } + + private ArrayListMultimap() { + super(new HashMap()); + this.expectedValuesPerKey = 3; + } + + private ArrayListMultimap(int expectedKeys, int expectedValuesPerKey) { + super(Maps.newHashMapWithExpectedSize(expectedKeys)); + CollectPreconditions.checkNonnegative(expectedValuesPerKey, "expectedValuesPerKey"); + this.expectedValuesPerKey = expectedValuesPerKey; + } + + private ArrayListMultimap(Multimap multimap) { + this(multimap.keySet().size(), multimap instanceof ArrayListMultimap ? ((ArrayListMultimap)multimap).expectedValuesPerKey : 3); + this.putAll((Multimap)multimap); + } + + @Override + List createCollection() { + return new ArrayList(this.expectedValuesPerKey); + } + + public void trimToSize() { + for (Collection collection : this.backingMap().values()) { + ArrayList arrayList = (ArrayList)collection; + arrayList.trimToSize(); + } + } + + @GwtIncompatible(value="java.io.ObjectOutputStream") + private void writeObject(ObjectOutputStream stream) throws IOException { + stream.defaultWriteObject(); + stream.writeInt(this.expectedValuesPerKey); + Serialization.writeMultimap(this, stream); + } + + @GwtIncompatible(value="java.io.ObjectOutputStream") + private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException { + stream.defaultReadObject(); + this.expectedValuesPerKey = stream.readInt(); + int distinctKeys = Serialization.readCount(stream); + HashMap map = Maps.newHashMapWithExpectedSize(distinctKeys); + this.setMap(map); + Serialization.populateMultimap(this, stream, distinctKeys); + } +} diff --git a/src/com/google/common/collect/ArrayTable.java b/src/com/google/common/collect/ArrayTable.java new file mode 100644 index 0000000..d302eff --- /dev/null +++ b/src/com/google/common/collect/ArrayTable.java @@ -0,0 +1,503 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.base.Objects; +import com.google.common.base.Preconditions; +import com.google.common.collect.AbstractIndexedListIterator; +import com.google.common.collect.AbstractMapEntry; +import com.google.common.collect.AbstractTable; +import com.google.common.collect.ImmutableCollection; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Maps; +import com.google.common.collect.Table; +import com.google.common.collect.Tables; +import java.io.Serializable; +import java.lang.reflect.Array; +import java.util.Arrays; +import java.util.Collection; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Set; +import javax.annotation.Nullable; + +@Beta +@GwtCompatible(emulated=true) +public final class ArrayTable +extends AbstractTable +implements Serializable { + private final ImmutableList rowList; + private final ImmutableList columnList; + private final ImmutableMap rowKeyToIndex; + private final ImmutableMap columnKeyToIndex; + private final V[][] array; + private transient ColumnMap columnMap; + private transient RowMap rowMap; + private static final long serialVersionUID = 0L; + + public static ArrayTable create(Iterable rowKeys, Iterable columnKeys) { + return new ArrayTable(rowKeys, columnKeys); + } + + public static ArrayTable create(Table table) { + return table instanceof ArrayTable ? new ArrayTable((ArrayTable)table) : new ArrayTable(table); + } + + private ArrayTable(Iterable rowKeys, Iterable columnKeys) { + this.rowList = ImmutableList.copyOf(rowKeys); + this.columnList = ImmutableList.copyOf(columnKeys); + Preconditions.checkArgument(!this.rowList.isEmpty()); + Preconditions.checkArgument(!this.columnList.isEmpty()); + this.rowKeyToIndex = ArrayTable.index(this.rowList); + this.columnKeyToIndex = ArrayTable.index(this.columnList); + Object[][] tmpArray = new Object[this.rowList.size()][this.columnList.size()]; + this.array = tmpArray; + this.eraseAll(); + } + + private static ImmutableMap index(List list) { + ImmutableMap.Builder columnBuilder = ImmutableMap.builder(); + for (int i = 0; i < list.size(); ++i) { + columnBuilder.put(list.get(i), i); + } + return columnBuilder.build(); + } + + private ArrayTable(Table table) { + this(table.rowKeySet(), table.columnKeySet()); + this.putAll(table); + } + + private ArrayTable(ArrayTable table) { + this.rowList = table.rowList; + this.columnList = table.columnList; + this.rowKeyToIndex = table.rowKeyToIndex; + this.columnKeyToIndex = table.columnKeyToIndex; + Object[][] copy = new Object[this.rowList.size()][this.columnList.size()]; + this.array = copy; + this.eraseAll(); + for (int i = 0; i < this.rowList.size(); ++i) { + System.arraycopy(table.array[i], 0, copy[i], 0, table.array[i].length); + } + } + + public ImmutableList rowKeyList() { + return this.rowList; + } + + public ImmutableList columnKeyList() { + return this.columnList; + } + + public V at(int rowIndex, int columnIndex) { + Preconditions.checkElementIndex(rowIndex, this.rowList.size()); + Preconditions.checkElementIndex(columnIndex, this.columnList.size()); + return this.array[rowIndex][columnIndex]; + } + + public V set(int rowIndex, int columnIndex, @Nullable V value) { + Preconditions.checkElementIndex(rowIndex, this.rowList.size()); + Preconditions.checkElementIndex(columnIndex, this.columnList.size()); + V oldValue = this.array[rowIndex][columnIndex]; + this.array[rowIndex][columnIndex] = value; + return oldValue; + } + + @GwtIncompatible(value="reflection") + public V[][] toArray(Class valueClass) { + Object[][] copy = (Object[][])Array.newInstance(valueClass, this.rowList.size(), this.columnList.size()); + for (int i = 0; i < this.rowList.size(); ++i) { + System.arraycopy(this.array[i], 0, copy[i], 0, this.array[i].length); + } + return copy; + } + + @Override + @Deprecated + public void clear() { + throw new UnsupportedOperationException(); + } + + public void eraseAll() { + for (Object[] objectArray : this.array) { + Arrays.fill(objectArray, null); + } + } + + @Override + public boolean contains(@Nullable Object rowKey, @Nullable Object columnKey) { + return this.containsRow(rowKey) && this.containsColumn(columnKey); + } + + @Override + public boolean containsColumn(@Nullable Object columnKey) { + return this.columnKeyToIndex.containsKey(columnKey); + } + + @Override + public boolean containsRow(@Nullable Object rowKey) { + return this.rowKeyToIndex.containsKey(rowKey); + } + + @Override + public boolean containsValue(@Nullable Object value) { + V[][] arr$ = this.array; + int len$ = arr$.length; + for (int i$ = 0; i$ < len$; ++i$) { + V[] row; + for (V element : row = arr$[i$]) { + if (!Objects.equal(value, element)) continue; + return true; + } + } + return false; + } + + @Override + public V get(@Nullable Object rowKey, @Nullable Object columnKey) { + Integer rowIndex = this.rowKeyToIndex.get(rowKey); + Integer columnIndex = this.columnKeyToIndex.get(columnKey); + return rowIndex == null || columnIndex == null ? null : (V)this.at(rowIndex, columnIndex); + } + + @Override + public boolean isEmpty() { + return false; + } + + @Override + public V put(R rowKey, C columnKey, @Nullable V value) { + Preconditions.checkNotNull(rowKey); + Preconditions.checkNotNull(columnKey); + Integer rowIndex = this.rowKeyToIndex.get(rowKey); + Preconditions.checkArgument(rowIndex != null, "Row %s not in %s", rowKey, this.rowList); + Integer columnIndex = this.columnKeyToIndex.get(columnKey); + Preconditions.checkArgument(columnIndex != null, "Column %s not in %s", columnKey, this.columnList); + return this.set(rowIndex, columnIndex, value); + } + + @Override + public void putAll(Table table) { + super.putAll(table); + } + + @Override + @Deprecated + public V remove(Object rowKey, Object columnKey) { + throw new UnsupportedOperationException(); + } + + public V erase(@Nullable Object rowKey, @Nullable Object columnKey) { + Integer rowIndex = this.rowKeyToIndex.get(rowKey); + Integer columnIndex = this.columnKeyToIndex.get(columnKey); + if (rowIndex == null || columnIndex == null) { + return null; + } + return this.set(rowIndex, columnIndex, null); + } + + @Override + public int size() { + return this.rowList.size() * this.columnList.size(); + } + + @Override + public Set> cellSet() { + return super.cellSet(); + } + + @Override + Iterator> cellIterator() { + return new AbstractIndexedListIterator>(this.size()){ + + @Override + protected Table.Cell get(final int index) { + return new Tables.AbstractCell(){ + final int rowIndex; + final int columnIndex; + { + this.rowIndex = index / ArrayTable.this.columnList.size(); + this.columnIndex = index % ArrayTable.this.columnList.size(); + } + + @Override + public R getRowKey() { + return ArrayTable.this.rowList.get(this.rowIndex); + } + + @Override + public C getColumnKey() { + return ArrayTable.this.columnList.get(this.columnIndex); + } + + @Override + public V getValue() { + return ArrayTable.this.at(this.rowIndex, this.columnIndex); + } + }; + } + }; + } + + @Override + public Map column(C columnKey) { + Preconditions.checkNotNull(columnKey); + Integer columnIndex = this.columnKeyToIndex.get(columnKey); + return columnIndex == null ? ImmutableMap.of() : new Column(columnIndex); + } + + @Override + public ImmutableSet columnKeySet() { + return this.columnKeyToIndex.keySet(); + } + + @Override + public Map> columnMap() { + ColumnMap map = this.columnMap; + return map == null ? (this.columnMap = new ColumnMap()) : map; + } + + @Override + public Map row(R rowKey) { + Preconditions.checkNotNull(rowKey); + Integer rowIndex = this.rowKeyToIndex.get(rowKey); + return rowIndex == null ? ImmutableMap.of() : new Row(rowIndex); + } + + @Override + public ImmutableSet rowKeySet() { + return this.rowKeyToIndex.keySet(); + } + + @Override + public Map> rowMap() { + RowMap map = this.rowMap; + return map == null ? (this.rowMap = new RowMap()) : map; + } + + @Override + public Collection values() { + return super.values(); + } + + private class RowMap + extends ArrayMap> { + private RowMap() { + super(ArrayTable.this.rowKeyToIndex); + } + + @Override + String getKeyRole() { + return "Row"; + } + + @Override + Map getValue(int index) { + return new Row(index); + } + + @Override + Map setValue(int index, Map newValue) { + throw new UnsupportedOperationException(); + } + + @Override + public Map put(R key, Map value) { + throw new UnsupportedOperationException(); + } + } + + private class Row + extends ArrayMap { + final int rowIndex; + + Row(int rowIndex) { + super(ArrayTable.this.columnKeyToIndex); + this.rowIndex = rowIndex; + } + + @Override + String getKeyRole() { + return "Column"; + } + + @Override + V getValue(int index) { + return ArrayTable.this.at(this.rowIndex, index); + } + + @Override + V setValue(int index, V newValue) { + return ArrayTable.this.set(this.rowIndex, index, newValue); + } + } + + private class ColumnMap + extends ArrayMap> { + private ColumnMap() { + super(ArrayTable.this.columnKeyToIndex); + } + + @Override + String getKeyRole() { + return "Column"; + } + + @Override + Map getValue(int index) { + return new Column(index); + } + + @Override + Map setValue(int index, Map newValue) { + throw new UnsupportedOperationException(); + } + + @Override + public Map put(C key, Map value) { + throw new UnsupportedOperationException(); + } + } + + private class Column + extends ArrayMap { + final int columnIndex; + + Column(int columnIndex) { + super(ArrayTable.this.rowKeyToIndex); + this.columnIndex = columnIndex; + } + + @Override + String getKeyRole() { + return "Row"; + } + + @Override + V getValue(int index) { + return ArrayTable.this.at(index, this.columnIndex); + } + + @Override + V setValue(int index, V newValue) { + return ArrayTable.this.set(index, this.columnIndex, newValue); + } + } + + private static abstract class ArrayMap + extends Maps.ImprovedAbstractMap { + private final ImmutableMap keyIndex; + + private ArrayMap(ImmutableMap keyIndex) { + this.keyIndex = keyIndex; + } + + @Override + public Set keySet() { + return this.keyIndex.keySet(); + } + + K getKey(int index) { + return (K)((ImmutableCollection)((Object)this.keyIndex.keySet())).asList().get(index); + } + + abstract String getKeyRole(); + + @Nullable + abstract V getValue(int var1); + + @Nullable + abstract V setValue(int var1, V var2); + + @Override + public int size() { + return this.keyIndex.size(); + } + + @Override + public boolean isEmpty() { + return this.keyIndex.isEmpty(); + } + + @Override + protected Set> createEntrySet() { + return new Maps.EntrySet(){ + + @Override + Map map() { + return ArrayMap.this; + } + + @Override + public Iterator> iterator() { + return new AbstractIndexedListIterator>(this.size()){ + + @Override + protected Map.Entry get(final int index) { + return new AbstractMapEntry(){ + + @Override + public K getKey() { + return ArrayMap.this.getKey(index); + } + + @Override + public V getValue() { + return ArrayMap.this.getValue(index); + } + + @Override + public V setValue(V value) { + return ArrayMap.this.setValue(index, value); + } + }; + } + }; + } + }; + } + + @Override + public boolean containsKey(@Nullable Object key) { + return this.keyIndex.containsKey(key); + } + + @Override + public V get(@Nullable Object key) { + Integer index = this.keyIndex.get(key); + if (index == null) { + return null; + } + return this.getValue(index); + } + + @Override + public V put(K key, V value) { + Integer index = this.keyIndex.get(key); + if (index == null) { + String string = String.valueOf(String.valueOf(this.getKeyRole())); + String string2 = String.valueOf(String.valueOf(key)); + String string3 = String.valueOf(String.valueOf(this.keyIndex.keySet())); + throw new IllegalArgumentException(new StringBuilder(9 + string.length() + string2.length() + string3.length()).append(string).append(" ").append(string2).append(" not in ").append(string3).toString()); + } + return this.setValue(index, value); + } + + @Override + public V remove(Object key) { + throw new UnsupportedOperationException(); + } + + @Override + public void clear() { + throw new UnsupportedOperationException(); + } + } +} diff --git a/src/com/google/common/collect/BiMap.java b/src/com/google/common/collect/BiMap.java new file mode 100644 index 0000000..748e1d5 --- /dev/null +++ b/src/com/google/common/collect/BiMap.java @@ -0,0 +1,26 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import java.util.Map; +import java.util.Set; +import javax.annotation.Nullable; + +@GwtCompatible +public interface BiMap +extends Map { + @Override + public V put(@Nullable K var1, @Nullable V var2); + + public V forcePut(@Nullable K var1, @Nullable V var2); + + @Override + public void putAll(Map var1); + + @Override + public Set values(); + + public BiMap inverse(); +} diff --git a/src/com/google/common/collect/BinaryTreeTraverser.java b/src/com/google/common/collect/BinaryTreeTraverser.java new file mode 100644 index 0000000..adfc17c --- /dev/null +++ b/src/com/google/common/collect/BinaryTreeTraverser.java @@ -0,0 +1,174 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Optional; +import com.google.common.base.Preconditions; +import com.google.common.collect.AbstractIterator; +import com.google.common.collect.FluentIterable; +import com.google.common.collect.PeekingIterator; +import com.google.common.collect.TreeTraverser; +import com.google.common.collect.UnmodifiableIterator; +import java.util.ArrayDeque; +import java.util.BitSet; +import java.util.Deque; +import java.util.Iterator; + +@Beta +@GwtCompatible(emulated=true) +public abstract class BinaryTreeTraverser +extends TreeTraverser { + public abstract Optional leftChild(T var1); + + public abstract Optional rightChild(T var1); + + @Override + public final Iterable children(final T root) { + Preconditions.checkNotNull(root); + return new FluentIterable(){ + + @Override + public Iterator iterator() { + return new AbstractIterator(){ + boolean doneLeft; + boolean doneRight; + + @Override + protected T computeNext() { + if (!this.doneLeft) { + this.doneLeft = true; + Optional left = BinaryTreeTraverser.this.leftChild(root); + if (left.isPresent()) { + return left.get(); + } + } + if (!this.doneRight) { + this.doneRight = true; + Optional right = BinaryTreeTraverser.this.rightChild(root); + if (right.isPresent()) { + return right.get(); + } + } + return this.endOfData(); + } + }; + } + }; + } + + @Override + UnmodifiableIterator preOrderIterator(T root) { + return new PreOrderIterator(root); + } + + @Override + UnmodifiableIterator postOrderIterator(T root) { + return new PostOrderIterator(root); + } + + public final FluentIterable inOrderTraversal(final T root) { + Preconditions.checkNotNull(root); + return new FluentIterable(){ + + @Override + public UnmodifiableIterator iterator() { + return new InOrderIterator(root); + } + }; + } + + private static void pushIfPresent(Deque stack, Optional node) { + if (node.isPresent()) { + stack.addLast(node.get()); + } + } + + private final class InOrderIterator + extends AbstractIterator { + private final Deque stack = new ArrayDeque(); + private final BitSet hasExpandedLeft = new BitSet(); + + InOrderIterator(T root) { + this.stack.addLast(root); + } + + @Override + protected T computeNext() { + while (!this.stack.isEmpty()) { + Object node = this.stack.getLast(); + if (this.hasExpandedLeft.get(this.stack.size() - 1)) { + this.stack.removeLast(); + this.hasExpandedLeft.clear(this.stack.size()); + BinaryTreeTraverser.pushIfPresent(this.stack, BinaryTreeTraverser.this.rightChild(node)); + return node; + } + this.hasExpandedLeft.set(this.stack.size() - 1); + BinaryTreeTraverser.pushIfPresent(this.stack, BinaryTreeTraverser.this.leftChild(node)); + } + return this.endOfData(); + } + } + + private final class PostOrderIterator + extends UnmodifiableIterator { + private final Deque stack = new ArrayDeque(); + private final BitSet hasExpanded; + + PostOrderIterator(T root) { + this.stack.addLast(root); + this.hasExpanded = new BitSet(); + } + + @Override + public boolean hasNext() { + return !this.stack.isEmpty(); + } + + @Override + public T next() { + while (true) { + Object node = this.stack.getLast(); + boolean expandedNode = this.hasExpanded.get(this.stack.size() - 1); + if (expandedNode) { + this.stack.removeLast(); + this.hasExpanded.clear(this.stack.size()); + return node; + } + this.hasExpanded.set(this.stack.size() - 1); + BinaryTreeTraverser.pushIfPresent(this.stack, BinaryTreeTraverser.this.rightChild(node)); + BinaryTreeTraverser.pushIfPresent(this.stack, BinaryTreeTraverser.this.leftChild(node)); + } + } + } + + private final class PreOrderIterator + extends UnmodifiableIterator + implements PeekingIterator { + private final Deque stack = new ArrayDeque(); + + PreOrderIterator(T root) { + this.stack.addLast(root); + } + + @Override + public boolean hasNext() { + return !this.stack.isEmpty(); + } + + @Override + public T next() { + Object result = this.stack.removeLast(); + BinaryTreeTraverser.pushIfPresent(this.stack, BinaryTreeTraverser.this.rightChild(result)); + BinaryTreeTraverser.pushIfPresent(this.stack, BinaryTreeTraverser.this.leftChild(result)); + return result; + } + + @Override + public T peek() { + return this.stack.getLast(); + } + } +} diff --git a/src/com/google/common/collect/BoundType.java b/src/com/google/common/collect/BoundType.java new file mode 100644 index 0000000..e28fc0c --- /dev/null +++ b/src/com/google/common/collect/BoundType.java @@ -0,0 +1,32 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; + +@GwtCompatible +public enum BoundType { + OPEN{ + + @Override + BoundType flip() { + return CLOSED; + } + } + , + CLOSED{ + + @Override + BoundType flip() { + return OPEN; + } + }; + + + static BoundType forBoolean(boolean inclusive) { + return inclusive ? CLOSED : OPEN; + } + + abstract BoundType flip(); +} diff --git a/src/com/google/common/collect/ByFunctionOrdering.java b/src/com/google/common/collect/ByFunctionOrdering.java new file mode 100644 index 0000000..135880e --- /dev/null +++ b/src/com/google/common/collect/ByFunctionOrdering.java @@ -0,0 +1,53 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Function; +import com.google.common.base.Objects; +import com.google.common.base.Preconditions; +import com.google.common.collect.Ordering; +import java.io.Serializable; +import javax.annotation.Nullable; + +@GwtCompatible(serializable=true) +final class ByFunctionOrdering +extends Ordering +implements Serializable { + final Function function; + final Ordering ordering; + private static final long serialVersionUID = 0L; + + ByFunctionOrdering(Function function, Ordering ordering) { + this.function = Preconditions.checkNotNull(function); + this.ordering = Preconditions.checkNotNull(ordering); + } + + @Override + public int compare(F left, F right) { + return this.ordering.compare(this.function.apply(left), this.function.apply(right)); + } + + @Override + public boolean equals(@Nullable Object object) { + if (object == this) { + return true; + } + if (object instanceof ByFunctionOrdering) { + ByFunctionOrdering that = (ByFunctionOrdering)object; + return this.function.equals(that.function) && this.ordering.equals(that.ordering); + } + return false; + } + + public int hashCode() { + return Objects.hashCode(this.function, this.ordering); + } + + public String toString() { + String string = String.valueOf(String.valueOf(this.ordering)); + String string2 = String.valueOf(String.valueOf(this.function)); + return new StringBuilder(13 + string.length() + string2.length()).append(string).append(".onResultOf(").append(string2).append(")").toString(); + } +} diff --git a/src/com/google/common/collect/CartesianList.java b/src/com/google/common/collect/CartesianList.java new file mode 100644 index 0000000..8d7be2e --- /dev/null +++ b/src/com/google/common/collect/CartesianList.java @@ -0,0 +1,100 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Preconditions; +import com.google.common.collect.ImmutableList; +import com.google.common.math.IntMath; +import java.util.AbstractList; +import java.util.List; +import java.util.ListIterator; +import java.util.RandomAccess; +import javax.annotation.Nullable; + +@GwtCompatible +final class CartesianList +extends AbstractList> +implements RandomAccess { + private final transient ImmutableList> axes; + private final transient int[] axesSizeProduct; + + static List> create(List> lists) { + ImmutableList.Builder axesBuilder = new ImmutableList.Builder(lists.size()); + for (List list : lists) { + ImmutableList copy = ImmutableList.copyOf(list); + if (copy.isEmpty()) { + return ImmutableList.of(); + } + axesBuilder.add(copy); + } + return new CartesianList(axesBuilder.build()); + } + + CartesianList(ImmutableList> axes) { + this.axes = axes; + int[] axesSizeProduct = new int[axes.size() + 1]; + axesSizeProduct[axes.size()] = 1; + try { + for (int i = axes.size() - 1; i >= 0; --i) { + axesSizeProduct[i] = IntMath.checkedMultiply(axesSizeProduct[i + 1], ((List)axes.get(i)).size()); + } + } + catch (ArithmeticException e) { + throw new IllegalArgumentException("Cartesian product too large; must have size at most Integer.MAX_VALUE"); + } + this.axesSizeProduct = axesSizeProduct; + } + + private int getAxisIndexForProductIndex(int index, int axis) { + return index / this.axesSizeProduct[axis + 1] % ((List)this.axes.get(axis)).size(); + } + + @Override + public ImmutableList get(final int index) { + Preconditions.checkElementIndex(index, this.size()); + return new ImmutableList(){ + + @Override + public int size() { + return CartesianList.this.axes.size(); + } + + @Override + public E get(int axis) { + Preconditions.checkElementIndex(axis, this.size()); + int axisIndex = CartesianList.this.getAxisIndexForProductIndex(index, axis); + return ((List)CartesianList.this.axes.get(axis)).get(axisIndex); + } + + @Override + boolean isPartialView() { + return true; + } + }; + } + + @Override + public int size() { + return this.axesSizeProduct[0]; + } + + @Override + public boolean contains(@Nullable Object o) { + if (!(o instanceof List)) { + return false; + } + List list = (List)o; + if (list.size() != this.axes.size()) { + return false; + } + ListIterator itr = list.listIterator(); + while (itr.hasNext()) { + int index = itr.nextIndex(); + if (((List)this.axes.get(index)).contains(itr.next())) continue; + return false; + } + return true; + } +} diff --git a/src/com/google/common/collect/ClassToInstanceMap.java b/src/com/google/common/collect/ClassToInstanceMap.java new file mode 100644 index 0000000..5810c00 --- /dev/null +++ b/src/com/google/common/collect/ClassToInstanceMap.java @@ -0,0 +1,16 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import java.util.Map; +import javax.annotation.Nullable; + +@GwtCompatible +public interface ClassToInstanceMap +extends Map, B> { + public T getInstance(Class var1); + + public T putInstance(Class var1, @Nullable T var2); +} diff --git a/src/com/google/common/collect/CollectPreconditions.java b/src/com/google/common/collect/CollectPreconditions.java new file mode 100644 index 0000000..d524b3c --- /dev/null +++ b/src/com/google/common/collect/CollectPreconditions.java @@ -0,0 +1,37 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Preconditions; + +@GwtCompatible +final class CollectPreconditions { + CollectPreconditions() { + } + + static void checkEntryNotNull(Object key, Object value) { + if (key == null) { + String string = String.valueOf(String.valueOf(value)); + throw new NullPointerException(new StringBuilder(24 + string.length()).append("null key in entry: null=").append(string).toString()); + } + if (value == null) { + String string = String.valueOf(String.valueOf(key)); + throw new NullPointerException(new StringBuilder(26 + string.length()).append("null value in entry: ").append(string).append("=null").toString()); + } + } + + static int checkNonnegative(int value, String name) { + if (value < 0) { + String string = String.valueOf(String.valueOf(name)); + int n = value; + throw new IllegalArgumentException(new StringBuilder(40 + string.length()).append(string).append(" cannot be negative but was: ").append(n).toString()); + } + return value; + } + + static void checkRemove(boolean canRemove) { + Preconditions.checkState(canRemove, "no calls to next() since the last call to remove()"); + } +} diff --git a/src/com/google/common/collect/Collections2.java b/src/com/google/common/collect/Collections2.java new file mode 100644 index 0000000..ba4568e --- /dev/null +++ b/src/com/google/common/collect/Collections2.java @@ -0,0 +1,462 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Function; +import com.google.common.base.Joiner; +import com.google.common.base.Preconditions; +import com.google.common.base.Predicate; +import com.google.common.base.Predicates; +import com.google.common.collect.AbstractIterator; +import com.google.common.collect.CollectPreconditions; +import com.google.common.collect.HashMultiset; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.Iterables; +import com.google.common.collect.Iterators; +import com.google.common.collect.Lists; +import com.google.common.collect.Ordering; +import com.google.common.math.IntMath; +import com.google.common.math.LongMath; +import java.util.AbstractCollection; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.Comparator; +import java.util.Iterator; +import java.util.List; +import javax.annotation.Nullable; + +@GwtCompatible +public final class Collections2 { + static final Joiner STANDARD_JOINER = Joiner.on(", ").useForNull("null"); + + private Collections2() { + } + + public static Collection filter(Collection unfiltered, Predicate predicate) { + if (unfiltered instanceof FilteredCollection) { + return ((FilteredCollection)unfiltered).createCombined(predicate); + } + return new FilteredCollection(Preconditions.checkNotNull(unfiltered), Preconditions.checkNotNull(predicate)); + } + + static boolean safeContains(Collection collection, @Nullable Object object) { + Preconditions.checkNotNull(collection); + try { + return collection.contains(object); + } + catch (ClassCastException e) { + return false; + } + catch (NullPointerException e) { + return false; + } + } + + static boolean safeRemove(Collection collection, @Nullable Object object) { + Preconditions.checkNotNull(collection); + try { + return collection.remove(object); + } + catch (ClassCastException e) { + return false; + } + catch (NullPointerException e) { + return false; + } + } + + public static Collection transform(Collection fromCollection, Function function) { + return new TransformedCollection(fromCollection, function); + } + + static boolean containsAllImpl(Collection self, Collection c) { + return Iterables.all(c, Predicates.in(self)); + } + + static String toStringImpl(final Collection collection) { + StringBuilder sb = Collections2.newStringBuilderForCollection(collection.size()).append('['); + STANDARD_JOINER.appendTo(sb, Iterables.transform(collection, new Function(){ + + @Override + public Object apply(Object input) { + return input == collection ? "(this Collection)" : input; + } + })); + return sb.append(']').toString(); + } + + static StringBuilder newStringBuilderForCollection(int size) { + CollectPreconditions.checkNonnegative(size, "size"); + return new StringBuilder((int)Math.min((long)size * 8L, 0x40000000L)); + } + + static Collection cast(Iterable iterable) { + return (Collection)iterable; + } + + @Beta + public static > Collection> orderedPermutations(Iterable elements) { + return Collections2.orderedPermutations(elements, Ordering.natural()); + } + + @Beta + public static Collection> orderedPermutations(Iterable elements, Comparator comparator) { + return new OrderedPermutationCollection(elements, comparator); + } + + @Beta + public static Collection> permutations(Collection elements) { + return new PermutationCollection(ImmutableList.copyOf(elements)); + } + + private static boolean isPermutation(List first, List second) { + if (first.size() != second.size()) { + return false; + } + HashMultiset firstMultiset = HashMultiset.create(first); + HashMultiset secondMultiset = HashMultiset.create(second); + return firstMultiset.equals(secondMultiset); + } + + private static boolean isPositiveInt(long n) { + return n >= 0L && n <= Integer.MAX_VALUE; + } + + private static class PermutationIterator + extends AbstractIterator> { + final List list; + final int[] c; + final int[] o; + int j; + + PermutationIterator(List list) { + this.list = new ArrayList(list); + int n = list.size(); + this.c = new int[n]; + this.o = new int[n]; + Arrays.fill(this.c, 0); + Arrays.fill(this.o, 1); + this.j = Integer.MAX_VALUE; + } + + @Override + protected List computeNext() { + if (this.j <= 0) { + return (List)this.endOfData(); + } + ImmutableList next = ImmutableList.copyOf(this.list); + this.calculateNextPermutation(); + return next; + } + + void calculateNextPermutation() { + block4: { + int q; + this.j = this.list.size() - 1; + int s = 0; + if (this.j == -1) { + return; + } + while (true) { + if ((q = this.c[this.j] + this.o[this.j]) < 0) { + this.switchDirection(); + continue; + } + if (q != this.j + 1) break; + if (this.j != 0) { + ++s; + this.switchDirection(); + continue; + } + break block4; + break; + } + Collections.swap(this.list, this.j - this.c[this.j] + s, this.j - q + s); + this.c[this.j] = q; + } + } + + void switchDirection() { + this.o[this.j] = -this.o[this.j]; + --this.j; + } + } + + private static final class PermutationCollection + extends AbstractCollection> { + final ImmutableList inputList; + + PermutationCollection(ImmutableList input) { + this.inputList = input; + } + + @Override + public int size() { + return IntMath.factorial(this.inputList.size()); + } + + @Override + public boolean isEmpty() { + return false; + } + + @Override + public Iterator> iterator() { + return new PermutationIterator(this.inputList); + } + + @Override + public boolean contains(@Nullable Object obj) { + if (obj instanceof List) { + List list = (List)obj; + return Collections2.isPermutation(this.inputList, list); + } + return false; + } + + @Override + public String toString() { + String string = String.valueOf(String.valueOf(this.inputList)); + return new StringBuilder(14 + string.length()).append("permutations(").append(string).append(")").toString(); + } + } + + private static final class OrderedPermutationIterator + extends AbstractIterator> { + List nextPermutation; + final Comparator comparator; + + OrderedPermutationIterator(List list, Comparator comparator) { + this.nextPermutation = Lists.newArrayList(list); + this.comparator = comparator; + } + + @Override + protected List computeNext() { + if (this.nextPermutation == null) { + return (List)this.endOfData(); + } + ImmutableList next = ImmutableList.copyOf(this.nextPermutation); + this.calculateNextPermutation(); + return next; + } + + void calculateNextPermutation() { + int j = this.findNextJ(); + if (j == -1) { + this.nextPermutation = null; + return; + } + int l = this.findNextL(j); + Collections.swap(this.nextPermutation, j, l); + int n = this.nextPermutation.size(); + Collections.reverse(this.nextPermutation.subList(j + 1, n)); + } + + int findNextJ() { + for (int k = this.nextPermutation.size() - 2; k >= 0; --k) { + if (this.comparator.compare(this.nextPermutation.get(k), this.nextPermutation.get(k + 1)) >= 0) continue; + return k; + } + return -1; + } + + int findNextL(int j) { + E ak = this.nextPermutation.get(j); + for (int l = this.nextPermutation.size() - 1; l > j; --l) { + if (this.comparator.compare(ak, this.nextPermutation.get(l)) >= 0) continue; + return l; + } + throw new AssertionError((Object)"this statement should be unreachable"); + } + } + + private static final class OrderedPermutationCollection + extends AbstractCollection> { + final ImmutableList inputList; + final Comparator comparator; + final int size; + + OrderedPermutationCollection(Iterable input, Comparator comparator) { + this.inputList = Ordering.from(comparator).immutableSortedCopy(input); + this.comparator = comparator; + this.size = OrderedPermutationCollection.calculateSize(this.inputList, comparator); + } + + private static int calculateSize(List sortedInputList, Comparator comparator) { + long permutations = 1L; + int n = 1; + int r = 1; + while (n < sortedInputList.size()) { + int comparison = comparator.compare(sortedInputList.get(n - 1), sortedInputList.get(n)); + if (comparison < 0) { + permutations *= LongMath.binomial(n, r); + r = 0; + if (!Collections2.isPositiveInt(permutations)) { + return Integer.MAX_VALUE; + } + } + ++n; + ++r; + } + if (!Collections2.isPositiveInt(permutations *= LongMath.binomial(n, r))) { + return Integer.MAX_VALUE; + } + return (int)permutations; + } + + @Override + public int size() { + return this.size; + } + + @Override + public boolean isEmpty() { + return false; + } + + @Override + public Iterator> iterator() { + return new OrderedPermutationIterator(this.inputList, this.comparator); + } + + @Override + public boolean contains(@Nullable Object obj) { + if (obj instanceof List) { + List list = (List)obj; + return Collections2.isPermutation(this.inputList, list); + } + return false; + } + + @Override + public String toString() { + String string = String.valueOf(String.valueOf(this.inputList)); + return new StringBuilder(30 + string.length()).append("orderedPermutationCollection(").append(string).append(")").toString(); + } + } + + static class TransformedCollection + extends AbstractCollection { + final Collection fromCollection; + final Function function; + + TransformedCollection(Collection fromCollection, Function function) { + this.fromCollection = Preconditions.checkNotNull(fromCollection); + this.function = Preconditions.checkNotNull(function); + } + + @Override + public void clear() { + this.fromCollection.clear(); + } + + @Override + public boolean isEmpty() { + return this.fromCollection.isEmpty(); + } + + @Override + public Iterator iterator() { + return Iterators.transform(this.fromCollection.iterator(), this.function); + } + + @Override + public int size() { + return this.fromCollection.size(); + } + } + + static class FilteredCollection + extends AbstractCollection { + final Collection unfiltered; + final Predicate predicate; + + FilteredCollection(Collection unfiltered, Predicate predicate) { + this.unfiltered = unfiltered; + this.predicate = predicate; + } + + FilteredCollection createCombined(Predicate newPredicate) { + return new FilteredCollection(this.unfiltered, Predicates.and(this.predicate, newPredicate)); + } + + @Override + public boolean add(E element) { + Preconditions.checkArgument(this.predicate.apply(element)); + return this.unfiltered.add(element); + } + + @Override + public boolean addAll(Collection collection) { + for (E element : collection) { + Preconditions.checkArgument(this.predicate.apply(element)); + } + return this.unfiltered.addAll(collection); + } + + @Override + public void clear() { + Iterables.removeIf(this.unfiltered, this.predicate); + } + + @Override + public boolean contains(@Nullable Object element) { + if (Collections2.safeContains(this.unfiltered, element)) { + Object e = element; + return this.predicate.apply(e); + } + return false; + } + + @Override + public boolean containsAll(Collection collection) { + return Collections2.containsAllImpl(this, collection); + } + + @Override + public boolean isEmpty() { + return !Iterables.any(this.unfiltered, this.predicate); + } + + @Override + public Iterator iterator() { + return Iterators.filter(this.unfiltered.iterator(), this.predicate); + } + + @Override + public boolean remove(Object element) { + return this.contains(element) && this.unfiltered.remove(element); + } + + @Override + public boolean removeAll(Collection collection) { + return Iterables.removeIf(this.unfiltered, Predicates.and(this.predicate, Predicates.in(collection))); + } + + @Override + public boolean retainAll(Collection collection) { + return Iterables.removeIf(this.unfiltered, Predicates.and(this.predicate, Predicates.not(Predicates.in(collection)))); + } + + @Override + public int size() { + return Iterators.size(this.iterator()); + } + + @Override + public Object[] toArray() { + return Lists.newArrayList(this.iterator()).toArray(); + } + + @Override + public T[] toArray(T[] array) { + return Lists.newArrayList(this.iterator()).toArray(array); + } + } +} diff --git a/src/com/google/common/collect/ComparatorOrdering.java b/src/com/google/common/collect/ComparatorOrdering.java new file mode 100644 index 0000000..ea17e9d --- /dev/null +++ b/src/com/google/common/collect/ComparatorOrdering.java @@ -0,0 +1,48 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Preconditions; +import com.google.common.collect.Ordering; +import java.io.Serializable; +import java.util.Comparator; +import javax.annotation.Nullable; + +@GwtCompatible(serializable=true) +final class ComparatorOrdering +extends Ordering +implements Serializable { + final Comparator comparator; + private static final long serialVersionUID = 0L; + + ComparatorOrdering(Comparator comparator) { + this.comparator = Preconditions.checkNotNull(comparator); + } + + @Override + public int compare(T a, T b) { + return this.comparator.compare(a, b); + } + + @Override + public boolean equals(@Nullable Object object) { + if (object == this) { + return true; + } + if (object instanceof ComparatorOrdering) { + ComparatorOrdering that = (ComparatorOrdering)object; + return this.comparator.equals(that.comparator); + } + return false; + } + + public int hashCode() { + return this.comparator.hashCode(); + } + + public String toString() { + return this.comparator.toString(); + } +} diff --git a/src/com/google/common/collect/ComparisonChain.java b/src/com/google/common/collect/ComparisonChain.java new file mode 100644 index 0000000..f6916bf --- /dev/null +++ b/src/com/google/common/collect/ComparisonChain.java @@ -0,0 +1,145 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.primitives.Booleans; +import com.google.common.primitives.Ints; +import com.google.common.primitives.Longs; +import java.util.Comparator; +import javax.annotation.Nullable; + +@GwtCompatible +public abstract class ComparisonChain { + private static final ComparisonChain ACTIVE = new ComparisonChain(){ + + public ComparisonChain compare(Comparable left, Comparable right) { + return this.classify(left.compareTo(right)); + } + + @Override + public ComparisonChain compare(@Nullable T left, @Nullable T right, Comparator comparator) { + return this.classify(comparator.compare(left, right)); + } + + @Override + public ComparisonChain compare(int left, int right) { + return this.classify(Ints.compare(left, right)); + } + + @Override + public ComparisonChain compare(long left, long right) { + return this.classify(Longs.compare(left, right)); + } + + @Override + public ComparisonChain compare(float left, float right) { + return this.classify(Float.compare(left, right)); + } + + @Override + public ComparisonChain compare(double left, double right) { + return this.classify(Double.compare(left, right)); + } + + @Override + public ComparisonChain compareTrueFirst(boolean left, boolean right) { + return this.classify(Booleans.compare(right, left)); + } + + @Override + public ComparisonChain compareFalseFirst(boolean left, boolean right) { + return this.classify(Booleans.compare(left, right)); + } + + ComparisonChain classify(int result) { + return result < 0 ? LESS : (result > 0 ? GREATER : ACTIVE); + } + + @Override + public int result() { + return 0; + } + }; + private static final ComparisonChain LESS = new InactiveComparisonChain(-1); + private static final ComparisonChain GREATER = new InactiveComparisonChain(1); + + private ComparisonChain() { + } + + public static ComparisonChain start() { + return ACTIVE; + } + + public abstract ComparisonChain compare(Comparable var1, Comparable var2); + + public abstract ComparisonChain compare(@Nullable T var1, @Nullable T var2, Comparator var3); + + public abstract ComparisonChain compare(int var1, int var2); + + public abstract ComparisonChain compare(long var1, long var3); + + public abstract ComparisonChain compare(float var1, float var2); + + public abstract ComparisonChain compare(double var1, double var3); + + public abstract ComparisonChain compareTrueFirst(boolean var1, boolean var2); + + public abstract ComparisonChain compareFalseFirst(boolean var1, boolean var2); + + public abstract int result(); + + private static final class InactiveComparisonChain + extends ComparisonChain { + final int result; + + InactiveComparisonChain(int result) { + this.result = result; + } + + public ComparisonChain compare(@Nullable Comparable left, @Nullable Comparable right) { + return this; + } + + @Override + public ComparisonChain compare(@Nullable T left, @Nullable T right, @Nullable Comparator comparator) { + return this; + } + + @Override + public ComparisonChain compare(int left, int right) { + return this; + } + + @Override + public ComparisonChain compare(long left, long right) { + return this; + } + + @Override + public ComparisonChain compare(float left, float right) { + return this; + } + + @Override + public ComparisonChain compare(double left, double right) { + return this; + } + + @Override + public ComparisonChain compareTrueFirst(boolean left, boolean right) { + return this; + } + + @Override + public ComparisonChain compareFalseFirst(boolean left, boolean right) { + return this; + } + + @Override + public int result() { + return this.result; + } + } +} diff --git a/src/com/google/common/collect/CompoundOrdering.java b/src/com/google/common/collect/CompoundOrdering.java new file mode 100644 index 0000000..1f79679 --- /dev/null +++ b/src/com/google/common/collect/CompoundOrdering.java @@ -0,0 +1,58 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.Ordering; +import java.io.Serializable; +import java.util.Comparator; + +@GwtCompatible(serializable=true) +final class CompoundOrdering +extends Ordering +implements Serializable { + final ImmutableList> comparators; + private static final long serialVersionUID = 0L; + + CompoundOrdering(Comparator primary, Comparator secondary) { + this.comparators = ImmutableList.of(primary, secondary); + } + + CompoundOrdering(Iterable> comparators) { + this.comparators = ImmutableList.copyOf(comparators); + } + + @Override + public int compare(T left, T right) { + int size = this.comparators.size(); + for (int i = 0; i < size; ++i) { + int result = ((Comparator)this.comparators.get(i)).compare(left, right); + if (result == 0) continue; + return result; + } + return 0; + } + + @Override + public boolean equals(Object object) { + if (object == this) { + return true; + } + if (object instanceof CompoundOrdering) { + CompoundOrdering that = (CompoundOrdering)object; + return this.comparators.equals(that.comparators); + } + return false; + } + + public int hashCode() { + return this.comparators.hashCode(); + } + + public String toString() { + String string = String.valueOf(String.valueOf(this.comparators)); + return new StringBuilder(19 + string.length()).append("Ordering.compound(").append(string).append(")").toString(); + } +} diff --git a/src/com/google/common/collect/ComputationException.java b/src/com/google/common/collect/ComputationException.java new file mode 100644 index 0000000..e028ae3 --- /dev/null +++ b/src/com/google/common/collect/ComputationException.java @@ -0,0 +1,17 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import javax.annotation.Nullable; + +@GwtCompatible +public class ComputationException +extends RuntimeException { + private static final long serialVersionUID = 0L; + + public ComputationException(@Nullable Throwable cause) { + super(cause); + } +} diff --git a/src/com/google/common/collect/ComputingConcurrentHashMap.java b/src/com/google/common/collect/ComputingConcurrentHashMap.java new file mode 100644 index 0000000..1b442d9 --- /dev/null +++ b/src/com/google/common/collect/ComputingConcurrentHashMap.java @@ -0,0 +1,365 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.base.Equivalence; +import com.google.common.base.Function; +import com.google.common.base.Preconditions; +import com.google.common.collect.MapMaker; +import com.google.common.collect.MapMakerInternalMap; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.lang.ref.ReferenceQueue; +import java.util.concurrent.ConcurrentMap; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.atomic.AtomicReferenceArray; +import javax.annotation.Nullable; +import javax.annotation.concurrent.GuardedBy; + +class ComputingConcurrentHashMap +extends MapMakerInternalMap { + final Function computingFunction; + private static final long serialVersionUID = 4L; + + ComputingConcurrentHashMap(MapMaker builder, Function computingFunction) { + super(builder); + this.computingFunction = Preconditions.checkNotNull(computingFunction); + } + + @Override + MapMakerInternalMap.Segment createSegment(int initialCapacity, int maxSegmentSize) { + return new ComputingSegment(this, initialCapacity, maxSegmentSize); + } + + @Override + ComputingSegment segmentFor(int hash) { + return (ComputingSegment)super.segmentFor(hash); + } + + V getOrCompute(K key) throws ExecutionException { + int hash = this.hash(Preconditions.checkNotNull(key)); + return ((ComputingSegment)this.segmentFor(hash)).getOrCompute(key, hash, this.computingFunction); + } + + @Override + Object writeReplace() { + return new ComputingSerializationProxy(this.keyStrength, this.valueStrength, this.keyEquivalence, this.valueEquivalence, this.expireAfterWriteNanos, this.expireAfterAccessNanos, this.maximumSize, this.concurrencyLevel, this.removalListener, this, this.computingFunction); + } + + static final class ComputingSerializationProxy + extends MapMakerInternalMap.AbstractSerializationProxy { + final Function computingFunction; + private static final long serialVersionUID = 4L; + + ComputingSerializationProxy(MapMakerInternalMap.Strength keyStrength, MapMakerInternalMap.Strength valueStrength, Equivalence keyEquivalence, Equivalence valueEquivalence, long expireAfterWriteNanos, long expireAfterAccessNanos, int maximumSize, int concurrencyLevel, MapMaker.RemovalListener removalListener, ConcurrentMap delegate, Function computingFunction) { + super(keyStrength, valueStrength, keyEquivalence, valueEquivalence, expireAfterWriteNanos, expireAfterAccessNanos, maximumSize, concurrencyLevel, removalListener, delegate); + this.computingFunction = computingFunction; + } + + private void writeObject(ObjectOutputStream out) throws IOException { + out.defaultWriteObject(); + this.writeMapTo(out); + } + + private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException { + in.defaultReadObject(); + MapMaker mapMaker = this.readMapMaker(in); + this.delegate = mapMaker.makeComputingMap(this.computingFunction); + this.readEntries(in); + } + + Object readResolve() { + return this.delegate; + } + } + + private static final class ComputingValueReference + implements MapMakerInternalMap.ValueReference { + final Function computingFunction; + @GuardedBy(value="ComputingValueReference.this") + volatile MapMakerInternalMap.ValueReference computedReference = MapMakerInternalMap.unset(); + + public ComputingValueReference(Function computingFunction) { + this.computingFunction = computingFunction; + } + + @Override + public V get() { + return null; + } + + @Override + public MapMakerInternalMap.ReferenceEntry getEntry() { + return null; + } + + @Override + public MapMakerInternalMap.ValueReference copyFor(ReferenceQueue queue, @Nullable V value, MapMakerInternalMap.ReferenceEntry entry) { + return this; + } + + @Override + public boolean isComputingReference() { + return true; + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public V waitForValue() throws ExecutionException { + if (this.computedReference == MapMakerInternalMap.UNSET) { + boolean interrupted = false; + try { + ComputingValueReference computingValueReference = this; + synchronized (computingValueReference) { + while (this.computedReference == MapMakerInternalMap.UNSET) { + try { + this.wait(); + } + catch (InterruptedException ie) { + interrupted = true; + } + } + } + } + finally { + if (interrupted) { + Thread.currentThread().interrupt(); + } + } + } + return this.computedReference.waitForValue(); + } + + @Override + public void clear(MapMakerInternalMap.ValueReference newValue) { + this.setValueReference(newValue); + } + + V compute(K key, int hash) throws ExecutionException { + V value; + try { + value = this.computingFunction.apply(key); + } + catch (Throwable t) { + this.setValueReference(new ComputationExceptionReference(t)); + throw new ExecutionException(t); + } + this.setValueReference(new ComputedReference(value)); + return value; + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + void setValueReference(MapMakerInternalMap.ValueReference valueReference) { + ComputingValueReference computingValueReference = this; + synchronized (computingValueReference) { + if (this.computedReference == MapMakerInternalMap.UNSET) { + this.computedReference = valueReference; + this.notifyAll(); + } + } + } + } + + private static final class ComputedReference + implements MapMakerInternalMap.ValueReference { + final V value; + + ComputedReference(@Nullable V value) { + this.value = value; + } + + @Override + public V get() { + return this.value; + } + + @Override + public MapMakerInternalMap.ReferenceEntry getEntry() { + return null; + } + + @Override + public MapMakerInternalMap.ValueReference copyFor(ReferenceQueue queue, V value, MapMakerInternalMap.ReferenceEntry entry) { + return this; + } + + @Override + public boolean isComputingReference() { + return false; + } + + @Override + public V waitForValue() { + return this.get(); + } + + @Override + public void clear(MapMakerInternalMap.ValueReference newValue) { + } + } + + private static final class ComputationExceptionReference + implements MapMakerInternalMap.ValueReference { + final Throwable t; + + ComputationExceptionReference(Throwable t) { + this.t = t; + } + + @Override + public V get() { + return null; + } + + @Override + public MapMakerInternalMap.ReferenceEntry getEntry() { + return null; + } + + @Override + public MapMakerInternalMap.ValueReference copyFor(ReferenceQueue queue, V value, MapMakerInternalMap.ReferenceEntry entry) { + return this; + } + + @Override + public boolean isComputingReference() { + return false; + } + + @Override + public V waitForValue() throws ExecutionException { + throw new ExecutionException(this.t); + } + + @Override + public void clear(MapMakerInternalMap.ValueReference newValue) { + } + } + + static final class ComputingSegment + extends MapMakerInternalMap.Segment { + ComputingSegment(MapMakerInternalMap map, int initialCapacity, int maxSegmentSize) { + super(map, initialCapacity, maxSegmentSize); + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + * Enabled aggressive block sorting + * Enabled unnecessary exception pruning + * Enabled aggressive exception aggregation + */ + V getOrCompute(K key, int hash, Function computingFunction) throws ExecutionException { + try { + Object v; + MapMakerInternalMap.ReferenceEntry e; + Object value; + do { + if ((e = this.getEntry(key, hash)) != null && (value = this.getLiveValue(e)) != null) { + this.recordRead(e); + v = value; + return v; + } + if (e == null || !e.getValueReference().isComputingReference()) { + ComputingValueReference computingValueReference; + boolean createNewEntry; + block22: { + createNewEntry = true; + computingValueReference = null; + this.lock(); + try { + MapMakerInternalMap.ReferenceEntry first; + this.preWriteCleanup(); + int newCount = this.count - 1; + AtomicReferenceArray table = this.table; + int index = hash & table.length() - 1; + for (e = first = (MapMakerInternalMap.ReferenceEntry)table.get(index); e != null; e = e.getNext()) { + Object entryKey = e.getKey(); + if (e.getHash() != hash || entryKey == null || !this.map.keyEquivalence.equivalent(key, entryKey)) continue; + MapMakerInternalMap.ValueReference valueReference = e.getValueReference(); + if (valueReference.isComputingReference()) { + createNewEntry = false; + break; + } + Object value2 = e.getValueReference().get(); + if (value2 == null) { + this.enqueueNotification(entryKey, hash, value2, MapMaker.RemovalCause.COLLECTED); + } else if (this.map.expires() && this.map.isExpired(e)) { + this.enqueueNotification(entryKey, hash, value2, MapMaker.RemovalCause.EXPIRED); + } else { + this.recordLockedRead(e); + Object v2 = value2; + return v2; + } + this.evictionQueue.remove(e); + this.expirationQueue.remove(e); + this.count = newCount; + break; + } + if (!createNewEntry) break block22; + computingValueReference = new ComputingValueReference(computingFunction); + if (e == null) { + e = this.newEntry(key, hash, first); + e.setValueReference(computingValueReference); + table.set(index, e); + } else { + e.setValueReference(computingValueReference); + } + } + finally { + this.unlock(); + this.postWriteCleanup(); + } + } + if (createNewEntry) { + V v3 = this.compute(key, hash, e, computingValueReference); + return v3; + } + } + Preconditions.checkState(!Thread.holdsLock(e), "Recursive computation"); + } while ((value = e.getValueReference().waitForValue()) == null); + this.recordRead(e); + v = value; + return v; + } + finally { + this.postReadCleanup(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + V compute(K key, int hash, MapMakerInternalMap.ReferenceEntry e, ComputingValueReference computingValueReference) throws ExecutionException { + Object value = null; + long start = System.nanoTime(); + long end = 0L; + try { + Object oldValue; + MapMakerInternalMap.ReferenceEntry referenceEntry = e; + synchronized (referenceEntry) { + value = computingValueReference.compute(key, hash); + end = System.nanoTime(); + } + if (value != null && (oldValue = this.put(key, hash, value, true)) != null) { + this.enqueueNotification(key, hash, value, MapMaker.RemovalCause.REPLACED); + } + referenceEntry = value; + return (V)referenceEntry; + } + finally { + if (end == 0L) { + end = System.nanoTime(); + } + if (value == null) { + this.clearValue(key, hash, computingValueReference); + } + } + } + } +} diff --git a/src/com/google/common/collect/ConcurrentHashMultiset.java b/src/com/google/common/collect/ConcurrentHashMultiset.java new file mode 100644 index 0000000..1dfb007 --- /dev/null +++ b/src/com/google/common/collect/ConcurrentHashMultiset.java @@ -0,0 +1,383 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.Preconditions; +import com.google.common.collect.AbstractIterator; +import com.google.common.collect.AbstractMultiset; +import com.google.common.collect.CollectPreconditions; +import com.google.common.collect.Collections2; +import com.google.common.collect.ForwardingIterator; +import com.google.common.collect.ForwardingSet; +import com.google.common.collect.Iterables; +import com.google.common.collect.Iterators; +import com.google.common.collect.Lists; +import com.google.common.collect.MapMaker; +import com.google.common.collect.Maps; +import com.google.common.collect.Multiset; +import com.google.common.collect.Multisets; +import com.google.common.collect.Serialization; +import com.google.common.math.IntMath; +import com.google.common.primitives.Ints; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentMap; +import java.util.concurrent.atomic.AtomicInteger; +import javax.annotation.Nullable; + +public final class ConcurrentHashMultiset +extends AbstractMultiset +implements Serializable { + private final transient ConcurrentMap countMap; + private static final long serialVersionUID = 1L; + + public static ConcurrentHashMultiset create() { + return new ConcurrentHashMultiset(new ConcurrentHashMap()); + } + + public static ConcurrentHashMultiset create(Iterable elements) { + ConcurrentHashMultiset multiset = ConcurrentHashMultiset.create(); + Iterables.addAll(multiset, elements); + return multiset; + } + + @Beta + public static ConcurrentHashMultiset create(MapMaker mapMaker) { + return new ConcurrentHashMultiset(mapMaker.makeMap()); + } + + @VisibleForTesting + ConcurrentHashMultiset(ConcurrentMap countMap) { + Preconditions.checkArgument(countMap.isEmpty()); + this.countMap = countMap; + } + + @Override + public int count(@Nullable Object element) { + AtomicInteger existingCounter = Maps.safeGet(this.countMap, element); + return existingCounter == null ? 0 : existingCounter.get(); + } + + @Override + public int size() { + long sum = 0L; + for (AtomicInteger value : this.countMap.values()) { + sum += (long)value.get(); + } + return Ints.saturatedCast(sum); + } + + @Override + public Object[] toArray() { + return this.snapshot().toArray(); + } + + @Override + public T[] toArray(T[] array) { + return this.snapshot().toArray(array); + } + + private List snapshot() { + ArrayList list = Lists.newArrayListWithExpectedSize(this.size()); + for (Multiset.Entry entry : this.entrySet()) { + Object element = entry.getElement(); + for (int i = entry.getCount(); i > 0; --i) { + list.add(element); + } + } + return list; + } + + @Override + public int add(E element, int occurrences) { + AtomicInteger existingCounter; + AtomicInteger newCounter; + Preconditions.checkNotNull(element); + if (occurrences == 0) { + return this.count(element); + } + Preconditions.checkArgument(occurrences > 0, "Invalid occurrences: %s", occurrences); + do { + int oldValue; + if ((existingCounter = Maps.safeGet(this.countMap, element)) == null && (existingCounter = this.countMap.putIfAbsent(element, new AtomicInteger(occurrences))) == null) { + return 0; + } + while ((oldValue = existingCounter.get()) != 0) { + try { + int newValue = IntMath.checkedAdd(oldValue, occurrences); + if (!existingCounter.compareAndSet(oldValue, newValue)) continue; + return oldValue; + } + catch (ArithmeticException overflow) { + int n = occurrences; + int n2 = oldValue; + throw new IllegalArgumentException(new StringBuilder(65).append("Overflow adding ").append(n).append(" occurrences to a count of ").append(n2).toString()); + } + } + } while (this.countMap.putIfAbsent(element, newCounter = new AtomicInteger(occurrences)) != null && !this.countMap.replace(element, existingCounter, newCounter)); + return 0; + } + + @Override + public int remove(@Nullable Object element, int occurrences) { + int oldValue; + if (occurrences == 0) { + return this.count(element); + } + Preconditions.checkArgument(occurrences > 0, "Invalid occurrences: %s", occurrences); + AtomicInteger existingCounter = Maps.safeGet(this.countMap, element); + if (existingCounter == null) { + return 0; + } + while ((oldValue = existingCounter.get()) != 0) { + int newValue = Math.max(0, oldValue - occurrences); + if (!existingCounter.compareAndSet(oldValue, newValue)) continue; + if (newValue == 0) { + this.countMap.remove(element, existingCounter); + } + return oldValue; + } + return 0; + } + + public boolean removeExactly(@Nullable Object element, int occurrences) { + int newValue; + int oldValue; + if (occurrences == 0) { + return true; + } + Preconditions.checkArgument(occurrences > 0, "Invalid occurrences: %s", occurrences); + AtomicInteger existingCounter = Maps.safeGet(this.countMap, element); + if (existingCounter == null) { + return false; + } + do { + if ((oldValue = existingCounter.get()) >= occurrences) continue; + return false; + } while (!existingCounter.compareAndSet(oldValue, newValue = oldValue - occurrences)); + if (newValue == 0) { + this.countMap.remove(element, existingCounter); + } + return true; + } + + @Override + public int setCount(E element, int count) { + int oldValue; + AtomicInteger existingCounter; + Preconditions.checkNotNull(element); + CollectPreconditions.checkNonnegative(count, "count"); + block0: while (true) { + if ((existingCounter = Maps.safeGet(this.countMap, element)) == null) { + if (count == 0) { + return 0; + } + existingCounter = this.countMap.putIfAbsent(element, new AtomicInteger(count)); + if (existingCounter == null) { + return 0; + } + } + do { + if ((oldValue = existingCounter.get()) != 0) continue; + if (count == 0) { + return 0; + } + AtomicInteger newCounter = new AtomicInteger(count); + if (this.countMap.putIfAbsent(element, newCounter) != null && !this.countMap.replace(element, existingCounter, newCounter)) continue block0; + return 0; + } while (!existingCounter.compareAndSet(oldValue, count)); + break; + } + if (count == 0) { + this.countMap.remove(element, existingCounter); + } + return oldValue; + } + + @Override + public boolean setCount(E element, int expectedOldCount, int newCount) { + Preconditions.checkNotNull(element); + CollectPreconditions.checkNonnegative(expectedOldCount, "oldCount"); + CollectPreconditions.checkNonnegative(newCount, "newCount"); + AtomicInteger existingCounter = Maps.safeGet(this.countMap, element); + if (existingCounter == null) { + if (expectedOldCount != 0) { + return false; + } + if (newCount == 0) { + return true; + } + return this.countMap.putIfAbsent(element, new AtomicInteger(newCount)) == null; + } + int oldValue = existingCounter.get(); + if (oldValue == expectedOldCount) { + if (oldValue == 0) { + if (newCount == 0) { + this.countMap.remove(element, existingCounter); + return true; + } + AtomicInteger newCounter = new AtomicInteger(newCount); + return this.countMap.putIfAbsent(element, newCounter) == null || this.countMap.replace(element, existingCounter, newCounter); + } + if (existingCounter.compareAndSet(oldValue, newCount)) { + if (newCount == 0) { + this.countMap.remove(element, existingCounter); + } + return true; + } + } + return false; + } + + @Override + Set createElementSet() { + final Set delegate = this.countMap.keySet(); + return new ForwardingSet(){ + + @Override + protected Set delegate() { + return delegate; + } + + @Override + public boolean contains(@Nullable Object object) { + return object != null && Collections2.safeContains(delegate, object); + } + + @Override + public boolean containsAll(Collection collection) { + return this.standardContainsAll(collection); + } + + @Override + public boolean remove(Object object) { + return object != null && Collections2.safeRemove(delegate, object); + } + + @Override + public boolean removeAll(Collection c) { + return this.standardRemoveAll(c); + } + }; + } + + @Override + public Set> createEntrySet() { + return new EntrySet(); + } + + @Override + int distinctElements() { + return this.countMap.size(); + } + + @Override + public boolean isEmpty() { + return this.countMap.isEmpty(); + } + + @Override + Iterator> entryIterator() { + final AbstractIterator readOnlyIterator = new AbstractIterator>(){ + private Iterator> mapEntries; + { + this.mapEntries = ConcurrentHashMultiset.this.countMap.entrySet().iterator(); + } + + @Override + protected Multiset.Entry computeNext() { + Map.Entry mapEntry; + int count; + do { + if (this.mapEntries.hasNext()) continue; + return (Multiset.Entry)this.endOfData(); + } while ((count = (mapEntry = this.mapEntries.next()).getValue().get()) == 0); + return Multisets.immutableEntry(mapEntry.getKey(), count); + } + }; + return new ForwardingIterator>(){ + private Multiset.Entry last; + + @Override + protected Iterator> delegate() { + return readOnlyIterator; + } + + @Override + public Multiset.Entry next() { + this.last = (Multiset.Entry)super.next(); + return this.last; + } + + @Override + public void remove() { + CollectPreconditions.checkRemove(this.last != null); + ConcurrentHashMultiset.this.setCount(this.last.getElement(), 0); + this.last = null; + } + }; + } + + @Override + public void clear() { + this.countMap.clear(); + } + + private void writeObject(ObjectOutputStream stream) throws IOException { + stream.defaultWriteObject(); + stream.writeObject(this.countMap); + } + + private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException { + stream.defaultReadObject(); + ConcurrentMap deserializedCountMap = (ConcurrentMap)stream.readObject(); + FieldSettersHolder.COUNT_MAP_FIELD_SETTER.set(this, deserializedCountMap); + } + + private class EntrySet + extends AbstractMultiset.EntrySet { + private EntrySet() { + super(ConcurrentHashMultiset.this); + } + + @Override + ConcurrentHashMultiset multiset() { + return ConcurrentHashMultiset.this; + } + + @Override + public Object[] toArray() { + return this.snapshot().toArray(); + } + + @Override + public T[] toArray(T[] array) { + return this.snapshot().toArray(array); + } + + private List> snapshot() { + ArrayList list = Lists.newArrayListWithExpectedSize(this.size()); + Iterators.addAll(list, this.iterator()); + return list; + } + } + + private static class FieldSettersHolder { + static final Serialization.FieldSetter COUNT_MAP_FIELD_SETTER = Serialization.getFieldSetter(ConcurrentHashMultiset.class, "countMap"); + + private FieldSettersHolder() { + } + } +} diff --git a/src/com/google/common/collect/Constraint.java b/src/com/google/common/collect/Constraint.java new file mode 100644 index 0000000..f4325ad --- /dev/null +++ b/src/com/google/common/collect/Constraint.java @@ -0,0 +1,13 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; + +@GwtCompatible +interface Constraint { + public E checkElement(E var1); + + public String toString(); +} diff --git a/src/com/google/common/collect/Constraints.java b/src/com/google/common/collect/Constraints.java new file mode 100644 index 0000000..7e56aa6 --- /dev/null +++ b/src/com/google/common/collect/Constraints.java @@ -0,0 +1,260 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Preconditions; +import com.google.common.collect.Constraint; +import com.google.common.collect.ForwardingCollection; +import com.google.common.collect.ForwardingList; +import com.google.common.collect.ForwardingListIterator; +import com.google.common.collect.ForwardingSet; +import com.google.common.collect.ForwardingSortedSet; +import com.google.common.collect.Lists; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.ListIterator; +import java.util.RandomAccess; +import java.util.Set; +import java.util.SortedSet; + +@GwtCompatible +final class Constraints { + private Constraints() { + } + + public static Collection constrainedCollection(Collection collection, Constraint constraint) { + return new ConstrainedCollection(collection, constraint); + } + + public static Set constrainedSet(Set set, Constraint constraint) { + return new ConstrainedSet(set, constraint); + } + + public static SortedSet constrainedSortedSet(SortedSet sortedSet, Constraint constraint) { + return new ConstrainedSortedSet(sortedSet, constraint); + } + + public static List constrainedList(List list, Constraint constraint) { + return list instanceof RandomAccess ? new ConstrainedRandomAccessList(list, constraint) : new ConstrainedList(list, constraint); + } + + private static ListIterator constrainedListIterator(ListIterator listIterator, Constraint constraint) { + return new ConstrainedListIterator(listIterator, constraint); + } + + static Collection constrainedTypePreservingCollection(Collection collection, Constraint constraint) { + if (collection instanceof SortedSet) { + return Constraints.constrainedSortedSet((SortedSet)collection, constraint); + } + if (collection instanceof Set) { + return Constraints.constrainedSet((Set)collection, constraint); + } + if (collection instanceof List) { + return Constraints.constrainedList((List)collection, constraint); + } + return Constraints.constrainedCollection(collection, constraint); + } + + private static Collection checkElements(Collection elements, Constraint constraint) { + ArrayList copy = Lists.newArrayList(elements); + for (Object element : copy) { + constraint.checkElement(element); + } + return copy; + } + + static class ConstrainedListIterator + extends ForwardingListIterator { + private final ListIterator delegate; + private final Constraint constraint; + + public ConstrainedListIterator(ListIterator delegate, Constraint constraint) { + this.delegate = delegate; + this.constraint = constraint; + } + + @Override + protected ListIterator delegate() { + return this.delegate; + } + + @Override + public void add(E element) { + this.constraint.checkElement(element); + this.delegate.add(element); + } + + @Override + public void set(E element) { + this.constraint.checkElement(element); + this.delegate.set(element); + } + } + + static class ConstrainedRandomAccessList + extends ConstrainedList + implements RandomAccess { + ConstrainedRandomAccessList(List delegate, Constraint constraint) { + super(delegate, constraint); + } + } + + @GwtCompatible + private static class ConstrainedList + extends ForwardingList { + final List delegate; + final Constraint constraint; + + ConstrainedList(List delegate, Constraint constraint) { + this.delegate = Preconditions.checkNotNull(delegate); + this.constraint = Preconditions.checkNotNull(constraint); + } + + @Override + protected List delegate() { + return this.delegate; + } + + @Override + public boolean add(E element) { + this.constraint.checkElement(element); + return this.delegate.add(element); + } + + @Override + public void add(int index, E element) { + this.constraint.checkElement(element); + this.delegate.add(index, element); + } + + @Override + public boolean addAll(Collection elements) { + return this.delegate.addAll(Constraints.checkElements(elements, this.constraint)); + } + + @Override + public boolean addAll(int index, Collection elements) { + return this.delegate.addAll(index, Constraints.checkElements(elements, this.constraint)); + } + + @Override + public ListIterator listIterator() { + return Constraints.constrainedListIterator(this.delegate.listIterator(), this.constraint); + } + + @Override + public ListIterator listIterator(int index) { + return Constraints.constrainedListIterator(this.delegate.listIterator(index), this.constraint); + } + + @Override + public E set(int index, E element) { + this.constraint.checkElement(element); + return this.delegate.set(index, element); + } + + @Override + public List subList(int fromIndex, int toIndex) { + return Constraints.constrainedList(this.delegate.subList(fromIndex, toIndex), this.constraint); + } + } + + private static class ConstrainedSortedSet + extends ForwardingSortedSet { + final SortedSet delegate; + final Constraint constraint; + + ConstrainedSortedSet(SortedSet delegate, Constraint constraint) { + this.delegate = Preconditions.checkNotNull(delegate); + this.constraint = Preconditions.checkNotNull(constraint); + } + + @Override + protected SortedSet delegate() { + return this.delegate; + } + + @Override + public SortedSet headSet(E toElement) { + return Constraints.constrainedSortedSet(this.delegate.headSet(toElement), this.constraint); + } + + @Override + public SortedSet subSet(E fromElement, E toElement) { + return Constraints.constrainedSortedSet(this.delegate.subSet(fromElement, toElement), this.constraint); + } + + @Override + public SortedSet tailSet(E fromElement) { + return Constraints.constrainedSortedSet(this.delegate.tailSet(fromElement), this.constraint); + } + + @Override + public boolean add(E element) { + this.constraint.checkElement(element); + return this.delegate.add(element); + } + + @Override + public boolean addAll(Collection elements) { + return this.delegate.addAll(Constraints.checkElements(elements, this.constraint)); + } + } + + static class ConstrainedSet + extends ForwardingSet { + private final Set delegate; + private final Constraint constraint; + + public ConstrainedSet(Set delegate, Constraint constraint) { + this.delegate = Preconditions.checkNotNull(delegate); + this.constraint = Preconditions.checkNotNull(constraint); + } + + @Override + protected Set delegate() { + return this.delegate; + } + + @Override + public boolean add(E element) { + this.constraint.checkElement(element); + return this.delegate.add(element); + } + + @Override + public boolean addAll(Collection elements) { + return this.delegate.addAll(Constraints.checkElements(elements, this.constraint)); + } + } + + static class ConstrainedCollection + extends ForwardingCollection { + private final Collection delegate; + private final Constraint constraint; + + public ConstrainedCollection(Collection delegate, Constraint constraint) { + this.delegate = Preconditions.checkNotNull(delegate); + this.constraint = Preconditions.checkNotNull(constraint); + } + + @Override + protected Collection delegate() { + return this.delegate; + } + + @Override + public boolean add(E element) { + this.constraint.checkElement(element); + return this.delegate.add(element); + } + + @Override + public boolean addAll(Collection elements) { + return this.delegate.addAll(Constraints.checkElements(elements, this.constraint)); + } + } +} diff --git a/src/com/google/common/collect/ContiguousSet.java b/src/com/google/common/collect/ContiguousSet.java new file mode 100644 index 0000000..aa09538 --- /dev/null +++ b/src/com/google/common/collect/ContiguousSet.java @@ -0,0 +1,112 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.base.Preconditions; +import com.google.common.collect.BoundType; +import com.google.common.collect.DiscreteDomain; +import com.google.common.collect.EmptyContiguousSet; +import com.google.common.collect.ImmutableSortedSet; +import com.google.common.collect.Ordering; +import com.google.common.collect.Range; +import com.google.common.collect.RegularContiguousSet; +import java.util.NoSuchElementException; + +@Beta +@GwtCompatible(emulated=true) +public abstract class ContiguousSet +extends ImmutableSortedSet { + final DiscreteDomain domain; + + public static ContiguousSet create(Range range, DiscreteDomain domain) { + Preconditions.checkNotNull(range); + Preconditions.checkNotNull(domain); + Range effectiveRange = range; + try { + if (!range.hasLowerBound()) { + effectiveRange = effectiveRange.intersection(Range.atLeast(domain.minValue())); + } + if (!range.hasUpperBound()) { + effectiveRange = effectiveRange.intersection(Range.atMost(domain.maxValue())); + } + } + catch (NoSuchElementException e) { + throw new IllegalArgumentException(e); + } + boolean empty = effectiveRange.isEmpty() || Range.compareOrThrow(range.lowerBound.leastValueAbove(domain), range.upperBound.greatestValueBelow(domain)) > 0; + return empty ? new EmptyContiguousSet(domain) : new RegularContiguousSet(effectiveRange, domain); + } + + ContiguousSet(DiscreteDomain domain) { + super(Ordering.natural()); + this.domain = domain; + } + + @Override + public ContiguousSet headSet(C toElement) { + return this.headSetImpl((C)((Comparable)Preconditions.checkNotNull(toElement)), false); + } + + @Override + @GwtIncompatible(value="NavigableSet") + public ContiguousSet headSet(C toElement, boolean inclusive) { + return this.headSetImpl((C)((Comparable)Preconditions.checkNotNull(toElement)), inclusive); + } + + @Override + public ContiguousSet subSet(C fromElement, C toElement) { + Preconditions.checkNotNull(fromElement); + Preconditions.checkNotNull(toElement); + Preconditions.checkArgument(this.comparator().compare(fromElement, toElement) <= 0); + return this.subSetImpl(fromElement, true, toElement, false); + } + + @Override + @GwtIncompatible(value="NavigableSet") + public ContiguousSet subSet(C fromElement, boolean fromInclusive, C toElement, boolean toInclusive) { + Preconditions.checkNotNull(fromElement); + Preconditions.checkNotNull(toElement); + Preconditions.checkArgument(this.comparator().compare(fromElement, toElement) <= 0); + return this.subSetImpl(fromElement, fromInclusive, toElement, toInclusive); + } + + @Override + public ContiguousSet tailSet(C fromElement) { + return this.tailSetImpl((C)((Comparable)Preconditions.checkNotNull(fromElement)), true); + } + + @Override + @GwtIncompatible(value="NavigableSet") + public ContiguousSet tailSet(C fromElement, boolean inclusive) { + return this.tailSetImpl((C)((Comparable)Preconditions.checkNotNull(fromElement)), inclusive); + } + + @Override + abstract ContiguousSet headSetImpl(C var1, boolean var2); + + @Override + abstract ContiguousSet subSetImpl(C var1, boolean var2, C var3, boolean var4); + + @Override + abstract ContiguousSet tailSetImpl(C var1, boolean var2); + + public abstract ContiguousSet intersection(ContiguousSet var1); + + public abstract Range range(); + + public abstract Range range(BoundType var1, BoundType var2); + + @Override + public String toString() { + return this.range().toString(); + } + + @Deprecated + public static ImmutableSortedSet.Builder builder() { + throw new UnsupportedOperationException(); + } +} diff --git a/src/com/google/common/collect/Count.java b/src/com/google/common/collect/Count.java new file mode 100644 index 0000000..c55aafa --- /dev/null +++ b/src/com/google/common/collect/Count.java @@ -0,0 +1,54 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import java.io.Serializable; +import javax.annotation.Nullable; + +@GwtCompatible +final class Count +implements Serializable { + private int value; + + Count(int value) { + this.value = value; + } + + public int get() { + return this.value; + } + + public int getAndAdd(int delta) { + int result = this.value; + this.value = result + delta; + return result; + } + + public int addAndGet(int delta) { + return this.value += delta; + } + + public void set(int newValue) { + this.value = newValue; + } + + public int getAndSet(int newValue) { + int result = this.value; + this.value = newValue; + return result; + } + + public int hashCode() { + return this.value; + } + + public boolean equals(@Nullable Object obj) { + return obj instanceof Count && ((Count)obj).value == this.value; + } + + public String toString() { + return Integer.toString(this.value); + } +} diff --git a/src/com/google/common/collect/Cut.java b/src/com/google/common/collect/Cut.java new file mode 100644 index 0000000..024234e --- /dev/null +++ b/src/com/google/common/collect/Cut.java @@ -0,0 +1,421 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Preconditions; +import com.google.common.collect.BoundType; +import com.google.common.collect.DiscreteDomain; +import com.google.common.collect.Range; +import com.google.common.primitives.Booleans; +import java.io.Serializable; +import java.util.NoSuchElementException; +import javax.annotation.Nullable; + +@GwtCompatible +abstract class Cut +implements Comparable>, +Serializable { + final C endpoint; + private static final long serialVersionUID = 0L; + + Cut(@Nullable C endpoint) { + this.endpoint = endpoint; + } + + abstract boolean isLessThan(C var1); + + abstract BoundType typeAsLowerBound(); + + abstract BoundType typeAsUpperBound(); + + abstract Cut withLowerBoundType(BoundType var1, DiscreteDomain var2); + + abstract Cut withUpperBoundType(BoundType var1, DiscreteDomain var2); + + abstract void describeAsLowerBound(StringBuilder var1); + + abstract void describeAsUpperBound(StringBuilder var1); + + abstract C leastValueAbove(DiscreteDomain var1); + + abstract C greatestValueBelow(DiscreteDomain var1); + + Cut canonical(DiscreteDomain domain) { + return this; + } + + @Override + public int compareTo(Cut that) { + if (that == Cut.belowAll()) { + return 1; + } + if (that == Cut.aboveAll()) { + return -1; + } + int result = Range.compareOrThrow(this.endpoint, that.endpoint); + if (result != 0) { + return result; + } + return Booleans.compare(this instanceof AboveValue, that instanceof AboveValue); + } + + C endpoint() { + return this.endpoint; + } + + public boolean equals(Object obj) { + if (obj instanceof Cut) { + Cut that = (Cut)obj; + try { + int compareResult = this.compareTo(that); + return compareResult == 0; + } + catch (ClassCastException classCastException) { + // empty catch block + } + } + return false; + } + + static Cut belowAll() { + return BelowAll.INSTANCE; + } + + static Cut aboveAll() { + return AboveAll.INSTANCE; + } + + static Cut belowValue(C endpoint) { + return new BelowValue(endpoint); + } + + static Cut aboveValue(C endpoint) { + return new AboveValue(endpoint); + } + + private static final class AboveValue + extends Cut { + private static final long serialVersionUID = 0L; + + AboveValue(C endpoint) { + super((Comparable)Preconditions.checkNotNull(endpoint)); + } + + @Override + boolean isLessThan(C value) { + return Range.compareOrThrow(this.endpoint, value) < 0; + } + + @Override + BoundType typeAsLowerBound() { + return BoundType.OPEN; + } + + @Override + BoundType typeAsUpperBound() { + return BoundType.CLOSED; + } + + @Override + Cut withLowerBoundType(BoundType boundType, DiscreteDomain domain) { + switch (boundType) { + case OPEN: { + return this; + } + case CLOSED: { + Comparable next = domain.next(this.endpoint); + return next == null ? Cut.belowAll() : AboveValue.belowValue(next); + } + } + throw new AssertionError(); + } + + @Override + Cut withUpperBoundType(BoundType boundType, DiscreteDomain domain) { + switch (boundType) { + case OPEN: { + Comparable next = domain.next(this.endpoint); + return next == null ? Cut.aboveAll() : AboveValue.belowValue(next); + } + case CLOSED: { + return this; + } + } + throw new AssertionError(); + } + + @Override + void describeAsLowerBound(StringBuilder sb) { + sb.append('(').append(this.endpoint); + } + + @Override + void describeAsUpperBound(StringBuilder sb) { + sb.append(this.endpoint).append(']'); + } + + @Override + C leastValueAbove(DiscreteDomain domain) { + return (C)domain.next(this.endpoint); + } + + @Override + C greatestValueBelow(DiscreteDomain domain) { + return (C)this.endpoint; + } + + @Override + Cut canonical(DiscreteDomain domain) { + C next = this.leastValueAbove(domain); + return next != null ? AboveValue.belowValue(next) : Cut.aboveAll(); + } + + public int hashCode() { + return ~this.endpoint.hashCode(); + } + + public String toString() { + String string = String.valueOf(String.valueOf(this.endpoint)); + return new StringBuilder(2 + string.length()).append("/").append(string).append("\\").toString(); + } + } + + private static final class BelowValue + extends Cut { + private static final long serialVersionUID = 0L; + + BelowValue(C endpoint) { + super((Comparable)Preconditions.checkNotNull(endpoint)); + } + + @Override + boolean isLessThan(C value) { + return Range.compareOrThrow(this.endpoint, value) <= 0; + } + + @Override + BoundType typeAsLowerBound() { + return BoundType.CLOSED; + } + + @Override + BoundType typeAsUpperBound() { + return BoundType.OPEN; + } + + @Override + Cut withLowerBoundType(BoundType boundType, DiscreteDomain domain) { + switch (boundType) { + case CLOSED: { + return this; + } + case OPEN: { + Comparable previous = domain.previous(this.endpoint); + return previous == null ? Cut.belowAll() : new AboveValue(previous); + } + } + throw new AssertionError(); + } + + @Override + Cut withUpperBoundType(BoundType boundType, DiscreteDomain domain) { + switch (boundType) { + case CLOSED: { + Comparable previous = domain.previous(this.endpoint); + return previous == null ? Cut.aboveAll() : new AboveValue(previous); + } + case OPEN: { + return this; + } + } + throw new AssertionError(); + } + + @Override + void describeAsLowerBound(StringBuilder sb) { + sb.append('[').append(this.endpoint); + } + + @Override + void describeAsUpperBound(StringBuilder sb) { + sb.append(this.endpoint).append(')'); + } + + @Override + C leastValueAbove(DiscreteDomain domain) { + return (C)this.endpoint; + } + + @Override + C greatestValueBelow(DiscreteDomain domain) { + return (C)domain.previous(this.endpoint); + } + + public int hashCode() { + return this.endpoint.hashCode(); + } + + public String toString() { + String string = String.valueOf(String.valueOf(this.endpoint)); + return new StringBuilder(2 + string.length()).append("\\").append(string).append("/").toString(); + } + } + + private static final class AboveAll + extends Cut> { + private static final AboveAll INSTANCE = new AboveAll(); + private static final long serialVersionUID = 0L; + + private AboveAll() { + super(null); + } + + @Override + Comparable endpoint() { + throw new IllegalStateException("range unbounded on this side"); + } + + @Override + boolean isLessThan(Comparable value) { + return false; + } + + @Override + BoundType typeAsLowerBound() { + throw new AssertionError((Object)"this statement should be unreachable"); + } + + @Override + BoundType typeAsUpperBound() { + throw new IllegalStateException(); + } + + @Override + Cut> withLowerBoundType(BoundType boundType, DiscreteDomain> domain) { + throw new AssertionError((Object)"this statement should be unreachable"); + } + + @Override + Cut> withUpperBoundType(BoundType boundType, DiscreteDomain> domain) { + throw new IllegalStateException(); + } + + @Override + void describeAsLowerBound(StringBuilder sb) { + throw new AssertionError(); + } + + @Override + void describeAsUpperBound(StringBuilder sb) { + sb.append("+\u221e)"); + } + + @Override + Comparable leastValueAbove(DiscreteDomain> domain) { + throw new AssertionError(); + } + + @Override + Comparable greatestValueBelow(DiscreteDomain> domain) { + return domain.maxValue(); + } + + @Override + public int compareTo(Cut> o) { + return o == this ? 0 : 1; + } + + public String toString() { + return "+\u221e"; + } + + private Object readResolve() { + return INSTANCE; + } + } + + private static final class BelowAll + extends Cut> { + private static final BelowAll INSTANCE = new BelowAll(); + private static final long serialVersionUID = 0L; + + private BelowAll() { + super(null); + } + + @Override + Comparable endpoint() { + throw new IllegalStateException("range unbounded on this side"); + } + + @Override + boolean isLessThan(Comparable value) { + return true; + } + + @Override + BoundType typeAsLowerBound() { + throw new IllegalStateException(); + } + + @Override + BoundType typeAsUpperBound() { + throw new AssertionError((Object)"this statement should be unreachable"); + } + + @Override + Cut> withLowerBoundType(BoundType boundType, DiscreteDomain> domain) { + throw new IllegalStateException(); + } + + @Override + Cut> withUpperBoundType(BoundType boundType, DiscreteDomain> domain) { + throw new AssertionError((Object)"this statement should be unreachable"); + } + + @Override + void describeAsLowerBound(StringBuilder sb) { + sb.append("(-\u221e"); + } + + @Override + void describeAsUpperBound(StringBuilder sb) { + throw new AssertionError(); + } + + @Override + Comparable leastValueAbove(DiscreteDomain> domain) { + return domain.minValue(); + } + + @Override + Comparable greatestValueBelow(DiscreteDomain> domain) { + throw new AssertionError(); + } + + @Override + Cut> canonical(DiscreteDomain> domain) { + try { + return Cut.belowValue(domain.minValue()); + } + catch (NoSuchElementException e) { + return this; + } + } + + @Override + public int compareTo(Cut> o) { + return o == this ? 0 : -1; + } + + public String toString() { + return "-\u221e"; + } + + private Object readResolve() { + return INSTANCE; + } + } +} diff --git a/src/com/google/common/collect/DenseImmutableTable.java b/src/com/google/common/collect/DenseImmutableTable.java new file mode 100644 index 0000000..6d2d0d2 --- /dev/null +++ b/src/com/google/common/collect/DenseImmutableTable.java @@ -0,0 +1,280 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Preconditions; +import com.google.common.collect.AbstractIterator; +import com.google.common.collect.ImmutableCollection; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableMapEntrySet; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Maps; +import com.google.common.collect.RegularImmutableTable; +import com.google.common.collect.Table; +import com.google.common.collect.UnmodifiableIterator; +import java.util.Map; +import javax.annotation.Nullable; +import javax.annotation.concurrent.Immutable; + +@GwtCompatible +@Immutable +final class DenseImmutableTable +extends RegularImmutableTable { + private final ImmutableMap rowKeyToIndex; + private final ImmutableMap columnKeyToIndex; + private final ImmutableMap> rowMap; + private final ImmutableMap> columnMap; + private final int[] rowCounts; + private final int[] columnCounts; + private final V[][] values; + private final int[] iterationOrderRow; + private final int[] iterationOrderColumn; + + private static ImmutableMap makeIndex(ImmutableSet set) { + ImmutableMap.Builder indexBuilder = ImmutableMap.builder(); + int i = 0; + for (Object key : set) { + indexBuilder.put(key, i); + ++i; + } + return indexBuilder.build(); + } + + DenseImmutableTable(ImmutableList> cellList, ImmutableSet rowSpace, ImmutableSet columnSpace) { + Object[][] array = new Object[rowSpace.size()][columnSpace.size()]; + this.values = array; + this.rowKeyToIndex = DenseImmutableTable.makeIndex(rowSpace); + this.columnKeyToIndex = DenseImmutableTable.makeIndex(columnSpace); + this.rowCounts = new int[this.rowKeyToIndex.size()]; + this.columnCounts = new int[this.columnKeyToIndex.size()]; + int[] iterationOrderRow = new int[cellList.size()]; + int[] iterationOrderColumn = new int[cellList.size()]; + for (int i = 0; i < cellList.size(); ++i) { + int columnIndex; + Table.Cell cell = (Table.Cell)cellList.get(i); + Object rowKey = cell.getRowKey(); + Object columnKey = cell.getColumnKey(); + int rowIndex = this.rowKeyToIndex.get(rowKey); + V existingValue = this.values[rowIndex][columnIndex = this.columnKeyToIndex.get(columnKey).intValue()]; + Preconditions.checkArgument(existingValue == null, "duplicate key: (%s, %s)", rowKey, columnKey); + this.values[rowIndex][columnIndex] = cell.getValue(); + int n = rowIndex; + this.rowCounts[n] = this.rowCounts[n] + 1; + int n2 = columnIndex; + this.columnCounts[n2] = this.columnCounts[n2] + 1; + iterationOrderRow[i] = rowIndex; + iterationOrderColumn[i] = columnIndex; + } + this.iterationOrderRow = iterationOrderRow; + this.iterationOrderColumn = iterationOrderColumn; + this.rowMap = new RowMap(); + this.columnMap = new ColumnMap(); + } + + @Override + public ImmutableMap> columnMap() { + return this.columnMap; + } + + @Override + public ImmutableMap> rowMap() { + return this.rowMap; + } + + @Override + public V get(@Nullable Object rowKey, @Nullable Object columnKey) { + Integer rowIndex = this.rowKeyToIndex.get(rowKey); + Integer columnIndex = this.columnKeyToIndex.get(columnKey); + return rowIndex == null || columnIndex == null ? null : (V)this.values[rowIndex][columnIndex]; + } + + @Override + public int size() { + return this.iterationOrderRow.length; + } + + @Override + Table.Cell getCell(int index) { + int rowIndex = this.iterationOrderRow[index]; + int columnIndex = this.iterationOrderColumn[index]; + Object rowKey = ((ImmutableCollection)((Object)this.rowKeySet())).asList().get(rowIndex); + Object columnKey = ((ImmutableCollection)((Object)this.columnKeySet())).asList().get(columnIndex); + V value = this.values[rowIndex][columnIndex]; + return DenseImmutableTable.cellOf(rowKey, columnKey, value); + } + + @Override + V getValue(int index) { + return this.values[this.iterationOrderRow[index]][this.iterationOrderColumn[index]]; + } + + private final class ColumnMap + extends ImmutableArrayMap> { + private ColumnMap() { + super(DenseImmutableTable.this.columnCounts.length); + } + + @Override + ImmutableMap keyToIndex() { + return DenseImmutableTable.this.columnKeyToIndex; + } + + @Override + Map getValue(int keyIndex) { + return new Column(keyIndex); + } + + @Override + boolean isPartialView() { + return false; + } + } + + private final class RowMap + extends ImmutableArrayMap> { + private RowMap() { + super(DenseImmutableTable.this.rowCounts.length); + } + + @Override + ImmutableMap keyToIndex() { + return DenseImmutableTable.this.rowKeyToIndex; + } + + @Override + Map getValue(int keyIndex) { + return new Row(keyIndex); + } + + @Override + boolean isPartialView() { + return false; + } + } + + private final class Column + extends ImmutableArrayMap { + private final int columnIndex; + + Column(int columnIndex) { + super(DenseImmutableTable.this.columnCounts[columnIndex]); + this.columnIndex = columnIndex; + } + + @Override + ImmutableMap keyToIndex() { + return DenseImmutableTable.this.rowKeyToIndex; + } + + @Override + V getValue(int keyIndex) { + return DenseImmutableTable.this.values[keyIndex][this.columnIndex]; + } + + @Override + boolean isPartialView() { + return true; + } + } + + private final class Row + extends ImmutableArrayMap { + private final int rowIndex; + + Row(int rowIndex) { + super(DenseImmutableTable.this.rowCounts[rowIndex]); + this.rowIndex = rowIndex; + } + + @Override + ImmutableMap keyToIndex() { + return DenseImmutableTable.this.columnKeyToIndex; + } + + @Override + V getValue(int keyIndex) { + return DenseImmutableTable.this.values[this.rowIndex][keyIndex]; + } + + @Override + boolean isPartialView() { + return true; + } + } + + private static abstract class ImmutableArrayMap + extends ImmutableMap { + private final int size; + + ImmutableArrayMap(int size) { + this.size = size; + } + + abstract ImmutableMap keyToIndex(); + + private boolean isFull() { + return this.size == this.keyToIndex().size(); + } + + K getKey(int index) { + return (K)((ImmutableCollection)((Object)this.keyToIndex().keySet())).asList().get(index); + } + + @Nullable + abstract V getValue(int var1); + + @Override + ImmutableSet createKeySet() { + return this.isFull() ? this.keyToIndex().keySet() : super.createKeySet(); + } + + @Override + public int size() { + return this.size; + } + + @Override + public V get(@Nullable Object key) { + Integer keyIndex = this.keyToIndex().get(key); + return keyIndex == null ? null : (V)this.getValue(keyIndex); + } + + @Override + ImmutableSet> createEntrySet() { + return new ImmutableMapEntrySet(){ + + @Override + ImmutableMap map() { + return ImmutableArrayMap.this; + } + + @Override + public UnmodifiableIterator> iterator() { + return new AbstractIterator>(){ + private int index = -1; + private final int maxIndex; + { + this.maxIndex = ImmutableArrayMap.this.keyToIndex().size(); + } + + @Override + protected Map.Entry computeNext() { + ++this.index; + while (this.index < this.maxIndex) { + Object value = ImmutableArrayMap.this.getValue(this.index); + if (value != null) { + return Maps.immutableEntry(ImmutableArrayMap.this.getKey(this.index), value); + } + ++this.index; + } + return (Map.Entry)this.endOfData(); + } + }; + } + }; + } + } +} diff --git a/src/com/google/common/collect/DescendingImmutableSortedMultiset.java b/src/com/google/common/collect/DescendingImmutableSortedMultiset.java new file mode 100644 index 0000000..15efbc2 --- /dev/null +++ b/src/com/google/common/collect/DescendingImmutableSortedMultiset.java @@ -0,0 +1,70 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.collect.BoundType; +import com.google.common.collect.ImmutableCollection; +import com.google.common.collect.ImmutableSortedMultiset; +import com.google.common.collect.ImmutableSortedSet; +import com.google.common.collect.Multiset; +import javax.annotation.Nullable; + +final class DescendingImmutableSortedMultiset +extends ImmutableSortedMultiset { + private final transient ImmutableSortedMultiset forward; + + DescendingImmutableSortedMultiset(ImmutableSortedMultiset forward) { + this.forward = forward; + } + + @Override + public int count(@Nullable Object element) { + return this.forward.count(element); + } + + @Override + public Multiset.Entry firstEntry() { + return this.forward.lastEntry(); + } + + @Override + public Multiset.Entry lastEntry() { + return this.forward.firstEntry(); + } + + @Override + public int size() { + return this.forward.size(); + } + + @Override + public ImmutableSortedSet elementSet() { + return ((ImmutableSortedSet)this.forward.elementSet()).descendingSet(); + } + + @Override + Multiset.Entry getEntry(int index) { + return (Multiset.Entry)((ImmutableCollection)((Object)this.forward.entrySet())).asList().reverse().get(index); + } + + @Override + public ImmutableSortedMultiset descendingMultiset() { + return this.forward; + } + + @Override + public ImmutableSortedMultiset headMultiset(E upperBound, BoundType boundType) { + return ((ImmutableSortedMultiset)this.forward.tailMultiset((Object)upperBound, boundType)).descendingMultiset(); + } + + @Override + public ImmutableSortedMultiset tailMultiset(E lowerBound, BoundType boundType) { + return ((ImmutableSortedMultiset)this.forward.headMultiset((Object)lowerBound, boundType)).descendingMultiset(); + } + + @Override + boolean isPartialView() { + return this.forward.isPartialView(); + } +} diff --git a/src/com/google/common/collect/DescendingImmutableSortedSet.java b/src/com/google/common/collect/DescendingImmutableSortedSet.java new file mode 100644 index 0000000..7ab440c --- /dev/null +++ b/src/com/google/common/collect/DescendingImmutableSortedSet.java @@ -0,0 +1,97 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtIncompatible; +import com.google.common.collect.ImmutableSortedSet; +import com.google.common.collect.Ordering; +import com.google.common.collect.UnmodifiableIterator; +import javax.annotation.Nullable; + +class DescendingImmutableSortedSet +extends ImmutableSortedSet { + private final ImmutableSortedSet forward; + + DescendingImmutableSortedSet(ImmutableSortedSet forward) { + super(Ordering.from(forward.comparator()).reverse()); + this.forward = forward; + } + + @Override + public int size() { + return this.forward.size(); + } + + @Override + public UnmodifiableIterator iterator() { + return this.forward.descendingIterator(); + } + + @Override + ImmutableSortedSet headSetImpl(E toElement, boolean inclusive) { + return ((ImmutableSortedSet)this.forward.tailSet((Object)toElement, inclusive)).descendingSet(); + } + + @Override + ImmutableSortedSet subSetImpl(E fromElement, boolean fromInclusive, E toElement, boolean toInclusive) { + return ((ImmutableSortedSet)this.forward.subSet((Object)toElement, toInclusive, (Object)fromElement, fromInclusive)).descendingSet(); + } + + @Override + ImmutableSortedSet tailSetImpl(E fromElement, boolean inclusive) { + return ((ImmutableSortedSet)this.forward.headSet((Object)fromElement, inclusive)).descendingSet(); + } + + @Override + @GwtIncompatible(value="NavigableSet") + public ImmutableSortedSet descendingSet() { + return this.forward; + } + + @Override + @GwtIncompatible(value="NavigableSet") + public UnmodifiableIterator descendingIterator() { + return this.forward.iterator(); + } + + @Override + @GwtIncompatible(value="NavigableSet") + ImmutableSortedSet createDescendingSet() { + throw new AssertionError((Object)"should never be called"); + } + + @Override + public E lower(E element) { + return this.forward.higher(element); + } + + @Override + public E floor(E element) { + return this.forward.ceiling(element); + } + + @Override + public E ceiling(E element) { + return this.forward.floor(element); + } + + @Override + public E higher(E element) { + return this.forward.lower(element); + } + + @Override + int indexOf(@Nullable Object target) { + int index = this.forward.indexOf(target); + if (index == -1) { + return index; + } + return this.size() - 1 - index; + } + + @Override + boolean isPartialView() { + return this.forward.isPartialView(); + } +} diff --git a/src/com/google/common/collect/DescendingMultiset.java b/src/com/google/common/collect/DescendingMultiset.java new file mode 100644 index 0000000..37d18b0 --- /dev/null +++ b/src/com/google/common/collect/DescendingMultiset.java @@ -0,0 +1,144 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.collect.BoundType; +import com.google.common.collect.ForwardingMultiset; +import com.google.common.collect.Multiset; +import com.google.common.collect.Multisets; +import com.google.common.collect.Ordering; +import com.google.common.collect.SortedMultiset; +import com.google.common.collect.SortedMultisets; +import java.util.Comparator; +import java.util.Iterator; +import java.util.NavigableSet; +import java.util.Set; + +@GwtCompatible(emulated=true) +abstract class DescendingMultiset +extends ForwardingMultiset +implements SortedMultiset { + private transient Comparator comparator; + private transient NavigableSet elementSet; + private transient Set> entrySet; + + DescendingMultiset() { + } + + abstract SortedMultiset forwardMultiset(); + + @Override + public Comparator comparator() { + Comparator result = this.comparator; + if (result == null) { + this.comparator = Ordering.from(this.forwardMultiset().comparator()).reverse(); + return this.comparator; + } + return result; + } + + @Override + public NavigableSet elementSet() { + NavigableSet result = this.elementSet; + if (result == null) { + this.elementSet = new SortedMultisets.NavigableElementSet(this); + return this.elementSet; + } + return result; + } + + @Override + public Multiset.Entry pollFirstEntry() { + return this.forwardMultiset().pollLastEntry(); + } + + @Override + public Multiset.Entry pollLastEntry() { + return this.forwardMultiset().pollFirstEntry(); + } + + @Override + public SortedMultiset headMultiset(E toElement, BoundType boundType) { + return this.forwardMultiset().tailMultiset(toElement, boundType).descendingMultiset(); + } + + @Override + public SortedMultiset subMultiset(E fromElement, BoundType fromBoundType, E toElement, BoundType toBoundType) { + return this.forwardMultiset().subMultiset(toElement, toBoundType, fromElement, fromBoundType).descendingMultiset(); + } + + @Override + public SortedMultiset tailMultiset(E fromElement, BoundType boundType) { + return this.forwardMultiset().headMultiset(fromElement, boundType).descendingMultiset(); + } + + @Override + protected Multiset delegate() { + return this.forwardMultiset(); + } + + @Override + public SortedMultiset descendingMultiset() { + return this.forwardMultiset(); + } + + @Override + public Multiset.Entry firstEntry() { + return this.forwardMultiset().lastEntry(); + } + + @Override + public Multiset.Entry lastEntry() { + return this.forwardMultiset().firstEntry(); + } + + abstract Iterator> entryIterator(); + + @Override + public Set> entrySet() { + Set>> result = this.entrySet; + return result == null ? (this.entrySet = this.createEntrySet()) : result; + } + + Set> createEntrySet() { + return new Multisets.EntrySet(){ + + @Override + Multiset multiset() { + return DescendingMultiset.this; + } + + @Override + public Iterator> iterator() { + return DescendingMultiset.this.entryIterator(); + } + + @Override + public int size() { + return DescendingMultiset.this.forwardMultiset().entrySet().size(); + } + }; + } + + @Override + public Iterator iterator() { + return Multisets.iteratorImpl(this); + } + + @Override + public Object[] toArray() { + return this.standardToArray(); + } + + @Override + public T[] toArray(T[] array) { + return this.standardToArray(array); + } + + @Override + public String toString() { + return this.entrySet().toString(); + } +} diff --git a/src/com/google/common/collect/DiscreteDomain.java b/src/com/google/common/collect/DiscreteDomain.java new file mode 100644 index 0000000..7012145 --- /dev/null +++ b/src/com/google/common/collect/DiscreteDomain.java @@ -0,0 +1,175 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import java.io.Serializable; +import java.math.BigInteger; +import java.util.NoSuchElementException; + +@GwtCompatible +@Beta +public abstract class DiscreteDomain { + public static DiscreteDomain integers() { + return IntegerDomain.INSTANCE; + } + + public static DiscreteDomain longs() { + return LongDomain.INSTANCE; + } + + public static DiscreteDomain bigIntegers() { + return BigIntegerDomain.INSTANCE; + } + + protected DiscreteDomain() { + } + + public abstract C next(C var1); + + public abstract C previous(C var1); + + public abstract long distance(C var1, C var2); + + public C minValue() { + throw new NoSuchElementException(); + } + + public C maxValue() { + throw new NoSuchElementException(); + } + + private static final class BigIntegerDomain + extends DiscreteDomain + implements Serializable { + private static final BigIntegerDomain INSTANCE = new BigIntegerDomain(); + private static final BigInteger MIN_LONG = BigInteger.valueOf(Long.MIN_VALUE); + private static final BigInteger MAX_LONG = BigInteger.valueOf(Long.MAX_VALUE); + private static final long serialVersionUID = 0L; + + private BigIntegerDomain() { + } + + @Override + public BigInteger next(BigInteger value) { + return value.add(BigInteger.ONE); + } + + @Override + public BigInteger previous(BigInteger value) { + return value.subtract(BigInteger.ONE); + } + + @Override + public long distance(BigInteger start, BigInteger end) { + return end.subtract(start).max(MIN_LONG).min(MAX_LONG).longValue(); + } + + private Object readResolve() { + return INSTANCE; + } + + public String toString() { + return "DiscreteDomain.bigIntegers()"; + } + } + + private static final class LongDomain + extends DiscreteDomain + implements Serializable { + private static final LongDomain INSTANCE = new LongDomain(); + private static final long serialVersionUID = 0L; + + private LongDomain() { + } + + @Override + public Long next(Long value) { + long l = value; + return l == Long.MAX_VALUE ? null : Long.valueOf(l + 1L); + } + + @Override + public Long previous(Long value) { + long l = value; + return l == Long.MIN_VALUE ? null : Long.valueOf(l - 1L); + } + + @Override + public long distance(Long start, Long end) { + long result = end - start; + if (end > start && result < 0L) { + return Long.MAX_VALUE; + } + if (end < start && result > 0L) { + return Long.MIN_VALUE; + } + return result; + } + + @Override + public Long minValue() { + return Long.MIN_VALUE; + } + + @Override + public Long maxValue() { + return Long.MAX_VALUE; + } + + private Object readResolve() { + return INSTANCE; + } + + public String toString() { + return "DiscreteDomain.longs()"; + } + } + + private static final class IntegerDomain + extends DiscreteDomain + implements Serializable { + private static final IntegerDomain INSTANCE = new IntegerDomain(); + private static final long serialVersionUID = 0L; + + private IntegerDomain() { + } + + @Override + public Integer next(Integer value) { + int i = value; + return i == Integer.MAX_VALUE ? null : Integer.valueOf(i + 1); + } + + @Override + public Integer previous(Integer value) { + int i = value; + return i == Integer.MIN_VALUE ? null : Integer.valueOf(i - 1); + } + + @Override + public long distance(Integer start, Integer end) { + return (long)end.intValue() - (long)start.intValue(); + } + + @Override + public Integer minValue() { + return Integer.MIN_VALUE; + } + + @Override + public Integer maxValue() { + return Integer.MAX_VALUE; + } + + private Object readResolve() { + return INSTANCE; + } + + public String toString() { + return "DiscreteDomain.integers()"; + } + } +} diff --git a/src/com/google/common/collect/EmptyContiguousSet.java b/src/com/google/common/collect/EmptyContiguousSet.java new file mode 100644 index 0000000..66ddc20 --- /dev/null +++ b/src/com/google/common/collect/EmptyContiguousSet.java @@ -0,0 +1,152 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.collect.BoundType; +import com.google.common.collect.ContiguousSet; +import com.google.common.collect.DiscreteDomain; +import com.google.common.collect.EmptyImmutableSortedSet; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableSortedSet; +import com.google.common.collect.Iterators; +import com.google.common.collect.Ordering; +import com.google.common.collect.Range; +import com.google.common.collect.UnmodifiableIterator; +import java.io.Serializable; +import java.util.NoSuchElementException; +import java.util.Set; +import javax.annotation.Nullable; + +@GwtCompatible(emulated=true) +final class EmptyContiguousSet +extends ContiguousSet { + EmptyContiguousSet(DiscreteDomain domain) { + super(domain); + } + + @Override + public C first() { + throw new NoSuchElementException(); + } + + @Override + public C last() { + throw new NoSuchElementException(); + } + + @Override + public int size() { + return 0; + } + + @Override + public ContiguousSet intersection(ContiguousSet other) { + return this; + } + + @Override + public Range range() { + throw new NoSuchElementException(); + } + + @Override + public Range range(BoundType lowerBoundType, BoundType upperBoundType) { + throw new NoSuchElementException(); + } + + @Override + ContiguousSet headSetImpl(C toElement, boolean inclusive) { + return this; + } + + @Override + ContiguousSet subSetImpl(C fromElement, boolean fromInclusive, C toElement, boolean toInclusive) { + return this; + } + + @Override + ContiguousSet tailSetImpl(C fromElement, boolean fromInclusive) { + return this; + } + + @Override + @GwtIncompatible(value="not used by GWT emulation") + int indexOf(Object target) { + return -1; + } + + @Override + public UnmodifiableIterator iterator() { + return Iterators.emptyIterator(); + } + + @Override + @GwtIncompatible(value="NavigableSet") + public UnmodifiableIterator descendingIterator() { + return Iterators.emptyIterator(); + } + + @Override + boolean isPartialView() { + return false; + } + + @Override + public boolean isEmpty() { + return true; + } + + @Override + public ImmutableList asList() { + return ImmutableList.of(); + } + + @Override + public String toString() { + return "[]"; + } + + @Override + public boolean equals(@Nullable Object object) { + if (object instanceof Set) { + Set that = (Set)object; + return that.isEmpty(); + } + return false; + } + + @Override + public int hashCode() { + return 0; + } + + @Override + @GwtIncompatible(value="serialization") + Object writeReplace() { + return new SerializedForm(this.domain); + } + + @Override + @GwtIncompatible(value="NavigableSet") + ImmutableSortedSet createDescendingSet() { + return new EmptyImmutableSortedSet(Ordering.natural().reverse()); + } + + @GwtIncompatible(value="serialization") + private static final class SerializedForm + implements Serializable { + private final DiscreteDomain domain; + private static final long serialVersionUID = 0L; + + private SerializedForm(DiscreteDomain domain) { + this.domain = domain; + } + + private Object readResolve() { + return new EmptyContiguousSet(this.domain); + } + } +} diff --git a/src/com/google/common/collect/EmptyImmutableBiMap.java b/src/com/google/common/collect/EmptyImmutableBiMap.java new file mode 100644 index 0000000..1e763d8 --- /dev/null +++ b/src/com/google/common/collect/EmptyImmutableBiMap.java @@ -0,0 +1,69 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.collect.ImmutableBiMap; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.ImmutableSetMultimap; +import java.util.Map; +import javax.annotation.Nullable; + +@GwtCompatible(emulated=true) +final class EmptyImmutableBiMap +extends ImmutableBiMap { + static final EmptyImmutableBiMap INSTANCE = new EmptyImmutableBiMap(); + + private EmptyImmutableBiMap() { + } + + @Override + public ImmutableBiMap inverse() { + return this; + } + + @Override + public int size() { + return 0; + } + + @Override + public boolean isEmpty() { + return true; + } + + @Override + public Object get(@Nullable Object key) { + return null; + } + + @Override + public ImmutableSet> entrySet() { + return ImmutableSet.of(); + } + + @Override + ImmutableSet> createEntrySet() { + throw new AssertionError((Object)"should never be called"); + } + + @Override + public ImmutableSetMultimap asMultimap() { + return ImmutableSetMultimap.of(); + } + + @Override + public ImmutableSet keySet() { + return ImmutableSet.of(); + } + + @Override + boolean isPartialView() { + return false; + } + + Object readResolve() { + return INSTANCE; + } +} diff --git a/src/com/google/common/collect/EmptyImmutableListMultimap.java b/src/com/google/common/collect/EmptyImmutableListMultimap.java new file mode 100644 index 0000000..8aa7ff0 --- /dev/null +++ b/src/com/google/common/collect/EmptyImmutableListMultimap.java @@ -0,0 +1,23 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.collect.ImmutableListMultimap; +import com.google.common.collect.ImmutableMap; + +@GwtCompatible(serializable=true) +class EmptyImmutableListMultimap +extends ImmutableListMultimap { + static final EmptyImmutableListMultimap INSTANCE = new EmptyImmutableListMultimap(); + private static final long serialVersionUID = 0L; + + private EmptyImmutableListMultimap() { + super(ImmutableMap.of(), 0); + } + + private Object readResolve() { + return INSTANCE; + } +} diff --git a/src/com/google/common/collect/EmptyImmutableSet.java b/src/com/google/common/collect/EmptyImmutableSet.java new file mode 100644 index 0000000..96693f3 --- /dev/null +++ b/src/com/google/common/collect/EmptyImmutableSet.java @@ -0,0 +1,91 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Iterators; +import com.google.common.collect.UnmodifiableIterator; +import java.util.Collection; +import java.util.Set; +import javax.annotation.Nullable; + +@GwtCompatible(serializable=true, emulated=true) +final class EmptyImmutableSet +extends ImmutableSet { + static final EmptyImmutableSet INSTANCE = new EmptyImmutableSet(); + private static final long serialVersionUID = 0L; + + private EmptyImmutableSet() { + } + + @Override + public int size() { + return 0; + } + + @Override + public boolean isEmpty() { + return true; + } + + @Override + public boolean contains(@Nullable Object target) { + return false; + } + + @Override + public boolean containsAll(Collection targets) { + return targets.isEmpty(); + } + + @Override + public UnmodifiableIterator iterator() { + return Iterators.emptyIterator(); + } + + @Override + boolean isPartialView() { + return false; + } + + @Override + int copyIntoArray(Object[] dst, int offset) { + return offset; + } + + @Override + public ImmutableList asList() { + return ImmutableList.of(); + } + + @Override + public boolean equals(@Nullable Object object) { + if (object instanceof Set) { + Set that = (Set)object; + return that.isEmpty(); + } + return false; + } + + @Override + public final int hashCode() { + return 0; + } + + @Override + boolean isHashCodeFast() { + return true; + } + + @Override + public String toString() { + return "[]"; + } + + Object readResolve() { + return INSTANCE; + } +} diff --git a/src/com/google/common/collect/EmptyImmutableSetMultimap.java b/src/com/google/common/collect/EmptyImmutableSetMultimap.java new file mode 100644 index 0000000..bdc9330 --- /dev/null +++ b/src/com/google/common/collect/EmptyImmutableSetMultimap.java @@ -0,0 +1,23 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableSetMultimap; + +@GwtCompatible(serializable=true) +class EmptyImmutableSetMultimap +extends ImmutableSetMultimap { + static final EmptyImmutableSetMultimap INSTANCE = new EmptyImmutableSetMultimap(); + private static final long serialVersionUID = 0L; + + private EmptyImmutableSetMultimap() { + super(ImmutableMap.of(), 0, null); + } + + private Object readResolve() { + return INSTANCE; + } +} diff --git a/src/com/google/common/collect/EmptyImmutableSortedMap.java b/src/com/google/common/collect/EmptyImmutableSortedMap.java new file mode 100644 index 0000000..5602bf6 --- /dev/null +++ b/src/com/google/common/collect/EmptyImmutableSortedMap.java @@ -0,0 +1,99 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Preconditions; +import com.google.common.collect.ImmutableCollection; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.ImmutableSetMultimap; +import com.google.common.collect.ImmutableSortedMap; +import com.google.common.collect.ImmutableSortedSet; +import com.google.common.collect.Ordering; +import java.util.Comparator; +import java.util.Map; +import javax.annotation.Nullable; + +@GwtCompatible(emulated=true) +final class EmptyImmutableSortedMap +extends ImmutableSortedMap { + private final transient ImmutableSortedSet keySet; + + EmptyImmutableSortedMap(Comparator comparator) { + this.keySet = ImmutableSortedSet.emptySet(comparator); + } + + EmptyImmutableSortedMap(Comparator comparator, ImmutableSortedMap descendingMap) { + super(descendingMap); + this.keySet = ImmutableSortedSet.emptySet(comparator); + } + + @Override + public V get(@Nullable Object key) { + return null; + } + + @Override + public ImmutableSortedSet keySet() { + return this.keySet; + } + + @Override + public int size() { + return 0; + } + + @Override + public boolean isEmpty() { + return true; + } + + @Override + public ImmutableCollection values() { + return ImmutableList.of(); + } + + @Override + public String toString() { + return "{}"; + } + + @Override + boolean isPartialView() { + return false; + } + + @Override + public ImmutableSet> entrySet() { + return ImmutableSet.of(); + } + + @Override + ImmutableSet> createEntrySet() { + throw new AssertionError((Object)"should never be called"); + } + + @Override + public ImmutableSetMultimap asMultimap() { + return ImmutableSetMultimap.of(); + } + + @Override + public ImmutableSortedMap headMap(K toKey, boolean inclusive) { + Preconditions.checkNotNull(toKey); + return this; + } + + @Override + public ImmutableSortedMap tailMap(K fromKey, boolean inclusive) { + Preconditions.checkNotNull(fromKey); + return this; + } + + @Override + ImmutableSortedMap createDescendingMap() { + return new EmptyImmutableSortedMap(Ordering.from(this.comparator()).reverse(), this); + } +} diff --git a/src/com/google/common/collect/EmptyImmutableSortedMultiset.java b/src/com/google/common/collect/EmptyImmutableSortedMultiset.java new file mode 100644 index 0000000..24ebebf --- /dev/null +++ b/src/com/google/common/collect/EmptyImmutableSortedMultiset.java @@ -0,0 +1,103 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.base.Preconditions; +import com.google.common.collect.BoundType; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableSortedMultiset; +import com.google.common.collect.ImmutableSortedSet; +import com.google.common.collect.Iterators; +import com.google.common.collect.Multiset; +import com.google.common.collect.UnmodifiableIterator; +import java.util.Collection; +import java.util.Comparator; +import javax.annotation.Nullable; + +final class EmptyImmutableSortedMultiset +extends ImmutableSortedMultiset { + private final ImmutableSortedSet elementSet; + + EmptyImmutableSortedMultiset(Comparator comparator) { + this.elementSet = ImmutableSortedSet.emptySet(comparator); + } + + @Override + public Multiset.Entry firstEntry() { + return null; + } + + @Override + public Multiset.Entry lastEntry() { + return null; + } + + @Override + public int count(@Nullable Object element) { + return 0; + } + + @Override + public boolean containsAll(Collection targets) { + return targets.isEmpty(); + } + + @Override + public int size() { + return 0; + } + + @Override + public ImmutableSortedSet elementSet() { + return this.elementSet; + } + + @Override + Multiset.Entry getEntry(int index) { + throw new AssertionError((Object)"should never be called"); + } + + @Override + public ImmutableSortedMultiset headMultiset(E upperBound, BoundType boundType) { + Preconditions.checkNotNull(upperBound); + Preconditions.checkNotNull(boundType); + return this; + } + + @Override + public ImmutableSortedMultiset tailMultiset(E lowerBound, BoundType boundType) { + Preconditions.checkNotNull(lowerBound); + Preconditions.checkNotNull(boundType); + return this; + } + + @Override + public UnmodifiableIterator iterator() { + return Iterators.emptyIterator(); + } + + @Override + public boolean equals(@Nullable Object object) { + if (object instanceof Multiset) { + Multiset other = (Multiset)object; + return other.isEmpty(); + } + return false; + } + + @Override + boolean isPartialView() { + return false; + } + + @Override + int copyIntoArray(Object[] dst, int offset) { + return offset; + } + + @Override + public ImmutableList asList() { + return ImmutableList.of(); + } +} diff --git a/src/com/google/common/collect/EmptyImmutableSortedSet.java b/src/com/google/common/collect/EmptyImmutableSortedSet.java new file mode 100644 index 0000000..6224aea --- /dev/null +++ b/src/com/google/common/collect/EmptyImmutableSortedSet.java @@ -0,0 +1,125 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableSortedSet; +import com.google.common.collect.Iterators; +import com.google.common.collect.Ordering; +import com.google.common.collect.UnmodifiableIterator; +import java.util.Collection; +import java.util.Comparator; +import java.util.NoSuchElementException; +import java.util.Set; +import javax.annotation.Nullable; + +@GwtCompatible(serializable=true, emulated=true) +class EmptyImmutableSortedSet +extends ImmutableSortedSet { + EmptyImmutableSortedSet(Comparator comparator) { + super(comparator); + } + + @Override + public int size() { + return 0; + } + + @Override + public boolean isEmpty() { + return true; + } + + @Override + public boolean contains(@Nullable Object target) { + return false; + } + + @Override + public boolean containsAll(Collection targets) { + return targets.isEmpty(); + } + + @Override + public UnmodifiableIterator iterator() { + return Iterators.emptyIterator(); + } + + @Override + @GwtIncompatible(value="NavigableSet") + public UnmodifiableIterator descendingIterator() { + return Iterators.emptyIterator(); + } + + @Override + boolean isPartialView() { + return false; + } + + @Override + public ImmutableList asList() { + return ImmutableList.of(); + } + + @Override + int copyIntoArray(Object[] dst, int offset) { + return offset; + } + + @Override + public boolean equals(@Nullable Object object) { + if (object instanceof Set) { + Set that = (Set)object; + return that.isEmpty(); + } + return false; + } + + @Override + public int hashCode() { + return 0; + } + + @Override + public String toString() { + return "[]"; + } + + @Override + public E first() { + throw new NoSuchElementException(); + } + + @Override + public E last() { + throw new NoSuchElementException(); + } + + @Override + ImmutableSortedSet headSetImpl(E toElement, boolean inclusive) { + return this; + } + + @Override + ImmutableSortedSet subSetImpl(E fromElement, boolean fromInclusive, E toElement, boolean toInclusive) { + return this; + } + + @Override + ImmutableSortedSet tailSetImpl(E fromElement, boolean inclusive) { + return this; + } + + @Override + int indexOf(@Nullable Object target) { + return -1; + } + + @Override + ImmutableSortedSet createDescendingSet() { + return new EmptyImmutableSortedSet(Ordering.from(this.comparator).reverse()); + } +} diff --git a/src/com/google/common/collect/EnumBiMap.java b/src/com/google/common/collect/EnumBiMap.java new file mode 100644 index 0000000..df4e412 --- /dev/null +++ b/src/com/google/common/collect/EnumBiMap.java @@ -0,0 +1,96 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.base.Preconditions; +import com.google.common.collect.AbstractBiMap; +import com.google.common.collect.EnumHashBiMap; +import com.google.common.collect.Serialization; +import com.google.common.collect.WellBehavedMap; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.util.EnumMap; +import java.util.Map; + +@GwtCompatible(emulated=true) +public final class EnumBiMap, V extends Enum> +extends AbstractBiMap { + private transient Class keyType; + private transient Class valueType; + @GwtIncompatible(value="not needed in emulated source.") + private static final long serialVersionUID = 0L; + + public static , V extends Enum> EnumBiMap create(Class keyType, Class valueType) { + return new EnumBiMap(keyType, valueType); + } + + public static , V extends Enum> EnumBiMap create(Map map) { + EnumBiMap bimap = EnumBiMap.create(EnumBiMap.inferKeyType(map), EnumBiMap.inferValueType(map)); + bimap.putAll((Map)map); + return bimap; + } + + private EnumBiMap(Class keyType, Class valueType) { + super(WellBehavedMap.wrap(new EnumMap(keyType)), WellBehavedMap.wrap(new EnumMap(valueType))); + this.keyType = keyType; + this.valueType = valueType; + } + + static > Class inferKeyType(Map map) { + if (map instanceof EnumBiMap) { + return ((EnumBiMap)map).keyType(); + } + if (map instanceof EnumHashBiMap) { + return ((EnumHashBiMap)map).keyType(); + } + Preconditions.checkArgument(!map.isEmpty()); + return ((Enum)map.keySet().iterator().next()).getDeclaringClass(); + } + + private static > Class inferValueType(Map map) { + if (map instanceof EnumBiMap) { + return ((EnumBiMap)map).valueType; + } + Preconditions.checkArgument(!map.isEmpty()); + return ((Enum)map.values().iterator().next()).getDeclaringClass(); + } + + public Class keyType() { + return this.keyType; + } + + public Class valueType() { + return this.valueType; + } + + @Override + K checkKey(K key) { + return (K)((Enum)Preconditions.checkNotNull(key)); + } + + @Override + V checkValue(V value) { + return (V)((Enum)Preconditions.checkNotNull(value)); + } + + @GwtIncompatible(value="java.io.ObjectOutputStream") + private void writeObject(ObjectOutputStream stream) throws IOException { + stream.defaultWriteObject(); + stream.writeObject(this.keyType); + stream.writeObject(this.valueType); + Serialization.writeMap(this, stream); + } + + @GwtIncompatible(value="java.io.ObjectInputStream") + private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException { + stream.defaultReadObject(); + this.keyType = (Class)stream.readObject(); + this.valueType = (Class)stream.readObject(); + this.setDelegates(WellBehavedMap.wrap(new EnumMap(this.keyType)), WellBehavedMap.wrap(new EnumMap(this.valueType))); + Serialization.populateMap(this, stream); + } +} diff --git a/src/com/google/common/collect/EnumHashBiMap.java b/src/com/google/common/collect/EnumHashBiMap.java new file mode 100644 index 0000000..d615573 --- /dev/null +++ b/src/com/google/common/collect/EnumHashBiMap.java @@ -0,0 +1,77 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.base.Preconditions; +import com.google.common.collect.AbstractBiMap; +import com.google.common.collect.EnumBiMap; +import com.google.common.collect.Maps; +import com.google.common.collect.Serialization; +import com.google.common.collect.WellBehavedMap; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.util.EnumMap; +import java.util.HashMap; +import java.util.Map; +import javax.annotation.Nullable; + +@GwtCompatible(emulated=true) +public final class EnumHashBiMap, V> +extends AbstractBiMap { + private transient Class keyType; + @GwtIncompatible(value="only needed in emulated source.") + private static final long serialVersionUID = 0L; + + public static , V> EnumHashBiMap create(Class keyType) { + return new EnumHashBiMap(keyType); + } + + public static , V> EnumHashBiMap create(Map map) { + EnumHashBiMap bimap = EnumHashBiMap.create(EnumBiMap.inferKeyType(map)); + bimap.putAll((Map)map); + return bimap; + } + + private EnumHashBiMap(Class keyType) { + super(WellBehavedMap.wrap(new EnumMap(keyType)), Maps.newHashMapWithExpectedSize(((Enum[])keyType.getEnumConstants()).length)); + this.keyType = keyType; + } + + @Override + K checkKey(K key) { + return (K)((Enum)Preconditions.checkNotNull(key)); + } + + @Override + public V put(K key, @Nullable V value) { + return super.put(key, value); + } + + @Override + public V forcePut(K key, @Nullable V value) { + return super.forcePut(key, value); + } + + public Class keyType() { + return this.keyType; + } + + @GwtIncompatible(value="java.io.ObjectOutputStream") + private void writeObject(ObjectOutputStream stream) throws IOException { + stream.defaultWriteObject(); + stream.writeObject(this.keyType); + Serialization.writeMap(this, stream); + } + + @GwtIncompatible(value="java.io.ObjectInputStream") + private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException { + stream.defaultReadObject(); + this.keyType = (Class)stream.readObject(); + this.setDelegates(WellBehavedMap.wrap(new EnumMap(this.keyType)), new HashMap(((Enum[])this.keyType.getEnumConstants()).length * 3 / 2)); + Serialization.populateMap(this, stream); + } +} diff --git a/src/com/google/common/collect/EnumMultiset.java b/src/com/google/common/collect/EnumMultiset.java new file mode 100644 index 0000000..d9540af --- /dev/null +++ b/src/com/google/common/collect/EnumMultiset.java @@ -0,0 +1,64 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.base.Preconditions; +import com.google.common.collect.AbstractMapBasedMultiset; +import com.google.common.collect.Iterables; +import com.google.common.collect.Serialization; +import com.google.common.collect.WellBehavedMap; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.util.EnumMap; +import java.util.Iterator; + +@GwtCompatible(emulated=true) +public final class EnumMultiset> +extends AbstractMapBasedMultiset { + private transient Class type; + @GwtIncompatible(value="Not needed in emulated source") + private static final long serialVersionUID = 0L; + + public static > EnumMultiset create(Class type) { + return new EnumMultiset(type); + } + + public static > EnumMultiset create(Iterable elements) { + Iterator iterator = elements.iterator(); + Preconditions.checkArgument(iterator.hasNext(), "EnumMultiset constructor passed empty Iterable"); + EnumMultiset multiset = new EnumMultiset(((Enum)iterator.next()).getDeclaringClass()); + Iterables.addAll(multiset, elements); + return multiset; + } + + public static > EnumMultiset create(Iterable elements, Class type) { + EnumMultiset result = EnumMultiset.create(type); + Iterables.addAll(result, elements); + return result; + } + + private EnumMultiset(Class type) { + super(WellBehavedMap.wrap(new EnumMap(type))); + this.type = type; + } + + @GwtIncompatible(value="java.io.ObjectOutputStream") + private void writeObject(ObjectOutputStream stream) throws IOException { + stream.defaultWriteObject(); + stream.writeObject(this.type); + Serialization.writeMultiset(this, stream); + } + + @GwtIncompatible(value="java.io.ObjectInputStream") + private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException { + Class localType; + stream.defaultReadObject(); + this.type = localType = (Class)stream.readObject(); + this.setBackingMap(WellBehavedMap.wrap(new EnumMap(this.type))); + Serialization.populateMultiset(this, stream); + } +} diff --git a/src/com/google/common/collect/EvictingQueue.java b/src/com/google/common/collect/EvictingQueue.java new file mode 100644 index 0000000..f6966bb --- /dev/null +++ b/src/com/google/common/collect/EvictingQueue.java @@ -0,0 +1,77 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.Preconditions; +import com.google.common.collect.ForwardingQueue; +import java.io.Serializable; +import java.util.ArrayDeque; +import java.util.Collection; +import java.util.Queue; + +@Beta +@GwtIncompatible(value="java.util.ArrayDeque") +public final class EvictingQueue +extends ForwardingQueue +implements Serializable { + private final Queue delegate; + @VisibleForTesting + final int maxSize; + private static final long serialVersionUID = 0L; + + private EvictingQueue(int maxSize) { + Preconditions.checkArgument(maxSize >= 0, "maxSize (%s) must >= 0", maxSize); + this.delegate = new ArrayDeque(maxSize); + this.maxSize = maxSize; + } + + public static EvictingQueue create(int maxSize) { + return new EvictingQueue(maxSize); + } + + public int remainingCapacity() { + return this.maxSize - this.size(); + } + + @Override + protected Queue delegate() { + return this.delegate; + } + + @Override + public boolean offer(E e) { + return this.add(e); + } + + @Override + public boolean add(E e) { + Preconditions.checkNotNull(e); + if (this.maxSize == 0) { + return true; + } + if (this.size() == this.maxSize) { + this.delegate.remove(); + } + this.delegate.add(e); + return true; + } + + @Override + public boolean addAll(Collection collection) { + return this.standardAddAll(collection); + } + + @Override + public boolean contains(Object object) { + return this.delegate().contains(Preconditions.checkNotNull(object)); + } + + @Override + public boolean remove(Object object) { + return this.delegate().remove(Preconditions.checkNotNull(object)); + } +} diff --git a/src/com/google/common/collect/ExplicitOrdering.java b/src/com/google/common/collect/ExplicitOrdering.java new file mode 100644 index 0000000..311abdd --- /dev/null +++ b/src/com/google/common/collect/ExplicitOrdering.java @@ -0,0 +1,67 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.Ordering; +import java.io.Serializable; +import java.util.List; +import javax.annotation.Nullable; + +@GwtCompatible(serializable=true) +final class ExplicitOrdering +extends Ordering +implements Serializable { + final ImmutableMap rankMap; + private static final long serialVersionUID = 0L; + + ExplicitOrdering(List valuesInOrder) { + this(ExplicitOrdering.buildRankMap(valuesInOrder)); + } + + ExplicitOrdering(ImmutableMap rankMap) { + this.rankMap = rankMap; + } + + @Override + public int compare(T left, T right) { + return this.rank(left) - this.rank(right); + } + + private int rank(T value) { + Integer rank = this.rankMap.get(value); + if (rank == null) { + throw new Ordering.IncomparableValueException(value); + } + return rank; + } + + private static ImmutableMap buildRankMap(List valuesInOrder) { + ImmutableMap.Builder builder = ImmutableMap.builder(); + int rank = 0; + for (T value : valuesInOrder) { + builder.put(value, rank++); + } + return builder.build(); + } + + @Override + public boolean equals(@Nullable Object object) { + if (object instanceof ExplicitOrdering) { + ExplicitOrdering that = (ExplicitOrdering)object; + return this.rankMap.equals(that.rankMap); + } + return false; + } + + public int hashCode() { + return this.rankMap.hashCode(); + } + + public String toString() { + String string = String.valueOf(String.valueOf(this.rankMap.keySet())); + return new StringBuilder(19 + string.length()).append("Ordering.explicit(").append(string).append(")").toString(); + } +} diff --git a/src/com/google/common/collect/FilteredEntryMultimap.java b/src/com/google/common/collect/FilteredEntryMultimap.java new file mode 100644 index 0000000..0aab9b9 --- /dev/null +++ b/src/com/google/common/collect/FilteredEntryMultimap.java @@ -0,0 +1,382 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.MoreObjects; +import com.google.common.base.Preconditions; +import com.google.common.base.Predicate; +import com.google.common.base.Predicates; +import com.google.common.collect.AbstractIterator; +import com.google.common.collect.AbstractMultimap; +import com.google.common.collect.CollectPreconditions; +import com.google.common.collect.Collections2; +import com.google.common.collect.FilteredMultimap; +import com.google.common.collect.FilteredMultimapValues; +import com.google.common.collect.Iterators; +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import com.google.common.collect.Multimap; +import com.google.common.collect.Multimaps; +import com.google.common.collect.Multiset; +import com.google.common.collect.Multisets; +import com.google.common.collect.SetMultimap; +import com.google.common.collect.Sets; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.Iterator; +import java.util.Map; +import java.util.Set; +import javax.annotation.Nullable; + +@GwtCompatible +class FilteredEntryMultimap +extends AbstractMultimap +implements FilteredMultimap { + final Multimap unfiltered; + final Predicate> predicate; + + FilteredEntryMultimap(Multimap unfiltered, Predicate> predicate) { + this.unfiltered = Preconditions.checkNotNull(unfiltered); + this.predicate = Preconditions.checkNotNull(predicate); + } + + @Override + public Multimap unfiltered() { + return this.unfiltered; + } + + @Override + public Predicate> entryPredicate() { + return this.predicate; + } + + @Override + public int size() { + return this.entries().size(); + } + + private boolean satisfies(K key, V value) { + return this.predicate.apply(Maps.immutableEntry(key, value)); + } + + static Collection filterCollection(Collection collection, Predicate predicate) { + if (collection instanceof Set) { + return Sets.filter((Set)collection, predicate); + } + return Collections2.filter(collection, predicate); + } + + @Override + public boolean containsKey(@Nullable Object key) { + return this.asMap().get(key) != null; + } + + @Override + public Collection removeAll(@Nullable Object key) { + return MoreObjects.firstNonNull(this.asMap().remove(key), this.unmodifiableEmptyCollection()); + } + + Collection unmodifiableEmptyCollection() { + return this.unfiltered instanceof SetMultimap ? Collections.emptySet() : Collections.emptyList(); + } + + @Override + public void clear() { + this.entries().clear(); + } + + @Override + public Collection get(K key) { + return FilteredEntryMultimap.filterCollection(this.unfiltered.get(key), new ValuePredicate(key)); + } + + @Override + Collection> createEntries() { + return FilteredEntryMultimap.filterCollection(this.unfiltered.entries(), this.predicate); + } + + @Override + Collection createValues() { + return new FilteredMultimapValues(this); + } + + @Override + Iterator> entryIterator() { + throw new AssertionError((Object)"should never be called"); + } + + @Override + Map> createAsMap() { + return new AsMap(); + } + + @Override + public Set keySet() { + return this.asMap().keySet(); + } + + boolean removeEntriesIf(Predicate>> predicate) { + Iterator>> entryIterator = this.unfiltered.asMap().entrySet().iterator(); + boolean changed = false; + while (entryIterator.hasNext()) { + Map.Entry> entry = entryIterator.next(); + K key = entry.getKey(); + Collection collection = FilteredEntryMultimap.filterCollection(entry.getValue(), new ValuePredicate(key)); + if (collection.isEmpty() || !predicate.apply(Maps.immutableEntry(key, collection))) continue; + if (collection.size() == entry.getValue().size()) { + entryIterator.remove(); + } else { + collection.clear(); + } + changed = true; + } + return changed; + } + + @Override + Multiset createKeys() { + return new Keys(); + } + + class Keys + extends Multimaps.Keys { + Keys() { + super(FilteredEntryMultimap.this); + } + + @Override + public int remove(@Nullable Object key, int occurrences) { + CollectPreconditions.checkNonnegative(occurrences, "occurrences"); + if (occurrences == 0) { + return this.count(key); + } + Collection collection = FilteredEntryMultimap.this.unfiltered.asMap().get(key); + if (collection == null) { + return 0; + } + Object k = key; + int oldCount = 0; + Iterator itr = collection.iterator(); + while (itr.hasNext()) { + Object v = itr.next(); + if (!FilteredEntryMultimap.this.satisfies(k, v) || ++oldCount > occurrences) continue; + itr.remove(); + } + return oldCount; + } + + @Override + public Set> entrySet() { + return new Multisets.EntrySet(){ + + @Override + Multiset multiset() { + return Keys.this; + } + + @Override + public Iterator> iterator() { + return Keys.this.entryIterator(); + } + + @Override + public int size() { + return FilteredEntryMultimap.this.keySet().size(); + } + + private boolean removeEntriesIf(final Predicate> predicate) { + return FilteredEntryMultimap.this.removeEntriesIf(new Predicate>>(){ + + @Override + public boolean apply(Map.Entry> entry) { + return predicate.apply(Multisets.immutableEntry(entry.getKey(), entry.getValue().size())); + } + }); + } + + @Override + public boolean removeAll(Collection c) { + return this.removeEntriesIf(Predicates.in(c)); + } + + @Override + public boolean retainAll(Collection c) { + return this.removeEntriesIf(Predicates.not(Predicates.in(c))); + } + }; + } + } + + class AsMap + extends Maps.ImprovedAbstractMap> { + AsMap() { + } + + @Override + public boolean containsKey(@Nullable Object key) { + return this.get(key) != null; + } + + @Override + public void clear() { + FilteredEntryMultimap.this.clear(); + } + + @Override + public Collection get(@Nullable Object key) { + Collection result = FilteredEntryMultimap.this.unfiltered.asMap().get(key); + if (result == null) { + return null; + } + Object k = key; + return (result = FilteredEntryMultimap.filterCollection(result, new ValuePredicate(k))).isEmpty() ? null : result; + } + + @Override + public Collection remove(@Nullable Object key) { + Collection collection = FilteredEntryMultimap.this.unfiltered.asMap().get(key); + if (collection == null) { + return null; + } + Object k = key; + ArrayList result = Lists.newArrayList(); + Iterator itr = collection.iterator(); + while (itr.hasNext()) { + Object v = itr.next(); + if (!FilteredEntryMultimap.this.satisfies(k, v)) continue; + itr.remove(); + result.add(v); + } + if (result.isEmpty()) { + return null; + } + if (FilteredEntryMultimap.this.unfiltered instanceof SetMultimap) { + return Collections.unmodifiableSet(Sets.newLinkedHashSet(result)); + } + return Collections.unmodifiableList(result); + } + + @Override + Set createKeySet() { + return new Maps.KeySet>(this){ + + @Override + public boolean removeAll(Collection c) { + return FilteredEntryMultimap.this.removeEntriesIf(Maps.keyPredicateOnEntries(Predicates.in(c))); + } + + @Override + public boolean retainAll(Collection c) { + return FilteredEntryMultimap.this.removeEntriesIf(Maps.keyPredicateOnEntries(Predicates.not(Predicates.in(c)))); + } + + @Override + public boolean remove(@Nullable Object o) { + return AsMap.this.remove(o) != null; + } + }; + } + + @Override + Set>> createEntrySet() { + return new Maps.EntrySet>(){ + + @Override + Map> map() { + return AsMap.this; + } + + @Override + public Iterator>> iterator() { + return new AbstractIterator>>(){ + final Iterator>> backingIterator; + { + this.backingIterator = FilteredEntryMultimap.this.unfiltered.asMap().entrySet().iterator(); + } + + @Override + protected Map.Entry> computeNext() { + while (this.backingIterator.hasNext()) { + Map.Entry entry = this.backingIterator.next(); + Object key = entry.getKey(); + Collection collection = FilteredEntryMultimap.filterCollection(entry.getValue(), new ValuePredicate(key)); + if (collection.isEmpty()) continue; + return Maps.immutableEntry(key, collection); + } + return (Map.Entry)this.endOfData(); + } + }; + } + + @Override + public boolean removeAll(Collection c) { + return FilteredEntryMultimap.this.removeEntriesIf(Predicates.in(c)); + } + + @Override + public boolean retainAll(Collection c) { + return FilteredEntryMultimap.this.removeEntriesIf(Predicates.not(Predicates.in(c))); + } + + @Override + public int size() { + return Iterators.size(this.iterator()); + } + }; + } + + @Override + Collection> createValues() { + return new Maps.Values>(this){ + + @Override + public boolean remove(@Nullable Object o) { + if (o instanceof Collection) { + Collection c = (Collection)o; + Iterator entryIterator = FilteredEntryMultimap.this.unfiltered.asMap().entrySet().iterator(); + while (entryIterator.hasNext()) { + Map.Entry entry = entryIterator.next(); + Object key = entry.getKey(); + Collection collection = FilteredEntryMultimap.filterCollection(entry.getValue(), new ValuePredicate(key)); + if (collection.isEmpty() || !c.equals(collection)) continue; + if (collection.size() == entry.getValue().size()) { + entryIterator.remove(); + } else { + collection.clear(); + } + return true; + } + } + return false; + } + + @Override + public boolean removeAll(Collection c) { + return FilteredEntryMultimap.this.removeEntriesIf(Maps.valuePredicateOnEntries(Predicates.in(c))); + } + + @Override + public boolean retainAll(Collection c) { + return FilteredEntryMultimap.this.removeEntriesIf(Maps.valuePredicateOnEntries(Predicates.not(Predicates.in(c)))); + } + }; + } + } + + final class ValuePredicate + implements Predicate { + private final K key; + + ValuePredicate(K key) { + this.key = key; + } + + @Override + public boolean apply(@Nullable V value) { + return FilteredEntryMultimap.this.satisfies(this.key, value); + } + } +} diff --git a/src/com/google/common/collect/FilteredEntrySetMultimap.java b/src/com/google/common/collect/FilteredEntrySetMultimap.java new file mode 100644 index 0000000..e6ce04f --- /dev/null +++ b/src/com/google/common/collect/FilteredEntrySetMultimap.java @@ -0,0 +1,52 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Predicate; +import com.google.common.collect.FilteredEntryMultimap; +import com.google.common.collect.FilteredSetMultimap; +import com.google.common.collect.SetMultimap; +import com.google.common.collect.Sets; +import java.util.Map; +import java.util.Set; + +@GwtCompatible +final class FilteredEntrySetMultimap +extends FilteredEntryMultimap +implements FilteredSetMultimap { + FilteredEntrySetMultimap(SetMultimap unfiltered, Predicate> predicate) { + super(unfiltered, predicate); + } + + @Override + public SetMultimap unfiltered() { + return (SetMultimap)this.unfiltered; + } + + @Override + public Set get(K key) { + return (Set)super.get(key); + } + + @Override + public Set removeAll(Object key) { + return (Set)super.removeAll(key); + } + + @Override + public Set replaceValues(K key, Iterable values) { + return (Set)super.replaceValues(key, values); + } + + @Override + Set> createEntries() { + return Sets.filter(this.unfiltered().entries(), this.entryPredicate()); + } + + @Override + public Set> entries() { + return (Set)super.entries(); + } +} diff --git a/src/com/google/common/collect/FilteredKeyListMultimap.java b/src/com/google/common/collect/FilteredKeyListMultimap.java new file mode 100644 index 0000000..87438a1 --- /dev/null +++ b/src/com/google/common/collect/FilteredKeyListMultimap.java @@ -0,0 +1,40 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Predicate; +import com.google.common.collect.FilteredKeyMultimap; +import com.google.common.collect.ListMultimap; +import java.util.List; +import javax.annotation.Nullable; + +@GwtCompatible +final class FilteredKeyListMultimap +extends FilteredKeyMultimap +implements ListMultimap { + FilteredKeyListMultimap(ListMultimap unfiltered, Predicate keyPredicate) { + super(unfiltered, keyPredicate); + } + + @Override + public ListMultimap unfiltered() { + return (ListMultimap)super.unfiltered(); + } + + @Override + public List get(K key) { + return (List)super.get(key); + } + + @Override + public List removeAll(@Nullable Object key) { + return (List)super.removeAll(key); + } + + @Override + public List replaceValues(K key, Iterable values) { + return (List)super.replaceValues(key, values); + } +} diff --git a/src/com/google/common/collect/FilteredKeyMultimap.java b/src/com/google/common/collect/FilteredKeyMultimap.java new file mode 100644 index 0000000..ed4fab7 --- /dev/null +++ b/src/com/google/common/collect/FilteredKeyMultimap.java @@ -0,0 +1,217 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Preconditions; +import com.google.common.base.Predicate; +import com.google.common.collect.AbstractMultimap; +import com.google.common.collect.Collections2; +import com.google.common.collect.FilteredMultimap; +import com.google.common.collect.FilteredMultimapValues; +import com.google.common.collect.ForwardingCollection; +import com.google.common.collect.ForwardingList; +import com.google.common.collect.ForwardingSet; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Maps; +import com.google.common.collect.Multimap; +import com.google.common.collect.Multiset; +import com.google.common.collect.Multisets; +import com.google.common.collect.SetMultimap; +import com.google.common.collect.Sets; +import java.util.Collection; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Set; +import javax.annotation.Nullable; + +@GwtCompatible +class FilteredKeyMultimap +extends AbstractMultimap +implements FilteredMultimap { + final Multimap unfiltered; + final Predicate keyPredicate; + + FilteredKeyMultimap(Multimap unfiltered, Predicate keyPredicate) { + this.unfiltered = Preconditions.checkNotNull(unfiltered); + this.keyPredicate = Preconditions.checkNotNull(keyPredicate); + } + + @Override + public Multimap unfiltered() { + return this.unfiltered; + } + + @Override + public Predicate> entryPredicate() { + return Maps.keyPredicateOnEntries(this.keyPredicate); + } + + @Override + public int size() { + int size = 0; + for (Collection collection : this.asMap().values()) { + size += collection.size(); + } + return size; + } + + @Override + public boolean containsKey(@Nullable Object key) { + if (this.unfiltered.containsKey(key)) { + Object k = key; + return this.keyPredicate.apply(k); + } + return false; + } + + @Override + public Collection removeAll(Object key) { + return this.containsKey(key) ? this.unfiltered.removeAll(key) : this.unmodifiableEmptyCollection(); + } + + Collection unmodifiableEmptyCollection() { + if (this.unfiltered instanceof SetMultimap) { + return ImmutableSet.of(); + } + return ImmutableList.of(); + } + + @Override + public void clear() { + this.keySet().clear(); + } + + @Override + Set createKeySet() { + return Sets.filter(this.unfiltered.keySet(), this.keyPredicate); + } + + @Override + public Collection get(K key) { + if (this.keyPredicate.apply(key)) { + return this.unfiltered.get(key); + } + if (this.unfiltered instanceof SetMultimap) { + return new AddRejectingSet(key); + } + return new AddRejectingList(key); + } + + @Override + Iterator> entryIterator() { + throw new AssertionError((Object)"should never be called"); + } + + @Override + Collection> createEntries() { + return new Entries(); + } + + @Override + Collection createValues() { + return new FilteredMultimapValues(this); + } + + @Override + Map> createAsMap() { + return Maps.filterKeys(this.unfiltered.asMap(), this.keyPredicate); + } + + @Override + Multiset createKeys() { + return Multisets.filter(this.unfiltered.keys(), this.keyPredicate); + } + + class Entries + extends ForwardingCollection> { + Entries() { + } + + @Override + protected Collection> delegate() { + return Collections2.filter(FilteredKeyMultimap.this.unfiltered.entries(), FilteredKeyMultimap.this.entryPredicate()); + } + + @Override + public boolean remove(@Nullable Object o) { + Map.Entry entry; + if (o instanceof Map.Entry && FilteredKeyMultimap.this.unfiltered.containsKey((entry = (Map.Entry)o).getKey()) && FilteredKeyMultimap.this.keyPredicate.apply(entry.getKey())) { + return FilteredKeyMultimap.this.unfiltered.remove(entry.getKey(), entry.getValue()); + } + return false; + } + } + + static class AddRejectingList + extends ForwardingList { + final K key; + + AddRejectingList(K key) { + this.key = key; + } + + @Override + public boolean add(V v) { + this.add(0, v); + return true; + } + + @Override + public boolean addAll(Collection collection) { + this.addAll(0, collection); + return true; + } + + @Override + public void add(int index, V element) { + Preconditions.checkPositionIndex(index, 0); + String string = String.valueOf(String.valueOf(this.key)); + throw new IllegalArgumentException(new StringBuilder(32 + string.length()).append("Key does not satisfy predicate: ").append(string).toString()); + } + + @Override + public boolean addAll(int index, Collection elements) { + Preconditions.checkNotNull(elements); + Preconditions.checkPositionIndex(index, 0); + String string = String.valueOf(String.valueOf(this.key)); + throw new IllegalArgumentException(new StringBuilder(32 + string.length()).append("Key does not satisfy predicate: ").append(string).toString()); + } + + @Override + protected List delegate() { + return Collections.emptyList(); + } + } + + static class AddRejectingSet + extends ForwardingSet { + final K key; + + AddRejectingSet(K key) { + this.key = key; + } + + @Override + public boolean add(V element) { + String string = String.valueOf(String.valueOf(this.key)); + throw new IllegalArgumentException(new StringBuilder(32 + string.length()).append("Key does not satisfy predicate: ").append(string).toString()); + } + + @Override + public boolean addAll(Collection collection) { + Preconditions.checkNotNull(collection); + String string = String.valueOf(String.valueOf(this.key)); + throw new IllegalArgumentException(new StringBuilder(32 + string.length()).append("Key does not satisfy predicate: ").append(string).toString()); + } + + @Override + protected Set delegate() { + return Collections.emptySet(); + } + } +} diff --git a/src/com/google/common/collect/FilteredKeySetMultimap.java b/src/com/google/common/collect/FilteredKeySetMultimap.java new file mode 100644 index 0000000..9bf23e5 --- /dev/null +++ b/src/com/google/common/collect/FilteredKeySetMultimap.java @@ -0,0 +1,71 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Predicate; +import com.google.common.collect.FilteredKeyMultimap; +import com.google.common.collect.FilteredSetMultimap; +import com.google.common.collect.SetMultimap; +import com.google.common.collect.Sets; +import java.util.Map; +import java.util.Set; +import javax.annotation.Nullable; + +@GwtCompatible +final class FilteredKeySetMultimap +extends FilteredKeyMultimap +implements FilteredSetMultimap { + FilteredKeySetMultimap(SetMultimap unfiltered, Predicate keyPredicate) { + super(unfiltered, keyPredicate); + } + + @Override + public SetMultimap unfiltered() { + return (SetMultimap)this.unfiltered; + } + + @Override + public Set get(K key) { + return (Set)super.get(key); + } + + @Override + public Set removeAll(Object key) { + return (Set)super.removeAll(key); + } + + @Override + public Set replaceValues(K key, Iterable values) { + return (Set)super.replaceValues(key, values); + } + + @Override + public Set> entries() { + return (Set)super.entries(); + } + + @Override + Set> createEntries() { + return new EntrySet(); + } + + class EntrySet + extends FilteredKeyMultimap.Entries + implements Set> { + EntrySet() { + super(FilteredKeySetMultimap.this); + } + + @Override + public int hashCode() { + return Sets.hashCodeImpl(this); + } + + @Override + public boolean equals(@Nullable Object o) { + return Sets.equalsImpl(this, o); + } + } +} diff --git a/src/com/google/common/collect/FilteredMultimap.java b/src/com/google/common/collect/FilteredMultimap.java new file mode 100644 index 0000000..066db97 --- /dev/null +++ b/src/com/google/common/collect/FilteredMultimap.java @@ -0,0 +1,17 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Predicate; +import com.google.common.collect.Multimap; +import java.util.Map; + +@GwtCompatible +interface FilteredMultimap +extends Multimap { + public Multimap unfiltered(); + + public Predicate> entryPredicate(); +} diff --git a/src/com/google/common/collect/FilteredMultimapValues.java b/src/com/google/common/collect/FilteredMultimapValues.java new file mode 100644 index 0000000..eb18545 --- /dev/null +++ b/src/com/google/common/collect/FilteredMultimapValues.java @@ -0,0 +1,71 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Objects; +import com.google.common.base.Preconditions; +import com.google.common.base.Predicate; +import com.google.common.base.Predicates; +import com.google.common.collect.FilteredMultimap; +import com.google.common.collect.Iterables; +import com.google.common.collect.Maps; +import java.util.AbstractCollection; +import java.util.Collection; +import java.util.Iterator; +import java.util.Map; +import javax.annotation.Nullable; + +@GwtCompatible +final class FilteredMultimapValues +extends AbstractCollection { + private final FilteredMultimap multimap; + + FilteredMultimapValues(FilteredMultimap multimap) { + this.multimap = Preconditions.checkNotNull(multimap); + } + + @Override + public Iterator iterator() { + return Maps.valueIterator(this.multimap.entries().iterator()); + } + + @Override + public boolean contains(@Nullable Object o) { + return this.multimap.containsValue(o); + } + + @Override + public int size() { + return this.multimap.size(); + } + + @Override + public boolean remove(@Nullable Object o) { + Predicate> entryPredicate = this.multimap.entryPredicate(); + Iterator> unfilteredItr = this.multimap.unfiltered().entries().iterator(); + while (unfilteredItr.hasNext()) { + Map.Entry entry = unfilteredItr.next(); + if (!entryPredicate.apply(entry) || !Objects.equal(entry.getValue(), o)) continue; + unfilteredItr.remove(); + return true; + } + return false; + } + + @Override + public boolean removeAll(Collection c) { + return Iterables.removeIf(this.multimap.unfiltered().entries(), Predicates.and(this.multimap.entryPredicate(), Maps.valuePredicateOnEntries(Predicates.in(c)))); + } + + @Override + public boolean retainAll(Collection c) { + return Iterables.removeIf(this.multimap.unfiltered().entries(), Predicates.and(this.multimap.entryPredicate(), Maps.valuePredicateOnEntries(Predicates.not(Predicates.in(c))))); + } + + @Override + public void clear() { + this.multimap.clear(); + } +} diff --git a/src/com/google/common/collect/FilteredSetMultimap.java b/src/com/google/common/collect/FilteredSetMultimap.java new file mode 100644 index 0000000..216671d --- /dev/null +++ b/src/com/google/common/collect/FilteredSetMultimap.java @@ -0,0 +1,16 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.collect.FilteredMultimap; +import com.google.common.collect.SetMultimap; + +@GwtCompatible +interface FilteredSetMultimap +extends FilteredMultimap, +SetMultimap { + @Override + public SetMultimap unfiltered(); +} diff --git a/src/com/google/common/collect/FluentIterable.java b/src/com/google/common/collect/FluentIterable.java new file mode 100644 index 0000000..ffbffaf --- /dev/null +++ b/src/com/google/common/collect/FluentIterable.java @@ -0,0 +1,233 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.base.Function; +import com.google.common.base.Joiner; +import com.google.common.base.Optional; +import com.google.common.base.Preconditions; +import com.google.common.base.Predicate; +import com.google.common.collect.Collections2; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableListMultimap; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.ImmutableSortedSet; +import com.google.common.collect.Iterables; +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import com.google.common.collect.Multimaps; +import com.google.common.collect.Ordering; +import java.util.Arrays; +import java.util.Collection; +import java.util.Comparator; +import java.util.Iterator; +import java.util.List; +import java.util.SortedSet; +import javax.annotation.CheckReturnValue; +import javax.annotation.Nullable; + +@GwtCompatible(emulated=true) +public abstract class FluentIterable +implements Iterable { + private final Iterable iterable; + + protected FluentIterable() { + this.iterable = this; + } + + FluentIterable(Iterable iterable) { + this.iterable = Preconditions.checkNotNull(iterable); + } + + public static FluentIterable from(final Iterable iterable) { + return iterable instanceof FluentIterable ? (FluentIterable)iterable : new FluentIterable(iterable){ + + @Override + public Iterator iterator() { + return iterable.iterator(); + } + }; + } + + @Deprecated + public static FluentIterable from(FluentIterable iterable) { + return Preconditions.checkNotNull(iterable); + } + + @Beta + public static FluentIterable of(E[] elements) { + return FluentIterable.from(Lists.newArrayList(elements)); + } + + public String toString() { + return Iterables.toString(this.iterable); + } + + public final int size() { + return Iterables.size(this.iterable); + } + + public final boolean contains(@Nullable Object element) { + return Iterables.contains(this.iterable, element); + } + + @CheckReturnValue + public final FluentIterable cycle() { + return FluentIterable.from(Iterables.cycle(this.iterable)); + } + + @CheckReturnValue + @Beta + public final FluentIterable append(Iterable other) { + return FluentIterable.from(Iterables.concat(this.iterable, other)); + } + + @CheckReturnValue + @Beta + public final FluentIterable append(E ... elements) { + return FluentIterable.from(Iterables.concat(this.iterable, Arrays.asList(elements))); + } + + @CheckReturnValue + public final FluentIterable filter(Predicate predicate) { + return FluentIterable.from(Iterables.filter(this.iterable, predicate)); + } + + @CheckReturnValue + @GwtIncompatible(value="Class.isInstance") + public final FluentIterable filter(Class type) { + return FluentIterable.from(Iterables.filter(this.iterable, type)); + } + + public final boolean anyMatch(Predicate predicate) { + return Iterables.any(this.iterable, predicate); + } + + public final boolean allMatch(Predicate predicate) { + return Iterables.all(this.iterable, predicate); + } + + public final Optional firstMatch(Predicate predicate) { + return Iterables.tryFind(this.iterable, predicate); + } + + public final FluentIterable transform(Function function) { + return FluentIterable.from(Iterables.transform(this.iterable, function)); + } + + public FluentIterable transformAndConcat(Function> function) { + return FluentIterable.from(Iterables.concat(this.transform(function))); + } + + public final Optional first() { + Iterator iterator = this.iterable.iterator(); + return iterator.hasNext() ? Optional.of(iterator.next()) : Optional.absent(); + } + + public final Optional last() { + E current; + if (this.iterable instanceof List) { + List list = (List)this.iterable; + if (list.isEmpty()) { + return Optional.absent(); + } + return Optional.of(list.get(list.size() - 1)); + } + Iterator iterator = this.iterable.iterator(); + if (!iterator.hasNext()) { + return Optional.absent(); + } + if (this.iterable instanceof SortedSet) { + SortedSet sortedSet = (SortedSet)this.iterable; + return Optional.of(sortedSet.last()); + } + do { + current = iterator.next(); + } while (iterator.hasNext()); + return Optional.of(current); + } + + @CheckReturnValue + public final FluentIterable skip(int numberToSkip) { + return FluentIterable.from(Iterables.skip(this.iterable, numberToSkip)); + } + + @CheckReturnValue + public final FluentIterable limit(int size) { + return FluentIterable.from(Iterables.limit(this.iterable, size)); + } + + public final boolean isEmpty() { + return !this.iterable.iterator().hasNext(); + } + + public final ImmutableList toList() { + return ImmutableList.copyOf(this.iterable); + } + + public final ImmutableList toSortedList(Comparator comparator) { + return Ordering.from(comparator).immutableSortedCopy(this.iterable); + } + + public final ImmutableSet toSet() { + return ImmutableSet.copyOf(this.iterable); + } + + public final ImmutableSortedSet toSortedSet(Comparator comparator) { + return ImmutableSortedSet.copyOf(comparator, this.iterable); + } + + public final ImmutableMap toMap(Function valueFunction) { + return Maps.toMap(this.iterable, valueFunction); + } + + public final ImmutableListMultimap index(Function keyFunction) { + return Multimaps.index(this.iterable, keyFunction); + } + + public final ImmutableMap uniqueIndex(Function keyFunction) { + return Maps.uniqueIndex(this.iterable, keyFunction); + } + + @GwtIncompatible(value="Array.newArray(Class, int)") + public final E[] toArray(Class type) { + return Iterables.toArray(this.iterable, type); + } + + public final > C copyInto(C collection) { + Preconditions.checkNotNull(collection); + if (this.iterable instanceof Collection) { + collection.addAll(Collections2.cast(this.iterable)); + } else { + for (E item : this.iterable) { + collection.add(item); + } + } + return collection; + } + + @Beta + public final String join(Joiner joiner) { + return joiner.join(this); + } + + public final E get(int position) { + return Iterables.get(this.iterable, position); + } + + private static class FromIterableFunction + implements Function, FluentIterable> { + private FromIterableFunction() { + } + + @Override + public FluentIterable apply(Iterable fromObject) { + return FluentIterable.from(fromObject); + } + } +} diff --git a/src/com/google/common/collect/ForwardingBlockingDeque.java b/src/com/google/common/collect/ForwardingBlockingDeque.java new file mode 100644 index 0000000..708b5a2 --- /dev/null +++ b/src/com/google/common/collect/ForwardingBlockingDeque.java @@ -0,0 +1,94 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.collect.ForwardingDeque; +import java.util.Collection; +import java.util.concurrent.BlockingDeque; +import java.util.concurrent.TimeUnit; + +public abstract class ForwardingBlockingDeque +extends ForwardingDeque +implements BlockingDeque { + protected ForwardingBlockingDeque() { + } + + @Override + protected abstract BlockingDeque delegate(); + + @Override + public int remainingCapacity() { + return this.delegate().remainingCapacity(); + } + + @Override + public void putFirst(E e) throws InterruptedException { + this.delegate().putFirst(e); + } + + @Override + public void putLast(E e) throws InterruptedException { + this.delegate().putLast(e); + } + + @Override + public boolean offerFirst(E e, long timeout, TimeUnit unit) throws InterruptedException { + return this.delegate().offerFirst(e, timeout, unit); + } + + @Override + public boolean offerLast(E e, long timeout, TimeUnit unit) throws InterruptedException { + return this.delegate().offerLast(e, timeout, unit); + } + + @Override + public E takeFirst() throws InterruptedException { + return this.delegate().takeFirst(); + } + + @Override + public E takeLast() throws InterruptedException { + return this.delegate().takeLast(); + } + + @Override + public E pollFirst(long timeout, TimeUnit unit) throws InterruptedException { + return this.delegate().pollFirst(timeout, unit); + } + + @Override + public E pollLast(long timeout, TimeUnit unit) throws InterruptedException { + return this.delegate().pollLast(timeout, unit); + } + + @Override + public void put(E e) throws InterruptedException { + this.delegate().put(e); + } + + @Override + public boolean offer(E e, long timeout, TimeUnit unit) throws InterruptedException { + return this.delegate().offer(e, timeout, unit); + } + + @Override + public E take() throws InterruptedException { + return this.delegate().take(); + } + + @Override + public E poll(long timeout, TimeUnit unit) throws InterruptedException { + return this.delegate().poll(timeout, unit); + } + + @Override + public int drainTo(Collection c) { + return this.delegate().drainTo(c); + } + + @Override + public int drainTo(Collection c, int maxElements) { + return this.delegate().drainTo(c, maxElements); + } +} diff --git a/src/com/google/common/collect/ForwardingCollection.java b/src/com/google/common/collect/ForwardingCollection.java new file mode 100644 index 0000000..391d09b --- /dev/null +++ b/src/com/google/common/collect/ForwardingCollection.java @@ -0,0 +1,141 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Objects; +import com.google.common.collect.Collections2; +import com.google.common.collect.ForwardingObject; +import com.google.common.collect.Iterators; +import com.google.common.collect.ObjectArrays; +import java.util.Collection; +import java.util.Iterator; +import javax.annotation.Nullable; + +@GwtCompatible +public abstract class ForwardingCollection +extends ForwardingObject +implements Collection { + protected ForwardingCollection() { + } + + @Override + protected abstract Collection delegate(); + + @Override + public Iterator iterator() { + return this.delegate().iterator(); + } + + @Override + public int size() { + return this.delegate().size(); + } + + @Override + public boolean removeAll(Collection collection) { + return this.delegate().removeAll(collection); + } + + @Override + public boolean isEmpty() { + return this.delegate().isEmpty(); + } + + @Override + public boolean contains(Object object) { + return this.delegate().contains(object); + } + + @Override + public boolean add(E element) { + return this.delegate().add(element); + } + + @Override + public boolean remove(Object object) { + return this.delegate().remove(object); + } + + @Override + public boolean containsAll(Collection collection) { + return this.delegate().containsAll(collection); + } + + @Override + public boolean addAll(Collection collection) { + return this.delegate().addAll(collection); + } + + @Override + public boolean retainAll(Collection collection) { + return this.delegate().retainAll(collection); + } + + @Override + public void clear() { + this.delegate().clear(); + } + + @Override + public Object[] toArray() { + return this.delegate().toArray(); + } + + @Override + public T[] toArray(T[] array) { + return this.delegate().toArray(array); + } + + protected boolean standardContains(@Nullable Object object) { + return Iterators.contains(this.iterator(), object); + } + + protected boolean standardContainsAll(Collection collection) { + return Collections2.containsAllImpl(this, collection); + } + + protected boolean standardAddAll(Collection collection) { + return Iterators.addAll(this, collection.iterator()); + } + + protected boolean standardRemove(@Nullable Object object) { + Iterator iterator = this.iterator(); + while (iterator.hasNext()) { + if (!Objects.equal(iterator.next(), object)) continue; + iterator.remove(); + return true; + } + return false; + } + + protected boolean standardRemoveAll(Collection collection) { + return Iterators.removeAll(this.iterator(), collection); + } + + protected boolean standardRetainAll(Collection collection) { + return Iterators.retainAll(this.iterator(), collection); + } + + protected void standardClear() { + Iterators.clear(this.iterator()); + } + + protected boolean standardIsEmpty() { + return !this.iterator().hasNext(); + } + + protected String standardToString() { + return Collections2.toStringImpl(this); + } + + protected Object[] standardToArray() { + Object[] newArray = new Object[this.size()]; + return this.toArray(newArray); + } + + protected T[] standardToArray(T[] array) { + return ObjectArrays.toArrayImpl(this, array); + } +} diff --git a/src/com/google/common/collect/ForwardingConcurrentMap.java b/src/com/google/common/collect/ForwardingConcurrentMap.java new file mode 100644 index 0000000..8b02ec2 --- /dev/null +++ b/src/com/google/common/collect/ForwardingConcurrentMap.java @@ -0,0 +1,39 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.collect.ForwardingMap; +import java.util.concurrent.ConcurrentMap; + +@GwtCompatible +public abstract class ForwardingConcurrentMap +extends ForwardingMap +implements ConcurrentMap { + protected ForwardingConcurrentMap() { + } + + @Override + protected abstract ConcurrentMap delegate(); + + @Override + public V putIfAbsent(K key, V value) { + return this.delegate().putIfAbsent(key, value); + } + + @Override + public boolean remove(Object key, Object value) { + return this.delegate().remove(key, value); + } + + @Override + public V replace(K key, V value) { + return this.delegate().replace(key, value); + } + + @Override + public boolean replace(K key, V oldValue, V newValue) { + return this.delegate().replace(key, oldValue, newValue); + } +} diff --git a/src/com/google/common/collect/ForwardingDeque.java b/src/com/google/common/collect/ForwardingDeque.java new file mode 100644 index 0000000..df59745 --- /dev/null +++ b/src/com/google/common/collect/ForwardingDeque.java @@ -0,0 +1,103 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.collect.ForwardingQueue; +import java.util.Deque; +import java.util.Iterator; + +public abstract class ForwardingDeque +extends ForwardingQueue +implements Deque { + protected ForwardingDeque() { + } + + @Override + protected abstract Deque delegate(); + + @Override + public void addFirst(E e) { + this.delegate().addFirst(e); + } + + @Override + public void addLast(E e) { + this.delegate().addLast(e); + } + + @Override + public Iterator descendingIterator() { + return this.delegate().descendingIterator(); + } + + @Override + public E getFirst() { + return this.delegate().getFirst(); + } + + @Override + public E getLast() { + return this.delegate().getLast(); + } + + @Override + public boolean offerFirst(E e) { + return this.delegate().offerFirst(e); + } + + @Override + public boolean offerLast(E e) { + return this.delegate().offerLast(e); + } + + @Override + public E peekFirst() { + return this.delegate().peekFirst(); + } + + @Override + public E peekLast() { + return this.delegate().peekLast(); + } + + @Override + public E pollFirst() { + return this.delegate().pollFirst(); + } + + @Override + public E pollLast() { + return this.delegate().pollLast(); + } + + @Override + public E pop() { + return this.delegate().pop(); + } + + @Override + public void push(E e) { + this.delegate().push(e); + } + + @Override + public E removeFirst() { + return this.delegate().removeFirst(); + } + + @Override + public E removeLast() { + return this.delegate().removeLast(); + } + + @Override + public boolean removeFirstOccurrence(Object o) { + return this.delegate().removeFirstOccurrence(o); + } + + @Override + public boolean removeLastOccurrence(Object o) { + return this.delegate().removeLastOccurrence(o); + } +} diff --git a/src/com/google/common/collect/ForwardingImmutableCollection.java b/src/com/google/common/collect/ForwardingImmutableCollection.java new file mode 100644 index 0000000..7a9e336 --- /dev/null +++ b/src/com/google/common/collect/ForwardingImmutableCollection.java @@ -0,0 +1,12 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; + +@GwtCompatible(emulated=true) +class ForwardingImmutableCollection { + private ForwardingImmutableCollection() { + } +} diff --git a/src/com/google/common/collect/ForwardingImmutableList.java b/src/com/google/common/collect/ForwardingImmutableList.java new file mode 100644 index 0000000..3c30876 --- /dev/null +++ b/src/com/google/common/collect/ForwardingImmutableList.java @@ -0,0 +1,12 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; + +@GwtCompatible(emulated=true) +abstract class ForwardingImmutableList { + private ForwardingImmutableList() { + } +} diff --git a/src/com/google/common/collect/ForwardingImmutableMap.java b/src/com/google/common/collect/ForwardingImmutableMap.java new file mode 100644 index 0000000..4ddefe4 --- /dev/null +++ b/src/com/google/common/collect/ForwardingImmutableMap.java @@ -0,0 +1,12 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; + +@GwtCompatible(emulated=true) +abstract class ForwardingImmutableMap { + private ForwardingImmutableMap() { + } +} diff --git a/src/com/google/common/collect/ForwardingImmutableSet.java b/src/com/google/common/collect/ForwardingImmutableSet.java new file mode 100644 index 0000000..80af387 --- /dev/null +++ b/src/com/google/common/collect/ForwardingImmutableSet.java @@ -0,0 +1,12 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; + +@GwtCompatible(emulated=true) +abstract class ForwardingImmutableSet { + private ForwardingImmutableSet() { + } +} diff --git a/src/com/google/common/collect/ForwardingIterator.java b/src/com/google/common/collect/ForwardingIterator.java new file mode 100644 index 0000000..a821547 --- /dev/null +++ b/src/com/google/common/collect/ForwardingIterator.java @@ -0,0 +1,34 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.collect.ForwardingObject; +import java.util.Iterator; + +@GwtCompatible +public abstract class ForwardingIterator +extends ForwardingObject +implements Iterator { + protected ForwardingIterator() { + } + + @Override + protected abstract Iterator delegate(); + + @Override + public boolean hasNext() { + return this.delegate().hasNext(); + } + + @Override + public T next() { + return (T)this.delegate().next(); + } + + @Override + public void remove() { + this.delegate().remove(); + } +} diff --git a/src/com/google/common/collect/ForwardingList.java b/src/com/google/common/collect/ForwardingList.java new file mode 100644 index 0000000..b87c8ad --- /dev/null +++ b/src/com/google/common/collect/ForwardingList.java @@ -0,0 +1,130 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.collect.ForwardingCollection; +import com.google.common.collect.Lists; +import java.util.Collection; +import java.util.Iterator; +import java.util.List; +import java.util.ListIterator; +import javax.annotation.Nullable; + +@GwtCompatible +public abstract class ForwardingList +extends ForwardingCollection +implements List { + protected ForwardingList() { + } + + @Override + protected abstract List delegate(); + + @Override + public void add(int index, E element) { + this.delegate().add(index, element); + } + + @Override + public boolean addAll(int index, Collection elements) { + return this.delegate().addAll(index, elements); + } + + @Override + public E get(int index) { + return this.delegate().get(index); + } + + @Override + public int indexOf(Object element) { + return this.delegate().indexOf(element); + } + + @Override + public int lastIndexOf(Object element) { + return this.delegate().lastIndexOf(element); + } + + @Override + public ListIterator listIterator() { + return this.delegate().listIterator(); + } + + @Override + public ListIterator listIterator(int index) { + return this.delegate().listIterator(index); + } + + @Override + public E remove(int index) { + return this.delegate().remove(index); + } + + @Override + public E set(int index, E element) { + return this.delegate().set(index, element); + } + + @Override + public List subList(int fromIndex, int toIndex) { + return this.delegate().subList(fromIndex, toIndex); + } + + @Override + public boolean equals(@Nullable Object object) { + return object == this || this.delegate().equals(object); + } + + @Override + public int hashCode() { + return this.delegate().hashCode(); + } + + protected boolean standardAdd(E element) { + this.add(this.size(), element); + return true; + } + + protected boolean standardAddAll(int index, Iterable elements) { + return Lists.addAllImpl(this, index, elements); + } + + protected int standardIndexOf(@Nullable Object element) { + return Lists.indexOfImpl(this, element); + } + + protected int standardLastIndexOf(@Nullable Object element) { + return Lists.lastIndexOfImpl(this, element); + } + + protected Iterator standardIterator() { + return this.listIterator(); + } + + protected ListIterator standardListIterator() { + return this.listIterator(0); + } + + @Beta + protected ListIterator standardListIterator(int start) { + return Lists.listIteratorImpl(this, start); + } + + @Beta + protected List standardSubList(int fromIndex, int toIndex) { + return Lists.subListImpl(this, fromIndex, toIndex); + } + + @Beta + protected boolean standardEquals(@Nullable Object object) { + return Lists.equalsImpl(this, object); + } + + @Beta + protected int standardHashCode() { + return Lists.hashCodeImpl(this); + } +} diff --git a/src/com/google/common/collect/ForwardingListIterator.java b/src/com/google/common/collect/ForwardingListIterator.java new file mode 100644 index 0000000..eda3293 --- /dev/null +++ b/src/com/google/common/collect/ForwardingListIterator.java @@ -0,0 +1,49 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.collect.ForwardingIterator; +import java.util.ListIterator; + +@GwtCompatible +public abstract class ForwardingListIterator +extends ForwardingIterator +implements ListIterator { + protected ForwardingListIterator() { + } + + @Override + protected abstract ListIterator delegate(); + + @Override + public void add(E element) { + this.delegate().add(element); + } + + @Override + public boolean hasPrevious() { + return this.delegate().hasPrevious(); + } + + @Override + public int nextIndex() { + return this.delegate().nextIndex(); + } + + @Override + public E previous() { + return this.delegate().previous(); + } + + @Override + public int previousIndex() { + return this.delegate().previousIndex(); + } + + @Override + public void set(E element) { + this.delegate().set(element); + } +} diff --git a/src/com/google/common/collect/ForwardingListMultimap.java b/src/com/google/common/collect/ForwardingListMultimap.java new file mode 100644 index 0000000..5925649 --- /dev/null +++ b/src/com/google/common/collect/ForwardingListMultimap.java @@ -0,0 +1,36 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.collect.ForwardingMultimap; +import com.google.common.collect.ListMultimap; +import java.util.List; +import javax.annotation.Nullable; + +@GwtCompatible +public abstract class ForwardingListMultimap +extends ForwardingMultimap +implements ListMultimap { + protected ForwardingListMultimap() { + } + + @Override + protected abstract ListMultimap delegate(); + + @Override + public List get(@Nullable K key) { + return this.delegate().get(key); + } + + @Override + public List removeAll(@Nullable Object key) { + return this.delegate().removeAll(key); + } + + @Override + public List replaceValues(K key, Iterable values) { + return this.delegate().replaceValues(key, values); + } +} diff --git a/src/com/google/common/collect/ForwardingMap.java b/src/com/google/common/collect/ForwardingMap.java new file mode 100644 index 0000000..40e7fb4 --- /dev/null +++ b/src/com/google/common/collect/ForwardingMap.java @@ -0,0 +1,169 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Objects; +import com.google.common.collect.ForwardingObject; +import com.google.common.collect.Iterators; +import com.google.common.collect.Maps; +import com.google.common.collect.Sets; +import java.util.Collection; +import java.util.Iterator; +import java.util.Map; +import java.util.Set; +import javax.annotation.Nullable; + +@GwtCompatible +public abstract class ForwardingMap +extends ForwardingObject +implements Map { + protected ForwardingMap() { + } + + @Override + protected abstract Map delegate(); + + @Override + public int size() { + return this.delegate().size(); + } + + @Override + public boolean isEmpty() { + return this.delegate().isEmpty(); + } + + @Override + public V remove(Object object) { + return this.delegate().remove(object); + } + + @Override + public void clear() { + this.delegate().clear(); + } + + @Override + public boolean containsKey(@Nullable Object key) { + return this.delegate().containsKey(key); + } + + @Override + public boolean containsValue(@Nullable Object value) { + return this.delegate().containsValue(value); + } + + @Override + public V get(@Nullable Object key) { + return this.delegate().get(key); + } + + @Override + public V put(K key, V value) { + return this.delegate().put(key, value); + } + + @Override + public void putAll(Map map) { + this.delegate().putAll(map); + } + + @Override + public Set keySet() { + return this.delegate().keySet(); + } + + @Override + public Collection values() { + return this.delegate().values(); + } + + @Override + public Set> entrySet() { + return this.delegate().entrySet(); + } + + @Override + public boolean equals(@Nullable Object object) { + return object == this || this.delegate().equals(object); + } + + @Override + public int hashCode() { + return this.delegate().hashCode(); + } + + protected void standardPutAll(Map map) { + Maps.putAllImpl(this, map); + } + + @Beta + protected V standardRemove(@Nullable Object key) { + Iterator> entryIterator = this.entrySet().iterator(); + while (entryIterator.hasNext()) { + Map.Entry entry = entryIterator.next(); + if (!Objects.equal(entry.getKey(), key)) continue; + V value = entry.getValue(); + entryIterator.remove(); + return value; + } + return null; + } + + protected void standardClear() { + Iterators.clear(this.entrySet().iterator()); + } + + @Beta + protected boolean standardContainsKey(@Nullable Object key) { + return Maps.containsKeyImpl(this, key); + } + + protected boolean standardContainsValue(@Nullable Object value) { + return Maps.containsValueImpl(this, value); + } + + protected boolean standardIsEmpty() { + return !this.entrySet().iterator().hasNext(); + } + + protected boolean standardEquals(@Nullable Object object) { + return Maps.equalsImpl(this, object); + } + + protected int standardHashCode() { + return Sets.hashCodeImpl(this.entrySet()); + } + + protected String standardToString() { + return Maps.toStringImpl(this); + } + + @Beta + protected abstract class StandardEntrySet + extends Maps.EntrySet { + @Override + Map map() { + return ForwardingMap.this; + } + } + + @Beta + protected class StandardValues + extends Maps.Values { + public StandardValues() { + super(ForwardingMap.this); + } + } + + @Beta + protected class StandardKeySet + extends Maps.KeySet { + public StandardKeySet() { + super(ForwardingMap.this); + } + } +} diff --git a/src/com/google/common/collect/ForwardingMapEntry.java b/src/com/google/common/collect/ForwardingMapEntry.java new file mode 100644 index 0000000..11df3b1 --- /dev/null +++ b/src/com/google/common/collect/ForwardingMapEntry.java @@ -0,0 +1,68 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Objects; +import com.google.common.collect.ForwardingObject; +import java.util.Map; +import javax.annotation.Nullable; + +@GwtCompatible +public abstract class ForwardingMapEntry +extends ForwardingObject +implements Map.Entry { + protected ForwardingMapEntry() { + } + + @Override + protected abstract Map.Entry delegate(); + + @Override + public K getKey() { + return this.delegate().getKey(); + } + + @Override + public V getValue() { + return this.delegate().getValue(); + } + + @Override + public V setValue(V value) { + return this.delegate().setValue(value); + } + + @Override + public boolean equals(@Nullable Object object) { + return this.delegate().equals(object); + } + + @Override + public int hashCode() { + return this.delegate().hashCode(); + } + + protected boolean standardEquals(@Nullable Object object) { + if (object instanceof Map.Entry) { + Map.Entry that = (Map.Entry)object; + return Objects.equal(this.getKey(), that.getKey()) && Objects.equal(this.getValue(), that.getValue()); + } + return false; + } + + protected int standardHashCode() { + K k = this.getKey(); + V v = this.getValue(); + return (k == null ? 0 : k.hashCode()) ^ (v == null ? 0 : v.hashCode()); + } + + @Beta + protected String standardToString() { + String string = String.valueOf(String.valueOf(this.getKey())); + String string2 = String.valueOf(String.valueOf(this.getValue())); + return new StringBuilder(1 + string.length() + string2.length()).append(string).append("=").append(string2).toString(); + } +} diff --git a/src/com/google/common/collect/ForwardingMultimap.java b/src/com/google/common/collect/ForwardingMultimap.java new file mode 100644 index 0000000..6d5632c --- /dev/null +++ b/src/com/google/common/collect/ForwardingMultimap.java @@ -0,0 +1,124 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.collect.ForwardingObject; +import com.google.common.collect.Multimap; +import com.google.common.collect.Multiset; +import java.util.Collection; +import java.util.Map; +import java.util.Set; +import javax.annotation.Nullable; + +@GwtCompatible +public abstract class ForwardingMultimap +extends ForwardingObject +implements Multimap { + protected ForwardingMultimap() { + } + + @Override + protected abstract Multimap delegate(); + + @Override + public Map> asMap() { + return this.delegate().asMap(); + } + + @Override + public void clear() { + this.delegate().clear(); + } + + @Override + public boolean containsEntry(@Nullable Object key, @Nullable Object value) { + return this.delegate().containsEntry(key, value); + } + + @Override + public boolean containsKey(@Nullable Object key) { + return this.delegate().containsKey(key); + } + + @Override + public boolean containsValue(@Nullable Object value) { + return this.delegate().containsValue(value); + } + + @Override + public Collection> entries() { + return this.delegate().entries(); + } + + @Override + public Collection get(@Nullable K key) { + return this.delegate().get(key); + } + + @Override + public boolean isEmpty() { + return this.delegate().isEmpty(); + } + + @Override + public Multiset keys() { + return this.delegate().keys(); + } + + @Override + public Set keySet() { + return this.delegate().keySet(); + } + + @Override + public boolean put(K key, V value) { + return this.delegate().put(key, value); + } + + @Override + public boolean putAll(K key, Iterable values) { + return this.delegate().putAll(key, values); + } + + @Override + public boolean putAll(Multimap multimap) { + return this.delegate().putAll(multimap); + } + + @Override + public boolean remove(@Nullable Object key, @Nullable Object value) { + return this.delegate().remove(key, value); + } + + @Override + public Collection removeAll(@Nullable Object key) { + return this.delegate().removeAll(key); + } + + @Override + public Collection replaceValues(K key, Iterable values) { + return this.delegate().replaceValues(key, values); + } + + @Override + public int size() { + return this.delegate().size(); + } + + @Override + public Collection values() { + return this.delegate().values(); + } + + @Override + public boolean equals(@Nullable Object object) { + return object == this || this.delegate().equals(object); + } + + @Override + public int hashCode() { + return this.delegate().hashCode(); + } +} diff --git a/src/com/google/common/collect/ForwardingMultiset.java b/src/com/google/common/collect/ForwardingMultiset.java new file mode 100644 index 0000000..81d96c5 --- /dev/null +++ b/src/com/google/common/collect/ForwardingMultiset.java @@ -0,0 +1,155 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Objects; +import com.google.common.collect.ForwardingCollection; +import com.google.common.collect.Iterators; +import com.google.common.collect.Multiset; +import com.google.common.collect.Multisets; +import java.util.Collection; +import java.util.Iterator; +import java.util.Set; +import javax.annotation.Nullable; + +@GwtCompatible +public abstract class ForwardingMultiset +extends ForwardingCollection +implements Multiset { + protected ForwardingMultiset() { + } + + @Override + protected abstract Multiset delegate(); + + @Override + public int count(Object element) { + return this.delegate().count(element); + } + + @Override + public int add(E element, int occurrences) { + return this.delegate().add(element, occurrences); + } + + @Override + public int remove(Object element, int occurrences) { + return this.delegate().remove(element, occurrences); + } + + @Override + public Set elementSet() { + return this.delegate().elementSet(); + } + + @Override + public Set> entrySet() { + return this.delegate().entrySet(); + } + + @Override + public boolean equals(@Nullable Object object) { + return object == this || this.delegate().equals(object); + } + + @Override + public int hashCode() { + return this.delegate().hashCode(); + } + + @Override + public int setCount(E element, int count) { + return this.delegate().setCount(element, count); + } + + @Override + public boolean setCount(E element, int oldCount, int newCount) { + return this.delegate().setCount(element, oldCount, newCount); + } + + @Override + protected boolean standardContains(@Nullable Object object) { + return this.count(object) > 0; + } + + @Override + protected void standardClear() { + Iterators.clear(this.entrySet().iterator()); + } + + @Beta + protected int standardCount(@Nullable Object object) { + for (Multiset.Entry entry : this.entrySet()) { + if (!Objects.equal(entry.getElement(), object)) continue; + return entry.getCount(); + } + return 0; + } + + protected boolean standardAdd(E element) { + this.add(element, 1); + return true; + } + + @Override + @Beta + protected boolean standardAddAll(Collection elementsToAdd) { + return Multisets.addAllImpl(this, elementsToAdd); + } + + @Override + protected boolean standardRemove(Object element) { + return this.remove(element, 1) > 0; + } + + @Override + protected boolean standardRemoveAll(Collection elementsToRemove) { + return Multisets.removeAllImpl(this, elementsToRemove); + } + + @Override + protected boolean standardRetainAll(Collection elementsToRetain) { + return Multisets.retainAllImpl(this, elementsToRetain); + } + + protected int standardSetCount(E element, int count) { + return Multisets.setCountImpl(this, element, count); + } + + protected boolean standardSetCount(E element, int oldCount, int newCount) { + return Multisets.setCountImpl(this, element, oldCount, newCount); + } + + protected Iterator standardIterator() { + return Multisets.iteratorImpl(this); + } + + protected int standardSize() { + return Multisets.sizeImpl(this); + } + + protected boolean standardEquals(@Nullable Object object) { + return Multisets.equalsImpl(this, object); + } + + protected int standardHashCode() { + return this.entrySet().hashCode(); + } + + @Override + protected String standardToString() { + return this.entrySet().toString(); + } + + @Beta + protected class StandardElementSet + extends Multisets.ElementSet { + @Override + Multiset multiset() { + return ForwardingMultiset.this; + } + } +} diff --git a/src/com/google/common/collect/ForwardingNavigableMap.java b/src/com/google/common/collect/ForwardingNavigableMap.java new file mode 100644 index 0000000..6206dc6 --- /dev/null +++ b/src/com/google/common/collect/ForwardingNavigableMap.java @@ -0,0 +1,254 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.Beta; +import com.google.common.collect.CollectPreconditions; +import com.google.common.collect.ForwardingSortedMap; +import com.google.common.collect.Iterables; +import com.google.common.collect.Iterators; +import com.google.common.collect.Maps; +import java.util.Iterator; +import java.util.Map; +import java.util.NavigableMap; +import java.util.NavigableSet; +import java.util.NoSuchElementException; +import java.util.SortedMap; + +public abstract class ForwardingNavigableMap +extends ForwardingSortedMap +implements NavigableMap { + protected ForwardingNavigableMap() { + } + + @Override + protected abstract NavigableMap delegate(); + + @Override + public Map.Entry lowerEntry(K key) { + return this.delegate().lowerEntry(key); + } + + protected Map.Entry standardLowerEntry(K key) { + return this.headMap(key, false).lastEntry(); + } + + @Override + public K lowerKey(K key) { + return this.delegate().lowerKey(key); + } + + protected K standardLowerKey(K key) { + return Maps.keyOrNull(this.lowerEntry(key)); + } + + @Override + public Map.Entry floorEntry(K key) { + return this.delegate().floorEntry(key); + } + + protected Map.Entry standardFloorEntry(K key) { + return this.headMap(key, true).lastEntry(); + } + + @Override + public K floorKey(K key) { + return this.delegate().floorKey(key); + } + + protected K standardFloorKey(K key) { + return Maps.keyOrNull(this.floorEntry(key)); + } + + @Override + public Map.Entry ceilingEntry(K key) { + return this.delegate().ceilingEntry(key); + } + + protected Map.Entry standardCeilingEntry(K key) { + return this.tailMap(key, true).firstEntry(); + } + + @Override + public K ceilingKey(K key) { + return this.delegate().ceilingKey(key); + } + + protected K standardCeilingKey(K key) { + return Maps.keyOrNull(this.ceilingEntry(key)); + } + + @Override + public Map.Entry higherEntry(K key) { + return this.delegate().higherEntry(key); + } + + protected Map.Entry standardHigherEntry(K key) { + return this.tailMap(key, false).firstEntry(); + } + + @Override + public K higherKey(K key) { + return this.delegate().higherKey(key); + } + + protected K standardHigherKey(K key) { + return Maps.keyOrNull(this.higherEntry(key)); + } + + @Override + public Map.Entry firstEntry() { + return this.delegate().firstEntry(); + } + + protected Map.Entry standardFirstEntry() { + return Iterables.getFirst(this.entrySet(), null); + } + + protected K standardFirstKey() { + Map.Entry entry = this.firstEntry(); + if (entry == null) { + throw new NoSuchElementException(); + } + return entry.getKey(); + } + + @Override + public Map.Entry lastEntry() { + return this.delegate().lastEntry(); + } + + protected Map.Entry standardLastEntry() { + return Iterables.getFirst(this.descendingMap().entrySet(), null); + } + + protected K standardLastKey() { + Map.Entry entry = this.lastEntry(); + if (entry == null) { + throw new NoSuchElementException(); + } + return entry.getKey(); + } + + @Override + public Map.Entry pollFirstEntry() { + return this.delegate().pollFirstEntry(); + } + + protected Map.Entry standardPollFirstEntry() { + return Iterators.pollNext(this.entrySet().iterator()); + } + + @Override + public Map.Entry pollLastEntry() { + return this.delegate().pollLastEntry(); + } + + protected Map.Entry standardPollLastEntry() { + return Iterators.pollNext(this.descendingMap().entrySet().iterator()); + } + + @Override + public NavigableMap descendingMap() { + return this.delegate().descendingMap(); + } + + @Override + public NavigableSet navigableKeySet() { + return this.delegate().navigableKeySet(); + } + + @Override + public NavigableSet descendingKeySet() { + return this.delegate().descendingKeySet(); + } + + @Beta + protected NavigableSet standardDescendingKeySet() { + return this.descendingMap().navigableKeySet(); + } + + @Override + protected SortedMap standardSubMap(K fromKey, K toKey) { + return this.subMap(fromKey, true, toKey, false); + } + + @Override + public NavigableMap subMap(K fromKey, boolean fromInclusive, K toKey, boolean toInclusive) { + return this.delegate().subMap(fromKey, fromInclusive, toKey, toInclusive); + } + + @Override + public NavigableMap headMap(K toKey, boolean inclusive) { + return this.delegate().headMap(toKey, inclusive); + } + + @Override + public NavigableMap tailMap(K fromKey, boolean inclusive) { + return this.delegate().tailMap(fromKey, inclusive); + } + + protected SortedMap standardHeadMap(K toKey) { + return this.headMap(toKey, false); + } + + protected SortedMap standardTailMap(K fromKey) { + return this.tailMap(fromKey, true); + } + + @Beta + protected class StandardNavigableKeySet + extends Maps.NavigableKeySet { + public StandardNavigableKeySet() { + super(ForwardingNavigableMap.this); + } + } + + @Beta + protected class StandardDescendingMap + extends Maps.DescendingMap { + @Override + NavigableMap forward() { + return ForwardingNavigableMap.this; + } + + @Override + protected Iterator> entryIterator() { + return new Iterator>(){ + private Map.Entry toRemove = null; + private Map.Entry nextOrNull = StandardDescendingMap.this.forward().lastEntry(); + + @Override + public boolean hasNext() { + return this.nextOrNull != null; + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public Map.Entry next() { + if (!this.hasNext()) { + throw new NoSuchElementException(); + } + try { + Map.Entry entry = this.nextOrNull; + return entry; + } + finally { + this.toRemove = this.nextOrNull; + this.nextOrNull = StandardDescendingMap.this.forward().lowerEntry(this.nextOrNull.getKey()); + } + } + + @Override + public void remove() { + CollectPreconditions.checkRemove(this.toRemove != null); + StandardDescendingMap.this.forward().remove(this.toRemove.getKey()); + this.toRemove = null; + } + }; + } + } +} diff --git a/src/com/google/common/collect/ForwardingNavigableSet.java b/src/com/google/common/collect/ForwardingNavigableSet.java new file mode 100644 index 0000000..79b5210 --- /dev/null +++ b/src/com/google/common/collect/ForwardingNavigableSet.java @@ -0,0 +1,135 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.Beta; +import com.google.common.collect.ForwardingSortedSet; +import com.google.common.collect.Iterators; +import com.google.common.collect.Sets; +import java.util.Iterator; +import java.util.NavigableSet; +import java.util.SortedSet; + +public abstract class ForwardingNavigableSet +extends ForwardingSortedSet +implements NavigableSet { + protected ForwardingNavigableSet() { + } + + @Override + protected abstract NavigableSet delegate(); + + @Override + public E lower(E e) { + return this.delegate().lower(e); + } + + protected E standardLower(E e) { + return Iterators.getNext(this.headSet(e, false).descendingIterator(), null); + } + + @Override + public E floor(E e) { + return this.delegate().floor(e); + } + + protected E standardFloor(E e) { + return Iterators.getNext(this.headSet(e, true).descendingIterator(), null); + } + + @Override + public E ceiling(E e) { + return this.delegate().ceiling(e); + } + + protected E standardCeiling(E e) { + return Iterators.getNext(this.tailSet(e, true).iterator(), null); + } + + @Override + public E higher(E e) { + return this.delegate().higher(e); + } + + protected E standardHigher(E e) { + return Iterators.getNext(this.tailSet(e, false).iterator(), null); + } + + @Override + public E pollFirst() { + return this.delegate().pollFirst(); + } + + protected E standardPollFirst() { + return Iterators.pollNext(this.iterator()); + } + + @Override + public E pollLast() { + return this.delegate().pollLast(); + } + + protected E standardPollLast() { + return Iterators.pollNext(this.descendingIterator()); + } + + protected E standardFirst() { + return this.iterator().next(); + } + + protected E standardLast() { + return this.descendingIterator().next(); + } + + @Override + public NavigableSet descendingSet() { + return this.delegate().descendingSet(); + } + + @Override + public Iterator descendingIterator() { + return this.delegate().descendingIterator(); + } + + @Override + public NavigableSet subSet(E fromElement, boolean fromInclusive, E toElement, boolean toInclusive) { + return this.delegate().subSet(fromElement, fromInclusive, toElement, toInclusive); + } + + @Beta + protected NavigableSet standardSubSet(E fromElement, boolean fromInclusive, E toElement, boolean toInclusive) { + return this.tailSet(fromElement, fromInclusive).headSet(toElement, toInclusive); + } + + @Override + protected SortedSet standardSubSet(E fromElement, E toElement) { + return this.subSet(fromElement, true, toElement, false); + } + + @Override + public NavigableSet headSet(E toElement, boolean inclusive) { + return this.delegate().headSet(toElement, inclusive); + } + + protected SortedSet standardHeadSet(E toElement) { + return this.headSet(toElement, false); + } + + @Override + public NavigableSet tailSet(E fromElement, boolean inclusive) { + return this.delegate().tailSet(fromElement, inclusive); + } + + protected SortedSet standardTailSet(E fromElement) { + return this.tailSet(fromElement, true); + } + + @Beta + protected class StandardDescendingSet + extends Sets.DescendingSet { + public StandardDescendingSet() { + super(ForwardingNavigableSet.this); + } + } +} diff --git a/src/com/google/common/collect/ForwardingObject.java b/src/com/google/common/collect/ForwardingObject.java new file mode 100644 index 0000000..7a450e5 --- /dev/null +++ b/src/com/google/common/collect/ForwardingObject.java @@ -0,0 +1,18 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; + +@GwtCompatible +public abstract class ForwardingObject { + protected ForwardingObject() { + } + + protected abstract Object delegate(); + + public String toString() { + return this.delegate().toString(); + } +} diff --git a/src/com/google/common/collect/ForwardingQueue.java b/src/com/google/common/collect/ForwardingQueue.java new file mode 100644 index 0000000..b402bbb --- /dev/null +++ b/src/com/google/common/collect/ForwardingQueue.java @@ -0,0 +1,72 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.collect.ForwardingCollection; +import java.util.NoSuchElementException; +import java.util.Queue; + +@GwtCompatible +public abstract class ForwardingQueue +extends ForwardingCollection +implements Queue { + protected ForwardingQueue() { + } + + @Override + protected abstract Queue delegate(); + + @Override + public boolean offer(E o) { + return this.delegate().offer(o); + } + + @Override + public E poll() { + return this.delegate().poll(); + } + + @Override + public E remove() { + return this.delegate().remove(); + } + + @Override + public E peek() { + return this.delegate().peek(); + } + + @Override + public E element() { + return this.delegate().element(); + } + + protected boolean standardOffer(E e) { + try { + return this.add(e); + } + catch (IllegalStateException caught) { + return false; + } + } + + protected E standardPeek() { + try { + return this.element(); + } + catch (NoSuchElementException caught) { + return null; + } + } + + protected E standardPoll() { + try { + return this.remove(); + } + catch (NoSuchElementException caught) { + return null; + } + } +} diff --git a/src/com/google/common/collect/ForwardingSet.java b/src/com/google/common/collect/ForwardingSet.java new file mode 100644 index 0000000..7694836 --- /dev/null +++ b/src/com/google/common/collect/ForwardingSet.java @@ -0,0 +1,46 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Preconditions; +import com.google.common.collect.ForwardingCollection; +import com.google.common.collect.Sets; +import java.util.Collection; +import java.util.Set; +import javax.annotation.Nullable; + +@GwtCompatible +public abstract class ForwardingSet +extends ForwardingCollection +implements Set { + protected ForwardingSet() { + } + + @Override + protected abstract Set delegate(); + + @Override + public boolean equals(@Nullable Object object) { + return object == this || this.delegate().equals(object); + } + + @Override + public int hashCode() { + return this.delegate().hashCode(); + } + + @Override + protected boolean standardRemoveAll(Collection collection) { + return Sets.removeAllImpl(this, Preconditions.checkNotNull(collection)); + } + + protected boolean standardEquals(@Nullable Object object) { + return Sets.equalsImpl(this, object); + } + + protected int standardHashCode() { + return Sets.hashCodeImpl(this); + } +} diff --git a/src/com/google/common/collect/ForwardingSetMultimap.java b/src/com/google/common/collect/ForwardingSetMultimap.java new file mode 100644 index 0000000..e2593b9 --- /dev/null +++ b/src/com/google/common/collect/ForwardingSetMultimap.java @@ -0,0 +1,39 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.collect.ForwardingMultimap; +import com.google.common.collect.SetMultimap; +import java.util.Map; +import java.util.Set; +import javax.annotation.Nullable; + +@GwtCompatible +public abstract class ForwardingSetMultimap +extends ForwardingMultimap +implements SetMultimap { + @Override + protected abstract SetMultimap delegate(); + + @Override + public Set> entries() { + return this.delegate().entries(); + } + + @Override + public Set get(@Nullable K key) { + return this.delegate().get(key); + } + + @Override + public Set removeAll(@Nullable Object key) { + return this.delegate().removeAll(key); + } + + @Override + public Set replaceValues(K key, Iterable values) { + return this.delegate().replaceValues(key, values); + } +} diff --git a/src/com/google/common/collect/ForwardingSortedMap.java b/src/com/google/common/collect/ForwardingSortedMap.java new file mode 100644 index 0000000..aace637 --- /dev/null +++ b/src/com/google/common/collect/ForwardingSortedMap.java @@ -0,0 +1,96 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Preconditions; +import com.google.common.collect.ForwardingMap; +import com.google.common.collect.Maps; +import java.util.Comparator; +import java.util.NoSuchElementException; +import java.util.SortedMap; +import javax.annotation.Nullable; + +@GwtCompatible +public abstract class ForwardingSortedMap +extends ForwardingMap +implements SortedMap { + protected ForwardingSortedMap() { + } + + @Override + protected abstract SortedMap delegate(); + + @Override + public Comparator comparator() { + return this.delegate().comparator(); + } + + @Override + public K firstKey() { + return this.delegate().firstKey(); + } + + @Override + public SortedMap headMap(K toKey) { + return this.delegate().headMap(toKey); + } + + @Override + public K lastKey() { + return this.delegate().lastKey(); + } + + @Override + public SortedMap subMap(K fromKey, K toKey) { + return this.delegate().subMap(fromKey, toKey); + } + + @Override + public SortedMap tailMap(K fromKey) { + return this.delegate().tailMap(fromKey); + } + + private int unsafeCompare(Object k1, Object k2) { + Comparator comparator = this.comparator(); + if (comparator == null) { + return ((Comparable)k1).compareTo(k2); + } + return comparator.compare(k1, k2); + } + + @Override + @Beta + protected boolean standardContainsKey(@Nullable Object key) { + try { + ForwardingSortedMap self = this; + Object ceilingKey = self.tailMap(key).firstKey(); + return this.unsafeCompare(ceilingKey, key) == 0; + } + catch (ClassCastException e) { + return false; + } + catch (NoSuchElementException e) { + return false; + } + catch (NullPointerException e) { + return false; + } + } + + @Beta + protected SortedMap standardSubMap(K fromKey, K toKey) { + Preconditions.checkArgument(this.unsafeCompare(fromKey, toKey) <= 0, "fromKey must be <= toKey"); + return this.tailMap(fromKey).headMap(toKey); + } + + @Beta + protected class StandardKeySet + extends Maps.SortedKeySet { + public StandardKeySet() { + super(ForwardingSortedMap.this); + } + } +} diff --git a/src/com/google/common/collect/ForwardingSortedMultiset.java b/src/com/google/common/collect/ForwardingSortedMultiset.java new file mode 100644 index 0000000..237c701 --- /dev/null +++ b/src/com/google/common/collect/ForwardingSortedMultiset.java @@ -0,0 +1,138 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.collect.BoundType; +import com.google.common.collect.DescendingMultiset; +import com.google.common.collect.ForwardingMultiset; +import com.google.common.collect.Multiset; +import com.google.common.collect.Multisets; +import com.google.common.collect.SortedMultiset; +import com.google.common.collect.SortedMultisets; +import java.util.Comparator; +import java.util.Iterator; +import java.util.NavigableSet; + +@Beta +@GwtCompatible(emulated=true) +public abstract class ForwardingSortedMultiset +extends ForwardingMultiset +implements SortedMultiset { + protected ForwardingSortedMultiset() { + } + + @Override + protected abstract SortedMultiset delegate(); + + @Override + public NavigableSet elementSet() { + return (NavigableSet)super.elementSet(); + } + + @Override + public Comparator comparator() { + return this.delegate().comparator(); + } + + @Override + public SortedMultiset descendingMultiset() { + return this.delegate().descendingMultiset(); + } + + @Override + public Multiset.Entry firstEntry() { + return this.delegate().firstEntry(); + } + + protected Multiset.Entry standardFirstEntry() { + Iterator entryIterator = this.entrySet().iterator(); + if (!entryIterator.hasNext()) { + return null; + } + Multiset.Entry entry = entryIterator.next(); + return Multisets.immutableEntry(entry.getElement(), entry.getCount()); + } + + @Override + public Multiset.Entry lastEntry() { + return this.delegate().lastEntry(); + } + + protected Multiset.Entry standardLastEntry() { + Iterator> entryIterator = this.descendingMultiset().entrySet().iterator(); + if (!entryIterator.hasNext()) { + return null; + } + Multiset.Entry entry = entryIterator.next(); + return Multisets.immutableEntry(entry.getElement(), entry.getCount()); + } + + @Override + public Multiset.Entry pollFirstEntry() { + return this.delegate().pollFirstEntry(); + } + + protected Multiset.Entry standardPollFirstEntry() { + Iterator entryIterator = this.entrySet().iterator(); + if (!entryIterator.hasNext()) { + return null; + } + Multiset.Entry entry = entryIterator.next(); + entry = Multisets.immutableEntry(entry.getElement(), entry.getCount()); + entryIterator.remove(); + return entry; + } + + @Override + public Multiset.Entry pollLastEntry() { + return this.delegate().pollLastEntry(); + } + + protected Multiset.Entry standardPollLastEntry() { + Iterator> entryIterator = this.descendingMultiset().entrySet().iterator(); + if (!entryIterator.hasNext()) { + return null; + } + Multiset.Entry entry = entryIterator.next(); + entry = Multisets.immutableEntry(entry.getElement(), entry.getCount()); + entryIterator.remove(); + return entry; + } + + @Override + public SortedMultiset headMultiset(E upperBound, BoundType boundType) { + return this.delegate().headMultiset(upperBound, boundType); + } + + @Override + public SortedMultiset subMultiset(E lowerBound, BoundType lowerBoundType, E upperBound, BoundType upperBoundType) { + return this.delegate().subMultiset(lowerBound, lowerBoundType, upperBound, upperBoundType); + } + + protected SortedMultiset standardSubMultiset(E lowerBound, BoundType lowerBoundType, E upperBound, BoundType upperBoundType) { + return this.tailMultiset(lowerBound, lowerBoundType).headMultiset(upperBound, upperBoundType); + } + + @Override + public SortedMultiset tailMultiset(E lowerBound, BoundType boundType) { + return this.delegate().tailMultiset(lowerBound, boundType); + } + + protected abstract class StandardDescendingMultiset + extends DescendingMultiset { + @Override + SortedMultiset forwardMultiset() { + return ForwardingSortedMultiset.this; + } + } + + protected class StandardElementSet + extends SortedMultisets.NavigableElementSet { + public StandardElementSet() { + super(ForwardingSortedMultiset.this); + } + } +} diff --git a/src/com/google/common/collect/ForwardingSortedSet.java b/src/com/google/common/collect/ForwardingSortedSet.java new file mode 100644 index 0000000..5141a33 --- /dev/null +++ b/src/com/google/common/collect/ForwardingSortedSet.java @@ -0,0 +1,104 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.collect.ForwardingSet; +import java.util.Comparator; +import java.util.Iterator; +import java.util.NoSuchElementException; +import java.util.SortedSet; +import javax.annotation.Nullable; + +@GwtCompatible +public abstract class ForwardingSortedSet +extends ForwardingSet +implements SortedSet { + protected ForwardingSortedSet() { + } + + @Override + protected abstract SortedSet delegate(); + + @Override + public Comparator comparator() { + return this.delegate().comparator(); + } + + @Override + public E first() { + return this.delegate().first(); + } + + @Override + public SortedSet headSet(E toElement) { + return this.delegate().headSet(toElement); + } + + @Override + public E last() { + return this.delegate().last(); + } + + @Override + public SortedSet subSet(E fromElement, E toElement) { + return this.delegate().subSet(fromElement, toElement); + } + + @Override + public SortedSet tailSet(E fromElement) { + return this.delegate().tailSet(fromElement); + } + + private int unsafeCompare(Object o1, Object o2) { + Comparator comparator = this.comparator(); + return comparator == null ? ((Comparable)o1).compareTo(o2) : comparator.compare(o1, o2); + } + + @Override + @Beta + protected boolean standardContains(@Nullable Object object) { + try { + ForwardingSortedSet self = this; + Object ceiling = self.tailSet(object).first(); + return this.unsafeCompare(ceiling, object) == 0; + } + catch (ClassCastException e) { + return false; + } + catch (NoSuchElementException e) { + return false; + } + catch (NullPointerException e) { + return false; + } + } + + @Override + @Beta + protected boolean standardRemove(@Nullable Object object) { + try { + Object ceiling; + ForwardingSortedSet self = this; + Iterator iterator = self.tailSet(object).iterator(); + if (iterator.hasNext() && this.unsafeCompare(ceiling = iterator.next(), object) == 0) { + iterator.remove(); + return true; + } + } + catch (ClassCastException e) { + return false; + } + catch (NullPointerException e) { + return false; + } + return false; + } + + @Beta + protected SortedSet standardSubSet(E fromElement, E toElement) { + return this.tailSet(fromElement).headSet(toElement); + } +} diff --git a/src/com/google/common/collect/ForwardingSortedSetMultimap.java b/src/com/google/common/collect/ForwardingSortedSetMultimap.java new file mode 100644 index 0000000..4a6246f --- /dev/null +++ b/src/com/google/common/collect/ForwardingSortedSetMultimap.java @@ -0,0 +1,42 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.collect.ForwardingSetMultimap; +import com.google.common.collect.SortedSetMultimap; +import java.util.Comparator; +import java.util.SortedSet; +import javax.annotation.Nullable; + +@GwtCompatible +public abstract class ForwardingSortedSetMultimap +extends ForwardingSetMultimap +implements SortedSetMultimap { + protected ForwardingSortedSetMultimap() { + } + + @Override + protected abstract SortedSetMultimap delegate(); + + @Override + public SortedSet get(@Nullable K key) { + return this.delegate().get(key); + } + + @Override + public SortedSet removeAll(@Nullable Object key) { + return this.delegate().removeAll(key); + } + + @Override + public SortedSet replaceValues(K key, Iterable values) { + return this.delegate().replaceValues(key, values); + } + + @Override + public Comparator valueComparator() { + return this.delegate().valueComparator(); + } +} diff --git a/src/com/google/common/collect/ForwardingTable.java b/src/com/google/common/collect/ForwardingTable.java new file mode 100644 index 0000000..8a4a19e --- /dev/null +++ b/src/com/google/common/collect/ForwardingTable.java @@ -0,0 +1,127 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.collect.ForwardingObject; +import com.google.common.collect.Table; +import java.util.Collection; +import java.util.Map; +import java.util.Set; + +@GwtCompatible +public abstract class ForwardingTable +extends ForwardingObject +implements Table { + protected ForwardingTable() { + } + + @Override + protected abstract Table delegate(); + + @Override + public Set> cellSet() { + return this.delegate().cellSet(); + } + + @Override + public void clear() { + this.delegate().clear(); + } + + @Override + public Map column(C columnKey) { + return this.delegate().column(columnKey); + } + + @Override + public Set columnKeySet() { + return this.delegate().columnKeySet(); + } + + @Override + public Map> columnMap() { + return this.delegate().columnMap(); + } + + @Override + public boolean contains(Object rowKey, Object columnKey) { + return this.delegate().contains(rowKey, columnKey); + } + + @Override + public boolean containsColumn(Object columnKey) { + return this.delegate().containsColumn(columnKey); + } + + @Override + public boolean containsRow(Object rowKey) { + return this.delegate().containsRow(rowKey); + } + + @Override + public boolean containsValue(Object value) { + return this.delegate().containsValue(value); + } + + @Override + public V get(Object rowKey, Object columnKey) { + return this.delegate().get(rowKey, columnKey); + } + + @Override + public boolean isEmpty() { + return this.delegate().isEmpty(); + } + + @Override + public V put(R rowKey, C columnKey, V value) { + return this.delegate().put(rowKey, columnKey, value); + } + + @Override + public void putAll(Table table) { + this.delegate().putAll(table); + } + + @Override + public V remove(Object rowKey, Object columnKey) { + return this.delegate().remove(rowKey, columnKey); + } + + @Override + public Map row(R rowKey) { + return this.delegate().row(rowKey); + } + + @Override + public Set rowKeySet() { + return this.delegate().rowKeySet(); + } + + @Override + public Map> rowMap() { + return this.delegate().rowMap(); + } + + @Override + public int size() { + return this.delegate().size(); + } + + @Override + public Collection values() { + return this.delegate().values(); + } + + @Override + public boolean equals(Object obj) { + return obj == this || this.delegate().equals(obj); + } + + @Override + public int hashCode() { + return this.delegate().hashCode(); + } +} diff --git a/src/com/google/common/collect/GeneralRange.java b/src/com/google/common/collect/GeneralRange.java new file mode 100644 index 0000000..5979d22 --- /dev/null +++ b/src/com/google/common/collect/GeneralRange.java @@ -0,0 +1,192 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Objects; +import com.google.common.base.Preconditions; +import com.google.common.collect.BoundType; +import com.google.common.collect.Ordering; +import com.google.common.collect.Range; +import java.io.Serializable; +import java.util.Comparator; +import javax.annotation.Nullable; + +@GwtCompatible(serializable=true) +final class GeneralRange +implements Serializable { + private final Comparator comparator; + private final boolean hasLowerBound; + @Nullable + private final T lowerEndpoint; + private final BoundType lowerBoundType; + private final boolean hasUpperBound; + @Nullable + private final T upperEndpoint; + private final BoundType upperBoundType; + private transient GeneralRange reverse; + + static GeneralRange from(Range range) { + T lowerEndpoint = range.hasLowerBound() ? (T)range.lowerEndpoint() : null; + BoundType lowerBoundType = range.hasLowerBound() ? range.lowerBoundType() : BoundType.OPEN; + T upperEndpoint = range.hasUpperBound() ? (T)range.upperEndpoint() : null; + BoundType upperBoundType = range.hasUpperBound() ? range.upperBoundType() : BoundType.OPEN; + return new GeneralRange(Ordering.natural(), range.hasLowerBound(), lowerEndpoint, lowerBoundType, range.hasUpperBound(), upperEndpoint, upperBoundType); + } + + static GeneralRange all(Comparator comparator) { + return new GeneralRange(comparator, false, null, BoundType.OPEN, false, null, BoundType.OPEN); + } + + static GeneralRange downTo(Comparator comparator, @Nullable T endpoint, BoundType boundType) { + return new GeneralRange((Comparator)comparator, true, endpoint, boundType, false, null, BoundType.OPEN); + } + + static GeneralRange upTo(Comparator comparator, @Nullable T endpoint, BoundType boundType) { + return new GeneralRange((Comparator)comparator, false, null, BoundType.OPEN, true, endpoint, boundType); + } + + static GeneralRange range(Comparator comparator, @Nullable T lower, BoundType lowerType, @Nullable T upper, BoundType upperType) { + return new GeneralRange(comparator, true, lower, lowerType, true, upper, upperType); + } + + private GeneralRange(Comparator comparator, boolean hasLowerBound, @Nullable T lowerEndpoint, BoundType lowerBoundType, boolean hasUpperBound, @Nullable T upperEndpoint, BoundType upperBoundType) { + this.comparator = Preconditions.checkNotNull(comparator); + this.hasLowerBound = hasLowerBound; + this.hasUpperBound = hasUpperBound; + this.lowerEndpoint = lowerEndpoint; + this.lowerBoundType = Preconditions.checkNotNull(lowerBoundType); + this.upperEndpoint = upperEndpoint; + this.upperBoundType = Preconditions.checkNotNull(upperBoundType); + if (hasLowerBound) { + comparator.compare(lowerEndpoint, lowerEndpoint); + } + if (hasUpperBound) { + comparator.compare(upperEndpoint, upperEndpoint); + } + if (hasLowerBound && hasUpperBound) { + int cmp = comparator.compare(lowerEndpoint, upperEndpoint); + Preconditions.checkArgument(cmp <= 0, "lowerEndpoint (%s) > upperEndpoint (%s)", lowerEndpoint, upperEndpoint); + if (cmp == 0) { + Preconditions.checkArgument(lowerBoundType != BoundType.OPEN | upperBoundType != BoundType.OPEN); + } + } + } + + Comparator comparator() { + return this.comparator; + } + + boolean hasLowerBound() { + return this.hasLowerBound; + } + + boolean hasUpperBound() { + return this.hasUpperBound; + } + + boolean isEmpty() { + return this.hasUpperBound() && this.tooLow(this.getUpperEndpoint()) || this.hasLowerBound() && this.tooHigh(this.getLowerEndpoint()); + } + + boolean tooLow(@Nullable T t) { + if (!this.hasLowerBound()) { + return false; + } + T lbound = this.getLowerEndpoint(); + int cmp = this.comparator.compare(t, lbound); + return cmp < 0 | cmp == 0 & this.getLowerBoundType() == BoundType.OPEN; + } + + boolean tooHigh(@Nullable T t) { + if (!this.hasUpperBound()) { + return false; + } + T ubound = this.getUpperEndpoint(); + int cmp = this.comparator.compare(t, ubound); + return cmp > 0 | cmp == 0 & this.getUpperBoundType() == BoundType.OPEN; + } + + boolean contains(@Nullable T t) { + return !this.tooLow(t) && !this.tooHigh(t); + } + + GeneralRange intersect(GeneralRange other) { + int cmp; + int cmp2; + Preconditions.checkNotNull(other); + Preconditions.checkArgument(this.comparator.equals(other.comparator)); + boolean hasLowBound = this.hasLowerBound; + T lowEnd = this.getLowerEndpoint(); + BoundType lowType = this.getLowerBoundType(); + if (!this.hasLowerBound()) { + hasLowBound = other.hasLowerBound; + lowEnd = other.getLowerEndpoint(); + lowType = other.getLowerBoundType(); + } else if (other.hasLowerBound() && ((cmp2 = this.comparator.compare(this.getLowerEndpoint(), other.getLowerEndpoint())) < 0 || cmp2 == 0 && other.getLowerBoundType() == BoundType.OPEN)) { + lowEnd = other.getLowerEndpoint(); + lowType = other.getLowerBoundType(); + } + boolean hasUpBound = this.hasUpperBound; + T upEnd = this.getUpperEndpoint(); + BoundType upType = this.getUpperBoundType(); + if (!this.hasUpperBound()) { + hasUpBound = other.hasUpperBound; + upEnd = other.getUpperEndpoint(); + upType = other.getUpperBoundType(); + } else if (other.hasUpperBound() && ((cmp = this.comparator.compare(this.getUpperEndpoint(), other.getUpperEndpoint())) > 0 || cmp == 0 && other.getUpperBoundType() == BoundType.OPEN)) { + upEnd = other.getUpperEndpoint(); + upType = other.getUpperBoundType(); + } + if (hasLowBound && hasUpBound && ((cmp = this.comparator.compare(lowEnd, upEnd)) > 0 || cmp == 0 && lowType == BoundType.OPEN && upType == BoundType.OPEN)) { + lowEnd = upEnd; + lowType = BoundType.OPEN; + upType = BoundType.CLOSED; + } + return new GeneralRange(this.comparator, hasLowBound, lowEnd, lowType, hasUpBound, upEnd, upType); + } + + public boolean equals(@Nullable Object obj) { + if (obj instanceof GeneralRange) { + GeneralRange r = (GeneralRange)obj; + return this.comparator.equals(r.comparator) && this.hasLowerBound == r.hasLowerBound && this.hasUpperBound == r.hasUpperBound && this.getLowerBoundType().equals((Object)r.getLowerBoundType()) && this.getUpperBoundType().equals((Object)r.getUpperBoundType()) && Objects.equal(this.getLowerEndpoint(), r.getLowerEndpoint()) && Objects.equal(this.getUpperEndpoint(), r.getUpperEndpoint()); + } + return false; + } + + public int hashCode() { + return Objects.hashCode(new Object[]{this.comparator, this.getLowerEndpoint(), this.getLowerBoundType(), this.getUpperEndpoint(), this.getUpperBoundType()}); + } + + GeneralRange reverse() { + GeneralRange result = this.reverse; + if (result == null) { + result = new GeneralRange(Ordering.from(this.comparator).reverse(), this.hasUpperBound, this.getUpperEndpoint(), this.getUpperBoundType(), this.hasLowerBound, this.getLowerEndpoint(), this.getLowerBoundType()); + result.reverse = this; + this.reverse = result; + return this.reverse; + } + return result; + } + + public String toString() { + return this.comparator + ":" + (this.lowerBoundType == BoundType.CLOSED ? (char)'[' : '(') + (this.hasLowerBound ? this.lowerEndpoint : "-\u221e") + ',' + (this.hasUpperBound ? this.upperEndpoint : "\u221e") + (this.upperBoundType == BoundType.CLOSED ? (char)']' : ')'); + } + + T getLowerEndpoint() { + return this.lowerEndpoint; + } + + BoundType getLowerBoundType() { + return this.lowerBoundType; + } + + T getUpperEndpoint() { + return this.upperEndpoint; + } + + BoundType getUpperBoundType() { + return this.upperBoundType; + } +} diff --git a/src/com/google/common/collect/GenericMapMaker.java b/src/com/google/common/collect/GenericMapMaker.java new file mode 100644 index 0000000..7c851bc --- /dev/null +++ b/src/com/google/common/collect/GenericMapMaker.java @@ -0,0 +1,74 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.base.Equivalence; +import com.google.common.base.Function; +import com.google.common.base.MoreObjects; +import com.google.common.collect.MapMaker; +import com.google.common.collect.MapMakerInternalMap; +import java.util.concurrent.ConcurrentMap; +import java.util.concurrent.TimeUnit; + +@Deprecated +@Beta +@GwtCompatible(emulated=true) +abstract class GenericMapMaker { + @GwtIncompatible(value="To be supported") + MapMaker.RemovalListener removalListener; + + GenericMapMaker() { + } + + @GwtIncompatible(value="To be supported") + abstract GenericMapMaker keyEquivalence(Equivalence var1); + + public abstract GenericMapMaker initialCapacity(int var1); + + abstract GenericMapMaker maximumSize(int var1); + + public abstract GenericMapMaker concurrencyLevel(int var1); + + @GwtIncompatible(value="java.lang.ref.WeakReference") + public abstract GenericMapMaker weakKeys(); + + @GwtIncompatible(value="java.lang.ref.WeakReference") + public abstract GenericMapMaker weakValues(); + + @Deprecated + @GwtIncompatible(value="java.lang.ref.SoftReference") + public abstract GenericMapMaker softValues(); + + abstract GenericMapMaker expireAfterWrite(long var1, TimeUnit var3); + + @GwtIncompatible(value="To be supported") + abstract GenericMapMaker expireAfterAccess(long var1, TimeUnit var3); + + @GwtIncompatible(value="To be supported") + MapMaker.RemovalListener getRemovalListener() { + return MoreObjects.firstNonNull(this.removalListener, NullListener.INSTANCE); + } + + public abstract ConcurrentMap makeMap(); + + @GwtIncompatible(value="MapMakerInternalMap") + abstract MapMakerInternalMap makeCustomMap(); + + @Deprecated + abstract ConcurrentMap makeComputingMap(Function var1); + + @GwtIncompatible(value="To be supported") + static enum NullListener implements MapMaker.RemovalListener + { + INSTANCE; + + + @Override + public void onRemoval(MapMaker.RemovalNotification notification) { + } + } +} diff --git a/src/com/google/common/collect/GwtTransient.java b/src/com/google/common/collect/GwtTransient.java new file mode 100644 index 0000000..74690d4 --- /dev/null +++ b/src/com/google/common/collect/GwtTransient.java @@ -0,0 +1,18 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Documented +@Retention(value=RetentionPolicy.RUNTIME) +@Target(value={ElementType.FIELD}) +@GwtCompatible +@interface GwtTransient { +} diff --git a/src/com/google/common/collect/HashBasedTable.java b/src/com/google/common/collect/HashBasedTable.java new file mode 100644 index 0000000..bf0f85d --- /dev/null +++ b/src/com/google/common/collect/HashBasedTable.java @@ -0,0 +1,92 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Supplier; +import com.google.common.collect.CollectPreconditions; +import com.google.common.collect.Maps; +import com.google.common.collect.StandardTable; +import com.google.common.collect.Table; +import java.io.Serializable; +import java.util.HashMap; +import java.util.Map; +import javax.annotation.Nullable; + +@GwtCompatible(serializable=true) +public class HashBasedTable +extends StandardTable { + private static final long serialVersionUID = 0L; + + public static HashBasedTable create() { + return new HashBasedTable(new HashMap(), new Factory(0)); + } + + public static HashBasedTable create(int expectedRows, int expectedCellsPerRow) { + CollectPreconditions.checkNonnegative(expectedCellsPerRow, "expectedCellsPerRow"); + HashMap backingMap = Maps.newHashMapWithExpectedSize(expectedRows); + return new HashBasedTable(backingMap, new Factory(expectedCellsPerRow)); + } + + public static HashBasedTable create(Table table) { + HashBasedTable result = HashBasedTable.create(); + result.putAll((Table)table); + return result; + } + + HashBasedTable(Map> backingMap, Factory factory) { + super(backingMap, factory); + } + + @Override + public boolean contains(@Nullable Object rowKey, @Nullable Object columnKey) { + return super.contains(rowKey, columnKey); + } + + @Override + public boolean containsColumn(@Nullable Object columnKey) { + return super.containsColumn(columnKey); + } + + @Override + public boolean containsRow(@Nullable Object rowKey) { + return super.containsRow(rowKey); + } + + @Override + public boolean containsValue(@Nullable Object value) { + return super.containsValue(value); + } + + @Override + public V get(@Nullable Object rowKey, @Nullable Object columnKey) { + return super.get(rowKey, columnKey); + } + + @Override + public boolean equals(@Nullable Object obj) { + return super.equals(obj); + } + + @Override + public V remove(@Nullable Object rowKey, @Nullable Object columnKey) { + return super.remove(rowKey, columnKey); + } + + private static class Factory + implements Supplier>, + Serializable { + final int expectedSize; + private static final long serialVersionUID = 0L; + + Factory(int expectedSize) { + this.expectedSize = expectedSize; + } + + @Override + public Map get() { + return Maps.newHashMapWithExpectedSize(this.expectedSize); + } + } +} diff --git a/src/com/google/common/collect/HashBiMap.java b/src/com/google/common/collect/HashBiMap.java new file mode 100644 index 0000000..dca43c2 --- /dev/null +++ b/src/com/google/common/collect/HashBiMap.java @@ -0,0 +1,632 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.base.Objects; +import com.google.common.base.Preconditions; +import com.google.common.collect.AbstractMapEntry; +import com.google.common.collect.BiMap; +import com.google.common.collect.CollectPreconditions; +import com.google.common.collect.Hashing; +import com.google.common.collect.ImmutableEntry; +import com.google.common.collect.Maps; +import com.google.common.collect.Serialization; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.io.Serializable; +import java.util.AbstractMap; +import java.util.Arrays; +import java.util.ConcurrentModificationException; +import java.util.Iterator; +import java.util.Map; +import java.util.NoSuchElementException; +import java.util.Set; +import javax.annotation.Nullable; + +@GwtCompatible(emulated=true) +public final class HashBiMap +extends AbstractMap +implements BiMap, +Serializable { + private static final double LOAD_FACTOR = 1.0; + private transient BiEntry[] hashTableKToV; + private transient BiEntry[] hashTableVToK; + private transient int size; + private transient int mask; + private transient int modCount; + private transient BiMap inverse; + @GwtIncompatible(value="Not needed in emulated source") + private static final long serialVersionUID = 0L; + + public static HashBiMap create() { + return HashBiMap.create(16); + } + + public static HashBiMap create(int expectedSize) { + return new HashBiMap(expectedSize); + } + + public static HashBiMap create(Map map) { + HashBiMap bimap = HashBiMap.create(map.size()); + bimap.putAll(map); + return bimap; + } + + private HashBiMap(int expectedSize) { + this.init(expectedSize); + } + + private void init(int expectedSize) { + CollectPreconditions.checkNonnegative(expectedSize, "expectedSize"); + int tableSize = Hashing.closedTableSize(expectedSize, 1.0); + this.hashTableKToV = this.createTable(tableSize); + this.hashTableVToK = this.createTable(tableSize); + this.mask = tableSize - 1; + this.modCount = 0; + this.size = 0; + } + + private void delete(BiEntry entry) { + int keyBucket = entry.keyHash & this.mask; + BiEntry prevBucketEntry = null; + BiEntry bucketEntry = this.hashTableKToV[keyBucket]; + while (true) { + if (bucketEntry == entry) { + if (prevBucketEntry == null) { + this.hashTableKToV[keyBucket] = entry.nextInKToVBucket; + break; + } + prevBucketEntry.nextInKToVBucket = entry.nextInKToVBucket; + break; + } + prevBucketEntry = bucketEntry; + bucketEntry = bucketEntry.nextInKToVBucket; + } + int valueBucket = entry.valueHash & this.mask; + prevBucketEntry = null; + BiEntry bucketEntry2 = this.hashTableVToK[valueBucket]; + while (true) { + if (bucketEntry2 == entry) { + if (prevBucketEntry == null) { + this.hashTableVToK[valueBucket] = entry.nextInVToKBucket; + break; + } + prevBucketEntry.nextInVToKBucket = entry.nextInVToKBucket; + break; + } + prevBucketEntry = bucketEntry2; + bucketEntry2 = bucketEntry2.nextInVToKBucket; + } + --this.size; + ++this.modCount; + } + + private void insert(BiEntry entry) { + int keyBucket = entry.keyHash & this.mask; + entry.nextInKToVBucket = this.hashTableKToV[keyBucket]; + this.hashTableKToV[keyBucket] = entry; + int valueBucket = entry.valueHash & this.mask; + entry.nextInVToKBucket = this.hashTableVToK[valueBucket]; + this.hashTableVToK[valueBucket] = entry; + ++this.size; + ++this.modCount; + } + + private static int hash(@Nullable Object o) { + return Hashing.smear(o == null ? 0 : o.hashCode()); + } + + private BiEntry seekByKey(@Nullable Object key, int keyHash) { + BiEntry entry = this.hashTableKToV[keyHash & this.mask]; + while (entry != null) { + if (keyHash == entry.keyHash && Objects.equal(key, entry.key)) { + return entry; + } + entry = entry.nextInKToVBucket; + } + return null; + } + + private BiEntry seekByValue(@Nullable Object value, int valueHash) { + BiEntry entry = this.hashTableVToK[valueHash & this.mask]; + while (entry != null) { + if (valueHash == entry.valueHash && Objects.equal(value, entry.value)) { + return entry; + } + entry = entry.nextInVToKBucket; + } + return null; + } + + @Override + public boolean containsKey(@Nullable Object key) { + return this.seekByKey(key, HashBiMap.hash(key)) != null; + } + + @Override + public boolean containsValue(@Nullable Object value) { + return this.seekByValue(value, HashBiMap.hash(value)) != null; + } + + @Override + @Nullable + public V get(@Nullable Object key) { + BiEntry entry = this.seekByKey(key, HashBiMap.hash(key)); + return (V)(entry == null ? null : entry.value); + } + + @Override + public V put(@Nullable K key, @Nullable V value) { + return this.put(key, value, false); + } + + @Override + public V forcePut(@Nullable K key, @Nullable V value) { + return this.put(key, value, true); + } + + private V put(@Nullable K key, @Nullable V value, boolean force) { + int keyHash = HashBiMap.hash(key); + int valueHash = HashBiMap.hash(value); + BiEntry oldEntryForKey = this.seekByKey(key, keyHash); + if (oldEntryForKey != null && valueHash == oldEntryForKey.valueHash && Objects.equal(value, oldEntryForKey.value)) { + return value; + } + BiEntry oldEntryForValue = this.seekByValue(value, valueHash); + if (oldEntryForValue != null) { + if (force) { + this.delete(oldEntryForValue); + } else { + String string = String.valueOf(String.valueOf(value)); + throw new IllegalArgumentException(new StringBuilder(23 + string.length()).append("value already present: ").append(string).toString()); + } + } + if (oldEntryForKey != null) { + this.delete(oldEntryForKey); + } + BiEntry newEntry = new BiEntry(key, keyHash, value, valueHash); + this.insert(newEntry); + this.rehashIfNecessary(); + return (V)(oldEntryForKey == null ? null : oldEntryForKey.value); + } + + @Nullable + private K putInverse(@Nullable V value, @Nullable K key, boolean force) { + int valueHash = HashBiMap.hash(value); + int keyHash = HashBiMap.hash(key); + BiEntry oldEntryForValue = this.seekByValue(value, valueHash); + if (oldEntryForValue != null && keyHash == oldEntryForValue.keyHash && Objects.equal(key, oldEntryForValue.key)) { + return key; + } + BiEntry oldEntryForKey = this.seekByKey(key, keyHash); + if (oldEntryForKey != null) { + if (force) { + this.delete(oldEntryForKey); + } else { + String string = String.valueOf(String.valueOf(key)); + throw new IllegalArgumentException(new StringBuilder(23 + string.length()).append("value already present: ").append(string).toString()); + } + } + if (oldEntryForValue != null) { + this.delete(oldEntryForValue); + } + BiEntry newEntry = new BiEntry(key, keyHash, value, valueHash); + this.insert(newEntry); + this.rehashIfNecessary(); + return (K)(oldEntryForValue == null ? null : oldEntryForValue.key); + } + + private void rehashIfNecessary() { + BiEntry[] oldKToV = this.hashTableKToV; + if (Hashing.needsResizing(this.size, oldKToV.length, 1.0)) { + int newTableSize = oldKToV.length * 2; + this.hashTableKToV = this.createTable(newTableSize); + this.hashTableVToK = this.createTable(newTableSize); + this.mask = newTableSize - 1; + this.size = 0; + for (int bucket = 0; bucket < oldKToV.length; ++bucket) { + BiEntry entry = oldKToV[bucket]; + while (entry != null) { + BiEntry nextEntry = entry.nextInKToVBucket; + this.insert(entry); + entry = nextEntry; + } + } + ++this.modCount; + } + } + + private BiEntry[] createTable(int length) { + return new BiEntry[length]; + } + + @Override + public V remove(@Nullable Object key) { + BiEntry entry = this.seekByKey(key, HashBiMap.hash(key)); + if (entry == null) { + return null; + } + this.delete(entry); + return (V)entry.value; + } + + @Override + public void clear() { + this.size = 0; + Arrays.fill(this.hashTableKToV, null); + Arrays.fill(this.hashTableVToK, null); + ++this.modCount; + } + + @Override + public int size() { + return this.size; + } + + @Override + public Set keySet() { + return new KeySet(); + } + + @Override + public Set values() { + return this.inverse().keySet(); + } + + @Override + public Set> entrySet() { + return new EntrySet(); + } + + @Override + public BiMap inverse() { + return this.inverse == null ? (this.inverse = new Inverse()) : this.inverse; + } + + @GwtIncompatible(value="java.io.ObjectOutputStream") + private void writeObject(ObjectOutputStream stream) throws IOException { + stream.defaultWriteObject(); + Serialization.writeMap(this, stream); + } + + @GwtIncompatible(value="java.io.ObjectInputStream") + private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException { + stream.defaultReadObject(); + int size = Serialization.readCount(stream); + this.init(size); + Serialization.populateMap(this, stream, size); + } + + private static final class InverseSerializedForm + implements Serializable { + private final HashBiMap bimap; + + InverseSerializedForm(HashBiMap bimap) { + this.bimap = bimap; + } + + Object readResolve() { + return this.bimap.inverse(); + } + } + + private final class Inverse + extends AbstractMap + implements BiMap, + Serializable { + private Inverse() { + } + + BiMap forward() { + return HashBiMap.this; + } + + @Override + public int size() { + return HashBiMap.this.size; + } + + @Override + public void clear() { + this.forward().clear(); + } + + @Override + public boolean containsKey(@Nullable Object value) { + return this.forward().containsValue(value); + } + + @Override + public K get(@Nullable Object value) { + BiEntry entry = HashBiMap.this.seekByValue(value, HashBiMap.hash(value)); + return entry == null ? null : entry.key; + } + + @Override + public K put(@Nullable V value, @Nullable K key) { + return HashBiMap.this.putInverse(value, key, false); + } + + @Override + public K forcePut(@Nullable V value, @Nullable K key) { + return HashBiMap.this.putInverse(value, key, true); + } + + @Override + public K remove(@Nullable Object value) { + BiEntry entry = HashBiMap.this.seekByValue(value, HashBiMap.hash(value)); + if (entry == null) { + return null; + } + HashBiMap.this.delete(entry); + return entry.key; + } + + @Override + public BiMap inverse() { + return this.forward(); + } + + @Override + public Set keySet() { + return new InverseKeySet(); + } + + @Override + public Set values() { + return this.forward().keySet(); + } + + @Override + public Set> entrySet() { + return new Maps.EntrySet(){ + + @Override + Map map() { + return Inverse.this; + } + + @Override + public Iterator> iterator() { + return new Itr>(){ + + @Override + Map.Entry output(BiEntry entry) { + return new InverseEntry(entry); + } + + class InverseEntry + extends AbstractMapEntry { + BiEntry delegate; + + InverseEntry(BiEntry entry) { + this.delegate = entry; + } + + @Override + public V getKey() { + return this.delegate.value; + } + + @Override + public K getValue() { + return this.delegate.key; + } + + @Override + public K setValue(K key) { + Object oldKey = this.delegate.key; + int keyHash = HashBiMap.hash(key); + if (keyHash == this.delegate.keyHash && Objects.equal(key, oldKey)) { + return key; + } + Preconditions.checkArgument(HashBiMap.this.seekByKey(key, keyHash) == null, "value already present: %s", key); + HashBiMap.this.delete(this.delegate); + BiEntry newEntry = new BiEntry(key, keyHash, this.delegate.value, this.delegate.valueHash); + HashBiMap.this.insert(newEntry); + expectedModCount = HashBiMap.this.modCount; + return oldKey; + } + } + }; + } + }; + } + + Object writeReplace() { + return new InverseSerializedForm(HashBiMap.this); + } + + private final class InverseKeySet + extends Maps.KeySet { + InverseKeySet() { + super(Inverse.this); + } + + @Override + public boolean remove(@Nullable Object o) { + BiEntry entry = HashBiMap.this.seekByValue(o, HashBiMap.hash(o)); + if (entry == null) { + return false; + } + HashBiMap.this.delete(entry); + return true; + } + + @Override + public Iterator iterator() { + return new Itr(){ + + @Override + V output(BiEntry entry) { + return entry.value; + } + }; + } + } + } + + private final class EntrySet + extends Maps.EntrySet { + private EntrySet() { + } + + @Override + Map map() { + return HashBiMap.this; + } + + @Override + public Iterator> iterator() { + return new Itr>(){ + + @Override + Map.Entry output(BiEntry entry) { + return new MapEntry(entry); + } + + class MapEntry + extends AbstractMapEntry { + BiEntry delegate; + + MapEntry(BiEntry entry) { + this.delegate = entry; + } + + @Override + public K getKey() { + return this.delegate.key; + } + + @Override + public V getValue() { + return this.delegate.value; + } + + @Override + public V setValue(V value) { + Object oldValue = this.delegate.value; + int valueHash = HashBiMap.hash(value); + if (valueHash == this.delegate.valueHash && Objects.equal(value, oldValue)) { + return value; + } + Preconditions.checkArgument(HashBiMap.this.seekByValue(value, valueHash) == null, "value already present: %s", value); + HashBiMap.this.delete(this.delegate); + BiEntry newEntry = new BiEntry(this.delegate.key, this.delegate.keyHash, value, valueHash); + HashBiMap.this.insert(newEntry); + expectedModCount = HashBiMap.this.modCount; + if (toRemove == this.delegate) { + toRemove = newEntry; + } + this.delegate = newEntry; + return oldValue; + } + } + }; + } + } + + private final class KeySet + extends Maps.KeySet { + KeySet() { + super(HashBiMap.this); + } + + @Override + public Iterator iterator() { + return new Itr(){ + + @Override + K output(BiEntry entry) { + return entry.key; + } + }; + } + + @Override + public boolean remove(@Nullable Object o) { + BiEntry entry = HashBiMap.this.seekByKey(o, HashBiMap.hash(o)); + if (entry == null) { + return false; + } + HashBiMap.this.delete(entry); + return true; + } + } + + abstract class Itr + implements Iterator { + int nextBucket = 0; + BiEntry next = null; + BiEntry toRemove = null; + int expectedModCount = HashBiMap.access$000(HashBiMap.this); + + Itr() { + } + + private void checkForConcurrentModification() { + if (HashBiMap.this.modCount != this.expectedModCount) { + throw new ConcurrentModificationException(); + } + } + + @Override + public boolean hasNext() { + this.checkForConcurrentModification(); + if (this.next != null) { + return true; + } + while (this.nextBucket < HashBiMap.this.hashTableKToV.length) { + if (HashBiMap.this.hashTableKToV[this.nextBucket] != null) { + this.next = HashBiMap.this.hashTableKToV[this.nextBucket++]; + return true; + } + ++this.nextBucket; + } + return false; + } + + @Override + public T next() { + this.checkForConcurrentModification(); + if (!this.hasNext()) { + throw new NoSuchElementException(); + } + BiEntry entry = this.next; + this.next = entry.nextInKToVBucket; + this.toRemove = entry; + return this.output(entry); + } + + @Override + public void remove() { + this.checkForConcurrentModification(); + CollectPreconditions.checkRemove(this.toRemove != null); + HashBiMap.this.delete(this.toRemove); + this.expectedModCount = HashBiMap.this.modCount; + this.toRemove = null; + } + + abstract T output(BiEntry var1); + } + + private static final class BiEntry + extends ImmutableEntry { + final int keyHash; + final int valueHash; + @Nullable + BiEntry nextInKToVBucket; + @Nullable + BiEntry nextInVToKBucket; + + BiEntry(K key, int keyHash, V value, int valueHash) { + super(key, value); + this.keyHash = keyHash; + this.valueHash = valueHash; + } + } +} diff --git a/src/com/google/common/collect/HashMultimap.java b/src/com/google/common/collect/HashMultimap.java new file mode 100644 index 0000000..fd8837c --- /dev/null +++ b/src/com/google/common/collect/HashMultimap.java @@ -0,0 +1,78 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.Preconditions; +import com.google.common.collect.AbstractSetMultimap; +import com.google.common.collect.Maps; +import com.google.common.collect.Multimap; +import com.google.common.collect.Serialization; +import com.google.common.collect.Sets; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.util.HashMap; +import java.util.Set; + +@GwtCompatible(serializable=true, emulated=true) +public final class HashMultimap +extends AbstractSetMultimap { + private static final int DEFAULT_VALUES_PER_KEY = 2; + @VisibleForTesting + transient int expectedValuesPerKey = 2; + @GwtIncompatible(value="Not needed in emulated source") + private static final long serialVersionUID = 0L; + + public static HashMultimap create() { + return new HashMultimap(); + } + + public static HashMultimap create(int expectedKeys, int expectedValuesPerKey) { + return new HashMultimap(expectedKeys, expectedValuesPerKey); + } + + public static HashMultimap create(Multimap multimap) { + return new HashMultimap(multimap); + } + + private HashMultimap() { + super(new HashMap()); + } + + private HashMultimap(int expectedKeys, int expectedValuesPerKey) { + super(Maps.newHashMapWithExpectedSize(expectedKeys)); + Preconditions.checkArgument(expectedValuesPerKey >= 0); + this.expectedValuesPerKey = expectedValuesPerKey; + } + + private HashMultimap(Multimap multimap) { + super(Maps.newHashMapWithExpectedSize(multimap.keySet().size())); + this.putAll(multimap); + } + + @Override + Set createCollection() { + return Sets.newHashSetWithExpectedSize(this.expectedValuesPerKey); + } + + @GwtIncompatible(value="java.io.ObjectOutputStream") + private void writeObject(ObjectOutputStream stream) throws IOException { + stream.defaultWriteObject(); + stream.writeInt(this.expectedValuesPerKey); + Serialization.writeMultimap(this, stream); + } + + @GwtIncompatible(value="java.io.ObjectInputStream") + private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException { + stream.defaultReadObject(); + this.expectedValuesPerKey = stream.readInt(); + int distinctKeys = Serialization.readCount(stream); + HashMap map = Maps.newHashMapWithExpectedSize(distinctKeys); + this.setMap(map); + Serialization.populateMultimap(this, stream, distinctKeys); + } +} diff --git a/src/com/google/common/collect/HashMultiset.java b/src/com/google/common/collect/HashMultiset.java new file mode 100644 index 0000000..cc2b172 --- /dev/null +++ b/src/com/google/common/collect/HashMultiset.java @@ -0,0 +1,59 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.collect.AbstractMapBasedMultiset; +import com.google.common.collect.Iterables; +import com.google.common.collect.Maps; +import com.google.common.collect.Multisets; +import com.google.common.collect.Serialization; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.util.HashMap; + +@GwtCompatible(serializable=true, emulated=true) +public final class HashMultiset +extends AbstractMapBasedMultiset { + @GwtIncompatible(value="Not needed in emulated source.") + private static final long serialVersionUID = 0L; + + public static HashMultiset create() { + return new HashMultiset(); + } + + public static HashMultiset create(int distinctElements) { + return new HashMultiset(distinctElements); + } + + public static HashMultiset create(Iterable elements) { + HashMultiset multiset = HashMultiset.create(Multisets.inferDistinctElements(elements)); + Iterables.addAll(multiset, elements); + return multiset; + } + + private HashMultiset() { + super(new HashMap()); + } + + private HashMultiset(int distinctElements) { + super(Maps.newHashMapWithExpectedSize(distinctElements)); + } + + @GwtIncompatible(value="java.io.ObjectOutputStream") + private void writeObject(ObjectOutputStream stream) throws IOException { + stream.defaultWriteObject(); + Serialization.writeMultiset(this, stream); + } + + @GwtIncompatible(value="java.io.ObjectInputStream") + private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException { + stream.defaultReadObject(); + int distinctElements = Serialization.readCount(stream); + this.setBackingMap(Maps.newHashMapWithExpectedSize(distinctElements)); + Serialization.populateMultiset(this, stream, distinctElements); + } +} diff --git a/src/com/google/common/collect/Hashing.java b/src/com/google/common/collect/Hashing.java new file mode 100644 index 0000000..295116c --- /dev/null +++ b/src/com/google/common/collect/Hashing.java @@ -0,0 +1,37 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import javax.annotation.Nullable; + +@GwtCompatible +final class Hashing { + private static final int C1 = -862048943; + private static final int C2 = 461845907; + private static int MAX_TABLE_SIZE = 0x40000000; + + private Hashing() { + } + + static int smear(int hashCode) { + return 461845907 * Integer.rotateLeft(hashCode * -862048943, 15); + } + + static int smearedHash(@Nullable Object o) { + return Hashing.smear(o == null ? 0 : o.hashCode()); + } + + static int closedTableSize(int expectedEntries, double loadFactor) { + int tableSize; + if ((expectedEntries = Math.max(expectedEntries, 2)) > (int)(loadFactor * (double)(tableSize = Integer.highestOneBit(expectedEntries)))) { + return (tableSize <<= 1) > 0 ? tableSize : MAX_TABLE_SIZE; + } + return tableSize; + } + + static boolean needsResizing(int size, int tableSize, double loadFactor) { + return (double)size > loadFactor * (double)tableSize && tableSize < MAX_TABLE_SIZE; + } +} diff --git a/src/com/google/common/collect/ImmutableAsList.java b/src/com/google/common/collect/ImmutableAsList.java new file mode 100644 index 0000000..0c56c45 --- /dev/null +++ b/src/com/google/common/collect/ImmutableAsList.java @@ -0,0 +1,67 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.collect.ImmutableCollection; +import com.google.common.collect.ImmutableList; +import java.io.InvalidObjectException; +import java.io.ObjectInputStream; +import java.io.Serializable; + +@GwtCompatible(serializable=true, emulated=true) +abstract class ImmutableAsList +extends ImmutableList { + ImmutableAsList() { + } + + abstract ImmutableCollection delegateCollection(); + + @Override + public boolean contains(Object target) { + return this.delegateCollection().contains(target); + } + + @Override + public int size() { + return this.delegateCollection().size(); + } + + @Override + public boolean isEmpty() { + return this.delegateCollection().isEmpty(); + } + + @Override + boolean isPartialView() { + return this.delegateCollection().isPartialView(); + } + + @GwtIncompatible(value="serialization") + private void readObject(ObjectInputStream stream) throws InvalidObjectException { + throw new InvalidObjectException("Use SerializedForm"); + } + + @Override + @GwtIncompatible(value="serialization") + Object writeReplace() { + return new SerializedForm(this.delegateCollection()); + } + + @GwtIncompatible(value="serialization") + static class SerializedForm + implements Serializable { + final ImmutableCollection collection; + private static final long serialVersionUID = 0L; + + SerializedForm(ImmutableCollection collection) { + this.collection = collection; + } + + Object readResolve() { + return this.collection.asList(); + } + } +} diff --git a/src/com/google/common/collect/ImmutableBiMap.java b/src/com/google/common/collect/ImmutableBiMap.java new file mode 100644 index 0000000..7be68a2 --- /dev/null +++ b/src/com/google/common/collect/ImmutableBiMap.java @@ -0,0 +1,131 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.collect.BiMap; +import com.google.common.collect.EmptyImmutableBiMap; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.RegularImmutableBiMap; +import com.google.common.collect.SingletonImmutableBiMap; +import java.util.Map; + +@GwtCompatible(serializable=true, emulated=true) +public abstract class ImmutableBiMap +extends ImmutableMap +implements BiMap { + private static final Map.Entry[] EMPTY_ENTRY_ARRAY = new Map.Entry[0]; + + public static ImmutableBiMap of() { + return EmptyImmutableBiMap.INSTANCE; + } + + public static ImmutableBiMap of(K k1, V v1) { + return new SingletonImmutableBiMap(k1, v1); + } + + public static ImmutableBiMap of(K k1, V v1, K k2, V v2) { + return new RegularImmutableBiMap(ImmutableBiMap.entryOf(k1, v1), ImmutableBiMap.entryOf(k2, v2)); + } + + public static ImmutableBiMap of(K k1, V v1, K k2, V v2, K k3, V v3) { + return new RegularImmutableBiMap(ImmutableBiMap.entryOf(k1, v1), ImmutableBiMap.entryOf(k2, v2), ImmutableBiMap.entryOf(k3, v3)); + } + + public static ImmutableBiMap of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4) { + return new RegularImmutableBiMap(ImmutableBiMap.entryOf(k1, v1), ImmutableBiMap.entryOf(k2, v2), ImmutableBiMap.entryOf(k3, v3), ImmutableBiMap.entryOf(k4, v4)); + } + + public static ImmutableBiMap of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5) { + return new RegularImmutableBiMap(ImmutableBiMap.entryOf(k1, v1), ImmutableBiMap.entryOf(k2, v2), ImmutableBiMap.entryOf(k3, v3), ImmutableBiMap.entryOf(k4, v4), ImmutableBiMap.entryOf(k5, v5)); + } + + public static Builder builder() { + return new Builder(); + } + + public static ImmutableBiMap copyOf(Map map) { + ImmutableBiMap bimap; + if (map instanceof ImmutableBiMap && !(bimap = (ImmutableBiMap)map).isPartialView()) { + return bimap; + } + Map.Entry[] entries = map.entrySet().toArray(EMPTY_ENTRY_ARRAY); + switch (entries.length) { + case 0: { + return ImmutableBiMap.of(); + } + case 1: { + Map.Entry entry = entries[0]; + return ImmutableBiMap.of(entry.getKey(), entry.getValue()); + } + } + return new RegularImmutableBiMap(entries); + } + + ImmutableBiMap() { + } + + @Override + public abstract ImmutableBiMap inverse(); + + @Override + public ImmutableSet values() { + return ((ImmutableMap)((Object)this.inverse())).keySet(); + } + + @Override + @Deprecated + public V forcePut(K key, V value) { + throw new UnsupportedOperationException(); + } + + @Override + Object writeReplace() { + return new SerializedForm(this); + } + + private static class SerializedForm + extends ImmutableMap.SerializedForm { + private static final long serialVersionUID = 0L; + + SerializedForm(ImmutableBiMap bimap) { + super(bimap); + } + + @Override + Object readResolve() { + Builder builder = new Builder(); + return this.createMap(builder); + } + } + + public static final class Builder + extends ImmutableMap.Builder { + @Override + public Builder put(K key, V value) { + super.put(key, value); + return this; + } + + @Override + public Builder putAll(Map map) { + super.putAll(map); + return this; + } + + @Override + public ImmutableBiMap build() { + switch (this.size) { + case 0: { + return ImmutableBiMap.of(); + } + case 1: { + return ImmutableBiMap.of(this.entries[0].getKey(), this.entries[0].getValue()); + } + } + return new RegularImmutableBiMap(this.size, this.entries); + } + } +} diff --git a/src/com/google/common/collect/ImmutableClassToInstanceMap.java b/src/com/google/common/collect/ImmutableClassToInstanceMap.java new file mode 100644 index 0000000..6470b01 --- /dev/null +++ b/src/com/google/common/collect/ImmutableClassToInstanceMap.java @@ -0,0 +1,79 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.base.Preconditions; +import com.google.common.collect.ClassToInstanceMap; +import com.google.common.collect.ForwardingMap; +import com.google.common.collect.ImmutableMap; +import com.google.common.primitives.Primitives; +import java.io.Serializable; +import java.util.Map; +import javax.annotation.Nullable; + +public final class ImmutableClassToInstanceMap +extends ForwardingMap, B> +implements ClassToInstanceMap, +Serializable { + private final ImmutableMap, B> delegate; + + public static Builder builder() { + return new Builder(); + } + + public static ImmutableClassToInstanceMap copyOf(Map, ? extends S> map) { + if (map instanceof ImmutableClassToInstanceMap) { + ImmutableClassToInstanceMap cast = (ImmutableClassToInstanceMap)map; + return cast; + } + return new Builder().putAll(map).build(); + } + + private ImmutableClassToInstanceMap(ImmutableMap, B> delegate) { + this.delegate = delegate; + } + + @Override + protected Map, B> delegate() { + return this.delegate; + } + + @Override + @Nullable + public T getInstance(Class type) { + return (T)this.delegate.get(Preconditions.checkNotNull(type)); + } + + @Override + @Deprecated + public T putInstance(Class type, T value) { + throw new UnsupportedOperationException(); + } + + public static final class Builder { + private final ImmutableMap.Builder, B> mapBuilder = ImmutableMap.builder(); + + public Builder put(Class key, T value) { + this.mapBuilder.put(key, value); + return this; + } + + public Builder putAll(Map, ? extends T> map) { + for (Map.Entry, T> entry : map.entrySet()) { + Class type = entry.getKey(); + T value = entry.getValue(); + this.mapBuilder.put(type, Builder.cast(type, value)); + } + return this; + } + + private static T cast(Class type, B value) { + return Primitives.wrap(type).cast(value); + } + + public ImmutableClassToInstanceMap build() { + return new ImmutableClassToInstanceMap(this.mapBuilder.build()); + } + } +} diff --git a/src/com/google/common/collect/ImmutableCollection.java b/src/com/google/common/collect/ImmutableCollection.java new file mode 100644 index 0000000..08fe9ab --- /dev/null +++ b/src/com/google/common/collect/ImmutableCollection.java @@ -0,0 +1,216 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Preconditions; +import com.google.common.collect.CollectPreconditions; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ObjectArrays; +import com.google.common.collect.RegularImmutableAsList; +import com.google.common.collect.UnmodifiableIterator; +import java.io.Serializable; +import java.util.AbstractCollection; +import java.util.Collection; +import java.util.Iterator; +import javax.annotation.Nullable; + +@GwtCompatible(emulated=true) +public abstract class ImmutableCollection +extends AbstractCollection +implements Serializable { + private transient ImmutableList asList; + + ImmutableCollection() { + } + + @Override + public abstract UnmodifiableIterator iterator(); + + @Override + public final Object[] toArray() { + int size = this.size(); + if (size == 0) { + return ObjectArrays.EMPTY_ARRAY; + } + Object[] result = new Object[size]; + this.copyIntoArray(result, 0); + return result; + } + + @Override + public final T[] toArray(T[] other) { + Preconditions.checkNotNull(other); + int size = this.size(); + if (other.length < size) { + other = ObjectArrays.newArray(other, size); + } else if (other.length > size) { + other[size] = null; + } + this.copyIntoArray(other, 0); + return other; + } + + @Override + public boolean contains(@Nullable Object object) { + return object != null && super.contains(object); + } + + @Override + @Deprecated + public final boolean add(E e) { + throw new UnsupportedOperationException(); + } + + @Override + @Deprecated + public final boolean remove(Object object) { + throw new UnsupportedOperationException(); + } + + @Override + @Deprecated + public final boolean addAll(Collection newElements) { + throw new UnsupportedOperationException(); + } + + @Override + @Deprecated + public final boolean removeAll(Collection oldElements) { + throw new UnsupportedOperationException(); + } + + @Override + @Deprecated + public final boolean retainAll(Collection elementsToKeep) { + throw new UnsupportedOperationException(); + } + + @Override + @Deprecated + public final void clear() { + throw new UnsupportedOperationException(); + } + + public ImmutableList asList() { + ImmutableList list = this.asList; + return list == null ? (this.asList = this.createAsList()) : list; + } + + ImmutableList createAsList() { + switch (this.size()) { + case 0: { + return ImmutableList.of(); + } + case 1: { + return ImmutableList.of(this.iterator().next()); + } + } + return new RegularImmutableAsList(this, this.toArray()); + } + + abstract boolean isPartialView(); + + int copyIntoArray(Object[] dst, int offset) { + for (Object e : this) { + dst[offset++] = e; + } + return offset; + } + + Object writeReplace() { + return new ImmutableList.SerializedForm(this.toArray()); + } + + static abstract class ArrayBasedBuilder + extends Builder { + Object[] contents; + int size; + + ArrayBasedBuilder(int initialCapacity) { + CollectPreconditions.checkNonnegative(initialCapacity, "initialCapacity"); + this.contents = new Object[initialCapacity]; + this.size = 0; + } + + private void ensureCapacity(int minCapacity) { + if (this.contents.length < minCapacity) { + this.contents = ObjectArrays.arraysCopyOf(this.contents, ArrayBasedBuilder.expandedCapacity(this.contents.length, minCapacity)); + } + } + + @Override + public ArrayBasedBuilder add(E element) { + Preconditions.checkNotNull(element); + this.ensureCapacity(this.size + 1); + this.contents[this.size++] = element; + return this; + } + + @Override + public Builder add(E ... elements) { + ObjectArrays.checkElementsNotNull((Object[])elements); + this.ensureCapacity(this.size + elements.length); + System.arraycopy(elements, 0, this.contents, this.size, elements.length); + this.size += elements.length; + return this; + } + + @Override + public Builder addAll(Iterable elements) { + if (elements instanceof Collection) { + Collection collection = (Collection)elements; + this.ensureCapacity(this.size + collection.size()); + } + super.addAll(elements); + return this; + } + } + + public static abstract class Builder { + static final int DEFAULT_INITIAL_CAPACITY = 4; + + static int expandedCapacity(int oldCapacity, int minCapacity) { + if (minCapacity < 0) { + throw new AssertionError((Object)"cannot store more than MAX_VALUE elements"); + } + int newCapacity = oldCapacity + (oldCapacity >> 1) + 1; + if (newCapacity < minCapacity) { + newCapacity = Integer.highestOneBit(minCapacity - 1) << 1; + } + if (newCapacity < 0) { + newCapacity = Integer.MAX_VALUE; + } + return newCapacity; + } + + Builder() { + } + + public abstract Builder add(E var1); + + public Builder add(E ... elements) { + for (E element : elements) { + this.add(element); + } + return this; + } + + public Builder addAll(Iterable elements) { + for (E element : elements) { + this.add(element); + } + return this; + } + + public Builder addAll(Iterator elements) { + while (elements.hasNext()) { + this.add(elements.next()); + } + return this; + } + + public abstract ImmutableCollection build(); + } +} diff --git a/src/com/google/common/collect/ImmutableEntry.java b/src/com/google/common/collect/ImmutableEntry.java new file mode 100644 index 0000000..6282bcf --- /dev/null +++ b/src/com/google/common/collect/ImmutableEntry.java @@ -0,0 +1,40 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.collect.AbstractMapEntry; +import java.io.Serializable; +import javax.annotation.Nullable; + +@GwtCompatible(serializable=true) +class ImmutableEntry +extends AbstractMapEntry +implements Serializable { + final K key; + final V value; + private static final long serialVersionUID = 0L; + + ImmutableEntry(@Nullable K key, @Nullable V value) { + this.key = key; + this.value = value; + } + + @Override + @Nullable + public final K getKey() { + return this.key; + } + + @Override + @Nullable + public final V getValue() { + return this.value; + } + + @Override + public final V setValue(V value) { + throw new UnsupportedOperationException(); + } +} diff --git a/src/com/google/common/collect/ImmutableEnumMap.java b/src/com/google/common/collect/ImmutableEnumMap.java new file mode 100644 index 0000000..438b262 --- /dev/null +++ b/src/com/google/common/collect/ImmutableEnumMap.java @@ -0,0 +1,140 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Preconditions; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableMapEntrySet; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Iterables; +import com.google.common.collect.Iterators; +import com.google.common.collect.Maps; +import com.google.common.collect.UnmodifiableIterator; +import java.io.Serializable; +import java.util.EnumMap; +import java.util.Iterator; +import java.util.Map; +import javax.annotation.Nullable; + +@GwtCompatible(serializable=true, emulated=true) +final class ImmutableEnumMap, V> +extends ImmutableMap { + private final transient EnumMap delegate; + + static , V> ImmutableMap asImmutable(EnumMap map) { + switch (map.size()) { + case 0: { + return ImmutableMap.of(); + } + case 1: { + Map.Entry entry = Iterables.getOnlyElement(map.entrySet()); + return ImmutableMap.of(entry.getKey(), entry.getValue()); + } + } + return new ImmutableEnumMap(map); + } + + private ImmutableEnumMap(EnumMap delegate) { + this.delegate = delegate; + Preconditions.checkArgument(!delegate.isEmpty()); + } + + @Override + ImmutableSet createKeySet() { + return new ImmutableSet(){ + + @Override + public boolean contains(Object object) { + return ImmutableEnumMap.this.delegate.containsKey(object); + } + + @Override + public int size() { + return ImmutableEnumMap.this.size(); + } + + @Override + public UnmodifiableIterator iterator() { + return Iterators.unmodifiableIterator(ImmutableEnumMap.this.delegate.keySet().iterator()); + } + + @Override + boolean isPartialView() { + return true; + } + }; + } + + @Override + public int size() { + return this.delegate.size(); + } + + @Override + public boolean containsKey(@Nullable Object key) { + return this.delegate.containsKey(key); + } + + @Override + public V get(Object key) { + return this.delegate.get(key); + } + + @Override + ImmutableSet> createEntrySet() { + return new ImmutableMapEntrySet(){ + + @Override + ImmutableMap map() { + return ImmutableEnumMap.this; + } + + @Override + public UnmodifiableIterator> iterator() { + return new UnmodifiableIterator>(){ + private final Iterator> backingIterator; + { + this.backingIterator = ImmutableEnumMap.this.delegate.entrySet().iterator(); + } + + @Override + public boolean hasNext() { + return this.backingIterator.hasNext(); + } + + @Override + public Map.Entry next() { + Map.Entry entry = this.backingIterator.next(); + return Maps.immutableEntry(entry.getKey(), entry.getValue()); + } + }; + } + }; + } + + @Override + boolean isPartialView() { + return false; + } + + @Override + Object writeReplace() { + return new EnumSerializedForm(this.delegate); + } + + private static class EnumSerializedForm, V> + implements Serializable { + final EnumMap delegate; + private static final long serialVersionUID = 0L; + + EnumSerializedForm(EnumMap delegate) { + this.delegate = delegate; + } + + Object readResolve() { + return new ImmutableEnumMap(this.delegate); + } + } +} diff --git a/src/com/google/common/collect/ImmutableEnumSet.java b/src/com/google/common/collect/ImmutableEnumSet.java new file mode 100644 index 0000000..953ac97 --- /dev/null +++ b/src/com/google/common/collect/ImmutableEnumSet.java @@ -0,0 +1,101 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Iterables; +import com.google.common.collect.Iterators; +import com.google.common.collect.UnmodifiableIterator; +import java.io.Serializable; +import java.util.Collection; +import java.util.EnumSet; + +@GwtCompatible(serializable=true, emulated=true) +final class ImmutableEnumSet> +extends ImmutableSet { + private final transient EnumSet delegate; + private transient int hashCode; + + static > ImmutableSet asImmutable(EnumSet set) { + switch (set.size()) { + case 0: { + return ImmutableSet.of(); + } + case 1: { + return ImmutableSet.of(Iterables.getOnlyElement(set)); + } + } + return new ImmutableEnumSet(set); + } + + private ImmutableEnumSet(EnumSet delegate) { + this.delegate = delegate; + } + + @Override + boolean isPartialView() { + return false; + } + + @Override + public UnmodifiableIterator iterator() { + return Iterators.unmodifiableIterator(this.delegate.iterator()); + } + + @Override + public int size() { + return this.delegate.size(); + } + + @Override + public boolean contains(Object object) { + return this.delegate.contains(object); + } + + @Override + public boolean containsAll(Collection collection) { + return this.delegate.containsAll(collection); + } + + @Override + public boolean isEmpty() { + return this.delegate.isEmpty(); + } + + @Override + public boolean equals(Object object) { + return object == this || this.delegate.equals(object); + } + + @Override + public int hashCode() { + int result = this.hashCode; + return result == 0 ? (this.hashCode = this.delegate.hashCode()) : result; + } + + @Override + public String toString() { + return this.delegate.toString(); + } + + @Override + Object writeReplace() { + return new EnumSerializedForm(this.delegate); + } + + private static class EnumSerializedForm> + implements Serializable { + final EnumSet delegate; + private static final long serialVersionUID = 0L; + + EnumSerializedForm(EnumSet delegate) { + this.delegate = delegate; + } + + Object readResolve() { + return new ImmutableEnumSet((EnumSet)this.delegate.clone()); + } + } +} diff --git a/src/com/google/common/collect/ImmutableList.java b/src/com/google/common/collect/ImmutableList.java new file mode 100644 index 0000000..147580b --- /dev/null +++ b/src/com/google/common/collect/ImmutableList.java @@ -0,0 +1,434 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Preconditions; +import com.google.common.collect.AbstractIndexedListIterator; +import com.google.common.collect.ImmutableCollection; +import com.google.common.collect.Lists; +import com.google.common.collect.ObjectArrays; +import com.google.common.collect.RegularImmutableList; +import com.google.common.collect.SingletonImmutableList; +import com.google.common.collect.UnmodifiableIterator; +import com.google.common.collect.UnmodifiableListIterator; +import java.io.InvalidObjectException; +import java.io.ObjectInputStream; +import java.io.Serializable; +import java.util.Collection; +import java.util.Iterator; +import java.util.List; +import java.util.RandomAccess; +import javax.annotation.Nullable; + +@GwtCompatible(serializable=true, emulated=true) +public abstract class ImmutableList +extends ImmutableCollection +implements List, +RandomAccess { + private static final ImmutableList EMPTY = new RegularImmutableList(ObjectArrays.EMPTY_ARRAY); + + public static ImmutableList of() { + return EMPTY; + } + + public static ImmutableList of(E element) { + return new SingletonImmutableList(element); + } + + public static ImmutableList of(E e1, E e2) { + return ImmutableList.construct(e1, e2); + } + + public static ImmutableList of(E e1, E e2, E e3) { + return ImmutableList.construct(e1, e2, e3); + } + + public static ImmutableList of(E e1, E e2, E e3, E e4) { + return ImmutableList.construct(e1, e2, e3, e4); + } + + public static ImmutableList of(E e1, E e2, E e3, E e4, E e5) { + return ImmutableList.construct(e1, e2, e3, e4, e5); + } + + public static ImmutableList of(E e1, E e2, E e3, E e4, E e5, E e6) { + return ImmutableList.construct(e1, e2, e3, e4, e5, e6); + } + + public static ImmutableList of(E e1, E e2, E e3, E e4, E e5, E e6, E e7) { + return ImmutableList.construct(e1, e2, e3, e4, e5, e6, e7); + } + + public static ImmutableList of(E e1, E e2, E e3, E e4, E e5, E e6, E e7, E e8) { + return ImmutableList.construct(e1, e2, e3, e4, e5, e6, e7, e8); + } + + public static ImmutableList of(E e1, E e2, E e3, E e4, E e5, E e6, E e7, E e8, E e9) { + return ImmutableList.construct(e1, e2, e3, e4, e5, e6, e7, e8, e9); + } + + public static ImmutableList of(E e1, E e2, E e3, E e4, E e5, E e6, E e7, E e8, E e9, E e10) { + return ImmutableList.construct(e1, e2, e3, e4, e5, e6, e7, e8, e9, e10); + } + + public static ImmutableList of(E e1, E e2, E e3, E e4, E e5, E e6, E e7, E e8, E e9, E e10, E e11) { + return ImmutableList.construct(e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11); + } + + public static ImmutableList of(E e1, E e2, E e3, E e4, E e5, E e6, E e7, E e8, E e9, E e10, E e11, E e12, E ... others) { + Object[] array = new Object[12 + others.length]; + array[0] = e1; + array[1] = e2; + array[2] = e3; + array[3] = e4; + array[4] = e5; + array[5] = e6; + array[6] = e7; + array[7] = e8; + array[8] = e9; + array[9] = e10; + array[10] = e11; + array[11] = e12; + System.arraycopy(others, 0, array, 12, others.length); + return ImmutableList.construct(array); + } + + public static ImmutableList copyOf(Iterable elements) { + Preconditions.checkNotNull(elements); + return elements instanceof Collection ? ImmutableList.copyOf((Collection)elements) : ImmutableList.copyOf(elements.iterator()); + } + + public static ImmutableList copyOf(Collection elements) { + if (elements instanceof ImmutableCollection) { + ImmutableList list = ((ImmutableCollection)elements).asList(); + return list.isPartialView() ? ImmutableList.asImmutableList(list.toArray()) : list; + } + return ImmutableList.construct(elements.toArray()); + } + + public static ImmutableList copyOf(Iterator elements) { + if (!elements.hasNext()) { + return ImmutableList.of(); + } + E first = elements.next(); + if (!elements.hasNext()) { + return ImmutableList.of(first); + } + return ((Builder)((Builder)new Builder().add((Object)first)).addAll(elements)).build(); + } + + public static ImmutableList copyOf(E[] elements) { + switch (elements.length) { + case 0: { + return ImmutableList.of(); + } + case 1: { + return new SingletonImmutableList(elements[0]); + } + } + return new RegularImmutableList(ObjectArrays.checkElementsNotNull((Object[])elements.clone())); + } + + private static ImmutableList construct(Object ... elements) { + return ImmutableList.asImmutableList(ObjectArrays.checkElementsNotNull(elements)); + } + + static ImmutableList asImmutableList(Object[] elements) { + return ImmutableList.asImmutableList(elements, elements.length); + } + + static ImmutableList asImmutableList(Object[] elements, int length) { + switch (length) { + case 0: { + return ImmutableList.of(); + } + case 1: { + SingletonImmutableList list = new SingletonImmutableList(elements[0]); + return list; + } + } + if (length < elements.length) { + elements = ObjectArrays.arraysCopyOf(elements, length); + } + return new RegularImmutableList(elements); + } + + ImmutableList() { + } + + @Override + public UnmodifiableIterator iterator() { + return this.listIterator(); + } + + @Override + public UnmodifiableListIterator listIterator() { + return this.listIterator(0); + } + + @Override + public UnmodifiableListIterator listIterator(int index) { + return new AbstractIndexedListIterator(this.size(), index){ + + @Override + protected E get(int index) { + return ImmutableList.this.get(index); + } + }; + } + + @Override + public int indexOf(@Nullable Object object) { + return object == null ? -1 : Lists.indexOfImpl(this, object); + } + + @Override + public int lastIndexOf(@Nullable Object object) { + return object == null ? -1 : Lists.lastIndexOfImpl(this, object); + } + + @Override + public boolean contains(@Nullable Object object) { + return this.indexOf(object) >= 0; + } + + @Override + public ImmutableList subList(int fromIndex, int toIndex) { + Preconditions.checkPositionIndexes(fromIndex, toIndex, this.size()); + int length = toIndex - fromIndex; + switch (length) { + case 0: { + return ImmutableList.of(); + } + case 1: { + return ImmutableList.of(this.get(fromIndex)); + } + } + return this.subListUnchecked(fromIndex, toIndex); + } + + ImmutableList subListUnchecked(int fromIndex, int toIndex) { + return new SubList(fromIndex, toIndex - fromIndex); + } + + @Override + @Deprecated + public final boolean addAll(int index, Collection newElements) { + throw new UnsupportedOperationException(); + } + + @Override + @Deprecated + public final E set(int index, E element) { + throw new UnsupportedOperationException(); + } + + @Override + @Deprecated + public final void add(int index, E element) { + throw new UnsupportedOperationException(); + } + + @Override + @Deprecated + public final E remove(int index) { + throw new UnsupportedOperationException(); + } + + @Override + public final ImmutableList asList() { + return this; + } + + @Override + int copyIntoArray(Object[] dst, int offset) { + int size = this.size(); + for (int i = 0; i < size; ++i) { + dst[offset + i] = this.get(i); + } + return offset + size; + } + + public ImmutableList reverse() { + return new ReverseImmutableList(this); + } + + @Override + public boolean equals(@Nullable Object obj) { + return Lists.equalsImpl(this, obj); + } + + @Override + public int hashCode() { + int hashCode = 1; + int n = this.size(); + for (int i = 0; i < n; ++i) { + hashCode = 31 * hashCode + this.get(i).hashCode(); + hashCode = ~(~hashCode); + } + return hashCode; + } + + private void readObject(ObjectInputStream stream) throws InvalidObjectException { + throw new InvalidObjectException("Use SerializedForm"); + } + + @Override + Object writeReplace() { + return new SerializedForm(this.toArray()); + } + + public static Builder builder() { + return new Builder(); + } + + public static final class Builder + extends ImmutableCollection.ArrayBasedBuilder { + public Builder() { + this(4); + } + + Builder(int capacity) { + super(capacity); + } + + @Override + public Builder add(E element) { + super.add((Object)element); + return this; + } + + @Override + public Builder addAll(Iterable elements) { + super.addAll(elements); + return this; + } + + @Override + public Builder add(E ... elements) { + super.add(elements); + return this; + } + + @Override + public Builder addAll(Iterator elements) { + super.addAll(elements); + return this; + } + + @Override + public ImmutableList build() { + return ImmutableList.asImmutableList(this.contents, this.size); + } + } + + static class SerializedForm + implements Serializable { + final Object[] elements; + private static final long serialVersionUID = 0L; + + SerializedForm(Object[] elements) { + this.elements = elements; + } + + Object readResolve() { + return ImmutableList.copyOf(this.elements); + } + } + + private static class ReverseImmutableList + extends ImmutableList { + private final transient ImmutableList forwardList; + + ReverseImmutableList(ImmutableList backingList) { + this.forwardList = backingList; + } + + private int reverseIndex(int index) { + return this.size() - 1 - index; + } + + private int reversePosition(int index) { + return this.size() - index; + } + + @Override + public ImmutableList reverse() { + return this.forwardList; + } + + @Override + public boolean contains(@Nullable Object object) { + return this.forwardList.contains(object); + } + + @Override + public int indexOf(@Nullable Object object) { + int index = this.forwardList.lastIndexOf(object); + return index >= 0 ? this.reverseIndex(index) : -1; + } + + @Override + public int lastIndexOf(@Nullable Object object) { + int index = this.forwardList.indexOf(object); + return index >= 0 ? this.reverseIndex(index) : -1; + } + + @Override + public ImmutableList subList(int fromIndex, int toIndex) { + Preconditions.checkPositionIndexes(fromIndex, toIndex, this.size()); + return ((ImmutableList)this.forwardList.subList(this.reversePosition(toIndex), this.reversePosition(fromIndex))).reverse(); + } + + @Override + public E get(int index) { + Preconditions.checkElementIndex(index, this.size()); + return this.forwardList.get(this.reverseIndex(index)); + } + + @Override + public int size() { + return this.forwardList.size(); + } + + @Override + boolean isPartialView() { + return this.forwardList.isPartialView(); + } + } + + class SubList + extends ImmutableList { + final transient int offset; + final transient int length; + + SubList(int offset, int length) { + this.offset = offset; + this.length = length; + } + + @Override + public int size() { + return this.length; + } + + @Override + public E get(int index) { + Preconditions.checkElementIndex(index, this.length); + return ImmutableList.this.get(index + this.offset); + } + + @Override + public ImmutableList subList(int fromIndex, int toIndex) { + Preconditions.checkPositionIndexes(fromIndex, toIndex, this.length); + return ImmutableList.this.subList(fromIndex + this.offset, toIndex + this.offset); + } + + @Override + boolean isPartialView() { + return true; + } + } +} diff --git a/src/com/google/common/collect/ImmutableListMultimap.java b/src/com/google/common/collect/ImmutableListMultimap.java new file mode 100644 index 0000000..2b34af6 --- /dev/null +++ b/src/com/google/common/collect/ImmutableListMultimap.java @@ -0,0 +1,227 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.collect.EmptyImmutableListMultimap; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableMultimap; +import com.google.common.collect.ListMultimap; +import com.google.common.collect.Multimap; +import com.google.common.collect.Serialization; +import java.io.IOException; +import java.io.InvalidObjectException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.util.Collection; +import java.util.Comparator; +import java.util.Map; +import javax.annotation.Nullable; + +@GwtCompatible(serializable=true, emulated=true) +public class ImmutableListMultimap +extends ImmutableMultimap +implements ListMultimap { + private transient ImmutableListMultimap inverse; + @GwtIncompatible(value="Not needed in emulated source") + private static final long serialVersionUID = 0L; + + public static ImmutableListMultimap of() { + return EmptyImmutableListMultimap.INSTANCE; + } + + public static ImmutableListMultimap of(K k1, V v1) { + Builder builder = ImmutableListMultimap.builder(); + builder.put((Object)k1, (Object)v1); + return builder.build(); + } + + public static ImmutableListMultimap of(K k1, V v1, K k2, V v2) { + Builder builder = ImmutableListMultimap.builder(); + builder.put((Object)k1, (Object)v1); + builder.put((Object)k2, (Object)v2); + return builder.build(); + } + + public static ImmutableListMultimap of(K k1, V v1, K k2, V v2, K k3, V v3) { + Builder builder = ImmutableListMultimap.builder(); + builder.put((Object)k1, (Object)v1); + builder.put((Object)k2, (Object)v2); + builder.put((Object)k3, (Object)v3); + return builder.build(); + } + + public static ImmutableListMultimap of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4) { + Builder builder = ImmutableListMultimap.builder(); + builder.put((Object)k1, (Object)v1); + builder.put((Object)k2, (Object)v2); + builder.put((Object)k3, (Object)v3); + builder.put((Object)k4, (Object)v4); + return builder.build(); + } + + public static ImmutableListMultimap of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5) { + Builder builder = ImmutableListMultimap.builder(); + builder.put((Object)k1, (Object)v1); + builder.put((Object)k2, (Object)v2); + builder.put((Object)k3, (Object)v3); + builder.put((Object)k4, (Object)v4); + builder.put((Object)k5, (Object)v5); + return builder.build(); + } + + public static Builder builder() { + return new Builder(); + } + + public static ImmutableListMultimap copyOf(Multimap multimap) { + ImmutableListMultimap kvMultimap; + if (multimap.isEmpty()) { + return ImmutableListMultimap.of(); + } + if (multimap instanceof ImmutableListMultimap && !(kvMultimap = (ImmutableListMultimap)multimap).isPartialView()) { + return kvMultimap; + } + ImmutableMap.Builder> builder = ImmutableMap.builder(); + int size = 0; + for (Map.Entry> entry : multimap.asMap().entrySet()) { + ImmutableList list = ImmutableList.copyOf(entry.getValue()); + if (list.isEmpty()) continue; + builder.put(entry.getKey(), list); + size += list.size(); + } + return new ImmutableListMultimap(builder.build(), size); + } + + ImmutableListMultimap(ImmutableMap> map, int size) { + super(map, size); + } + + @Override + public ImmutableList get(@Nullable K key) { + ImmutableList list = (ImmutableList)this.map.get(key); + return list == null ? ImmutableList.of() : list; + } + + @Override + public ImmutableListMultimap inverse() { + ImmutableListMultimap result = this.inverse; + return result == null ? (this.inverse = this.invert()) : result; + } + + private ImmutableListMultimap invert() { + Builder builder = ImmutableListMultimap.builder(); + for (Map.Entry entry : this.entries()) { + builder.put(entry.getValue(), entry.getKey()); + } + ImmutableMultimap invertedMultimap = builder.build(); + ((ImmutableListMultimap)invertedMultimap).inverse = this; + return invertedMultimap; + } + + @Override + @Deprecated + public ImmutableList removeAll(Object key) { + throw new UnsupportedOperationException(); + } + + @Override + @Deprecated + public ImmutableList replaceValues(K key, Iterable values) { + throw new UnsupportedOperationException(); + } + + @GwtIncompatible(value="java.io.ObjectOutputStream") + private void writeObject(ObjectOutputStream stream) throws IOException { + stream.defaultWriteObject(); + Serialization.writeMultimap(this, stream); + } + + @GwtIncompatible(value="java.io.ObjectInputStream") + private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException { + ImmutableMap tmpMap; + stream.defaultReadObject(); + int keyCount = stream.readInt(); + if (keyCount < 0) { + int n = keyCount; + throw new InvalidObjectException(new StringBuilder(29).append("Invalid key count ").append(n).toString()); + } + ImmutableMap.Builder> builder = ImmutableMap.builder(); + int tmpSize = 0; + for (int i = 0; i < keyCount; ++i) { + Object key = stream.readObject(); + int valueCount = stream.readInt(); + if (valueCount <= 0) { + int n = valueCount; + throw new InvalidObjectException(new StringBuilder(31).append("Invalid value count ").append(n).toString()); + } + Object[] array = new Object[valueCount]; + for (int j = 0; j < valueCount; ++j) { + array[j] = stream.readObject(); + } + builder.put(key, ImmutableList.copyOf(array)); + tmpSize += valueCount; + } + try { + tmpMap = builder.build(); + } + catch (IllegalArgumentException e) { + throw (InvalidObjectException)new InvalidObjectException(e.getMessage()).initCause(e); + } + ImmutableMultimap.FieldSettersHolder.MAP_FIELD_SETTER.set((ImmutableMultimap)this, tmpMap); + ImmutableMultimap.FieldSettersHolder.SIZE_FIELD_SETTER.set((ImmutableMultimap)this, tmpSize); + } + + public static final class Builder + extends ImmutableMultimap.Builder { + @Override + public Builder put(K key, V value) { + super.put(key, value); + return this; + } + + @Override + public Builder put(Map.Entry entry) { + super.put(entry); + return this; + } + + @Override + public Builder putAll(K key, Iterable values) { + super.putAll(key, values); + return this; + } + + @Override + public Builder putAll(K key, V ... values) { + super.putAll(key, values); + return this; + } + + @Override + public Builder putAll(Multimap multimap) { + super.putAll(multimap); + return this; + } + + @Override + public Builder orderKeysBy(Comparator keyComparator) { + super.orderKeysBy(keyComparator); + return this; + } + + @Override + public Builder orderValuesBy(Comparator valueComparator) { + super.orderValuesBy(valueComparator); + return this; + } + + @Override + public ImmutableListMultimap build() { + return (ImmutableListMultimap)super.build(); + } + } +} diff --git a/src/com/google/common/collect/ImmutableMap.java b/src/com/google/common/collect/ImmutableMap.java new file mode 100644 index 0000000..d0df598 --- /dev/null +++ b/src/com/google/common/collect/ImmutableMap.java @@ -0,0 +1,371 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Preconditions; +import com.google.common.collect.AbstractMapEntry; +import com.google.common.collect.CollectPreconditions; +import com.google.common.collect.ImmutableBiMap; +import com.google.common.collect.ImmutableCollection; +import com.google.common.collect.ImmutableEnumMap; +import com.google.common.collect.ImmutableMapEntry; +import com.google.common.collect.ImmutableMapEntrySet; +import com.google.common.collect.ImmutableMapKeySet; +import com.google.common.collect.ImmutableMapValues; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.ImmutableSetMultimap; +import com.google.common.collect.ImmutableSortedMap; +import com.google.common.collect.Maps; +import com.google.common.collect.ObjectArrays; +import com.google.common.collect.RegularImmutableMap; +import com.google.common.collect.UnmodifiableIterator; +import java.io.Serializable; +import java.util.EnumMap; +import java.util.Iterator; +import java.util.Map; +import javax.annotation.Nullable; + +@GwtCompatible(serializable=true, emulated=true) +public abstract class ImmutableMap +implements Map, +Serializable { + private static final Map.Entry[] EMPTY_ENTRY_ARRAY = new Map.Entry[0]; + private transient ImmutableSet> entrySet; + private transient ImmutableSet keySet; + private transient ImmutableCollection values; + private transient ImmutableSetMultimap multimapView; + + public static ImmutableMap of() { + return ImmutableBiMap.of(); + } + + public static ImmutableMap of(K k1, V v1) { + return ImmutableBiMap.of(k1, v1); + } + + public static ImmutableMap of(K k1, V v1, K k2, V v2) { + return new RegularImmutableMap(ImmutableMap.entryOf(k1, v1), ImmutableMap.entryOf(k2, v2)); + } + + public static ImmutableMap of(K k1, V v1, K k2, V v2, K k3, V v3) { + return new RegularImmutableMap(ImmutableMap.entryOf(k1, v1), ImmutableMap.entryOf(k2, v2), ImmutableMap.entryOf(k3, v3)); + } + + public static ImmutableMap of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4) { + return new RegularImmutableMap(ImmutableMap.entryOf(k1, v1), ImmutableMap.entryOf(k2, v2), ImmutableMap.entryOf(k3, v3), ImmutableMap.entryOf(k4, v4)); + } + + public static ImmutableMap of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5) { + return new RegularImmutableMap(ImmutableMap.entryOf(k1, v1), ImmutableMap.entryOf(k2, v2), ImmutableMap.entryOf(k3, v3), ImmutableMap.entryOf(k4, v4), ImmutableMap.entryOf(k5, v5)); + } + + static ImmutableMapEntry.TerminalEntry entryOf(K key, V value) { + CollectPreconditions.checkEntryNotNull(key, value); + return new ImmutableMapEntry.TerminalEntry(key, value); + } + + public static Builder builder() { + return new Builder(); + } + + static void checkNoConflict(boolean safe, String conflictDescription, Map.Entry entry1, Map.Entry entry2) { + if (!safe) { + String string = String.valueOf(String.valueOf(conflictDescription)); + String string2 = String.valueOf(String.valueOf(entry1)); + String string3 = String.valueOf(String.valueOf(entry2)); + throw new IllegalArgumentException(new StringBuilder(34 + string.length() + string2.length() + string3.length()).append("Multiple entries with same ").append(string).append(": ").append(string2).append(" and ").append(string3).toString()); + } + } + + public static ImmutableMap copyOf(Map map) { + if (map instanceof ImmutableMap && !(map instanceof ImmutableSortedMap)) { + ImmutableMap kvMap = (ImmutableMap)map; + if (!kvMap.isPartialView()) { + return kvMap; + } + } else if (map instanceof EnumMap) { + return ImmutableMap.copyOfEnumMapUnsafe(map); + } + Map.Entry[] entries = map.entrySet().toArray(EMPTY_ENTRY_ARRAY); + switch (entries.length) { + case 0: { + return ImmutableMap.of(); + } + case 1: { + Map.Entry onlyEntry = entries[0]; + return ImmutableMap.of(onlyEntry.getKey(), onlyEntry.getValue()); + } + } + return new RegularImmutableMap(entries); + } + + private static ImmutableMap copyOfEnumMapUnsafe(Map map) { + return ImmutableMap.copyOfEnumMap((EnumMap)map); + } + + private static , V> ImmutableMap copyOfEnumMap(Map original) { + EnumMap copy = new EnumMap(original); + for (Map.Entry entry : copy.entrySet()) { + CollectPreconditions.checkEntryNotNull(entry.getKey(), entry.getValue()); + } + return ImmutableEnumMap.asImmutable(copy); + } + + ImmutableMap() { + } + + @Override + @Deprecated + public final V put(K k, V v) { + throw new UnsupportedOperationException(); + } + + @Override + @Deprecated + public final V remove(Object o) { + throw new UnsupportedOperationException(); + } + + @Override + @Deprecated + public final void putAll(Map map) { + throw new UnsupportedOperationException(); + } + + @Override + @Deprecated + public final void clear() { + throw new UnsupportedOperationException(); + } + + @Override + public boolean isEmpty() { + return this.size() == 0; + } + + @Override + public boolean containsKey(@Nullable Object key) { + return this.get(key) != null; + } + + @Override + public boolean containsValue(@Nullable Object value) { + return ((ImmutableCollection)this.values()).contains(value); + } + + @Override + public abstract V get(@Nullable Object var1); + + @Override + public ImmutableSet> entrySet() { + ImmutableSet> result = this.entrySet; + return result == null ? (this.entrySet = this.createEntrySet()) : result; + } + + abstract ImmutableSet> createEntrySet(); + + @Override + public ImmutableSet keySet() { + ImmutableSet result = this.keySet; + return result == null ? (this.keySet = this.createKeySet()) : result; + } + + ImmutableSet createKeySet() { + return new ImmutableMapKeySet(this); + } + + @Override + public ImmutableCollection values() { + ImmutableCollection result = this.values; + return result == null ? (this.values = new ImmutableMapValues(this)) : result; + } + + @Beta + public ImmutableSetMultimap asMultimap() { + ImmutableSetMultimap result = this.multimapView; + return result == null ? (this.multimapView = this.createMultimapView()) : result; + } + + private ImmutableSetMultimap createMultimapView() { + ImmutableMap> map = this.viewMapValuesAsSingletonSets(); + return new ImmutableSetMultimap(map, map.size(), null); + } + + private ImmutableMap> viewMapValuesAsSingletonSets() { + return new MapViewOfValuesAsSingletonSets(this); + } + + @Override + public boolean equals(@Nullable Object object) { + return Maps.equalsImpl(this, object); + } + + abstract boolean isPartialView(); + + @Override + public int hashCode() { + return ((ImmutableSet)this.entrySet()).hashCode(); + } + + public String toString() { + return Maps.toStringImpl(this); + } + + Object writeReplace() { + return new SerializedForm(this); + } + + static class SerializedForm + implements Serializable { + private final Object[] keys; + private final Object[] values; + private static final long serialVersionUID = 0L; + + SerializedForm(ImmutableMap map) { + this.keys = new Object[map.size()]; + this.values = new Object[map.size()]; + int i = 0; + for (Map.Entry entry : map.entrySet()) { + this.keys[i] = entry.getKey(); + this.values[i] = entry.getValue(); + ++i; + } + } + + Object readResolve() { + Builder builder = new Builder(); + return this.createMap(builder); + } + + Object createMap(Builder builder) { + for (int i = 0; i < this.keys.length; ++i) { + builder.put(this.keys[i], this.values[i]); + } + return builder.build(); + } + } + + private static final class MapViewOfValuesAsSingletonSets + extends ImmutableMap> { + private final ImmutableMap delegate; + + MapViewOfValuesAsSingletonSets(ImmutableMap delegate) { + this.delegate = Preconditions.checkNotNull(delegate); + } + + @Override + public int size() { + return this.delegate.size(); + } + + @Override + public boolean containsKey(@Nullable Object key) { + return this.delegate.containsKey(key); + } + + @Override + public ImmutableSet get(@Nullable Object key) { + V outerValue = this.delegate.get(key); + return outerValue == null ? null : ImmutableSet.of(outerValue); + } + + @Override + boolean isPartialView() { + return false; + } + + @Override + ImmutableSet>> createEntrySet() { + return new ImmutableMapEntrySet>(){ + + @Override + ImmutableMap> map() { + return MapViewOfValuesAsSingletonSets.this; + } + + @Override + public UnmodifiableIterator>> iterator() { + final Iterator backingIterator = ((ImmutableSet)MapViewOfValuesAsSingletonSets.this.delegate.entrySet()).iterator(); + return new UnmodifiableIterator>>(){ + + @Override + public boolean hasNext() { + return backingIterator.hasNext(); + } + + @Override + public Map.Entry> next() { + final Map.Entry backingEntry = (Map.Entry)backingIterator.next(); + return new AbstractMapEntry>(){ + + @Override + public K getKey() { + return backingEntry.getKey(); + } + + @Override + public ImmutableSet getValue() { + return ImmutableSet.of(backingEntry.getValue()); + } + }; + } + }; + } + }; + } + } + + public static class Builder { + ImmutableMapEntry.TerminalEntry[] entries; + int size; + + public Builder() { + this(4); + } + + Builder(int initialCapacity) { + this.entries = new ImmutableMapEntry.TerminalEntry[initialCapacity]; + this.size = 0; + } + + private void ensureCapacity(int minCapacity) { + if (minCapacity > this.entries.length) { + this.entries = ObjectArrays.arraysCopyOf(this.entries, ImmutableCollection.Builder.expandedCapacity(this.entries.length, minCapacity)); + } + } + + public Builder put(K key, V value) { + this.ensureCapacity(this.size + 1); + ImmutableMapEntry.TerminalEntry entry = ImmutableMap.entryOf(key, value); + this.entries[this.size++] = entry; + return this; + } + + public Builder put(Map.Entry entry) { + return this.put(entry.getKey(), entry.getValue()); + } + + public Builder putAll(Map map) { + this.ensureCapacity(this.size + map.size()); + for (Map.Entry entry : map.entrySet()) { + this.put(entry); + } + return this; + } + + public ImmutableMap build() { + switch (this.size) { + case 0: { + return ImmutableMap.of(); + } + case 1: { + return ImmutableMap.of(this.entries[0].getKey(), this.entries[0].getValue()); + } + } + return new RegularImmutableMap(this.size, this.entries); + } + } +} diff --git a/src/com/google/common/collect/ImmutableMapEntry.java b/src/com/google/common/collect/ImmutableMapEntry.java new file mode 100644 index 0000000..6eb10ba --- /dev/null +++ b/src/com/google/common/collect/ImmutableMapEntry.java @@ -0,0 +1,51 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtIncompatible; +import com.google.common.collect.CollectPreconditions; +import com.google.common.collect.ImmutableEntry; +import javax.annotation.Nullable; + +@GwtIncompatible(value="unnecessary") +abstract class ImmutableMapEntry +extends ImmutableEntry { + ImmutableMapEntry(K key, V value) { + super(key, value); + CollectPreconditions.checkEntryNotNull(key, value); + } + + ImmutableMapEntry(ImmutableMapEntry contents) { + super(contents.getKey(), contents.getValue()); + } + + @Nullable + abstract ImmutableMapEntry getNextInKeyBucket(); + + @Nullable + abstract ImmutableMapEntry getNextInValueBucket(); + + static final class TerminalEntry + extends ImmutableMapEntry { + TerminalEntry(ImmutableMapEntry contents) { + super(contents); + } + + TerminalEntry(K key, V value) { + super(key, value); + } + + @Override + @Nullable + ImmutableMapEntry getNextInKeyBucket() { + return null; + } + + @Override + @Nullable + ImmutableMapEntry getNextInValueBucket() { + return null; + } + } +} diff --git a/src/com/google/common/collect/ImmutableMapEntrySet.java b/src/com/google/common/collect/ImmutableMapEntrySet.java new file mode 100644 index 0000000..e3cb38f --- /dev/null +++ b/src/com/google/common/collect/ImmutableMapEntrySet.java @@ -0,0 +1,62 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableSet; +import java.io.Serializable; +import java.util.Map; +import javax.annotation.Nullable; + +@GwtCompatible(emulated=true) +abstract class ImmutableMapEntrySet +extends ImmutableSet> { + ImmutableMapEntrySet() { + } + + abstract ImmutableMap map(); + + @Override + public int size() { + return this.map().size(); + } + + @Override + public boolean contains(@Nullable Object object) { + if (object instanceof Map.Entry) { + Map.Entry entry = (Map.Entry)object; + V value = this.map().get(entry.getKey()); + return value != null && value.equals(entry.getValue()); + } + return false; + } + + @Override + boolean isPartialView() { + return this.map().isPartialView(); + } + + @Override + @GwtIncompatible(value="serialization") + Object writeReplace() { + return new EntrySetSerializedForm(this.map()); + } + + @GwtIncompatible(value="serialization") + private static class EntrySetSerializedForm + implements Serializable { + final ImmutableMap map; + private static final long serialVersionUID = 0L; + + EntrySetSerializedForm(ImmutableMap map) { + this.map = map; + } + + Object readResolve() { + return this.map.entrySet(); + } + } +} diff --git a/src/com/google/common/collect/ImmutableMapKeySet.java b/src/com/google/common/collect/ImmutableMapKeySet.java new file mode 100644 index 0000000..72d20ec --- /dev/null +++ b/src/com/google/common/collect/ImmutableMapKeySet.java @@ -0,0 +1,84 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.collect.ImmutableAsList; +import com.google.common.collect.ImmutableCollection; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.UnmodifiableIterator; +import java.io.Serializable; +import java.util.Map; +import javax.annotation.Nullable; + +@GwtCompatible(emulated=true) +final class ImmutableMapKeySet +extends ImmutableSet { + private final ImmutableMap map; + + ImmutableMapKeySet(ImmutableMap map) { + this.map = map; + } + + @Override + public int size() { + return this.map.size(); + } + + @Override + public UnmodifiableIterator iterator() { + return this.asList().iterator(); + } + + @Override + public boolean contains(@Nullable Object object) { + return this.map.containsKey(object); + } + + @Override + ImmutableList createAsList() { + final ImmutableList entryList = ((ImmutableCollection)((Object)this.map.entrySet())).asList(); + return new ImmutableAsList(){ + + @Override + public K get(int index) { + return ((Map.Entry)entryList.get(index)).getKey(); + } + + @Override + ImmutableCollection delegateCollection() { + return ImmutableMapKeySet.this; + } + }; + } + + @Override + boolean isPartialView() { + return true; + } + + @Override + @GwtIncompatible(value="serialization") + Object writeReplace() { + return new KeySetSerializedForm(this.map); + } + + @GwtIncompatible(value="serialization") + private static class KeySetSerializedForm + implements Serializable { + final ImmutableMap map; + private static final long serialVersionUID = 0L; + + KeySetSerializedForm(ImmutableMap map) { + this.map = map; + } + + Object readResolve() { + return this.map.keySet(); + } + } +} diff --git a/src/com/google/common/collect/ImmutableMapValues.java b/src/com/google/common/collect/ImmutableMapValues.java new file mode 100644 index 0000000..958212d --- /dev/null +++ b/src/com/google/common/collect/ImmutableMapValues.java @@ -0,0 +1,86 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.collect.ImmutableAsList; +import com.google.common.collect.ImmutableCollection; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Iterators; +import com.google.common.collect.Maps; +import com.google.common.collect.UnmodifiableIterator; +import java.io.Serializable; +import java.util.Map; +import javax.annotation.Nullable; + +@GwtCompatible(emulated=true) +final class ImmutableMapValues +extends ImmutableCollection { + private final ImmutableMap map; + + ImmutableMapValues(ImmutableMap map) { + this.map = map; + } + + @Override + public int size() { + return this.map.size(); + } + + @Override + public UnmodifiableIterator iterator() { + return Maps.valueIterator(((ImmutableSet)this.map.entrySet()).iterator()); + } + + @Override + public boolean contains(@Nullable Object object) { + return object != null && Iterators.contains(this.iterator(), object); + } + + @Override + boolean isPartialView() { + return true; + } + + @Override + ImmutableList createAsList() { + final ImmutableList entryList = ((ImmutableCollection)((Object)this.map.entrySet())).asList(); + return new ImmutableAsList(){ + + @Override + public V get(int index) { + return ((Map.Entry)entryList.get(index)).getValue(); + } + + @Override + ImmutableCollection delegateCollection() { + return ImmutableMapValues.this; + } + }; + } + + @Override + @GwtIncompatible(value="serialization") + Object writeReplace() { + return new SerializedForm(this.map); + } + + @GwtIncompatible(value="serialization") + private static class SerializedForm + implements Serializable { + final ImmutableMap map; + private static final long serialVersionUID = 0L; + + SerializedForm(ImmutableMap map) { + this.map = map; + } + + Object readResolve() { + return this.map.values(); + } + } +} diff --git a/src/com/google/common/collect/ImmutableMultimap.java b/src/com/google/common/collect/ImmutableMultimap.java new file mode 100644 index 0000000..d9fbbee --- /dev/null +++ b/src/com/google/common/collect/ImmutableMultimap.java @@ -0,0 +1,456 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.base.Preconditions; +import com.google.common.collect.AbstractMapBasedMultimap; +import com.google.common.collect.AbstractMultimap; +import com.google.common.collect.CollectPreconditions; +import com.google.common.collect.ImmutableCollection; +import com.google.common.collect.ImmutableListMultimap; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableMultiset; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.ImmutableSetMultimap; +import com.google.common.collect.Iterables; +import com.google.common.collect.Iterators; +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import com.google.common.collect.Multimap; +import com.google.common.collect.Multiset; +import com.google.common.collect.Multisets; +import com.google.common.collect.Ordering; +import com.google.common.collect.Serialization; +import com.google.common.collect.UnmodifiableIterator; +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.Comparator; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; +import javax.annotation.Nullable; + +@GwtCompatible(emulated=true) +public abstract class ImmutableMultimap +extends AbstractMultimap +implements Serializable { + final transient ImmutableMap> map; + final transient int size; + private static final long serialVersionUID = 0L; + + public static ImmutableMultimap of() { + return ImmutableListMultimap.of(); + } + + public static ImmutableMultimap of(K k1, V v1) { + return ImmutableListMultimap.of(k1, v1); + } + + public static ImmutableMultimap of(K k1, V v1, K k2, V v2) { + return ImmutableListMultimap.of(k1, v1, k2, v2); + } + + public static ImmutableMultimap of(K k1, V v1, K k2, V v2, K k3, V v3) { + return ImmutableListMultimap.of(k1, v1, k2, v2, k3, v3); + } + + public static ImmutableMultimap of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4) { + return ImmutableListMultimap.of(k1, v1, k2, v2, k3, v3, k4, v4); + } + + public static ImmutableMultimap of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5) { + return ImmutableListMultimap.of(k1, v1, k2, v2, k3, v3, k4, v4, k5, v5); + } + + public static Builder builder() { + return new Builder(); + } + + public static ImmutableMultimap copyOf(Multimap multimap) { + ImmutableMultimap kvMultimap; + if (multimap instanceof ImmutableMultimap && !(kvMultimap = (ImmutableMultimap)multimap).isPartialView()) { + return kvMultimap; + } + return ImmutableListMultimap.copyOf(multimap); + } + + ImmutableMultimap(ImmutableMap> map, int size) { + this.map = map; + this.size = size; + } + + @Override + @Deprecated + public ImmutableCollection removeAll(Object key) { + throw new UnsupportedOperationException(); + } + + @Override + @Deprecated + public ImmutableCollection replaceValues(K key, Iterable values) { + throw new UnsupportedOperationException(); + } + + @Override + @Deprecated + public void clear() { + throw new UnsupportedOperationException(); + } + + @Override + public abstract ImmutableCollection get(K var1); + + public abstract ImmutableMultimap inverse(); + + @Override + @Deprecated + public boolean put(K key, V value) { + throw new UnsupportedOperationException(); + } + + @Override + @Deprecated + public boolean putAll(K key, Iterable values) { + throw new UnsupportedOperationException(); + } + + @Override + @Deprecated + public boolean putAll(Multimap multimap) { + throw new UnsupportedOperationException(); + } + + @Override + @Deprecated + public boolean remove(Object key, Object value) { + throw new UnsupportedOperationException(); + } + + boolean isPartialView() { + return this.map.isPartialView(); + } + + @Override + public boolean containsKey(@Nullable Object key) { + return this.map.containsKey(key); + } + + @Override + public boolean containsValue(@Nullable Object value) { + return value != null && super.containsValue(value); + } + + @Override + public int size() { + return this.size; + } + + @Override + public ImmutableSet keySet() { + return this.map.keySet(); + } + + @Override + public ImmutableMap> asMap() { + return this.map; + } + + @Override + Map> createAsMap() { + throw new AssertionError((Object)"should never be called"); + } + + @Override + public ImmutableCollection> entries() { + return (ImmutableCollection)super.entries(); + } + + @Override + ImmutableCollection> createEntries() { + return new EntryCollection(this); + } + + @Override + UnmodifiableIterator> entryIterator() { + return new Itr>(){ + + @Override + Map.Entry output(K key, V value) { + return Maps.immutableEntry(key, value); + } + }; + } + + @Override + public ImmutableMultiset keys() { + return (ImmutableMultiset)super.keys(); + } + + @Override + ImmutableMultiset createKeys() { + return new Keys(); + } + + @Override + public ImmutableCollection values() { + return (ImmutableCollection)super.values(); + } + + @Override + ImmutableCollection createValues() { + return new Values(this); + } + + @Override + UnmodifiableIterator valueIterator() { + return new Itr(){ + + @Override + V output(K key, V value) { + return value; + } + }; + } + + private static final class Values + extends ImmutableCollection { + private final transient ImmutableMultimap multimap; + private static final long serialVersionUID = 0L; + + Values(ImmutableMultimap multimap) { + this.multimap = multimap; + } + + @Override + public boolean contains(@Nullable Object object) { + return this.multimap.containsValue(object); + } + + @Override + public UnmodifiableIterator iterator() { + return this.multimap.valueIterator(); + } + + @Override + @GwtIncompatible(value="not present in emulated superclass") + int copyIntoArray(Object[] dst, int offset) { + for (ImmutableCollection valueCollection : this.multimap.map.values()) { + offset = valueCollection.copyIntoArray(dst, offset); + } + return offset; + } + + @Override + public int size() { + return this.multimap.size(); + } + + @Override + boolean isPartialView() { + return true; + } + } + + class Keys + extends ImmutableMultiset { + Keys() { + } + + @Override + public boolean contains(@Nullable Object object) { + return ImmutableMultimap.this.containsKey(object); + } + + @Override + public int count(@Nullable Object element) { + Collection values = ImmutableMultimap.this.map.get(element); + return values == null ? 0 : values.size(); + } + + @Override + public Set elementSet() { + return ImmutableMultimap.this.keySet(); + } + + @Override + public int size() { + return ImmutableMultimap.this.size(); + } + + @Override + Multiset.Entry getEntry(int index) { + Map.Entry entry = (Map.Entry)((ImmutableCollection)((Object)ImmutableMultimap.this.map.entrySet())).asList().get(index); + return Multisets.immutableEntry(entry.getKey(), ((Collection)entry.getValue()).size()); + } + + @Override + boolean isPartialView() { + return true; + } + } + + private abstract class Itr + extends UnmodifiableIterator { + final Iterator>> mapIterator; + K key; + Iterator valueIterator; + + private Itr() { + this.mapIterator = ((ImmutableSet)((ImmutableMap)ImmutableMultimap.this.asMap()).entrySet()).iterator(); + this.key = null; + this.valueIterator = Iterators.emptyIterator(); + } + + abstract T output(K var1, V var2); + + @Override + public boolean hasNext() { + return this.mapIterator.hasNext() || this.valueIterator.hasNext(); + } + + @Override + public T next() { + if (!this.valueIterator.hasNext()) { + Map.Entry mapEntry = this.mapIterator.next(); + this.key = mapEntry.getKey(); + this.valueIterator = mapEntry.getValue().iterator(); + } + return this.output(this.key, this.valueIterator.next()); + } + } + + private static class EntryCollection + extends ImmutableCollection> { + final ImmutableMultimap multimap; + private static final long serialVersionUID = 0L; + + EntryCollection(ImmutableMultimap multimap) { + this.multimap = multimap; + } + + @Override + public UnmodifiableIterator> iterator() { + return this.multimap.entryIterator(); + } + + @Override + boolean isPartialView() { + return this.multimap.isPartialView(); + } + + @Override + public int size() { + return this.multimap.size(); + } + + @Override + public boolean contains(Object object) { + if (object instanceof Map.Entry) { + Map.Entry entry = (Map.Entry)object; + return this.multimap.containsEntry(entry.getKey(), entry.getValue()); + } + return false; + } + } + + @GwtIncompatible(value="java serialization is not supported") + static class FieldSettersHolder { + static final Serialization.FieldSetter MAP_FIELD_SETTER = Serialization.getFieldSetter(ImmutableMultimap.class, "map"); + static final Serialization.FieldSetter SIZE_FIELD_SETTER = Serialization.getFieldSetter(ImmutableMultimap.class, "size"); + static final Serialization.FieldSetter EMPTY_SET_FIELD_SETTER = Serialization.getFieldSetter(ImmutableSetMultimap.class, "emptySet"); + + FieldSettersHolder() { + } + } + + public static class Builder { + Multimap builderMultimap = new BuilderMultimap(); + Comparator keyComparator; + Comparator valueComparator; + + public Builder put(K key, V value) { + CollectPreconditions.checkEntryNotNull(key, value); + this.builderMultimap.put(key, value); + return this; + } + + public Builder put(Map.Entry entry) { + return this.put(entry.getKey(), entry.getValue()); + } + + public Builder putAll(K key, Iterable values) { + if (key == null) { + String string = String.valueOf(Iterables.toString(values)); + throw new NullPointerException(string.length() != 0 ? "null key in entry: null=".concat(string) : new String("null key in entry: null=")); + } + Collection valueList = this.builderMultimap.get(key); + for (V value : values) { + CollectPreconditions.checkEntryNotNull(key, value); + valueList.add(value); + } + return this; + } + + public Builder putAll(K key, V ... values) { + return this.putAll(key, (Iterable)Arrays.asList(values)); + } + + public Builder putAll(Multimap multimap) { + for (Map.Entry> entry : multimap.asMap().entrySet()) { + this.putAll(entry.getKey(), (Iterable)entry.getValue()); + } + return this; + } + + public Builder orderKeysBy(Comparator keyComparator) { + this.keyComparator = Preconditions.checkNotNull(keyComparator); + return this; + } + + public Builder orderValuesBy(Comparator valueComparator) { + this.valueComparator = Preconditions.checkNotNull(valueComparator); + return this; + } + + public ImmutableMultimap build() { + if (this.valueComparator != null) { + for (Collection values : this.builderMultimap.asMap().values()) { + List list = (List)values; + Collections.sort(list, this.valueComparator); + } + } + if (this.keyComparator != null) { + BuilderMultimap sortedCopy = new BuilderMultimap(); + ArrayList>> entries = Lists.newArrayList(this.builderMultimap.asMap().entrySet()); + Collections.sort(entries, Ordering.from(this.keyComparator).onKeys()); + for (Map.Entry entry : entries) { + sortedCopy.putAll(entry.getKey(), (Iterable)entry.getValue()); + } + this.builderMultimap = sortedCopy; + } + return ImmutableMultimap.copyOf(this.builderMultimap); + } + } + + private static class BuilderMultimap + extends AbstractMapBasedMultimap { + private static final long serialVersionUID = 0L; + + BuilderMultimap() { + super(new LinkedHashMap()); + } + + @Override + Collection createCollection() { + return Lists.newArrayList(); + } + } +} diff --git a/src/com/google/common/collect/ImmutableMultiset.java b/src/com/google/common/collect/ImmutableMultiset.java new file mode 100644 index 0000000..1ffee92 --- /dev/null +++ b/src/com/google/common/collect/ImmutableMultiset.java @@ -0,0 +1,374 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.base.Preconditions; +import com.google.common.collect.ImmutableAsList; +import com.google.common.collect.ImmutableCollection; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Iterators; +import com.google.common.collect.LinkedHashMultiset; +import com.google.common.collect.Multiset; +import com.google.common.collect.Multisets; +import com.google.common.collect.RegularImmutableMultiset; +import com.google.common.collect.Sets; +import com.google.common.collect.UnmodifiableIterator; +import com.google.common.primitives.Ints; +import java.io.Serializable; +import java.util.AbstractCollection; +import java.util.Arrays; +import java.util.Collection; +import java.util.Iterator; +import javax.annotation.Nullable; + +@GwtCompatible(serializable=true, emulated=true) +public abstract class ImmutableMultiset +extends ImmutableCollection +implements Multiset { + private static final ImmutableMultiset EMPTY = new RegularImmutableMultiset(ImmutableMap.of(), 0); + private transient ImmutableSet> entrySet; + + public static ImmutableMultiset of() { + return EMPTY; + } + + public static ImmutableMultiset of(E element) { + return ImmutableMultiset.copyOfInternal(element); + } + + public static ImmutableMultiset of(E e1, E e2) { + return ImmutableMultiset.copyOfInternal(e1, e2); + } + + public static ImmutableMultiset of(E e1, E e2, E e3) { + return ImmutableMultiset.copyOfInternal(e1, e2, e3); + } + + public static ImmutableMultiset of(E e1, E e2, E e3, E e4) { + return ImmutableMultiset.copyOfInternal(e1, e2, e3, e4); + } + + public static ImmutableMultiset of(E e1, E e2, E e3, E e4, E e5) { + return ImmutableMultiset.copyOfInternal(e1, e2, e3, e4, e5); + } + + public static ImmutableMultiset of(E e1, E e2, E e3, E e4, E e5, E e6, E ... others) { + return ((Builder)((Builder)((Builder)((Builder)((Builder)((Builder)((Builder)new Builder().add((Object)e1)).add((Object)e2)).add((Object)e3)).add((Object)e4)).add((Object)e5)).add((Object)e6)).add((Object[])others)).build(); + } + + public static ImmutableMultiset copyOf(E[] elements) { + return ImmutableMultiset.copyOf(Arrays.asList(elements)); + } + + public static ImmutableMultiset copyOf(Iterable elements) { + ImmutableMultiset result; + if (elements instanceof ImmutableMultiset && !(result = (ImmutableMultiset)elements).isPartialView()) { + return result; + } + Multiset multiset = elements instanceof Multiset ? Multisets.cast(elements) : LinkedHashMultiset.create(elements); + return ImmutableMultiset.copyOfInternal(multiset); + } + + private static ImmutableMultiset copyOfInternal(E ... elements) { + return ImmutableMultiset.copyOf(Arrays.asList(elements)); + } + + private static ImmutableMultiset copyOfInternal(Multiset multiset) { + return ImmutableMultiset.copyFromEntries(multiset.entrySet()); + } + + static ImmutableMultiset copyFromEntries(Collection> entries) { + long size = 0L; + ImmutableMap.Builder builder = ImmutableMap.builder(); + for (Multiset.Entry entry : entries) { + int count = entry.getCount(); + if (count <= 0) continue; + builder.put(entry.getElement(), count); + size += (long)count; + } + if (size == 0L) { + return ImmutableMultiset.of(); + } + return new RegularImmutableMultiset(builder.build(), Ints.saturatedCast(size)); + } + + public static ImmutableMultiset copyOf(Iterator elements) { + LinkedHashMultiset multiset = LinkedHashMultiset.create(); + Iterators.addAll(multiset, elements); + return ImmutableMultiset.copyOfInternal(multiset); + } + + ImmutableMultiset() { + } + + @Override + public UnmodifiableIterator iterator() { + final Iterator entryIterator = ((ImmutableSet)this.entrySet()).iterator(); + return new UnmodifiableIterator(){ + int remaining; + E element; + + @Override + public boolean hasNext() { + return this.remaining > 0 || entryIterator.hasNext(); + } + + @Override + public E next() { + if (this.remaining <= 0) { + Multiset.Entry entry = (Multiset.Entry)entryIterator.next(); + this.element = entry.getElement(); + this.remaining = entry.getCount(); + } + --this.remaining; + return this.element; + } + }; + } + + @Override + public boolean contains(@Nullable Object object) { + return this.count(object) > 0; + } + + @Override + public boolean containsAll(Collection targets) { + return this.elementSet().containsAll(targets); + } + + @Override + @Deprecated + public final int add(E element, int occurrences) { + throw new UnsupportedOperationException(); + } + + @Override + @Deprecated + public final int remove(Object element, int occurrences) { + throw new UnsupportedOperationException(); + } + + @Override + @Deprecated + public final int setCount(E element, int count) { + throw new UnsupportedOperationException(); + } + + @Override + @Deprecated + public final boolean setCount(E element, int oldCount, int newCount) { + throw new UnsupportedOperationException(); + } + + @Override + @GwtIncompatible(value="not present in emulated superclass") + int copyIntoArray(Object[] dst, int offset) { + for (Multiset.Entry entry : this.entrySet()) { + Arrays.fill(dst, offset, offset + entry.getCount(), entry.getElement()); + offset += entry.getCount(); + } + return offset; + } + + @Override + public boolean equals(@Nullable Object object) { + return Multisets.equalsImpl(this, object); + } + + @Override + public int hashCode() { + return Sets.hashCodeImpl(this.entrySet()); + } + + @Override + public String toString() { + return ((AbstractCollection)((Object)this.entrySet())).toString(); + } + + @Override + public ImmutableSet> entrySet() { + ImmutableSet>> es = this.entrySet; + return es == null ? (this.entrySet = this.createEntrySet()) : es; + } + + private final ImmutableSet> createEntrySet() { + return this.isEmpty() ? ImmutableSet.of() : new EntrySet(); + } + + abstract Multiset.Entry getEntry(int var1); + + @Override + Object writeReplace() { + return new SerializedForm(this); + } + + public static Builder builder() { + return new Builder(); + } + + public static class Builder + extends ImmutableCollection.Builder { + final Multiset contents; + + public Builder() { + this(LinkedHashMultiset.create()); + } + + Builder(Multiset contents) { + this.contents = contents; + } + + @Override + public Builder add(E element) { + this.contents.add(Preconditions.checkNotNull(element)); + return this; + } + + public Builder addCopies(E element, int occurrences) { + this.contents.add(Preconditions.checkNotNull(element), occurrences); + return this; + } + + public Builder setCount(E element, int count) { + this.contents.setCount(Preconditions.checkNotNull(element), count); + return this; + } + + @Override + public Builder add(E ... elements) { + super.add(elements); + return this; + } + + @Override + public Builder addAll(Iterable elements) { + if (elements instanceof Multiset) { + Multiset multiset = Multisets.cast(elements); + for (Multiset.Entry entry : multiset.entrySet()) { + this.addCopies(entry.getElement(), entry.getCount()); + } + } else { + super.addAll(elements); + } + return this; + } + + @Override + public Builder addAll(Iterator elements) { + super.addAll(elements); + return this; + } + + @Override + public ImmutableMultiset build() { + return ImmutableMultiset.copyOf(this.contents); + } + } + + private static class SerializedForm + implements Serializable { + final Object[] elements; + final int[] counts; + private static final long serialVersionUID = 0L; + + SerializedForm(Multiset multiset) { + int distinct = multiset.entrySet().size(); + this.elements = new Object[distinct]; + this.counts = new int[distinct]; + int i = 0; + for (Multiset.Entry entry : multiset.entrySet()) { + this.elements[i] = entry.getElement(); + this.counts[i] = entry.getCount(); + ++i; + } + } + + Object readResolve() { + LinkedHashMultiset multiset = LinkedHashMultiset.create(this.elements.length); + for (int i = 0; i < this.elements.length; ++i) { + multiset.add(this.elements[i], this.counts[i]); + } + return ImmutableMultiset.copyOf(multiset); + } + } + + static class EntrySetSerializedForm + implements Serializable { + final ImmutableMultiset multiset; + + EntrySetSerializedForm(ImmutableMultiset multiset) { + this.multiset = multiset; + } + + Object readResolve() { + return this.multiset.entrySet(); + } + } + + private final class EntrySet + extends ImmutableSet> { + private static final long serialVersionUID = 0L; + + private EntrySet() { + } + + @Override + boolean isPartialView() { + return ImmutableMultiset.this.isPartialView(); + } + + @Override + public UnmodifiableIterator> iterator() { + return this.asList().iterator(); + } + + @Override + ImmutableList> createAsList() { + return new ImmutableAsList>(){ + + @Override + public Multiset.Entry get(int index) { + return ImmutableMultiset.this.getEntry(index); + } + + @Override + ImmutableCollection> delegateCollection() { + return EntrySet.this; + } + }; + } + + @Override + public int size() { + return ImmutableMultiset.this.elementSet().size(); + } + + @Override + public boolean contains(Object o) { + if (o instanceof Multiset.Entry) { + Multiset.Entry entry = (Multiset.Entry)o; + if (entry.getCount() <= 0) { + return false; + } + int count = ImmutableMultiset.this.count(entry.getElement()); + return count == entry.getCount(); + } + return false; + } + + @Override + public int hashCode() { + return ImmutableMultiset.this.hashCode(); + } + + @Override + Object writeReplace() { + return new EntrySetSerializedForm(ImmutableMultiset.this); + } + } +} diff --git a/src/com/google/common/collect/ImmutableRangeMap.java b/src/com/google/common/collect/ImmutableRangeMap.java new file mode 100644 index 0000000..4995c7c --- /dev/null +++ b/src/com/google/common/collect/ImmutableRangeMap.java @@ -0,0 +1,233 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.base.Preconditions; +import com.google.common.collect.Cut; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.Maps; +import com.google.common.collect.Range; +import com.google.common.collect.RangeMap; +import com.google.common.collect.RangeSet; +import com.google.common.collect.RegularImmutableSortedMap; +import com.google.common.collect.RegularImmutableSortedSet; +import com.google.common.collect.SortedLists; +import com.google.common.collect.TreeRangeMap; +import com.google.common.collect.TreeRangeSet; +import java.util.Map; +import java.util.NoSuchElementException; +import javax.annotation.Nullable; + +@Beta +@GwtIncompatible(value="NavigableMap") +public class ImmutableRangeMap, V> +implements RangeMap { + private static final ImmutableRangeMap, Object> EMPTY = new ImmutableRangeMap(ImmutableList.of(), ImmutableList.of()); + private final ImmutableList> ranges; + private final ImmutableList values; + + public static , V> ImmutableRangeMap of() { + return EMPTY; + } + + public static , V> ImmutableRangeMap of(Range range, V value) { + return new ImmutableRangeMap(ImmutableList.of(range), ImmutableList.of(value)); + } + + public static , V> ImmutableRangeMap copyOf(RangeMap rangeMap) { + if (rangeMap instanceof ImmutableRangeMap) { + return (ImmutableRangeMap)rangeMap; + } + Map, V> map = rangeMap.asMapOfRanges(); + ImmutableList.Builder rangesBuilder = new ImmutableList.Builder(map.size()); + ImmutableList.Builder valuesBuilder = new ImmutableList.Builder(map.size()); + for (Map.Entry, V> entry : map.entrySet()) { + rangesBuilder.add(entry.getKey()); + valuesBuilder.add(entry.getValue()); + } + return new ImmutableRangeMap(rangesBuilder.build(), valuesBuilder.build()); + } + + public static , V> Builder builder() { + return new Builder(); + } + + ImmutableRangeMap(ImmutableList> ranges, ImmutableList values) { + this.ranges = ranges; + this.values = values; + } + + @Override + @Nullable + public V get(K key) { + int index = SortedLists.binarySearch(this.ranges, Range.lowerBoundFn(), Cut.belowValue(key), SortedLists.KeyPresentBehavior.ANY_PRESENT, SortedLists.KeyAbsentBehavior.NEXT_LOWER); + if (index == -1) { + return null; + } + Range range = (Range)this.ranges.get(index); + return range.contains(key) ? (V)this.values.get(index) : null; + } + + @Override + @Nullable + public Map.Entry, V> getEntry(K key) { + int index = SortedLists.binarySearch(this.ranges, Range.lowerBoundFn(), Cut.belowValue(key), SortedLists.KeyPresentBehavior.ANY_PRESENT, SortedLists.KeyAbsentBehavior.NEXT_LOWER); + if (index == -1) { + return null; + } + Range range = (Range)this.ranges.get(index); + return range.contains(key) ? Maps.immutableEntry(range, this.values.get(index)) : null; + } + + @Override + public Range span() { + if (this.ranges.isEmpty()) { + throw new NoSuchElementException(); + } + Range firstRange = (Range)this.ranges.get(0); + Range lastRange = (Range)this.ranges.get(this.ranges.size() - 1); + return Range.create(firstRange.lowerBound, lastRange.upperBound); + } + + @Override + public void put(Range range, V value) { + throw new UnsupportedOperationException(); + } + + @Override + public void putAll(RangeMap rangeMap) { + throw new UnsupportedOperationException(); + } + + @Override + public void clear() { + throw new UnsupportedOperationException(); + } + + @Override + public void remove(Range range) { + throw new UnsupportedOperationException(); + } + + @Override + public ImmutableMap, V> asMapOfRanges() { + if (this.ranges.isEmpty()) { + return ImmutableMap.of(); + } + RegularImmutableSortedSet rangeSet = new RegularImmutableSortedSet(this.ranges, Range.RANGE_LEX_ORDERING); + return new RegularImmutableSortedMap(rangeSet, this.values); + } + + @Override + public ImmutableRangeMap subRangeMap(final Range range) { + int upperIndex; + if (Preconditions.checkNotNull(range).isEmpty()) { + return ImmutableRangeMap.of(); + } + if (this.ranges.isEmpty() || range.encloses(this.span())) { + return this; + } + int lowerIndex = SortedLists.binarySearch(this.ranges, Range.upperBoundFn(), range.lowerBound, SortedLists.KeyPresentBehavior.FIRST_AFTER, SortedLists.KeyAbsentBehavior.NEXT_HIGHER); + if (lowerIndex >= (upperIndex = SortedLists.binarySearch(this.ranges, Range.lowerBoundFn(), range.upperBound, SortedLists.KeyPresentBehavior.ANY_PRESENT, SortedLists.KeyAbsentBehavior.NEXT_HIGHER))) { + return ImmutableRangeMap.of(); + } + final int off = lowerIndex; + final int len = upperIndex - lowerIndex; + ImmutableList subRanges = new ImmutableList>(){ + + @Override + public int size() { + return len; + } + + @Override + public Range get(int index) { + Preconditions.checkElementIndex(index, len); + if (index == 0 || index == len - 1) { + return ((Range)ImmutableRangeMap.this.ranges.get(index + off)).intersection(range); + } + return (Range)ImmutableRangeMap.this.ranges.get(index + off); + } + + @Override + boolean isPartialView() { + return true; + } + }; + final ImmutableRangeMap outer = this; + return new ImmutableRangeMap(subRanges, (ImmutableList)this.values.subList(lowerIndex, upperIndex)){ + + @Override + public ImmutableRangeMap subRangeMap(Range subRange) { + if (range.isConnected(subRange)) { + return outer.subRangeMap(subRange.intersection(range)); + } + return ImmutableRangeMap.of(); + } + }; + } + + @Override + public int hashCode() { + return ((ImmutableMap)this.asMapOfRanges()).hashCode(); + } + + @Override + public boolean equals(@Nullable Object o) { + if (o instanceof RangeMap) { + RangeMap rangeMap = (RangeMap)o; + return ((ImmutableMap)this.asMapOfRanges()).equals(rangeMap.asMapOfRanges()); + } + return false; + } + + @Override + public String toString() { + return ((ImmutableMap)this.asMapOfRanges()).toString(); + } + + public static final class Builder, V> { + private final RangeSet keyRanges = TreeRangeSet.create(); + private final RangeMap rangeMap = TreeRangeMap.create(); + + public Builder put(Range range, V value) { + Preconditions.checkNotNull(range); + Preconditions.checkNotNull(value); + Preconditions.checkArgument(!range.isEmpty(), "Range must not be empty, but was %s", range); + if (!this.keyRanges.complement().encloses(range)) { + for (Map.Entry, V> entry : this.rangeMap.asMapOfRanges().entrySet()) { + Range key = entry.getKey(); + if (!key.isConnected(range) || key.intersection(range).isEmpty()) continue; + String string = String.valueOf(String.valueOf(range)); + String string2 = String.valueOf(String.valueOf(entry)); + throw new IllegalArgumentException(new StringBuilder(47 + string.length() + string2.length()).append("Overlapping ranges: range ").append(string).append(" overlaps with entry ").append(string2).toString()); + } + } + this.keyRanges.add(range); + this.rangeMap.put(range, value); + return this; + } + + public Builder putAll(RangeMap rangeMap) { + for (Map.Entry, V> entry : rangeMap.asMapOfRanges().entrySet()) { + this.put(entry.getKey(), entry.getValue()); + } + return this; + } + + public ImmutableRangeMap build() { + Map, V> map = this.rangeMap.asMapOfRanges(); + ImmutableList.Builder rangesBuilder = new ImmutableList.Builder(map.size()); + ImmutableList.Builder valuesBuilder = new ImmutableList.Builder(map.size()); + for (Map.Entry, V> entry : map.entrySet()) { + rangesBuilder.add(entry.getKey()); + valuesBuilder.add(entry.getValue()); + } + return new ImmutableRangeMap(rangesBuilder.build(), valuesBuilder.build()); + } + } +} diff --git a/src/com/google/common/collect/ImmutableRangeSet.java b/src/com/google/common/collect/ImmutableRangeSet.java new file mode 100644 index 0000000..b878906 --- /dev/null +++ b/src/com/google/common/collect/ImmutableRangeSet.java @@ -0,0 +1,485 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.base.Preconditions; +import com.google.common.collect.AbstractIterator; +import com.google.common.collect.AbstractRangeSet; +import com.google.common.collect.BoundType; +import com.google.common.collect.ContiguousSet; +import com.google.common.collect.Cut; +import com.google.common.collect.DiscreteDomain; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.ImmutableSortedSet; +import com.google.common.collect.Iterables; +import com.google.common.collect.Iterators; +import com.google.common.collect.Ordering; +import com.google.common.collect.Range; +import com.google.common.collect.RangeSet; +import com.google.common.collect.RegularImmutableSortedSet; +import com.google.common.collect.SortedLists; +import com.google.common.collect.TreeRangeSet; +import com.google.common.collect.UnmodifiableIterator; +import com.google.common.primitives.Ints; +import java.io.Serializable; +import java.util.Iterator; +import java.util.NoSuchElementException; +import javax.annotation.Nullable; + +@Beta +public final class ImmutableRangeSet +extends AbstractRangeSet +implements Serializable { + private static final ImmutableRangeSet> EMPTY = new ImmutableRangeSet(ImmutableList.of()); + private static final ImmutableRangeSet> ALL = new ImmutableRangeSet(ImmutableList.of(Range.all())); + private final transient ImmutableList> ranges; + private transient ImmutableRangeSet complement; + + public static ImmutableRangeSet of() { + return EMPTY; + } + + static ImmutableRangeSet all() { + return ALL; + } + + public static ImmutableRangeSet of(Range range) { + Preconditions.checkNotNull(range); + if (range.isEmpty()) { + return ImmutableRangeSet.of(); + } + if (range.equals(Range.all())) { + return ImmutableRangeSet.all(); + } + return new ImmutableRangeSet(ImmutableList.of(range)); + } + + public static ImmutableRangeSet copyOf(RangeSet rangeSet) { + ImmutableRangeSet immutableRangeSet; + Preconditions.checkNotNull(rangeSet); + if (rangeSet.isEmpty()) { + return ImmutableRangeSet.of(); + } + if (rangeSet.encloses(Range.all())) { + return ImmutableRangeSet.all(); + } + if (rangeSet instanceof ImmutableRangeSet && !(immutableRangeSet = (ImmutableRangeSet)rangeSet).isPartialView()) { + return immutableRangeSet; + } + return new ImmutableRangeSet(ImmutableList.copyOf(rangeSet.asRanges())); + } + + ImmutableRangeSet(ImmutableList> ranges) { + this.ranges = ranges; + } + + private ImmutableRangeSet(ImmutableList> ranges, ImmutableRangeSet complement) { + this.ranges = ranges; + this.complement = complement; + } + + @Override + public boolean encloses(Range otherRange) { + int index = SortedLists.binarySearch(this.ranges, Range.lowerBoundFn(), otherRange.lowerBound, Ordering.natural(), SortedLists.KeyPresentBehavior.ANY_PRESENT, SortedLists.KeyAbsentBehavior.NEXT_LOWER); + return index != -1 && ((Range)this.ranges.get(index)).encloses(otherRange); + } + + @Override + public Range rangeContaining(C value) { + int index = SortedLists.binarySearch(this.ranges, Range.lowerBoundFn(), Cut.belowValue(value), Ordering.natural(), SortedLists.KeyPresentBehavior.ANY_PRESENT, SortedLists.KeyAbsentBehavior.NEXT_LOWER); + if (index != -1) { + Range range = (Range)this.ranges.get(index); + return range.contains(value) ? range : null; + } + return null; + } + + @Override + public Range span() { + if (this.ranges.isEmpty()) { + throw new NoSuchElementException(); + } + return Range.create(((Range)this.ranges.get((int)0)).lowerBound, ((Range)this.ranges.get((int)(this.ranges.size() - 1))).upperBound); + } + + @Override + public boolean isEmpty() { + return this.ranges.isEmpty(); + } + + @Override + public void add(Range range) { + throw new UnsupportedOperationException(); + } + + @Override + public void addAll(RangeSet other) { + throw new UnsupportedOperationException(); + } + + @Override + public void remove(Range range) { + throw new UnsupportedOperationException(); + } + + @Override + public void removeAll(RangeSet other) { + throw new UnsupportedOperationException(); + } + + @Override + public ImmutableSet> asRanges() { + if (this.ranges.isEmpty()) { + return ImmutableSet.of(); + } + return new RegularImmutableSortedSet>(this.ranges, Range.RANGE_LEX_ORDERING); + } + + @Override + public ImmutableRangeSet complement() { + ImmutableRangeSet result = this.complement; + if (result != null) { + return result; + } + if (this.ranges.isEmpty()) { + this.complement = ImmutableRangeSet.all(); + return this.complement; + } + if (this.ranges.size() == 1 && ((Range)this.ranges.get(0)).equals(Range.all())) { + this.complement = ImmutableRangeSet.of(); + return this.complement; + } + ComplementRanges complementRanges = new ComplementRanges(); + result = this.complement = new ImmutableRangeSet(complementRanges, this); + return result; + } + + private ImmutableList> intersectRanges(final Range range) { + if (this.ranges.isEmpty() || range.isEmpty()) { + return ImmutableList.of(); + } + if (range.encloses(this.span())) { + return this.ranges; + } + final int fromIndex = range.hasLowerBound() ? SortedLists.binarySearch(this.ranges, Range.upperBoundFn(), range.lowerBound, SortedLists.KeyPresentBehavior.FIRST_AFTER, SortedLists.KeyAbsentBehavior.NEXT_HIGHER) : 0; + int toIndex = range.hasUpperBound() ? SortedLists.binarySearch(this.ranges, Range.lowerBoundFn(), range.upperBound, SortedLists.KeyPresentBehavior.FIRST_PRESENT, SortedLists.KeyAbsentBehavior.NEXT_HIGHER) : this.ranges.size(); + final int length = toIndex - fromIndex; + if (length == 0) { + return ImmutableList.of(); + } + return new ImmutableList>(){ + + @Override + public int size() { + return length; + } + + @Override + public Range get(int index) { + Preconditions.checkElementIndex(index, length); + if (index == 0 || index == length - 1) { + return ((Range)ImmutableRangeSet.this.ranges.get(index + fromIndex)).intersection(range); + } + return (Range)ImmutableRangeSet.this.ranges.get(index + fromIndex); + } + + @Override + boolean isPartialView() { + return true; + } + }; + } + + @Override + public ImmutableRangeSet subRangeSet(Range range) { + if (!this.isEmpty()) { + Range span = this.span(); + if (range.encloses(span)) { + return this; + } + if (range.isConnected(span)) { + return new ImmutableRangeSet(this.intersectRanges(range)); + } + } + return ImmutableRangeSet.of(); + } + + public ImmutableSortedSet asSet(DiscreteDomain domain) { + Preconditions.checkNotNull(domain); + if (this.isEmpty()) { + return ImmutableSortedSet.of(); + } + Range span = this.span().canonical(domain); + if (!span.hasLowerBound()) { + throw new IllegalArgumentException("Neither the DiscreteDomain nor this range set are bounded below"); + } + if (!span.hasUpperBound()) { + try { + domain.maxValue(); + } + catch (NoSuchElementException e) { + throw new IllegalArgumentException("Neither the DiscreteDomain nor this range set are bounded above"); + } + } + return new AsSet(domain); + } + + boolean isPartialView() { + return this.ranges.isPartialView(); + } + + public static > Builder builder() { + return new Builder(); + } + + Object writeReplace() { + return new SerializedForm(this.ranges); + } + + private static final class SerializedForm + implements Serializable { + private final ImmutableList> ranges; + + SerializedForm(ImmutableList> ranges) { + this.ranges = ranges; + } + + Object readResolve() { + if (this.ranges.isEmpty()) { + return ImmutableRangeSet.of(); + } + if (this.ranges.equals(ImmutableList.of(Range.all()))) { + return ImmutableRangeSet.all(); + } + return new ImmutableRangeSet(this.ranges); + } + } + + public static class Builder> { + private final RangeSet rangeSet = TreeRangeSet.create(); + + public Builder add(Range range) { + if (range.isEmpty()) { + String string = String.valueOf(String.valueOf(range)); + throw new IllegalArgumentException(new StringBuilder(33 + string.length()).append("range must not be empty, but was ").append(string).toString()); + } + if (!this.rangeSet.complement().encloses(range)) { + for (Range currentRange : this.rangeSet.asRanges()) { + Preconditions.checkArgument(!currentRange.isConnected(range) || currentRange.intersection(range).isEmpty(), "Ranges may not overlap, but received %s and %s", currentRange, range); + } + throw new AssertionError((Object)"should have thrown an IAE above"); + } + this.rangeSet.add(range); + return this; + } + + public Builder addAll(RangeSet ranges) { + for (Range range : ranges.asRanges()) { + this.add(range); + } + return this; + } + + public ImmutableRangeSet build() { + return ImmutableRangeSet.copyOf(this.rangeSet); + } + } + + private static class AsSetSerializedForm + implements Serializable { + private final ImmutableList> ranges; + private final DiscreteDomain domain; + + AsSetSerializedForm(ImmutableList> ranges, DiscreteDomain domain) { + this.ranges = ranges; + this.domain = domain; + } + + Object readResolve() { + return new ImmutableRangeSet(this.ranges).asSet(this.domain); + } + } + + private final class AsSet + extends ImmutableSortedSet { + private final DiscreteDomain domain; + private transient Integer size; + + AsSet(DiscreteDomain domain) { + super(Ordering.natural()); + this.domain = domain; + } + + @Override + public int size() { + Integer result = this.size; + if (result == null) { + Range range; + long total = 0L; + Iterator i$ = ImmutableRangeSet.this.ranges.iterator(); + while (i$.hasNext() && (total += (long)ContiguousSet.create(range = (Range)i$.next(), this.domain).size()) < Integer.MAX_VALUE) { + } + result = this.size = Integer.valueOf(Ints.saturatedCast(total)); + } + return result; + } + + @Override + public UnmodifiableIterator iterator() { + return new AbstractIterator(){ + final Iterator> rangeItr; + Iterator elemItr; + { + this.rangeItr = ImmutableRangeSet.this.ranges.iterator(); + this.elemItr = Iterators.emptyIterator(); + } + + @Override + protected C computeNext() { + while (!this.elemItr.hasNext()) { + if (this.rangeItr.hasNext()) { + this.elemItr = ContiguousSet.create(this.rangeItr.next(), AsSet.this.domain).iterator(); + continue; + } + return (Comparable)this.endOfData(); + } + return (Comparable)this.elemItr.next(); + } + }; + } + + @Override + @GwtIncompatible(value="NavigableSet") + public UnmodifiableIterator descendingIterator() { + return new AbstractIterator(){ + final Iterator> rangeItr; + Iterator elemItr; + { + this.rangeItr = ImmutableRangeSet.this.ranges.reverse().iterator(); + this.elemItr = Iterators.emptyIterator(); + } + + @Override + protected C computeNext() { + while (!this.elemItr.hasNext()) { + if (this.rangeItr.hasNext()) { + this.elemItr = ContiguousSet.create(this.rangeItr.next(), AsSet.this.domain).descendingIterator(); + continue; + } + return (Comparable)this.endOfData(); + } + return (Comparable)this.elemItr.next(); + } + }; + } + + ImmutableSortedSet subSet(Range range) { + return ((ImmutableRangeSet)ImmutableRangeSet.this.subRangeSet(range)).asSet(this.domain); + } + + @Override + ImmutableSortedSet headSetImpl(C toElement, boolean inclusive) { + return this.subSet(Range.upTo(toElement, BoundType.forBoolean(inclusive))); + } + + @Override + ImmutableSortedSet subSetImpl(C fromElement, boolean fromInclusive, C toElement, boolean toInclusive) { + if (!fromInclusive && !toInclusive && Range.compareOrThrow(fromElement, toElement) == 0) { + return ImmutableSortedSet.of(); + } + return this.subSet(Range.range(fromElement, BoundType.forBoolean(fromInclusive), toElement, BoundType.forBoolean(toInclusive))); + } + + @Override + ImmutableSortedSet tailSetImpl(C fromElement, boolean inclusive) { + return this.subSet(Range.downTo(fromElement, BoundType.forBoolean(inclusive))); + } + + @Override + public boolean contains(@Nullable Object o) { + if (o == null) { + return false; + } + try { + Comparable c = (Comparable)o; + return ImmutableRangeSet.this.contains(c); + } + catch (ClassCastException e) { + return false; + } + } + + @Override + int indexOf(Object target) { + if (this.contains(target)) { + Comparable c = (Comparable)target; + long total = 0L; + for (Range range : ImmutableRangeSet.this.ranges) { + if (range.contains(c)) { + return Ints.saturatedCast(total + (long)ContiguousSet.create(range, this.domain).indexOf(c)); + } + total += (long)ContiguousSet.create(range, this.domain).size(); + } + throw new AssertionError((Object)"impossible"); + } + return -1; + } + + @Override + boolean isPartialView() { + return ImmutableRangeSet.this.ranges.isPartialView(); + } + + @Override + public String toString() { + return ImmutableRangeSet.this.ranges.toString(); + } + + @Override + Object writeReplace() { + return new AsSetSerializedForm(ImmutableRangeSet.this.ranges, this.domain); + } + } + + private final class ComplementRanges + extends ImmutableList> { + private final boolean positiveBoundedBelow; + private final boolean positiveBoundedAbove; + private final int size; + + ComplementRanges() { + this.positiveBoundedBelow = ((Range)ImmutableRangeSet.this.ranges.get(0)).hasLowerBound(); + this.positiveBoundedAbove = ((Range)Iterables.getLast(ImmutableRangeSet.this.ranges)).hasUpperBound(); + int size = ImmutableRangeSet.this.ranges.size() - 1; + if (this.positiveBoundedBelow) { + ++size; + } + if (this.positiveBoundedAbove) { + ++size; + } + this.size = size; + } + + @Override + public int size() { + return this.size; + } + + @Override + public Range get(int index) { + Preconditions.checkElementIndex(index, this.size); + Cut lowerBound = this.positiveBoundedBelow ? (index == 0 ? Cut.belowAll() : ((Range)((ImmutableRangeSet)ImmutableRangeSet.this).ranges.get((int)(index - 1))).upperBound) : ((Range)((ImmutableRangeSet)ImmutableRangeSet.this).ranges.get((int)index)).upperBound; + Cut upperBound = this.positiveBoundedAbove && index == this.size - 1 ? Cut.aboveAll() : ((Range)((ImmutableRangeSet)ImmutableRangeSet.this).ranges.get((int)(index + (this.positiveBoundedBelow ? 0 : 1)))).lowerBound; + return Range.create(lowerBound, upperBound); + } + + @Override + boolean isPartialView() { + return true; + } + } +} diff --git a/src/com/google/common/collect/ImmutableSet.java b/src/com/google/common/collect/ImmutableSet.java new file mode 100644 index 0000000..8a2c174 --- /dev/null +++ b/src/com/google/common/collect/ImmutableSet.java @@ -0,0 +1,263 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.Preconditions; +import com.google.common.collect.EmptyImmutableSet; +import com.google.common.collect.Hashing; +import com.google.common.collect.ImmutableCollection; +import com.google.common.collect.ImmutableEnumSet; +import com.google.common.collect.ImmutableSortedSet; +import com.google.common.collect.ObjectArrays; +import com.google.common.collect.RegularImmutableSet; +import com.google.common.collect.Sets; +import com.google.common.collect.SingletonImmutableSet; +import com.google.common.collect.UnmodifiableIterator; +import java.io.Serializable; +import java.util.Arrays; +import java.util.Collection; +import java.util.EnumSet; +import java.util.Iterator; +import java.util.Set; +import javax.annotation.Nullable; + +@GwtCompatible(serializable=true, emulated=true) +public abstract class ImmutableSet +extends ImmutableCollection +implements Set { + static final int MAX_TABLE_SIZE = 0x40000000; + private static final double DESIRED_LOAD_FACTOR = 0.7; + private static final int CUTOFF = 0x2CCCCCCC; + + public static ImmutableSet of() { + return EmptyImmutableSet.INSTANCE; + } + + public static ImmutableSet of(E element) { + return new SingletonImmutableSet(element); + } + + public static ImmutableSet of(E e1, E e2) { + return ImmutableSet.construct(2, e1, e2); + } + + public static ImmutableSet of(E e1, E e2, E e3) { + return ImmutableSet.construct(3, e1, e2, e3); + } + + public static ImmutableSet of(E e1, E e2, E e3, E e4) { + return ImmutableSet.construct(4, e1, e2, e3, e4); + } + + public static ImmutableSet of(E e1, E e2, E e3, E e4, E e5) { + return ImmutableSet.construct(5, e1, e2, e3, e4, e5); + } + + public static ImmutableSet of(E e1, E e2, E e3, E e4, E e5, E e6, E ... others) { + int paramCount = 6; + Object[] elements = new Object[6 + others.length]; + elements[0] = e1; + elements[1] = e2; + elements[2] = e3; + elements[3] = e4; + elements[4] = e5; + elements[5] = e6; + System.arraycopy(others, 0, elements, 6, others.length); + return ImmutableSet.construct(elements.length, elements); + } + + private static ImmutableSet construct(int n, Object ... elements) { + switch (n) { + case 0: { + return ImmutableSet.of(); + } + case 1: { + Object elem = elements[0]; + return ImmutableSet.of(elem); + } + } + int tableSize = ImmutableSet.chooseTableSize(n); + Object[] table = new Object[tableSize]; + int mask = tableSize - 1; + int hashCode = 0; + int uniques = 0; + block4: for (int i = 0; i < n; ++i) { + Object element = ObjectArrays.checkElementNotNull(elements[i], i); + int hash = element.hashCode(); + int j = Hashing.smear(hash); + while (true) { + int index; + Object value; + if ((value = table[index = j & mask]) == null) { + elements[uniques++] = element; + table[index] = element; + hashCode += hash; + continue block4; + } + if (value.equals(element)) continue block4; + ++j; + } + } + Arrays.fill(elements, uniques, n, null); + if (uniques == 1) { + Object element = elements[0]; + return new SingletonImmutableSet(element, hashCode); + } + if (tableSize != ImmutableSet.chooseTableSize(uniques)) { + return ImmutableSet.construct(uniques, elements); + } + Object[] uniqueElements = uniques < elements.length ? ObjectArrays.arraysCopyOf(elements, uniques) : elements; + return new RegularImmutableSet(uniqueElements, hashCode, table, mask); + } + + @VisibleForTesting + static int chooseTableSize(int setSize) { + if (setSize < 0x2CCCCCCC) { + int tableSize = Integer.highestOneBit(setSize - 1) << 1; + while ((double)tableSize * 0.7 < (double)setSize) { + tableSize <<= 1; + } + return tableSize; + } + Preconditions.checkArgument(setSize < 0x40000000, "collection too large"); + return 0x40000000; + } + + public static ImmutableSet copyOf(E[] elements) { + switch (elements.length) { + case 0: { + return ImmutableSet.of(); + } + case 1: { + return ImmutableSet.of(elements[0]); + } + } + return ImmutableSet.construct(elements.length, (Object[])elements.clone()); + } + + public static ImmutableSet copyOf(Iterable elements) { + return elements instanceof Collection ? ImmutableSet.copyOf((Collection)elements) : ImmutableSet.copyOf(elements.iterator()); + } + + public static ImmutableSet copyOf(Iterator elements) { + if (!elements.hasNext()) { + return ImmutableSet.of(); + } + E first = elements.next(); + if (!elements.hasNext()) { + return ImmutableSet.of(first); + } + return ((Builder)((Builder)new Builder().add((Object)first)).addAll(elements)).build(); + } + + public static ImmutableSet copyOf(Collection elements) { + if (elements instanceof ImmutableSet && !(elements instanceof ImmutableSortedSet)) { + ImmutableSet set = (ImmutableSet)elements; + if (!set.isPartialView()) { + return set; + } + } else if (elements instanceof EnumSet) { + return ImmutableSet.copyOfEnumSet((EnumSet)elements); + } + Object[] array = elements.toArray(); + return ImmutableSet.construct(array.length, array); + } + + private static > ImmutableSet copyOfEnumSet(EnumSet enumSet) { + return ImmutableEnumSet.asImmutable(EnumSet.copyOf(enumSet)); + } + + ImmutableSet() { + } + + boolean isHashCodeFast() { + return false; + } + + @Override + public boolean equals(@Nullable Object object) { + if (object == this) { + return true; + } + if (object instanceof ImmutableSet && this.isHashCodeFast() && ((ImmutableSet)object).isHashCodeFast() && this.hashCode() != object.hashCode()) { + return false; + } + return Sets.equalsImpl(this, object); + } + + @Override + public int hashCode() { + return Sets.hashCodeImpl(this); + } + + @Override + public abstract UnmodifiableIterator iterator(); + + @Override + Object writeReplace() { + return new SerializedForm(this.toArray()); + } + + public static Builder builder() { + return new Builder(); + } + + public static class Builder + extends ImmutableCollection.ArrayBasedBuilder { + public Builder() { + this(4); + } + + Builder(int capacity) { + super(capacity); + } + + @Override + public Builder add(E element) { + super.add((Object)element); + return this; + } + + @Override + public Builder add(E ... elements) { + super.add(elements); + return this; + } + + @Override + public Builder addAll(Iterable elements) { + super.addAll(elements); + return this; + } + + @Override + public Builder addAll(Iterator elements) { + super.addAll(elements); + return this; + } + + @Override + public ImmutableSet build() { + ImmutableSet result = ImmutableSet.construct(this.size, this.contents); + this.size = result.size(); + return result; + } + } + + private static class SerializedForm + implements Serializable { + final Object[] elements; + private static final long serialVersionUID = 0L; + + SerializedForm(Object[] elements) { + this.elements = elements; + } + + Object readResolve() { + return ImmutableSet.copyOf(this.elements); + } + } +} diff --git a/src/com/google/common/collect/ImmutableSetMultimap.java b/src/com/google/common/collect/ImmutableSetMultimap.java new file mode 100644 index 0000000..ca98d6e --- /dev/null +++ b/src/com/google/common/collect/ImmutableSetMultimap.java @@ -0,0 +1,340 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.base.MoreObjects; +import com.google.common.base.Preconditions; +import com.google.common.collect.AbstractMapBasedMultimap; +import com.google.common.collect.EmptyImmutableSetMultimap; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableMultimap; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.ImmutableSortedSet; +import com.google.common.collect.Lists; +import com.google.common.collect.Multimap; +import com.google.common.collect.Ordering; +import com.google.common.collect.Serialization; +import com.google.common.collect.SetMultimap; +import com.google.common.collect.Sets; +import com.google.common.collect.UnmodifiableIterator; +import java.io.IOException; +import java.io.InvalidObjectException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.Comparator; +import java.util.LinkedHashMap; +import java.util.Map; +import javax.annotation.Nullable; + +@GwtCompatible(serializable=true, emulated=true) +public class ImmutableSetMultimap +extends ImmutableMultimap +implements SetMultimap { + private final transient ImmutableSet emptySet; + private transient ImmutableSetMultimap inverse; + private transient ImmutableSet> entries; + @GwtIncompatible(value="not needed in emulated source.") + private static final long serialVersionUID = 0L; + + public static ImmutableSetMultimap of() { + return EmptyImmutableSetMultimap.INSTANCE; + } + + public static ImmutableSetMultimap of(K k1, V v1) { + Builder builder = ImmutableSetMultimap.builder(); + builder.put((Object)k1, (Object)v1); + return builder.build(); + } + + public static ImmutableSetMultimap of(K k1, V v1, K k2, V v2) { + Builder builder = ImmutableSetMultimap.builder(); + builder.put((Object)k1, (Object)v1); + builder.put((Object)k2, (Object)v2); + return builder.build(); + } + + public static ImmutableSetMultimap of(K k1, V v1, K k2, V v2, K k3, V v3) { + Builder builder = ImmutableSetMultimap.builder(); + builder.put((Object)k1, (Object)v1); + builder.put((Object)k2, (Object)v2); + builder.put((Object)k3, (Object)v3); + return builder.build(); + } + + public static ImmutableSetMultimap of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4) { + Builder builder = ImmutableSetMultimap.builder(); + builder.put((Object)k1, (Object)v1); + builder.put((Object)k2, (Object)v2); + builder.put((Object)k3, (Object)v3); + builder.put((Object)k4, (Object)v4); + return builder.build(); + } + + public static ImmutableSetMultimap of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5) { + Builder builder = ImmutableSetMultimap.builder(); + builder.put((Object)k1, (Object)v1); + builder.put((Object)k2, (Object)v2); + builder.put((Object)k3, (Object)v3); + builder.put((Object)k4, (Object)v4); + builder.put((Object)k5, (Object)v5); + return builder.build(); + } + + public static Builder builder() { + return new Builder(); + } + + public static ImmutableSetMultimap copyOf(Multimap multimap) { + return ImmutableSetMultimap.copyOf(multimap, null); + } + + private static ImmutableSetMultimap copyOf(Multimap multimap, Comparator valueComparator) { + ImmutableSetMultimap kvMultimap; + Preconditions.checkNotNull(multimap); + if (multimap.isEmpty() && valueComparator == null) { + return ImmutableSetMultimap.of(); + } + if (multimap instanceof ImmutableSetMultimap && !(kvMultimap = (ImmutableSetMultimap)multimap).isPartialView()) { + return kvMultimap; + } + ImmutableMap.Builder> builder = ImmutableMap.builder(); + int size = 0; + for (Map.Entry> entry : multimap.asMap().entrySet()) { + K key = entry.getKey(); + Collection values = entry.getValue(); + ImmutableSet set = ImmutableSetMultimap.valueSet(valueComparator, values); + if (set.isEmpty()) continue; + builder.put(key, set); + size += set.size(); + } + return new ImmutableSetMultimap(builder.build(), size, valueComparator); + } + + ImmutableSetMultimap(ImmutableMap> map, int size, @Nullable Comparator valueComparator) { + super(map, size); + this.emptySet = ImmutableSetMultimap.emptySet(valueComparator); + } + + @Override + public ImmutableSet get(@Nullable K key) { + ImmutableSet set = (ImmutableSet)this.map.get(key); + return MoreObjects.firstNonNull(set, this.emptySet); + } + + @Override + public ImmutableSetMultimap inverse() { + ImmutableSetMultimap result = this.inverse; + return result == null ? (this.inverse = this.invert()) : result; + } + + private ImmutableSetMultimap invert() { + Builder builder = ImmutableSetMultimap.builder(); + for (Map.Entry entry : this.entries()) { + builder.put(entry.getValue(), entry.getKey()); + } + ImmutableMultimap invertedMultimap = builder.build(); + ((ImmutableSetMultimap)invertedMultimap).inverse = this; + return invertedMultimap; + } + + @Override + @Deprecated + public ImmutableSet removeAll(Object key) { + throw new UnsupportedOperationException(); + } + + @Override + @Deprecated + public ImmutableSet replaceValues(K key, Iterable values) { + throw new UnsupportedOperationException(); + } + + @Override + public ImmutableSet> entries() { + ImmutableSet> result = this.entries; + return result == null ? (this.entries = new EntrySet(this)) : result; + } + + private static ImmutableSet valueSet(@Nullable Comparator valueComparator, Collection values) { + return valueComparator == null ? ImmutableSet.copyOf(values) : ImmutableSortedSet.copyOf(valueComparator, values); + } + + private static ImmutableSet emptySet(@Nullable Comparator valueComparator) { + return valueComparator == null ? ImmutableSet.of() : ImmutableSortedSet.emptySet(valueComparator); + } + + @GwtIncompatible(value="java.io.ObjectOutputStream") + private void writeObject(ObjectOutputStream stream) throws IOException { + stream.defaultWriteObject(); + stream.writeObject(this.valueComparator()); + Serialization.writeMultimap(this, stream); + } + + @Nullable + Comparator valueComparator() { + return this.emptySet instanceof ImmutableSortedSet ? ((ImmutableSortedSet)this.emptySet).comparator() : null; + } + + @GwtIncompatible(value="java.io.ObjectInputStream") + private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException { + ImmutableMap tmpMap; + stream.defaultReadObject(); + Comparator valueComparator = (Comparator)stream.readObject(); + int keyCount = stream.readInt(); + if (keyCount < 0) { + int n = keyCount; + throw new InvalidObjectException(new StringBuilder(29).append("Invalid key count ").append(n).toString()); + } + ImmutableMap.Builder> builder = ImmutableMap.builder(); + int tmpSize = 0; + for (int i = 0; i < keyCount; ++i) { + Object key = stream.readObject(); + int valueCount = stream.readInt(); + if (valueCount <= 0) { + int n = valueCount; + throw new InvalidObjectException(new StringBuilder(31).append("Invalid value count ").append(n).toString()); + } + Object[] array = new Object[valueCount]; + for (int j = 0; j < valueCount; ++j) { + array[j] = stream.readObject(); + } + ImmutableSet valueSet = ImmutableSetMultimap.valueSet(valueComparator, Arrays.asList(array)); + if (valueSet.size() != array.length) { + String string = String.valueOf(String.valueOf(key)); + throw new InvalidObjectException(new StringBuilder(40 + string.length()).append("Duplicate key-value pairs exist for key ").append(string).toString()); + } + builder.put(key, valueSet); + tmpSize += valueCount; + } + try { + tmpMap = builder.build(); + } + catch (IllegalArgumentException e) { + throw (InvalidObjectException)new InvalidObjectException(e.getMessage()).initCause(e); + } + ImmutableMultimap.FieldSettersHolder.MAP_FIELD_SETTER.set((ImmutableMultimap)this, tmpMap); + ImmutableMultimap.FieldSettersHolder.SIZE_FIELD_SETTER.set((ImmutableMultimap)this, tmpSize); + ImmutableMultimap.FieldSettersHolder.EMPTY_SET_FIELD_SETTER.set(this, ImmutableSetMultimap.emptySet(valueComparator)); + } + + private static final class EntrySet + extends ImmutableSet> { + private final transient ImmutableSetMultimap multimap; + + EntrySet(ImmutableSetMultimap multimap) { + this.multimap = multimap; + } + + @Override + public boolean contains(@Nullable Object object) { + if (object instanceof Map.Entry) { + Map.Entry entry = (Map.Entry)object; + return this.multimap.containsEntry(entry.getKey(), entry.getValue()); + } + return false; + } + + @Override + public int size() { + return this.multimap.size(); + } + + @Override + public UnmodifiableIterator> iterator() { + return this.multimap.entryIterator(); + } + + @Override + boolean isPartialView() { + return false; + } + } + + public static final class Builder + extends ImmutableMultimap.Builder { + public Builder() { + this.builderMultimap = new BuilderMultimap(); + } + + @Override + public Builder put(K key, V value) { + this.builderMultimap.put(Preconditions.checkNotNull(key), Preconditions.checkNotNull(value)); + return this; + } + + @Override + public Builder put(Map.Entry entry) { + this.builderMultimap.put(Preconditions.checkNotNull(entry.getKey()), Preconditions.checkNotNull(entry.getValue())); + return this; + } + + @Override + public Builder putAll(K key, Iterable values) { + Collection collection = this.builderMultimap.get(Preconditions.checkNotNull(key)); + for (V value : values) { + collection.add(Preconditions.checkNotNull(value)); + } + return this; + } + + @Override + public Builder putAll(K key, V ... values) { + return this.putAll((Object)key, Arrays.asList(values)); + } + + @Override + public Builder putAll(Multimap multimap) { + for (Map.Entry> entry : multimap.asMap().entrySet()) { + this.putAll((Object)entry.getKey(), entry.getValue()); + } + return this; + } + + @Override + public Builder orderKeysBy(Comparator keyComparator) { + this.keyComparator = Preconditions.checkNotNull(keyComparator); + return this; + } + + @Override + public Builder orderValuesBy(Comparator valueComparator) { + super.orderValuesBy(valueComparator); + return this; + } + + @Override + public ImmutableSetMultimap build() { + if (this.keyComparator != null) { + BuilderMultimap sortedCopy = new BuilderMultimap(); + ArrayList entries = Lists.newArrayList(this.builderMultimap.asMap().entrySet()); + Collections.sort(entries, Ordering.from(this.keyComparator).onKeys()); + for (Map.Entry entry : entries) { + sortedCopy.putAll(entry.getKey(), (Iterable)entry.getValue()); + } + this.builderMultimap = sortedCopy; + } + return ImmutableSetMultimap.copyOf(this.builderMultimap, this.valueComparator); + } + } + + private static class BuilderMultimap + extends AbstractMapBasedMultimap { + private static final long serialVersionUID = 0L; + + BuilderMultimap() { + super(new LinkedHashMap()); + } + + @Override + Collection createCollection() { + return Sets.newLinkedHashSet(); + } + } +} diff --git a/src/com/google/common/collect/ImmutableSortedAsList.java b/src/com/google/common/collect/ImmutableSortedAsList.java new file mode 100644 index 0000000..f426559 --- /dev/null +++ b/src/com/google/common/collect/ImmutableSortedAsList.java @@ -0,0 +1,57 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableSortedSet; +import com.google.common.collect.RegularImmutableAsList; +import com.google.common.collect.RegularImmutableSortedSet; +import com.google.common.collect.SortedIterable; +import java.util.Comparator; +import javax.annotation.Nullable; + +@GwtCompatible(emulated=true) +final class ImmutableSortedAsList +extends RegularImmutableAsList +implements SortedIterable { + ImmutableSortedAsList(ImmutableSortedSet backingSet, ImmutableList backingList) { + super(backingSet, backingList); + } + + @Override + ImmutableSortedSet delegateCollection() { + return (ImmutableSortedSet)super.delegateCollection(); + } + + @Override + public Comparator comparator() { + return ((ImmutableSortedSet)this.delegateCollection()).comparator(); + } + + @Override + @GwtIncompatible(value="ImmutableSortedSet.indexOf") + public int indexOf(@Nullable Object target) { + int index = ((ImmutableSortedSet)this.delegateCollection()).indexOf(target); + return index >= 0 && this.get(index).equals(target) ? index : -1; + } + + @Override + @GwtIncompatible(value="ImmutableSortedSet.indexOf") + public int lastIndexOf(@Nullable Object target) { + return this.indexOf(target); + } + + @Override + public boolean contains(Object target) { + return this.indexOf(target) >= 0; + } + + @Override + @GwtIncompatible(value="super.subListUnchecked does not exist; inherited subList is valid if slow") + ImmutableList subListUnchecked(int fromIndex, int toIndex) { + return new RegularImmutableSortedSet(super.subListUnchecked(fromIndex, toIndex), this.comparator()).asList(); + } +} diff --git a/src/com/google/common/collect/ImmutableSortedMap.java b/src/com/google/common/collect/ImmutableSortedMap.java new file mode 100644 index 0000000..250b3fd --- /dev/null +++ b/src/com/google/common/collect/ImmutableSortedMap.java @@ -0,0 +1,367 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Preconditions; +import com.google.common.collect.EmptyImmutableSortedMap; +import com.google.common.collect.ImmutableCollection; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.ImmutableSortedMapFauxverideShim; +import com.google.common.collect.ImmutableSortedSet; +import com.google.common.collect.Maps; +import com.google.common.collect.Ordering; +import com.google.common.collect.RegularImmutableSortedMap; +import com.google.common.collect.RegularImmutableSortedSet; +import java.util.AbstractCollection; +import java.util.Arrays; +import java.util.Comparator; +import java.util.Map; +import java.util.NavigableMap; +import java.util.SortedMap; +import javax.annotation.Nullable; + +@GwtCompatible(serializable=true, emulated=true) +public abstract class ImmutableSortedMap +extends ImmutableSortedMapFauxverideShim +implements NavigableMap { + private static final Comparator NATURAL_ORDER = Ordering.natural(); + private static final ImmutableSortedMap NATURAL_EMPTY_MAP = new EmptyImmutableSortedMap(NATURAL_ORDER); + private transient ImmutableSortedMap descendingMap; + private static final long serialVersionUID = 0L; + + static ImmutableSortedMap emptyMap(Comparator comparator) { + if (Ordering.natural().equals(comparator)) { + return ImmutableSortedMap.of(); + } + return new EmptyImmutableSortedMap(comparator); + } + + static ImmutableSortedMap fromSortedEntries(Comparator comparator, int size, Map.Entry[] entries) { + if (size == 0) { + return ImmutableSortedMap.emptyMap(comparator); + } + ImmutableList.Builder keyBuilder = ImmutableList.builder(); + ImmutableList.Builder valueBuilder = ImmutableList.builder(); + for (int i = 0; i < size; ++i) { + Map.Entry entry = entries[i]; + keyBuilder.add(entry.getKey()); + valueBuilder.add(entry.getValue()); + } + return new RegularImmutableSortedMap(new RegularImmutableSortedSet(keyBuilder.build(), comparator), valueBuilder.build()); + } + + static ImmutableSortedMap from(ImmutableSortedSet keySet, ImmutableList valueList) { + if (keySet.isEmpty()) { + return ImmutableSortedMap.emptyMap(keySet.comparator()); + } + return new RegularImmutableSortedMap((RegularImmutableSortedSet)keySet, valueList); + } + + public static ImmutableSortedMap of() { + return NATURAL_EMPTY_MAP; + } + + public static , V> ImmutableSortedMap of(K k1, V v1) { + return ImmutableSortedMap.from(ImmutableSortedSet.of(k1), ImmutableList.of(v1)); + } + + public static , V> ImmutableSortedMap of(K k1, V v1, K k2, V v2) { + return ImmutableSortedMap.fromEntries(Ordering.natural(), false, 2, ImmutableSortedMap.entryOf(k1, v1), ImmutableSortedMap.entryOf(k2, v2)); + } + + public static , V> ImmutableSortedMap of(K k1, V v1, K k2, V v2, K k3, V v3) { + return ImmutableSortedMap.fromEntries(Ordering.natural(), false, 3, ImmutableSortedMap.entryOf(k1, v1), ImmutableSortedMap.entryOf(k2, v2), ImmutableSortedMap.entryOf(k3, v3)); + } + + public static , V> ImmutableSortedMap of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4) { + return ImmutableSortedMap.fromEntries(Ordering.natural(), false, 4, ImmutableSortedMap.entryOf(k1, v1), ImmutableSortedMap.entryOf(k2, v2), ImmutableSortedMap.entryOf(k3, v3), ImmutableSortedMap.entryOf(k4, v4)); + } + + public static , V> ImmutableSortedMap of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5) { + return ImmutableSortedMap.fromEntries(Ordering.natural(), false, 5, ImmutableSortedMap.entryOf(k1, v1), ImmutableSortedMap.entryOf(k2, v2), ImmutableSortedMap.entryOf(k3, v3), ImmutableSortedMap.entryOf(k4, v4), ImmutableSortedMap.entryOf(k5, v5)); + } + + public static ImmutableSortedMap copyOf(Map map) { + Ordering naturalOrder = Ordering.natural(); + return ImmutableSortedMap.copyOfInternal(map, naturalOrder); + } + + public static ImmutableSortedMap copyOf(Map map, Comparator comparator) { + return ImmutableSortedMap.copyOfInternal(map, Preconditions.checkNotNull(comparator)); + } + + public static ImmutableSortedMap copyOfSorted(SortedMap map) { + Comparator comparator = map.comparator(); + if (comparator == null) { + comparator = NATURAL_ORDER; + } + return ImmutableSortedMap.copyOfInternal(map, comparator); + } + + private static ImmutableSortedMap copyOfInternal(Map map, Comparator comparator) { + ImmutableSortedMap kvMap; + boolean sameComparator = false; + if (map instanceof SortedMap) { + SortedMap sortedMap = (SortedMap)map; + Comparator comparator2 = sortedMap.comparator(); + boolean bl = comparator2 == null ? comparator == NATURAL_ORDER : (sameComparator = comparator.equals(comparator2)); + } + if (sameComparator && map instanceof ImmutableSortedMap && !(kvMap = (ImmutableSortedMap)map).isPartialView()) { + return kvMap; + } + Map.Entry[] entries = map.entrySet().toArray(new Map.Entry[0]); + return ImmutableSortedMap.fromEntries(comparator, sameComparator, entries.length, entries); + } + + static ImmutableSortedMap fromEntries(Comparator comparator, boolean sameComparator, int size, Map.Entry ... entries) { + for (int i = 0; i < size; ++i) { + Map.Entry entry = entries[i]; + entries[i] = ImmutableSortedMap.entryOf(entry.getKey(), entry.getValue()); + } + if (!sameComparator) { + ImmutableSortedMap.sortEntries(comparator, size, entries); + ImmutableSortedMap.validateEntries(size, entries, comparator); + } + return ImmutableSortedMap.fromSortedEntries(comparator, size, entries); + } + + private static void sortEntries(Comparator comparator, int size, Map.Entry[] entries) { + Arrays.sort(entries, 0, size, Ordering.from(comparator).onKeys()); + } + + private static void validateEntries(int size, Map.Entry[] entries, Comparator comparator) { + for (int i = 1; i < size; ++i) { + ImmutableSortedMap.checkNoConflict(comparator.compare(entries[i - 1].getKey(), entries[i].getKey()) != 0, "key", entries[i - 1], entries[i]); + } + } + + public static , V> Builder naturalOrder() { + return new Builder(Ordering.natural()); + } + + public static Builder orderedBy(Comparator comparator) { + return new Builder(comparator); + } + + public static , V> Builder reverseOrder() { + return new Builder(Ordering.natural().reverse()); + } + + ImmutableSortedMap() { + } + + ImmutableSortedMap(ImmutableSortedMap descendingMap) { + this.descendingMap = descendingMap; + } + + @Override + public int size() { + return ((AbstractCollection)this.values()).size(); + } + + @Override + public boolean containsValue(@Nullable Object value) { + return ((ImmutableCollection)this.values()).contains(value); + } + + @Override + boolean isPartialView() { + return this.keySet().isPartialView() || ((ImmutableCollection)this.values()).isPartialView(); + } + + @Override + public ImmutableSet> entrySet() { + return super.entrySet(); + } + + @Override + public abstract ImmutableSortedSet keySet(); + + @Override + public abstract ImmutableCollection values(); + + @Override + public Comparator comparator() { + return ((ImmutableSortedSet)this.keySet()).comparator(); + } + + @Override + public K firstKey() { + return (K)((ImmutableSortedSet)this.keySet()).first(); + } + + @Override + public K lastKey() { + return (K)((ImmutableSortedSet)this.keySet()).last(); + } + + @Override + public ImmutableSortedMap headMap(K toKey) { + return this.headMap((Object)toKey, false); + } + + @Override + public abstract ImmutableSortedMap headMap(K var1, boolean var2); + + @Override + public ImmutableSortedMap subMap(K fromKey, K toKey) { + return this.subMap((Object)fromKey, true, (Object)toKey, false); + } + + @Override + public ImmutableSortedMap subMap(K fromKey, boolean fromInclusive, K toKey, boolean toInclusive) { + Preconditions.checkNotNull(fromKey); + Preconditions.checkNotNull(toKey); + Preconditions.checkArgument(this.comparator().compare(fromKey, toKey) <= 0, "expected fromKey <= toKey but %s > %s", fromKey, toKey); + return ((ImmutableSortedMap)this.headMap((Object)toKey, toInclusive)).tailMap((Object)fromKey, fromInclusive); + } + + @Override + public ImmutableSortedMap tailMap(K fromKey) { + return this.tailMap((Object)fromKey, true); + } + + @Override + public abstract ImmutableSortedMap tailMap(K var1, boolean var2); + + @Override + public Map.Entry lowerEntry(K key) { + return ((ImmutableSortedMap)this.headMap((Object)key, false)).lastEntry(); + } + + @Override + public K lowerKey(K key) { + return Maps.keyOrNull(this.lowerEntry(key)); + } + + @Override + public Map.Entry floorEntry(K key) { + return ((ImmutableSortedMap)this.headMap((Object)key, true)).lastEntry(); + } + + @Override + public K floorKey(K key) { + return Maps.keyOrNull(this.floorEntry(key)); + } + + @Override + public Map.Entry ceilingEntry(K key) { + return ((ImmutableSortedMap)this.tailMap((Object)key, true)).firstEntry(); + } + + @Override + public K ceilingKey(K key) { + return Maps.keyOrNull(this.ceilingEntry(key)); + } + + @Override + public Map.Entry higherEntry(K key) { + return ((ImmutableSortedMap)this.tailMap((Object)key, false)).firstEntry(); + } + + @Override + public K higherKey(K key) { + return Maps.keyOrNull(this.higherEntry(key)); + } + + @Override + public Map.Entry firstEntry() { + return this.isEmpty() ? null : (Map.Entry)((ImmutableCollection)((Object)this.entrySet())).asList().get(0); + } + + @Override + public Map.Entry lastEntry() { + return this.isEmpty() ? null : (Map.Entry)((ImmutableCollection)((Object)this.entrySet())).asList().get(this.size() - 1); + } + + @Override + @Deprecated + public final Map.Entry pollFirstEntry() { + throw new UnsupportedOperationException(); + } + + @Override + @Deprecated + public final Map.Entry pollLastEntry() { + throw new UnsupportedOperationException(); + } + + @Override + public ImmutableSortedMap descendingMap() { + ImmutableSortedMap result = this.descendingMap; + if (result == null) { + result = this.descendingMap = this.createDescendingMap(); + } + return result; + } + + abstract ImmutableSortedMap createDescendingMap(); + + @Override + public ImmutableSortedSet navigableKeySet() { + return this.keySet(); + } + + @Override + public ImmutableSortedSet descendingKeySet() { + return ((ImmutableSortedSet)this.keySet()).descendingSet(); + } + + @Override + Object writeReplace() { + return new SerializedForm(this); + } + + private static class SerializedForm + extends ImmutableMap.SerializedForm { + private final Comparator comparator; + private static final long serialVersionUID = 0L; + + SerializedForm(ImmutableSortedMap sortedMap) { + super(sortedMap); + this.comparator = sortedMap.comparator(); + } + + @Override + Object readResolve() { + Builder builder = new Builder(this.comparator); + return this.createMap(builder); + } + } + + public static class Builder + extends ImmutableMap.Builder { + private final Comparator comparator; + + public Builder(Comparator comparator) { + this.comparator = Preconditions.checkNotNull(comparator); + } + + @Override + public Builder put(K key, V value) { + super.put(key, value); + return this; + } + + @Override + public Builder put(Map.Entry entry) { + super.put(entry); + return this; + } + + @Override + public Builder putAll(Map map) { + super.putAll(map); + return this; + } + + @Override + public ImmutableSortedMap build() { + return ImmutableSortedMap.fromEntries(this.comparator, false, this.size, this.entries); + } + } +} diff --git a/src/com/google/common/collect/ImmutableSortedMapFauxverideShim.java b/src/com/google/common/collect/ImmutableSortedMapFauxverideShim.java new file mode 100644 index 0000000..ae8a712 --- /dev/null +++ b/src/com/google/common/collect/ImmutableSortedMapFauxverideShim.java @@ -0,0 +1,43 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableSortedMap; + +abstract class ImmutableSortedMapFauxverideShim +extends ImmutableMap { + ImmutableSortedMapFauxverideShim() { + } + + @Deprecated + public static ImmutableSortedMap.Builder builder() { + throw new UnsupportedOperationException(); + } + + @Deprecated + public static ImmutableSortedMap of(K k1, V v1) { + throw new UnsupportedOperationException(); + } + + @Deprecated + public static ImmutableSortedMap of(K k1, V v1, K k2, V v2) { + throw new UnsupportedOperationException(); + } + + @Deprecated + public static ImmutableSortedMap of(K k1, V v1, K k2, V v2, K k3, V v3) { + throw new UnsupportedOperationException(); + } + + @Deprecated + public static ImmutableSortedMap of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4) { + throw new UnsupportedOperationException(); + } + + @Deprecated + public static ImmutableSortedMap of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5) { + throw new UnsupportedOperationException(); + } +} diff --git a/src/com/google/common/collect/ImmutableSortedMultiset.java b/src/com/google/common/collect/ImmutableSortedMultiset.java new file mode 100644 index 0000000..fc2b542 --- /dev/null +++ b/src/com/google/common/collect/ImmutableSortedMultiset.java @@ -0,0 +1,276 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.base.Preconditions; +import com.google.common.collect.BoundType; +import com.google.common.collect.DescendingImmutableSortedMultiset; +import com.google.common.collect.EmptyImmutableSortedMultiset; +import com.google.common.collect.ImmutableCollection; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMultiset; +import com.google.common.collect.ImmutableSortedMultisetFauxverideShim; +import com.google.common.collect.ImmutableSortedSet; +import com.google.common.collect.Iterables; +import com.google.common.collect.Lists; +import com.google.common.collect.Multiset; +import com.google.common.collect.Ordering; +import com.google.common.collect.RegularImmutableSortedMultiset; +import com.google.common.collect.RegularImmutableSortedSet; +import com.google.common.collect.SortedMultiset; +import com.google.common.collect.TreeMultiset; +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.Comparator; +import java.util.Iterator; + +@Beta +@GwtIncompatible(value="hasn't been tested yet") +public abstract class ImmutableSortedMultiset +extends ImmutableSortedMultisetFauxverideShim +implements SortedMultiset { + private static final Comparator NATURAL_ORDER = Ordering.natural(); + private static final ImmutableSortedMultiset NATURAL_EMPTY_MULTISET = new EmptyImmutableSortedMultiset(NATURAL_ORDER); + transient ImmutableSortedMultiset descendingMultiset; + + public static ImmutableSortedMultiset of() { + return NATURAL_EMPTY_MULTISET; + } + + public static > ImmutableSortedMultiset of(E element) { + RegularImmutableSortedSet elementSet = (RegularImmutableSortedSet)ImmutableSortedSet.of(element); + int[] counts = new int[]{1}; + long[] cumulativeCounts = new long[]{0L, 1L}; + return new RegularImmutableSortedMultiset(elementSet, counts, cumulativeCounts, 0, 1); + } + + public static > ImmutableSortedMultiset of(E e1, E e2) { + return ImmutableSortedMultiset.copyOf(Ordering.natural(), Arrays.asList(e1, e2)); + } + + public static > ImmutableSortedMultiset of(E e1, E e2, E e3) { + return ImmutableSortedMultiset.copyOf(Ordering.natural(), Arrays.asList(e1, e2, e3)); + } + + public static > ImmutableSortedMultiset of(E e1, E e2, E e3, E e4) { + return ImmutableSortedMultiset.copyOf(Ordering.natural(), Arrays.asList(e1, e2, e3, e4)); + } + + public static > ImmutableSortedMultiset of(E e1, E e2, E e3, E e4, E e5) { + return ImmutableSortedMultiset.copyOf(Ordering.natural(), Arrays.asList(e1, e2, e3, e4, e5)); + } + + public static > ImmutableSortedMultiset of(E e1, E e2, E e3, E e4, E e5, E e6, E ... remaining) { + int size = remaining.length + 6; + ArrayList all = Lists.newArrayListWithCapacity(size); + Collections.addAll(all, e1, e2, e3, e4, e5, e6); + Collections.addAll(all, remaining); + return ImmutableSortedMultiset.copyOf(Ordering.natural(), all); + } + + public static > ImmutableSortedMultiset copyOf(E[] elements) { + return ImmutableSortedMultiset.copyOf(Ordering.natural(), Arrays.asList(elements)); + } + + public static ImmutableSortedMultiset copyOf(Iterable elements) { + Ordering naturalOrder = Ordering.natural(); + return ImmutableSortedMultiset.copyOf(naturalOrder, elements); + } + + public static ImmutableSortedMultiset copyOf(Iterator elements) { + Ordering naturalOrder = Ordering.natural(); + return ImmutableSortedMultiset.copyOf(naturalOrder, elements); + } + + public static ImmutableSortedMultiset copyOf(Comparator comparator, Iterator elements) { + Preconditions.checkNotNull(comparator); + return ((Builder)new Builder(comparator).addAll((Iterator)elements)).build(); + } + + public static ImmutableSortedMultiset copyOf(Comparator comparator, Iterable elements) { + ImmutableSortedMultiset multiset; + if (elements instanceof ImmutableSortedMultiset && comparator.equals((multiset = (ImmutableSortedMultiset)elements).comparator())) { + if (multiset.isPartialView()) { + return ImmutableSortedMultiset.copyOfSortedEntries(comparator, ((ImmutableCollection)((Object)multiset.entrySet())).asList()); + } + return multiset; + } + elements = Lists.newArrayList(elements); + TreeMultiset sortedCopy = TreeMultiset.create(Preconditions.checkNotNull(comparator)); + Iterables.addAll(sortedCopy, elements); + return ImmutableSortedMultiset.copyOfSortedEntries(comparator, sortedCopy.entrySet()); + } + + public static ImmutableSortedMultiset copyOfSorted(SortedMultiset sortedMultiset) { + return ImmutableSortedMultiset.copyOfSortedEntries(sortedMultiset.comparator(), Lists.newArrayList(sortedMultiset.entrySet())); + } + + private static ImmutableSortedMultiset copyOfSortedEntries(Comparator comparator, Collection> entries) { + if (entries.isEmpty()) { + return ImmutableSortedMultiset.emptyMultiset(comparator); + } + ImmutableList.Builder elementsBuilder = new ImmutableList.Builder(entries.size()); + int[] counts = new int[entries.size()]; + long[] cumulativeCounts = new long[entries.size() + 1]; + int i = 0; + for (Multiset.Entry entry : entries) { + elementsBuilder.add((Object)entry.getElement()); + counts[i] = entry.getCount(); + cumulativeCounts[i + 1] = cumulativeCounts[i] + (long)counts[i]; + ++i; + } + return new RegularImmutableSortedMultiset(new RegularImmutableSortedSet(elementsBuilder.build(), comparator), counts, cumulativeCounts, 0, entries.size()); + } + + static ImmutableSortedMultiset emptyMultiset(Comparator comparator) { + if (NATURAL_ORDER.equals(comparator)) { + return NATURAL_EMPTY_MULTISET; + } + return new EmptyImmutableSortedMultiset(comparator); + } + + ImmutableSortedMultiset() { + } + + @Override + public final Comparator comparator() { + return ((ImmutableSortedSet)this.elementSet()).comparator(); + } + + @Override + public abstract ImmutableSortedSet elementSet(); + + @Override + public ImmutableSortedMultiset descendingMultiset() { + ImmutableSortedMultiset result = this.descendingMultiset; + if (result == null) { + this.descendingMultiset = new DescendingImmutableSortedMultiset(this); + return this.descendingMultiset; + } + return result; + } + + @Override + @Deprecated + public final Multiset.Entry pollFirstEntry() { + throw new UnsupportedOperationException(); + } + + @Override + @Deprecated + public final Multiset.Entry pollLastEntry() { + throw new UnsupportedOperationException(); + } + + @Override + public abstract ImmutableSortedMultiset headMultiset(E var1, BoundType var2); + + @Override + public ImmutableSortedMultiset subMultiset(E lowerBound, BoundType lowerBoundType, E upperBound, BoundType upperBoundType) { + Preconditions.checkArgument(this.comparator().compare(lowerBound, upperBound) <= 0, "Expected lowerBound <= upperBound but %s > %s", lowerBound, upperBound); + return ((ImmutableSortedMultiset)this.tailMultiset((Object)lowerBound, lowerBoundType)).headMultiset((Object)upperBound, upperBoundType); + } + + @Override + public abstract ImmutableSortedMultiset tailMultiset(E var1, BoundType var2); + + public static Builder orderedBy(Comparator comparator) { + return new Builder(comparator); + } + + public static > Builder reverseOrder() { + return new Builder(Ordering.natural().reverse()); + } + + public static > Builder naturalOrder() { + return new Builder(Ordering.natural()); + } + + @Override + Object writeReplace() { + return new SerializedForm(this); + } + + private static final class SerializedForm + implements Serializable { + Comparator comparator; + E[] elements; + int[] counts; + + SerializedForm(SortedMultiset multiset) { + this.comparator = multiset.comparator(); + int n = multiset.entrySet().size(); + this.elements = new Object[n]; + this.counts = new int[n]; + int i = 0; + for (Multiset.Entry entry : multiset.entrySet()) { + this.elements[i] = entry.getElement(); + this.counts[i] = entry.getCount(); + ++i; + } + } + + Object readResolve() { + int n = this.elements.length; + Builder builder = new Builder(this.comparator); + for (int i = 0; i < n; ++i) { + builder.addCopies((Object)this.elements[i], this.counts[i]); + } + return builder.build(); + } + } + + public static class Builder + extends ImmutableMultiset.Builder { + public Builder(Comparator comparator) { + super(TreeMultiset.create(Preconditions.checkNotNull(comparator))); + } + + @Override + public Builder add(E element) { + super.add((Object)element); + return this; + } + + @Override + public Builder addCopies(E element, int occurrences) { + super.addCopies(element, occurrences); + return this; + } + + @Override + public Builder setCount(E element, int count) { + super.setCount(element, count); + return this; + } + + @Override + public Builder add(E ... elements) { + super.add((Object[])elements); + return this; + } + + @Override + public Builder addAll(Iterable elements) { + super.addAll((Iterable)elements); + return this; + } + + @Override + public Builder addAll(Iterator elements) { + super.addAll((Iterator)elements); + return this; + } + + @Override + public ImmutableSortedMultiset build() { + return ImmutableSortedMultiset.copyOfSorted((SortedMultiset)this.contents); + } + } +} diff --git a/src/com/google/common/collect/ImmutableSortedMultisetFauxverideShim.java b/src/com/google/common/collect/ImmutableSortedMultisetFauxverideShim.java new file mode 100644 index 0000000..5c52e80 --- /dev/null +++ b/src/com/google/common/collect/ImmutableSortedMultisetFauxverideShim.java @@ -0,0 +1,53 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.collect.ImmutableMultiset; +import com.google.common.collect.ImmutableSortedMultiset; + +abstract class ImmutableSortedMultisetFauxverideShim +extends ImmutableMultiset { + ImmutableSortedMultisetFauxverideShim() { + } + + @Deprecated + public static ImmutableSortedMultiset.Builder builder() { + throw new UnsupportedOperationException(); + } + + @Deprecated + public static ImmutableSortedMultiset of(E element) { + throw new UnsupportedOperationException(); + } + + @Deprecated + public static ImmutableSortedMultiset of(E e1, E e2) { + throw new UnsupportedOperationException(); + } + + @Deprecated + public static ImmutableSortedMultiset of(E e1, E e2, E e3) { + throw new UnsupportedOperationException(); + } + + @Deprecated + public static ImmutableSortedMultiset of(E e1, E e2, E e3, E e4) { + throw new UnsupportedOperationException(); + } + + @Deprecated + public static ImmutableSortedMultiset of(E e1, E e2, E e3, E e4, E e5) { + throw new UnsupportedOperationException(); + } + + @Deprecated + public static ImmutableSortedMultiset of(E e1, E e2, E e3, E e4, E e5, E e6, E ... remaining) { + throw new UnsupportedOperationException(); + } + + @Deprecated + public static ImmutableSortedMultiset copyOf(E[] elements) { + throw new UnsupportedOperationException(); + } +} diff --git a/src/com/google/common/collect/ImmutableSortedSet.java b/src/com/google/common/collect/ImmutableSortedSet.java new file mode 100644 index 0000000..02a7986 --- /dev/null +++ b/src/com/google/common/collect/ImmutableSortedSet.java @@ -0,0 +1,365 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.base.Preconditions; +import com.google.common.collect.DescendingImmutableSortedSet; +import com.google.common.collect.EmptyImmutableSortedSet; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.ImmutableSortedSetFauxverideShim; +import com.google.common.collect.Iterables; +import com.google.common.collect.Iterators; +import com.google.common.collect.ObjectArrays; +import com.google.common.collect.Ordering; +import com.google.common.collect.RegularImmutableSortedSet; +import com.google.common.collect.SortedIterable; +import com.google.common.collect.SortedIterables; +import com.google.common.collect.UnmodifiableIterator; +import java.io.InvalidObjectException; +import java.io.ObjectInputStream; +import java.io.Serializable; +import java.util.Arrays; +import java.util.Collection; +import java.util.Comparator; +import java.util.Iterator; +import java.util.NavigableSet; +import java.util.SortedSet; +import javax.annotation.Nullable; + +@GwtCompatible(serializable=true, emulated=true) +public abstract class ImmutableSortedSet +extends ImmutableSortedSetFauxverideShim +implements NavigableSet, +SortedIterable { + private static final Comparator NATURAL_ORDER = Ordering.natural(); + private static final ImmutableSortedSet NATURAL_EMPTY_SET = new EmptyImmutableSortedSet(NATURAL_ORDER); + final transient Comparator comparator; + @GwtIncompatible(value="NavigableSet") + transient ImmutableSortedSet descendingSet; + + private static ImmutableSortedSet emptySet() { + return NATURAL_EMPTY_SET; + } + + static ImmutableSortedSet emptySet(Comparator comparator) { + if (NATURAL_ORDER.equals(comparator)) { + return ImmutableSortedSet.emptySet(); + } + return new EmptyImmutableSortedSet(comparator); + } + + public static ImmutableSortedSet of() { + return ImmutableSortedSet.emptySet(); + } + + public static > ImmutableSortedSet of(E element) { + return new RegularImmutableSortedSet(ImmutableList.of(element), Ordering.natural()); + } + + public static > ImmutableSortedSet of(E e1, E e2) { + return ImmutableSortedSet.construct(Ordering.natural(), 2, e1, e2); + } + + public static > ImmutableSortedSet of(E e1, E e2, E e3) { + return ImmutableSortedSet.construct(Ordering.natural(), 3, e1, e2, e3); + } + + public static > ImmutableSortedSet of(E e1, E e2, E e3, E e4) { + return ImmutableSortedSet.construct(Ordering.natural(), 4, e1, e2, e3, e4); + } + + public static > ImmutableSortedSet of(E e1, E e2, E e3, E e4, E e5) { + return ImmutableSortedSet.construct(Ordering.natural(), 5, e1, e2, e3, e4, e5); + } + + public static > ImmutableSortedSet of(E e1, E e2, E e3, E e4, E e5, E e6, E ... remaining) { + Comparable[] contents = new Comparable[6 + remaining.length]; + contents[0] = e1; + contents[1] = e2; + contents[2] = e3; + contents[3] = e4; + contents[4] = e5; + contents[5] = e6; + System.arraycopy(remaining, 0, contents, 6, remaining.length); + return ImmutableSortedSet.construct(Ordering.natural(), contents.length, contents); + } + + public static > ImmutableSortedSet copyOf(E[] elements) { + return ImmutableSortedSet.construct(Ordering.natural(), elements.length, (Object[])elements.clone()); + } + + public static ImmutableSortedSet copyOf(Iterable elements) { + Ordering naturalOrder = Ordering.natural(); + return ImmutableSortedSet.copyOf(naturalOrder, elements); + } + + public static ImmutableSortedSet copyOf(Collection elements) { + Ordering naturalOrder = Ordering.natural(); + return ImmutableSortedSet.copyOf(naturalOrder, elements); + } + + public static ImmutableSortedSet copyOf(Iterator elements) { + Ordering naturalOrder = Ordering.natural(); + return ImmutableSortedSet.copyOf(naturalOrder, elements); + } + + public static ImmutableSortedSet copyOf(Comparator comparator, Iterator elements) { + return ((Builder)new Builder(comparator).addAll((Iterator)elements)).build(); + } + + public static ImmutableSortedSet copyOf(Comparator comparator, Iterable elements) { + ImmutableSortedSet original; + Preconditions.checkNotNull(comparator); + boolean hasSameComparator = SortedIterables.hasSameComparator(comparator, elements); + if (hasSameComparator && elements instanceof ImmutableSortedSet && !(original = (ImmutableSortedSet)elements).isPartialView()) { + return original; + } + Object[] array = Iterables.toArray(elements); + return ImmutableSortedSet.construct(comparator, array.length, array); + } + + public static ImmutableSortedSet copyOf(Comparator comparator, Collection elements) { + return ImmutableSortedSet.copyOf(comparator, elements); + } + + public static ImmutableSortedSet copyOfSorted(SortedSet sortedSet) { + Comparator comparator = SortedIterables.comparator(sortedSet); + ImmutableList list = ImmutableList.copyOf(sortedSet); + if (list.isEmpty()) { + return ImmutableSortedSet.emptySet(comparator); + } + return new RegularImmutableSortedSet(list, comparator); + } + + static ImmutableSortedSet construct(Comparator comparator, int n, E ... contents) { + if (n == 0) { + return ImmutableSortedSet.emptySet(comparator); + } + ObjectArrays.checkElementsNotNull((Object[])contents, n); + Arrays.sort(contents, 0, n, comparator); + int uniques = 1; + for (int i = 1; i < n; ++i) { + E cur = contents[i]; + E prev = contents[uniques - 1]; + if (comparator.compare(cur, prev) == 0) continue; + contents[uniques++] = cur; + } + Arrays.fill(contents, uniques, n, null); + return new RegularImmutableSortedSet(ImmutableList.asImmutableList(contents, uniques), comparator); + } + + public static Builder orderedBy(Comparator comparator) { + return new Builder(comparator); + } + + public static > Builder reverseOrder() { + return new Builder(Ordering.natural().reverse()); + } + + public static > Builder naturalOrder() { + return new Builder(Ordering.natural()); + } + + int unsafeCompare(Object a, Object b) { + return ImmutableSortedSet.unsafeCompare(this.comparator, a, b); + } + + static int unsafeCompare(Comparator comparator, Object a, Object b) { + Comparator unsafeComparator = comparator; + return unsafeComparator.compare(a, b); + } + + ImmutableSortedSet(Comparator comparator) { + this.comparator = comparator; + } + + @Override + public Comparator comparator() { + return this.comparator; + } + + @Override + public abstract UnmodifiableIterator iterator(); + + @Override + public ImmutableSortedSet headSet(E toElement) { + return this.headSet((Object)toElement, false); + } + + @Override + @GwtIncompatible(value="NavigableSet") + public ImmutableSortedSet headSet(E toElement, boolean inclusive) { + return this.headSetImpl(Preconditions.checkNotNull(toElement), inclusive); + } + + @Override + public ImmutableSortedSet subSet(E fromElement, E toElement) { + return this.subSet((Object)fromElement, true, (Object)toElement, false); + } + + @Override + @GwtIncompatible(value="NavigableSet") + public ImmutableSortedSet subSet(E fromElement, boolean fromInclusive, E toElement, boolean toInclusive) { + Preconditions.checkNotNull(fromElement); + Preconditions.checkNotNull(toElement); + Preconditions.checkArgument(this.comparator.compare(fromElement, toElement) <= 0); + return this.subSetImpl(fromElement, fromInclusive, toElement, toInclusive); + } + + @Override + public ImmutableSortedSet tailSet(E fromElement) { + return this.tailSet((Object)fromElement, true); + } + + @Override + @GwtIncompatible(value="NavigableSet") + public ImmutableSortedSet tailSet(E fromElement, boolean inclusive) { + return this.tailSetImpl(Preconditions.checkNotNull(fromElement), inclusive); + } + + abstract ImmutableSortedSet headSetImpl(E var1, boolean var2); + + abstract ImmutableSortedSet subSetImpl(E var1, boolean var2, E var3, boolean var4); + + abstract ImmutableSortedSet tailSetImpl(E var1, boolean var2); + + @Override + @GwtIncompatible(value="NavigableSet") + public E lower(E e) { + return Iterators.getNext(((ImmutableSortedSet)this.headSet((Object)e, false)).descendingIterator(), null); + } + + @Override + @GwtIncompatible(value="NavigableSet") + public E floor(E e) { + return Iterators.getNext(((ImmutableSortedSet)this.headSet((Object)e, true)).descendingIterator(), null); + } + + @Override + @GwtIncompatible(value="NavigableSet") + public E ceiling(E e) { + return Iterables.getFirst(this.tailSet((Object)e, true), null); + } + + @Override + @GwtIncompatible(value="NavigableSet") + public E higher(E e) { + return Iterables.getFirst(this.tailSet((Object)e, false), null); + } + + @Override + public E first() { + return this.iterator().next(); + } + + @Override + public E last() { + return this.descendingIterator().next(); + } + + @Override + @Deprecated + @GwtIncompatible(value="NavigableSet") + public final E pollFirst() { + throw new UnsupportedOperationException(); + } + + @Override + @Deprecated + @GwtIncompatible(value="NavigableSet") + public final E pollLast() { + throw new UnsupportedOperationException(); + } + + @Override + @GwtIncompatible(value="NavigableSet") + public ImmutableSortedSet descendingSet() { + ImmutableSortedSet result = this.descendingSet; + if (result == null) { + result = this.descendingSet = this.createDescendingSet(); + result.descendingSet = this; + } + return result; + } + + @GwtIncompatible(value="NavigableSet") + ImmutableSortedSet createDescendingSet() { + return new DescendingImmutableSortedSet(this); + } + + @Override + @GwtIncompatible(value="NavigableSet") + public abstract UnmodifiableIterator descendingIterator(); + + abstract int indexOf(@Nullable Object var1); + + private void readObject(ObjectInputStream stream) throws InvalidObjectException { + throw new InvalidObjectException("Use SerializedForm"); + } + + @Override + Object writeReplace() { + return new SerializedForm(this.comparator, this.toArray()); + } + + private static class SerializedForm + implements Serializable { + final Comparator comparator; + final Object[] elements; + private static final long serialVersionUID = 0L; + + public SerializedForm(Comparator comparator, Object[] elements) { + this.comparator = comparator; + this.elements = elements; + } + + Object readResolve() { + return ((Builder)new Builder(this.comparator).add(this.elements)).build(); + } + } + + public static final class Builder + extends ImmutableSet.Builder { + private final Comparator comparator; + + public Builder(Comparator comparator) { + this.comparator = Preconditions.checkNotNull(comparator); + } + + @Override + public Builder add(E element) { + super.add((Object)element); + return this; + } + + @Override + public Builder add(E ... elements) { + super.add((Object[])elements); + return this; + } + + @Override + public Builder addAll(Iterable elements) { + super.addAll((Iterable)elements); + return this; + } + + @Override + public Builder addAll(Iterator elements) { + super.addAll((Iterator)elements); + return this; + } + + @Override + public ImmutableSortedSet build() { + Object[] contentsArray = this.contents; + ImmutableSortedSet result = ImmutableSortedSet.construct(this.comparator, this.size, contentsArray); + this.size = result.size(); + return result; + } + } +} diff --git a/src/com/google/common/collect/ImmutableSortedSetFauxverideShim.java b/src/com/google/common/collect/ImmutableSortedSetFauxverideShim.java new file mode 100644 index 0000000..1b83c78 --- /dev/null +++ b/src/com/google/common/collect/ImmutableSortedSetFauxverideShim.java @@ -0,0 +1,53 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.ImmutableSortedSet; + +abstract class ImmutableSortedSetFauxverideShim +extends ImmutableSet { + ImmutableSortedSetFauxverideShim() { + } + + @Deprecated + public static ImmutableSortedSet.Builder builder() { + throw new UnsupportedOperationException(); + } + + @Deprecated + public static ImmutableSortedSet of(E element) { + throw new UnsupportedOperationException(); + } + + @Deprecated + public static ImmutableSortedSet of(E e1, E e2) { + throw new UnsupportedOperationException(); + } + + @Deprecated + public static ImmutableSortedSet of(E e1, E e2, E e3) { + throw new UnsupportedOperationException(); + } + + @Deprecated + public static ImmutableSortedSet of(E e1, E e2, E e3, E e4) { + throw new UnsupportedOperationException(); + } + + @Deprecated + public static ImmutableSortedSet of(E e1, E e2, E e3, E e4, E e5) { + throw new UnsupportedOperationException(); + } + + @Deprecated + public static ImmutableSortedSet of(E e1, E e2, E e3, E e4, E e5, E e6, E ... remaining) { + throw new UnsupportedOperationException(); + } + + @Deprecated + public static ImmutableSortedSet copyOf(E[] elements) { + throw new UnsupportedOperationException(); + } +} diff --git a/src/com/google/common/collect/ImmutableTable.java b/src/com/google/common/collect/ImmutableTable.java new file mode 100644 index 0000000..f1e4e10 --- /dev/null +++ b/src/com/google/common/collect/ImmutableTable.java @@ -0,0 +1,215 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.MoreObjects; +import com.google.common.base.Preconditions; +import com.google.common.collect.AbstractTable; +import com.google.common.collect.ImmutableCollection; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Iterables; +import com.google.common.collect.Lists; +import com.google.common.collect.RegularImmutableTable; +import com.google.common.collect.SingletonImmutableTable; +import com.google.common.collect.SparseImmutableTable; +import com.google.common.collect.Table; +import com.google.common.collect.Tables; +import com.google.common.collect.UnmodifiableIterator; +import java.util.Comparator; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import javax.annotation.Nullable; + +@GwtCompatible +public abstract class ImmutableTable +extends AbstractTable { + private static final ImmutableTable EMPTY = new SparseImmutableTable(ImmutableList.of(), ImmutableSet.of(), ImmutableSet.of()); + + public static ImmutableTable of() { + return EMPTY; + } + + public static ImmutableTable of(R rowKey, C columnKey, V value) { + return new SingletonImmutableTable(rowKey, columnKey, value); + } + + public static ImmutableTable copyOf(Table table) { + if (table instanceof ImmutableTable) { + ImmutableTable parameterizedTable = (ImmutableTable)table; + return parameterizedTable; + } + int size = table.size(); + switch (size) { + case 0: { + return ImmutableTable.of(); + } + case 1: { + Table.Cell onlyCell = Iterables.getOnlyElement(table.cellSet()); + return ImmutableTable.of(onlyCell.getRowKey(), onlyCell.getColumnKey(), onlyCell.getValue()); + } + } + ImmutableSet.Builder cellSetBuilder = ImmutableSet.builder(); + for (Table.Cell cell : table.cellSet()) { + cellSetBuilder.add(ImmutableTable.cellOf(cell.getRowKey(), cell.getColumnKey(), cell.getValue())); + } + return RegularImmutableTable.forCells(cellSetBuilder.build()); + } + + public static Builder builder() { + return new Builder(); + } + + static Table.Cell cellOf(R rowKey, C columnKey, V value) { + return Tables.immutableCell(Preconditions.checkNotNull(rowKey), Preconditions.checkNotNull(columnKey), Preconditions.checkNotNull(value)); + } + + ImmutableTable() { + } + + @Override + public ImmutableSet> cellSet() { + return (ImmutableSet)super.cellSet(); + } + + @Override + abstract ImmutableSet> createCellSet(); + + @Override + final UnmodifiableIterator> cellIterator() { + throw new AssertionError((Object)"should never be called"); + } + + @Override + public ImmutableCollection values() { + return (ImmutableCollection)super.values(); + } + + @Override + abstract ImmutableCollection createValues(); + + @Override + final Iterator valuesIterator() { + throw new AssertionError((Object)"should never be called"); + } + + @Override + public ImmutableMap column(C columnKey) { + Preconditions.checkNotNull(columnKey); + return MoreObjects.firstNonNull((ImmutableMap)((ImmutableMap)this.columnMap()).get(columnKey), ImmutableMap.of()); + } + + @Override + public ImmutableSet columnKeySet() { + return ((ImmutableMap)this.columnMap()).keySet(); + } + + @Override + public abstract ImmutableMap> columnMap(); + + @Override + public ImmutableMap row(R rowKey) { + Preconditions.checkNotNull(rowKey); + return MoreObjects.firstNonNull((ImmutableMap)((ImmutableMap)this.rowMap()).get(rowKey), ImmutableMap.of()); + } + + @Override + public ImmutableSet rowKeySet() { + return ((ImmutableMap)this.rowMap()).keySet(); + } + + @Override + public abstract ImmutableMap> rowMap(); + + @Override + public boolean contains(@Nullable Object rowKey, @Nullable Object columnKey) { + return this.get(rowKey, columnKey) != null; + } + + @Override + public boolean containsValue(@Nullable Object value) { + return ((ImmutableCollection)this.values()).contains(value); + } + + @Override + @Deprecated + public final void clear() { + throw new UnsupportedOperationException(); + } + + @Override + @Deprecated + public final V put(R rowKey, C columnKey, V value) { + throw new UnsupportedOperationException(); + } + + @Override + @Deprecated + public final void putAll(Table table) { + throw new UnsupportedOperationException(); + } + + @Override + @Deprecated + public final V remove(Object rowKey, Object columnKey) { + throw new UnsupportedOperationException(); + } + + public static final class Builder { + private final List> cells = Lists.newArrayList(); + private Comparator rowComparator; + private Comparator columnComparator; + + public Builder orderRowsBy(Comparator rowComparator) { + this.rowComparator = Preconditions.checkNotNull(rowComparator); + return this; + } + + public Builder orderColumnsBy(Comparator columnComparator) { + this.columnComparator = Preconditions.checkNotNull(columnComparator); + return this; + } + + public Builder put(R rowKey, C columnKey, V value) { + this.cells.add(ImmutableTable.cellOf(rowKey, columnKey, value)); + return this; + } + + public Builder put(Table.Cell cell) { + if (cell instanceof Tables.ImmutableCell) { + Preconditions.checkNotNull(cell.getRowKey()); + Preconditions.checkNotNull(cell.getColumnKey()); + Preconditions.checkNotNull(cell.getValue()); + Table.Cell immutableCell = cell; + this.cells.add(immutableCell); + } else { + this.put(cell.getRowKey(), cell.getColumnKey(), cell.getValue()); + } + return this; + } + + public Builder putAll(Table table) { + for (Table.Cell cell : table.cellSet()) { + this.put(cell); + } + return this; + } + + public ImmutableTable build() { + int size = this.cells.size(); + switch (size) { + case 0: { + return ImmutableTable.of(); + } + case 1: { + return new SingletonImmutableTable(Iterables.getOnlyElement(this.cells)); + } + } + return RegularImmutableTable.forCells(this.cells, this.rowComparator, this.columnComparator); + } + } +} diff --git a/src/com/google/common/collect/Interner.java b/src/com/google/common/collect/Interner.java new file mode 100644 index 0000000..d342bc9 --- /dev/null +++ b/src/com/google/common/collect/Interner.java @@ -0,0 +1,11 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.Beta; + +@Beta +public interface Interner { + public E intern(E var1); +} diff --git a/src/com/google/common/collect/Interners.java b/src/com/google/common/collect/Interners.java new file mode 100644 index 0000000..a2d3e77 --- /dev/null +++ b/src/com/google/common/collect/Interners.java @@ -0,0 +1,93 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.base.Equivalence; +import com.google.common.base.Function; +import com.google.common.base.Preconditions; +import com.google.common.collect.Interner; +import com.google.common.collect.MapMaker; +import com.google.common.collect.MapMakerInternalMap; +import java.util.concurrent.ConcurrentMap; + +@Beta +public final class Interners { + private Interners() { + } + + public static Interner newStrongInterner() { + final ConcurrentMap map = new MapMaker().makeMap(); + return new Interner(){ + + @Override + public E intern(E sample) { + Object canonical = map.putIfAbsent(Preconditions.checkNotNull(sample), sample); + return canonical == null ? sample : canonical; + } + }; + } + + @GwtIncompatible(value="java.lang.ref.WeakReference") + public static Interner newWeakInterner() { + return new WeakInterner(); + } + + public static Function asFunction(Interner interner) { + return new InternerFunction(Preconditions.checkNotNull(interner)); + } + + private static class InternerFunction + implements Function { + private final Interner interner; + + public InternerFunction(Interner interner) { + this.interner = interner; + } + + @Override + public E apply(E input) { + return this.interner.intern(input); + } + + public int hashCode() { + return this.interner.hashCode(); + } + + @Override + public boolean equals(Object other) { + if (other instanceof InternerFunction) { + InternerFunction that = (InternerFunction)other; + return this.interner.equals(that.interner); + } + return false; + } + } + + private static class WeakInterner + implements Interner { + private final MapMakerInternalMap map = ((MapMaker)new MapMaker().weakKeys().keyEquivalence((Equivalence)Equivalence.equals())).makeCustomMap(); + + private WeakInterner() { + } + + @Override + public E intern(E sample) { + Dummy sneaky; + do { + E canonical; + MapMakerInternalMap.ReferenceEntry entry; + if ((entry = this.map.getEntry(sample)) == null || (canonical = entry.getKey()) == null) continue; + return canonical; + } while ((sneaky = this.map.putIfAbsent(sample, Dummy.VALUE)) != null); + return sample; + } + + private static enum Dummy { + VALUE; + + } + } +} diff --git a/src/com/google/common/collect/Iterables.java b/src/com/google/common/collect/Iterables.java new file mode 100644 index 0000000..aedb566 --- /dev/null +++ b/src/com/google/common/collect/Iterables.java @@ -0,0 +1,532 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.base.Function; +import com.google.common.base.Optional; +import com.google.common.base.Preconditions; +import com.google.common.base.Predicate; +import com.google.common.collect.AbstractIterator; +import com.google.common.collect.CollectPreconditions; +import com.google.common.collect.Collections2; +import com.google.common.collect.FluentIterable; +import com.google.common.collect.ImmutableCollection; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.Iterators; +import com.google.common.collect.Lists; +import com.google.common.collect.Multiset; +import com.google.common.collect.ObjectArrays; +import com.google.common.collect.TransformedIterator; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Comparator; +import java.util.Iterator; +import java.util.List; +import java.util.NoSuchElementException; +import java.util.Queue; +import java.util.RandomAccess; +import java.util.Set; +import javax.annotation.Nullable; + +@GwtCompatible(emulated=true) +public final class Iterables { + private Iterables() { + } + + public static Iterable unmodifiableIterable(Iterable iterable) { + Preconditions.checkNotNull(iterable); + if (iterable instanceof UnmodifiableIterable || iterable instanceof ImmutableCollection) { + return iterable; + } + return new UnmodifiableIterable(iterable); + } + + @Deprecated + public static Iterable unmodifiableIterable(ImmutableCollection iterable) { + return Preconditions.checkNotNull(iterable); + } + + public static int size(Iterable iterable) { + return iterable instanceof Collection ? ((Collection)iterable).size() : Iterators.size(iterable.iterator()); + } + + public static boolean contains(Iterable iterable, @Nullable Object element) { + if (iterable instanceof Collection) { + Collection collection = (Collection)iterable; + return Collections2.safeContains(collection, element); + } + return Iterators.contains(iterable.iterator(), element); + } + + public static boolean removeAll(Iterable removeFrom, Collection elementsToRemove) { + return removeFrom instanceof Collection ? ((Collection)removeFrom).removeAll(Preconditions.checkNotNull(elementsToRemove)) : Iterators.removeAll(removeFrom.iterator(), elementsToRemove); + } + + public static boolean retainAll(Iterable removeFrom, Collection elementsToRetain) { + return removeFrom instanceof Collection ? ((Collection)removeFrom).retainAll(Preconditions.checkNotNull(elementsToRetain)) : Iterators.retainAll(removeFrom.iterator(), elementsToRetain); + } + + public static boolean removeIf(Iterable removeFrom, Predicate predicate) { + if (removeFrom instanceof RandomAccess && removeFrom instanceof List) { + return Iterables.removeIfFromRandomAccessList((List)removeFrom, Preconditions.checkNotNull(predicate)); + } + return Iterators.removeIf(removeFrom.iterator(), predicate); + } + + private static boolean removeIfFromRandomAccessList(List list, Predicate predicate) { + int from; + int to = 0; + for (from = 0; from < list.size(); ++from) { + T element = list.get(from); + if (predicate.apply(element)) continue; + if (from > to) { + try { + list.set(to, element); + } + catch (UnsupportedOperationException e) { + Iterables.slowRemoveIfForRemainingElements(list, predicate, to, from); + return true; + } + } + ++to; + } + list.subList(to, list.size()).clear(); + return from != to; + } + + private static void slowRemoveIfForRemainingElements(List list, Predicate predicate, int to, int from) { + int n; + for (n = list.size() - 1; n > from; --n) { + if (!predicate.apply(list.get(n))) continue; + list.remove(n); + } + for (n = from - 1; n >= to; --n) { + list.remove(n); + } + } + + @Nullable + static T removeFirstMatching(Iterable removeFrom, Predicate predicate) { + Preconditions.checkNotNull(predicate); + Iterator iterator = removeFrom.iterator(); + while (iterator.hasNext()) { + T next = iterator.next(); + if (!predicate.apply(next)) continue; + iterator.remove(); + return next; + } + return null; + } + + public static boolean elementsEqual(Iterable iterable1, Iterable iterable2) { + if (iterable1 instanceof Collection && iterable2 instanceof Collection) { + Collection collection1 = (Collection)iterable1; + Collection collection2 = (Collection)iterable2; + if (collection1.size() != collection2.size()) { + return false; + } + } + return Iterators.elementsEqual(iterable1.iterator(), iterable2.iterator()); + } + + public static String toString(Iterable iterable) { + return Iterators.toString(iterable.iterator()); + } + + public static T getOnlyElement(Iterable iterable) { + return Iterators.getOnlyElement(iterable.iterator()); + } + + @Nullable + public static T getOnlyElement(Iterable iterable, @Nullable T defaultValue) { + return Iterators.getOnlyElement(iterable.iterator(), defaultValue); + } + + @GwtIncompatible(value="Array.newInstance(Class, int)") + public static T[] toArray(Iterable iterable, Class type) { + Collection collection = Iterables.toCollection(iterable); + T[] array = ObjectArrays.newArray(type, collection.size()); + return collection.toArray(array); + } + + static Object[] toArray(Iterable iterable) { + return Iterables.toCollection(iterable).toArray(); + } + + private static Collection toCollection(Iterable iterable) { + return iterable instanceof Collection ? (ArrayList)iterable : Lists.newArrayList(iterable.iterator()); + } + + public static boolean addAll(Collection addTo, Iterable elementsToAdd) { + if (elementsToAdd instanceof Collection) { + Collection c = Collections2.cast(elementsToAdd); + return addTo.addAll(c); + } + return Iterators.addAll(addTo, Preconditions.checkNotNull(elementsToAdd).iterator()); + } + + public static int frequency(Iterable iterable, @Nullable Object element) { + if (iterable instanceof Multiset) { + return ((Multiset)iterable).count(element); + } + if (iterable instanceof Set) { + return ((Set)iterable).contains(element) ? 1 : 0; + } + return Iterators.frequency(iterable.iterator(), element); + } + + public static Iterable cycle(final Iterable iterable) { + Preconditions.checkNotNull(iterable); + return new FluentIterable(){ + + @Override + public Iterator iterator() { + return Iterators.cycle(iterable); + } + + @Override + public String toString() { + return String.valueOf(iterable.toString()).concat(" (cycled)"); + } + }; + } + + public static Iterable cycle(T ... elements) { + return Iterables.cycle(Lists.newArrayList(elements)); + } + + public static Iterable concat(Iterable a, Iterable b) { + return Iterables.concat(ImmutableList.of(a, b)); + } + + public static Iterable concat(Iterable a, Iterable b, Iterable c) { + return Iterables.concat(ImmutableList.of(a, b, c)); + } + + public static Iterable concat(Iterable a, Iterable b, Iterable c, Iterable d) { + return Iterables.concat(ImmutableList.of(a, b, c, d)); + } + + public static Iterable concat(Iterable ... inputs) { + return Iterables.concat(ImmutableList.copyOf(inputs)); + } + + public static Iterable concat(final Iterable> inputs) { + Preconditions.checkNotNull(inputs); + return new FluentIterable(){ + + @Override + public Iterator iterator() { + return Iterators.concat(Iterables.iterators(inputs)); + } + }; + } + + private static Iterator> iterators(Iterable> iterables) { + return new TransformedIterator, Iterator>(iterables.iterator()){ + + @Override + Iterator transform(Iterable from) { + return from.iterator(); + } + }; + } + + public static Iterable> partition(final Iterable iterable, final int size) { + Preconditions.checkNotNull(iterable); + Preconditions.checkArgument(size > 0); + return new FluentIterable>(){ + + @Override + public Iterator> iterator() { + return Iterators.partition(iterable.iterator(), size); + } + }; + } + + public static Iterable> paddedPartition(final Iterable iterable, final int size) { + Preconditions.checkNotNull(iterable); + Preconditions.checkArgument(size > 0); + return new FluentIterable>(){ + + @Override + public Iterator> iterator() { + return Iterators.paddedPartition(iterable.iterator(), size); + } + }; + } + + public static Iterable filter(final Iterable unfiltered, final Predicate predicate) { + Preconditions.checkNotNull(unfiltered); + Preconditions.checkNotNull(predicate); + return new FluentIterable(){ + + @Override + public Iterator iterator() { + return Iterators.filter(unfiltered.iterator(), predicate); + } + }; + } + + @GwtIncompatible(value="Class.isInstance") + public static Iterable filter(final Iterable unfiltered, final Class type) { + Preconditions.checkNotNull(unfiltered); + Preconditions.checkNotNull(type); + return new FluentIterable(){ + + @Override + public Iterator iterator() { + return Iterators.filter(unfiltered.iterator(), type); + } + }; + } + + public static boolean any(Iterable iterable, Predicate predicate) { + return Iterators.any(iterable.iterator(), predicate); + } + + public static boolean all(Iterable iterable, Predicate predicate) { + return Iterators.all(iterable.iterator(), predicate); + } + + public static T find(Iterable iterable, Predicate predicate) { + return Iterators.find(iterable.iterator(), predicate); + } + + @Nullable + public static T find(Iterable iterable, Predicate predicate, @Nullable T defaultValue) { + return Iterators.find(iterable.iterator(), predicate, defaultValue); + } + + public static Optional tryFind(Iterable iterable, Predicate predicate) { + return Iterators.tryFind(iterable.iterator(), predicate); + } + + public static int indexOf(Iterable iterable, Predicate predicate) { + return Iterators.indexOf(iterable.iterator(), predicate); + } + + public static Iterable transform(final Iterable fromIterable, final Function function) { + Preconditions.checkNotNull(fromIterable); + Preconditions.checkNotNull(function); + return new FluentIterable(){ + + @Override + public Iterator iterator() { + return Iterators.transform(fromIterable.iterator(), function); + } + }; + } + + public static T get(Iterable iterable, int position) { + Preconditions.checkNotNull(iterable); + return (T)(iterable instanceof List ? ((List)iterable).get(position) : Iterators.get(iterable.iterator(), position)); + } + + @Nullable + public static T get(Iterable iterable, int position, @Nullable T defaultValue) { + Preconditions.checkNotNull(iterable); + Iterators.checkNonnegative(position); + if (iterable instanceof List) { + List list = Lists.cast(iterable); + return position < list.size() ? list.get(position) : defaultValue; + } + Iterator iterator = iterable.iterator(); + Iterators.advance(iterator, position); + return Iterators.getNext(iterator, defaultValue); + } + + @Nullable + public static T getFirst(Iterable iterable, @Nullable T defaultValue) { + return Iterators.getNext(iterable.iterator(), defaultValue); + } + + public static T getLast(Iterable iterable) { + if (iterable instanceof List) { + List list = (List)iterable; + if (list.isEmpty()) { + throw new NoSuchElementException(); + } + return Iterables.getLastInNonemptyList(list); + } + return Iterators.getLast(iterable.iterator()); + } + + @Nullable + public static T getLast(Iterable iterable, @Nullable T defaultValue) { + if (iterable instanceof Collection) { + Collection c = Collections2.cast(iterable); + if (c.isEmpty()) { + return defaultValue; + } + if (iterable instanceof List) { + return Iterables.getLastInNonemptyList(Lists.cast(iterable)); + } + } + return Iterators.getLast(iterable.iterator(), defaultValue); + } + + private static T getLastInNonemptyList(List list) { + return list.get(list.size() - 1); + } + + public static Iterable skip(final Iterable iterable, final int numberToSkip) { + Preconditions.checkNotNull(iterable); + Preconditions.checkArgument(numberToSkip >= 0, "number to skip cannot be negative"); + if (iterable instanceof List) { + final List list = (List)iterable; + return new FluentIterable(){ + + @Override + public Iterator iterator() { + int toSkip = Math.min(list.size(), numberToSkip); + return list.subList(toSkip, list.size()).iterator(); + } + }; + } + return new FluentIterable(){ + + @Override + public Iterator iterator() { + final Iterator iterator = iterable.iterator(); + Iterators.advance(iterator, numberToSkip); + return new Iterator(){ + boolean atStart = true; + + @Override + public boolean hasNext() { + return iterator.hasNext(); + } + + @Override + public T next() { + Object result = iterator.next(); + this.atStart = false; + return result; + } + + @Override + public void remove() { + CollectPreconditions.checkRemove(!this.atStart); + iterator.remove(); + } + }; + } + }; + } + + public static Iterable limit(final Iterable iterable, final int limitSize) { + Preconditions.checkNotNull(iterable); + Preconditions.checkArgument(limitSize >= 0, "limit is negative"); + return new FluentIterable(){ + + @Override + public Iterator iterator() { + return Iterators.limit(iterable.iterator(), limitSize); + } + }; + } + + public static Iterable consumingIterable(final Iterable iterable) { + if (iterable instanceof Queue) { + return new FluentIterable(){ + + @Override + public Iterator iterator() { + return new ConsumingQueueIterator((Queue)iterable); + } + + @Override + public String toString() { + return "Iterables.consumingIterable(...)"; + } + }; + } + Preconditions.checkNotNull(iterable); + return new FluentIterable(){ + + @Override + public Iterator iterator() { + return Iterators.consumingIterator(iterable.iterator()); + } + + @Override + public String toString() { + return "Iterables.consumingIterable(...)"; + } + }; + } + + public static boolean isEmpty(Iterable iterable) { + if (iterable instanceof Collection) { + return ((Collection)iterable).isEmpty(); + } + return !iterable.iterator().hasNext(); + } + + @Beta + public static Iterable mergeSorted(final Iterable> iterables, final Comparator comparator) { + Preconditions.checkNotNull(iterables, "iterables"); + Preconditions.checkNotNull(comparator, "comparator"); + FluentIterable iterable = new FluentIterable(){ + + @Override + public Iterator iterator() { + return Iterators.mergeSorted(Iterables.transform(iterables, Iterables.toIterator()), comparator); + } + }; + return new UnmodifiableIterable(iterable); + } + + private static Function, Iterator> toIterator() { + return new Function, Iterator>(){ + + @Override + public Iterator apply(Iterable iterable) { + return iterable.iterator(); + } + }; + } + + private static class ConsumingQueueIterator + extends AbstractIterator { + private final Queue queue; + + private ConsumingQueueIterator(Queue queue) { + this.queue = queue; + } + + @Override + public T computeNext() { + try { + return this.queue.remove(); + } + catch (NoSuchElementException e) { + return this.endOfData(); + } + } + } + + private static final class UnmodifiableIterable + extends FluentIterable { + private final Iterable iterable; + + private UnmodifiableIterable(Iterable iterable) { + this.iterable = iterable; + } + + @Override + public Iterator iterator() { + return Iterators.unmodifiableIterator(this.iterable.iterator()); + } + + @Override + public String toString() { + return this.iterable.toString(); + } + } +} diff --git a/src/com/google/common/collect/Iterators.java b/src/com/google/common/collect/Iterators.java new file mode 100644 index 0000000..5fbfc7f --- /dev/null +++ b/src/com/google/common/collect/Iterators.java @@ -0,0 +1,714 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.base.Function; +import com.google.common.base.Objects; +import com.google.common.base.Optional; +import com.google.common.base.Preconditions; +import com.google.common.base.Predicate; +import com.google.common.base.Predicates; +import com.google.common.collect.AbstractIndexedListIterator; +import com.google.common.collect.AbstractIterator; +import com.google.common.collect.CollectPreconditions; +import com.google.common.collect.Collections2; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.Iterables; +import com.google.common.collect.Lists; +import com.google.common.collect.PeekingIterator; +import com.google.common.collect.TransformedIterator; +import com.google.common.collect.UnmodifiableIterator; +import com.google.common.collect.UnmodifiableListIterator; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.Comparator; +import java.util.Enumeration; +import java.util.Iterator; +import java.util.List; +import java.util.ListIterator; +import java.util.NoSuchElementException; +import java.util.PriorityQueue; +import java.util.Queue; +import javax.annotation.Nullable; + +@GwtCompatible(emulated=true) +public final class Iterators { + static final UnmodifiableListIterator EMPTY_LIST_ITERATOR = new UnmodifiableListIterator(){ + + @Override + public boolean hasNext() { + return false; + } + + @Override + public Object next() { + throw new NoSuchElementException(); + } + + @Override + public boolean hasPrevious() { + return false; + } + + @Override + public Object previous() { + throw new NoSuchElementException(); + } + + @Override + public int nextIndex() { + return 0; + } + + @Override + public int previousIndex() { + return -1; + } + }; + private static final Iterator EMPTY_MODIFIABLE_ITERATOR = new Iterator(){ + + @Override + public boolean hasNext() { + return false; + } + + @Override + public Object next() { + throw new NoSuchElementException(); + } + + @Override + public void remove() { + CollectPreconditions.checkRemove(false); + } + }; + + private Iterators() { + } + + @Deprecated + public static UnmodifiableIterator emptyIterator() { + return Iterators.emptyListIterator(); + } + + static UnmodifiableListIterator emptyListIterator() { + return EMPTY_LIST_ITERATOR; + } + + static Iterator emptyModifiableIterator() { + return EMPTY_MODIFIABLE_ITERATOR; + } + + public static UnmodifiableIterator unmodifiableIterator(final Iterator iterator) { + Preconditions.checkNotNull(iterator); + if (iterator instanceof UnmodifiableIterator) { + return (UnmodifiableIterator)iterator; + } + return new UnmodifiableIterator(){ + + @Override + public boolean hasNext() { + return iterator.hasNext(); + } + + @Override + public T next() { + return iterator.next(); + } + }; + } + + @Deprecated + public static UnmodifiableIterator unmodifiableIterator(UnmodifiableIterator iterator) { + return Preconditions.checkNotNull(iterator); + } + + public static int size(Iterator iterator) { + int count = 0; + while (iterator.hasNext()) { + iterator.next(); + ++count; + } + return count; + } + + public static boolean contains(Iterator iterator, @Nullable Object element) { + return Iterators.any(iterator, Predicates.equalTo(element)); + } + + public static boolean removeAll(Iterator removeFrom, Collection elementsToRemove) { + return Iterators.removeIf(removeFrom, Predicates.in(elementsToRemove)); + } + + public static boolean removeIf(Iterator removeFrom, Predicate predicate) { + Preconditions.checkNotNull(predicate); + boolean modified = false; + while (removeFrom.hasNext()) { + if (!predicate.apply(removeFrom.next())) continue; + removeFrom.remove(); + modified = true; + } + return modified; + } + + public static boolean retainAll(Iterator removeFrom, Collection elementsToRetain) { + return Iterators.removeIf(removeFrom, Predicates.not(Predicates.in(elementsToRetain))); + } + + public static boolean elementsEqual(Iterator iterator1, Iterator iterator2) { + while (iterator1.hasNext()) { + Object o2; + if (!iterator2.hasNext()) { + return false; + } + Object o1 = iterator1.next(); + if (Objects.equal(o1, o2 = iterator2.next())) continue; + return false; + } + return !iterator2.hasNext(); + } + + public static String toString(Iterator iterator) { + return Collections2.STANDARD_JOINER.appendTo(new StringBuilder().append('['), iterator).append(']').toString(); + } + + public static T getOnlyElement(Iterator iterator) { + T first = iterator.next(); + if (!iterator.hasNext()) { + return first; + } + StringBuilder sb = new StringBuilder(); + String string = String.valueOf(String.valueOf(first)); + sb.append(new StringBuilder(31 + string.length()).append("expected one element but was: <").append(string).toString()); + for (int i = 0; i < 4 && iterator.hasNext(); ++i) { + String string2 = String.valueOf(String.valueOf(iterator.next())); + sb.append(new StringBuilder(2 + string2.length()).append(", ").append(string2).toString()); + } + if (iterator.hasNext()) { + sb.append(", ..."); + } + sb.append('>'); + throw new IllegalArgumentException(sb.toString()); + } + + @Nullable + public static T getOnlyElement(Iterator iterator, @Nullable T defaultValue) { + return iterator.hasNext() ? Iterators.getOnlyElement(iterator) : defaultValue; + } + + @GwtIncompatible(value="Array.newInstance(Class, int)") + public static T[] toArray(Iterator iterator, Class type) { + ArrayList list = Lists.newArrayList(iterator); + return Iterables.toArray(list, type); + } + + public static boolean addAll(Collection addTo, Iterator iterator) { + Preconditions.checkNotNull(addTo); + Preconditions.checkNotNull(iterator); + boolean wasModified = false; + while (iterator.hasNext()) { + wasModified |= addTo.add(iterator.next()); + } + return wasModified; + } + + public static int frequency(Iterator iterator, @Nullable Object element) { + return Iterators.size(Iterators.filter(iterator, Predicates.equalTo(element))); + } + + public static Iterator cycle(final Iterable iterable) { + Preconditions.checkNotNull(iterable); + return new Iterator(){ + Iterator iterator = Iterators.emptyIterator(); + Iterator removeFrom; + + @Override + public boolean hasNext() { + if (!this.iterator.hasNext()) { + this.iterator = iterable.iterator(); + } + return this.iterator.hasNext(); + } + + @Override + public T next() { + if (!this.hasNext()) { + throw new NoSuchElementException(); + } + this.removeFrom = this.iterator; + return this.iterator.next(); + } + + @Override + public void remove() { + CollectPreconditions.checkRemove(this.removeFrom != null); + this.removeFrom.remove(); + this.removeFrom = null; + } + }; + } + + public static Iterator cycle(T ... elements) { + return Iterators.cycle(Lists.newArrayList(elements)); + } + + public static Iterator concat(Iterator a, Iterator b) { + return Iterators.concat(ImmutableList.of(a, b).iterator()); + } + + public static Iterator concat(Iterator a, Iterator b, Iterator c) { + return Iterators.concat(ImmutableList.of(a, b, c).iterator()); + } + + public static Iterator concat(Iterator a, Iterator b, Iterator c, Iterator d) { + return Iterators.concat(ImmutableList.of(a, b, c, d).iterator()); + } + + public static Iterator concat(Iterator ... inputs) { + return Iterators.concat(ImmutableList.copyOf(inputs).iterator()); + } + + public static Iterator concat(final Iterator> inputs) { + Preconditions.checkNotNull(inputs); + return new Iterator(){ + Iterator current = Iterators.emptyIterator(); + Iterator removeFrom; + + @Override + public boolean hasNext() { + boolean currentHasNext; + while (!(currentHasNext = Preconditions.checkNotNull(this.current).hasNext()) && inputs.hasNext()) { + this.current = (Iterator)inputs.next(); + } + return currentHasNext; + } + + @Override + public T next() { + if (!this.hasNext()) { + throw new NoSuchElementException(); + } + this.removeFrom = this.current; + return this.current.next(); + } + + @Override + public void remove() { + CollectPreconditions.checkRemove(this.removeFrom != null); + this.removeFrom.remove(); + this.removeFrom = null; + } + }; + } + + public static UnmodifiableIterator> partition(Iterator iterator, int size) { + return Iterators.partitionImpl(iterator, size, false); + } + + public static UnmodifiableIterator> paddedPartition(Iterator iterator, int size) { + return Iterators.partitionImpl(iterator, size, true); + } + + private static UnmodifiableIterator> partitionImpl(final Iterator iterator, final int size, final boolean pad) { + Preconditions.checkNotNull(iterator); + Preconditions.checkArgument(size > 0); + return new UnmodifiableIterator>(){ + + @Override + public boolean hasNext() { + return iterator.hasNext(); + } + + @Override + public List next() { + int count; + if (!this.hasNext()) { + throw new NoSuchElementException(); + } + Object[] array = new Object[size]; + for (count = 0; count < size && iterator.hasNext(); ++count) { + array[count] = iterator.next(); + } + for (int i = count; i < size; ++i) { + array[i] = null; + } + List list = Collections.unmodifiableList(Arrays.asList(array)); + return pad || count == size ? list : list.subList(0, count); + } + }; + } + + public static UnmodifiableIterator filter(final Iterator unfiltered, final Predicate predicate) { + Preconditions.checkNotNull(unfiltered); + Preconditions.checkNotNull(predicate); + return new AbstractIterator(){ + + @Override + protected T computeNext() { + while (unfiltered.hasNext()) { + Object element = unfiltered.next(); + if (!predicate.apply(element)) continue; + return element; + } + return this.endOfData(); + } + }; + } + + @GwtIncompatible(value="Class.isInstance") + public static UnmodifiableIterator filter(Iterator unfiltered, Class type) { + return Iterators.filter(unfiltered, Predicates.instanceOf(type)); + } + + public static boolean any(Iterator iterator, Predicate predicate) { + return Iterators.indexOf(iterator, predicate) != -1; + } + + public static boolean all(Iterator iterator, Predicate predicate) { + Preconditions.checkNotNull(predicate); + while (iterator.hasNext()) { + T element = iterator.next(); + if (predicate.apply(element)) continue; + return false; + } + return true; + } + + public static T find(Iterator iterator, Predicate predicate) { + return (T)Iterators.filter(iterator, predicate).next(); + } + + @Nullable + public static T find(Iterator iterator, Predicate predicate, @Nullable T defaultValue) { + return Iterators.getNext(Iterators.filter(iterator, predicate), defaultValue); + } + + public static Optional tryFind(Iterator iterator, Predicate predicate) { + UnmodifiableIterator filteredIterator = Iterators.filter(iterator, predicate); + return filteredIterator.hasNext() ? Optional.of(filteredIterator.next()) : Optional.absent(); + } + + public static int indexOf(Iterator iterator, Predicate predicate) { + Preconditions.checkNotNull(predicate, "predicate"); + int i = 0; + while (iterator.hasNext()) { + T current = iterator.next(); + if (predicate.apply(current)) { + return i; + } + ++i; + } + return -1; + } + + public static Iterator transform(Iterator fromIterator, final Function function) { + Preconditions.checkNotNull(function); + return new TransformedIterator(fromIterator){ + + @Override + T transform(F from) { + return function.apply(from); + } + }; + } + + public static T get(Iterator iterator, int position) { + Iterators.checkNonnegative(position); + int skipped = Iterators.advance(iterator, position); + if (!iterator.hasNext()) { + int n = position; + int n2 = skipped; + throw new IndexOutOfBoundsException(new StringBuilder(91).append("position (").append(n).append(") must be less than the number of elements that remained (").append(n2).append(")").toString()); + } + return iterator.next(); + } + + static void checkNonnegative(int position) { + if (position < 0) { + int n = position; + throw new IndexOutOfBoundsException(new StringBuilder(43).append("position (").append(n).append(") must not be negative").toString()); + } + } + + @Nullable + public static T get(Iterator iterator, int position, @Nullable T defaultValue) { + Iterators.checkNonnegative(position); + Iterators.advance(iterator, position); + return Iterators.getNext(iterator, defaultValue); + } + + @Nullable + public static T getNext(Iterator iterator, @Nullable T defaultValue) { + return iterator.hasNext() ? iterator.next() : defaultValue; + } + + public static T getLast(Iterator iterator) { + T current; + do { + current = iterator.next(); + } while (iterator.hasNext()); + return current; + } + + @Nullable + public static T getLast(Iterator iterator, @Nullable T defaultValue) { + return iterator.hasNext() ? Iterators.getLast(iterator) : defaultValue; + } + + public static int advance(Iterator iterator, int numberToAdvance) { + int i; + Preconditions.checkNotNull(iterator); + Preconditions.checkArgument(numberToAdvance >= 0, "numberToAdvance must be nonnegative"); + for (i = 0; i < numberToAdvance && iterator.hasNext(); ++i) { + iterator.next(); + } + return i; + } + + public static Iterator limit(final Iterator iterator, final int limitSize) { + Preconditions.checkNotNull(iterator); + Preconditions.checkArgument(limitSize >= 0, "limit is negative"); + return new Iterator(){ + private int count; + + @Override + public boolean hasNext() { + return this.count < limitSize && iterator.hasNext(); + } + + @Override + public T next() { + if (!this.hasNext()) { + throw new NoSuchElementException(); + } + ++this.count; + return iterator.next(); + } + + @Override + public void remove() { + iterator.remove(); + } + }; + } + + public static Iterator consumingIterator(final Iterator iterator) { + Preconditions.checkNotNull(iterator); + return new UnmodifiableIterator(){ + + @Override + public boolean hasNext() { + return iterator.hasNext(); + } + + @Override + public T next() { + Object next = iterator.next(); + iterator.remove(); + return next; + } + + public String toString() { + return "Iterators.consumingIterator(...)"; + } + }; + } + + @Nullable + static T pollNext(Iterator iterator) { + if (iterator.hasNext()) { + T result = iterator.next(); + iterator.remove(); + return result; + } + return null; + } + + static void clear(Iterator iterator) { + Preconditions.checkNotNull(iterator); + while (iterator.hasNext()) { + iterator.next(); + iterator.remove(); + } + } + + public static UnmodifiableIterator forArray(T ... array) { + return Iterators.forArray(array, 0, array.length, 0); + } + + static UnmodifiableListIterator forArray(final T[] array, final int offset, int length, int index) { + Preconditions.checkArgument(length >= 0); + int end = offset + length; + Preconditions.checkPositionIndexes(offset, end, array.length); + Preconditions.checkPositionIndex(index, length); + if (length == 0) { + return Iterators.emptyListIterator(); + } + return new AbstractIndexedListIterator(length, index){ + + @Override + protected T get(int index) { + return array[offset + index]; + } + }; + } + + public static UnmodifiableIterator singletonIterator(final @Nullable T value) { + return new UnmodifiableIterator(){ + boolean done; + + @Override + public boolean hasNext() { + return !this.done; + } + + @Override + public T next() { + if (this.done) { + throw new NoSuchElementException(); + } + this.done = true; + return value; + } + }; + } + + public static UnmodifiableIterator forEnumeration(final Enumeration enumeration) { + Preconditions.checkNotNull(enumeration); + return new UnmodifiableIterator(){ + + @Override + public boolean hasNext() { + return enumeration.hasMoreElements(); + } + + @Override + public T next() { + return enumeration.nextElement(); + } + }; + } + + public static Enumeration asEnumeration(final Iterator iterator) { + Preconditions.checkNotNull(iterator); + return new Enumeration(){ + + @Override + public boolean hasMoreElements() { + return iterator.hasNext(); + } + + @Override + public T nextElement() { + return iterator.next(); + } + }; + } + + public static PeekingIterator peekingIterator(Iterator iterator) { + if (iterator instanceof PeekingImpl) { + PeekingImpl peeking = (PeekingImpl)iterator; + return peeking; + } + return new PeekingImpl(iterator); + } + + @Deprecated + public static PeekingIterator peekingIterator(PeekingIterator iterator) { + return Preconditions.checkNotNull(iterator); + } + + @Beta + public static UnmodifiableIterator mergeSorted(Iterable> iterators, Comparator comparator) { + Preconditions.checkNotNull(iterators, "iterators"); + Preconditions.checkNotNull(comparator, "comparator"); + return new MergingIterator(iterators, comparator); + } + + static ListIterator cast(Iterator iterator) { + return (ListIterator)iterator; + } + + private static class MergingIterator + extends UnmodifiableIterator { + final Queue> queue; + + public MergingIterator(Iterable> iterators, final Comparator itemComparator) { + Comparator heapComparator = new Comparator>(){ + + @Override + public int compare(PeekingIterator o1, PeekingIterator o2) { + return itemComparator.compare(o1.peek(), o2.peek()); + } + }; + this.queue = new PriorityQueue>(2, heapComparator); + for (Iterator iterator : iterators) { + if (!iterator.hasNext()) continue; + this.queue.add(Iterators.peekingIterator(iterator)); + } + } + + @Override + public boolean hasNext() { + return !this.queue.isEmpty(); + } + + @Override + public T next() { + PeekingIterator nextIter = this.queue.remove(); + T next = nextIter.next(); + if (nextIter.hasNext()) { + this.queue.add(nextIter); + } + return next; + } + } + + private static class PeekingImpl + implements PeekingIterator { + private final Iterator iterator; + private boolean hasPeeked; + private E peekedElement; + + public PeekingImpl(Iterator iterator) { + this.iterator = Preconditions.checkNotNull(iterator); + } + + @Override + public boolean hasNext() { + return this.hasPeeked || this.iterator.hasNext(); + } + + @Override + public E next() { + if (!this.hasPeeked) { + return this.iterator.next(); + } + E result = this.peekedElement; + this.hasPeeked = false; + this.peekedElement = null; + return result; + } + + @Override + public void remove() { + Preconditions.checkState(!this.hasPeeked, "Can't remove after you've peeked at next"); + this.iterator.remove(); + } + + @Override + public E peek() { + if (!this.hasPeeked) { + this.peekedElement = this.iterator.next(); + this.hasPeeked = true; + } + return this.peekedElement; + } + } +} diff --git a/src/com/google/common/collect/LexicographicalOrdering.java b/src/com/google/common/collect/LexicographicalOrdering.java new file mode 100644 index 0000000..05213fa --- /dev/null +++ b/src/com/google/common/collect/LexicographicalOrdering.java @@ -0,0 +1,61 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.collect.Ordering; +import java.io.Serializable; +import java.util.Iterator; +import javax.annotation.Nullable; + +@GwtCompatible(serializable=true) +final class LexicographicalOrdering +extends Ordering> +implements Serializable { + final Ordering elementOrder; + private static final long serialVersionUID = 0L; + + LexicographicalOrdering(Ordering elementOrder) { + this.elementOrder = elementOrder; + } + + @Override + public int compare(Iterable leftIterable, Iterable rightIterable) { + Iterator left = leftIterable.iterator(); + Iterator right = rightIterable.iterator(); + while (left.hasNext()) { + if (!right.hasNext()) { + return 1; + } + int result = this.elementOrder.compare(left.next(), right.next()); + if (result == 0) continue; + return result; + } + if (right.hasNext()) { + return -1; + } + return 0; + } + + @Override + public boolean equals(@Nullable Object object) { + if (object == this) { + return true; + } + if (object instanceof LexicographicalOrdering) { + LexicographicalOrdering that = (LexicographicalOrdering)object; + return this.elementOrder.equals(that.elementOrder); + } + return false; + } + + public int hashCode() { + return this.elementOrder.hashCode() ^ 0x7BB78CF5; + } + + public String toString() { + String string = String.valueOf(String.valueOf(this.elementOrder)); + return new StringBuilder(18 + string.length()).append(string).append(".lexicographical()").toString(); + } +} diff --git a/src/com/google/common/collect/LinkedHashMultimap.java b/src/com/google/common/collect/LinkedHashMultimap.java new file mode 100644 index 0000000..c2b5db0 --- /dev/null +++ b/src/com/google/common/collect/LinkedHashMultimap.java @@ -0,0 +1,443 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.Objects; +import com.google.common.collect.AbstractSetMultimap; +import com.google.common.collect.CollectPreconditions; +import com.google.common.collect.Hashing; +import com.google.common.collect.ImmutableEntry; +import com.google.common.collect.Maps; +import com.google.common.collect.Multimap; +import com.google.common.collect.Sets; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.util.Arrays; +import java.util.Collection; +import java.util.ConcurrentModificationException; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.LinkedHashSet; +import java.util.Map; +import java.util.NoSuchElementException; +import java.util.Set; +import javax.annotation.Nullable; + +@GwtCompatible(serializable=true, emulated=true) +public final class LinkedHashMultimap +extends AbstractSetMultimap { + private static final int DEFAULT_KEY_CAPACITY = 16; + private static final int DEFAULT_VALUE_SET_CAPACITY = 2; + @VisibleForTesting + static final double VALUE_SET_LOAD_FACTOR = 1.0; + @VisibleForTesting + transient int valueSetCapacity = 2; + private transient ValueEntry multimapHeaderEntry; + @GwtIncompatible(value="java serialization not supported") + private static final long serialVersionUID = 1L; + + public static LinkedHashMultimap create() { + return new LinkedHashMultimap(16, 2); + } + + public static LinkedHashMultimap create(int expectedKeys, int expectedValuesPerKey) { + return new LinkedHashMultimap(Maps.capacity(expectedKeys), Maps.capacity(expectedValuesPerKey)); + } + + public static LinkedHashMultimap create(Multimap multimap) { + LinkedHashMultimap result = LinkedHashMultimap.create(multimap.keySet().size(), 2); + result.putAll((Multimap)multimap); + return result; + } + + private static void succeedsInValueSet(ValueSetLink pred, ValueSetLink succ) { + pred.setSuccessorInValueSet(succ); + succ.setPredecessorInValueSet(pred); + } + + private static void succeedsInMultimap(ValueEntry pred, ValueEntry succ) { + pred.setSuccessorInMultimap(succ); + succ.setPredecessorInMultimap(pred); + } + + private static void deleteFromValueSet(ValueSetLink entry) { + LinkedHashMultimap.succeedsInValueSet(entry.getPredecessorInValueSet(), entry.getSuccessorInValueSet()); + } + + private static void deleteFromMultimap(ValueEntry entry) { + LinkedHashMultimap.succeedsInMultimap(entry.getPredecessorInMultimap(), entry.getSuccessorInMultimap()); + } + + private LinkedHashMultimap(int keyCapacity, int valueSetCapacity) { + super(new LinkedHashMap(keyCapacity)); + CollectPreconditions.checkNonnegative(valueSetCapacity, "expectedValuesPerKey"); + this.valueSetCapacity = valueSetCapacity; + this.multimapHeaderEntry = new ValueEntry(null, null, 0, null); + LinkedHashMultimap.succeedsInMultimap(this.multimapHeaderEntry, this.multimapHeaderEntry); + } + + @Override + Set createCollection() { + return new LinkedHashSet(this.valueSetCapacity); + } + + @Override + Collection createCollection(K key) { + return new ValueSet(key, this.valueSetCapacity); + } + + @Override + public Set replaceValues(@Nullable K key, Iterable values) { + return super.replaceValues((Object)key, (Iterable)values); + } + + @Override + public Set> entries() { + return super.entries(); + } + + @Override + public Collection values() { + return super.values(); + } + + @Override + Iterator> entryIterator() { + return new Iterator>(){ + ValueEntry nextEntry; + ValueEntry toRemove; + { + this.nextEntry = ((LinkedHashMultimap)LinkedHashMultimap.this).multimapHeaderEntry.successorInMultimap; + } + + @Override + public boolean hasNext() { + return this.nextEntry != LinkedHashMultimap.this.multimapHeaderEntry; + } + + @Override + public Map.Entry next() { + if (!this.hasNext()) { + throw new NoSuchElementException(); + } + ValueEntry result = this.nextEntry; + this.toRemove = result; + this.nextEntry = this.nextEntry.successorInMultimap; + return result; + } + + @Override + public void remove() { + CollectPreconditions.checkRemove(this.toRemove != null); + LinkedHashMultimap.this.remove(this.toRemove.getKey(), this.toRemove.getValue()); + this.toRemove = null; + } + }; + } + + @Override + Iterator valueIterator() { + return Maps.valueIterator(this.entryIterator()); + } + + @Override + public void clear() { + super.clear(); + LinkedHashMultimap.succeedsInMultimap(this.multimapHeaderEntry, this.multimapHeaderEntry); + } + + @GwtIncompatible(value="java.io.ObjectOutputStream") + private void writeObject(ObjectOutputStream stream) throws IOException { + stream.defaultWriteObject(); + stream.writeInt(this.valueSetCapacity); + stream.writeInt(this.keySet().size()); + for (Object key : this.keySet()) { + stream.writeObject(key); + } + stream.writeInt(this.size()); + for (Map.Entry entry : this.entries()) { + stream.writeObject(entry.getKey()); + stream.writeObject(entry.getValue()); + } + } + + @GwtIncompatible(value="java.io.ObjectInputStream") + private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException { + stream.defaultReadObject(); + this.multimapHeaderEntry = new ValueEntry(null, null, 0, null); + LinkedHashMultimap.succeedsInMultimap(this.multimapHeaderEntry, this.multimapHeaderEntry); + this.valueSetCapacity = stream.readInt(); + int distinctKeys = stream.readInt(); + LinkedHashMap> map = new LinkedHashMap>(Maps.capacity(distinctKeys)); + for (int i = 0; i < distinctKeys; ++i) { + Object key = stream.readObject(); + map.put(key, this.createCollection(key)); + } + int entries = stream.readInt(); + for (int i = 0; i < entries; ++i) { + Object key = stream.readObject(); + Object value = stream.readObject(); + ((Collection)map.get(key)).add(value); + } + this.setMap(map); + } + + @VisibleForTesting + final class ValueSet + extends Sets.ImprovedAbstractSet + implements ValueSetLink { + private final K key; + @VisibleForTesting + ValueEntry[] hashTable; + private int size = 0; + private int modCount = 0; + private ValueSetLink firstEntry; + private ValueSetLink lastEntry; + + ValueSet(K key, int expectedValues) { + this.key = key; + this.firstEntry = this; + this.lastEntry = this; + int tableSize = Hashing.closedTableSize(expectedValues, 1.0); + ValueEntry[] hashTable = new ValueEntry[tableSize]; + this.hashTable = hashTable; + } + + private int mask() { + return this.hashTable.length - 1; + } + + @Override + public ValueSetLink getPredecessorInValueSet() { + return this.lastEntry; + } + + @Override + public ValueSetLink getSuccessorInValueSet() { + return this.firstEntry; + } + + @Override + public void setPredecessorInValueSet(ValueSetLink entry) { + this.lastEntry = entry; + } + + @Override + public void setSuccessorInValueSet(ValueSetLink entry) { + this.firstEntry = entry; + } + + @Override + public Iterator iterator() { + return new Iterator(){ + ValueSetLink nextEntry; + ValueEntry toRemove; + int expectedModCount; + { + this.nextEntry = ValueSet.this.firstEntry; + this.expectedModCount = ValueSet.this.modCount; + } + + private void checkForComodification() { + if (ValueSet.this.modCount != this.expectedModCount) { + throw new ConcurrentModificationException(); + } + } + + @Override + public boolean hasNext() { + this.checkForComodification(); + return this.nextEntry != ValueSet.this; + } + + @Override + public V next() { + if (!this.hasNext()) { + throw new NoSuchElementException(); + } + ValueEntry entry = (ValueEntry)this.nextEntry; + Object result = entry.getValue(); + this.toRemove = entry; + this.nextEntry = entry.getSuccessorInValueSet(); + return result; + } + + @Override + public void remove() { + this.checkForComodification(); + CollectPreconditions.checkRemove(this.toRemove != null); + ValueSet.this.remove(this.toRemove.getValue()); + this.expectedModCount = ValueSet.this.modCount; + this.toRemove = null; + } + }; + } + + @Override + public int size() { + return this.size; + } + + @Override + public boolean contains(@Nullable Object o) { + int smearedHash = Hashing.smearedHash(o); + ValueEntry entry = this.hashTable[smearedHash & this.mask()]; + while (entry != null) { + if (entry.matchesValue(o, smearedHash)) { + return true; + } + entry = entry.nextInValueBucket; + } + return false; + } + + @Override + public boolean add(@Nullable V value) { + ValueEntry rowHead; + int smearedHash = Hashing.smearedHash(value); + int bucket = smearedHash & this.mask(); + ValueEntry entry = rowHead = this.hashTable[bucket]; + while (entry != null) { + if (entry.matchesValue(value, smearedHash)) { + return false; + } + entry = entry.nextInValueBucket; + } + ValueEntry newEntry = new ValueEntry(this.key, value, smearedHash, rowHead); + LinkedHashMultimap.succeedsInValueSet(this.lastEntry, newEntry); + LinkedHashMultimap.succeedsInValueSet(newEntry, this); + LinkedHashMultimap.succeedsInMultimap(LinkedHashMultimap.this.multimapHeaderEntry.getPredecessorInMultimap(), newEntry); + LinkedHashMultimap.succeedsInMultimap(newEntry, LinkedHashMultimap.this.multimapHeaderEntry); + this.hashTable[bucket] = newEntry; + ++this.size; + ++this.modCount; + this.rehashIfNecessary(); + return true; + } + + private void rehashIfNecessary() { + if (Hashing.needsResizing(this.size, this.hashTable.length, 1.0)) { + ValueEntry[] hashTable = new ValueEntry[this.hashTable.length * 2]; + this.hashTable = hashTable; + int mask = hashTable.length - 1; + for (ValueSetLink entry = this.firstEntry; entry != this; entry = entry.getSuccessorInValueSet()) { + ValueEntry valueEntry = (ValueEntry)entry; + int bucket = valueEntry.smearedValueHash & mask; + valueEntry.nextInValueBucket = hashTable[bucket]; + hashTable[bucket] = valueEntry; + } + } + } + + @Override + public boolean remove(@Nullable Object o) { + int smearedHash = Hashing.smearedHash(o); + int bucket = smearedHash & this.mask(); + ValueEntry prev = null; + ValueEntry entry = this.hashTable[bucket]; + while (entry != null) { + if (entry.matchesValue(o, smearedHash)) { + if (prev == null) { + this.hashTable[bucket] = entry.nextInValueBucket; + } else { + prev.nextInValueBucket = entry.nextInValueBucket; + } + LinkedHashMultimap.deleteFromValueSet(entry); + LinkedHashMultimap.deleteFromMultimap(entry); + --this.size; + ++this.modCount; + return true; + } + prev = entry; + entry = entry.nextInValueBucket; + } + return false; + } + + @Override + public void clear() { + Arrays.fill(this.hashTable, null); + this.size = 0; + for (ValueSetLink entry = this.firstEntry; entry != this; entry = entry.getSuccessorInValueSet()) { + ValueEntry valueEntry = (ValueEntry)entry; + LinkedHashMultimap.deleteFromMultimap(valueEntry); + } + LinkedHashMultimap.succeedsInValueSet(this, this); + ++this.modCount; + } + } + + @VisibleForTesting + static final class ValueEntry + extends ImmutableEntry + implements ValueSetLink { + final int smearedValueHash; + @Nullable + ValueEntry nextInValueBucket; + ValueSetLink predecessorInValueSet; + ValueSetLink successorInValueSet; + ValueEntry predecessorInMultimap; + ValueEntry successorInMultimap; + + ValueEntry(@Nullable K key, @Nullable V value, int smearedValueHash, @Nullable ValueEntry nextInValueBucket) { + super(key, value); + this.smearedValueHash = smearedValueHash; + this.nextInValueBucket = nextInValueBucket; + } + + boolean matchesValue(@Nullable Object v, int smearedVHash) { + return this.smearedValueHash == smearedVHash && Objects.equal(this.getValue(), v); + } + + @Override + public ValueSetLink getPredecessorInValueSet() { + return this.predecessorInValueSet; + } + + @Override + public ValueSetLink getSuccessorInValueSet() { + return this.successorInValueSet; + } + + @Override + public void setPredecessorInValueSet(ValueSetLink entry) { + this.predecessorInValueSet = entry; + } + + @Override + public void setSuccessorInValueSet(ValueSetLink entry) { + this.successorInValueSet = entry; + } + + public ValueEntry getPredecessorInMultimap() { + return this.predecessorInMultimap; + } + + public ValueEntry getSuccessorInMultimap() { + return this.successorInMultimap; + } + + public void setSuccessorInMultimap(ValueEntry multimapSuccessor) { + this.successorInMultimap = multimapSuccessor; + } + + public void setPredecessorInMultimap(ValueEntry multimapPredecessor) { + this.predecessorInMultimap = multimapPredecessor; + } + } + + private static interface ValueSetLink { + public ValueSetLink getPredecessorInValueSet(); + + public ValueSetLink getSuccessorInValueSet(); + + public void setPredecessorInValueSet(ValueSetLink var1); + + public void setSuccessorInValueSet(ValueSetLink var1); + } +} diff --git a/src/com/google/common/collect/LinkedHashMultiset.java b/src/com/google/common/collect/LinkedHashMultiset.java new file mode 100644 index 0000000..8c1d47e --- /dev/null +++ b/src/com/google/common/collect/LinkedHashMultiset.java @@ -0,0 +1,59 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.collect.AbstractMapBasedMultiset; +import com.google.common.collect.Iterables; +import com.google.common.collect.Maps; +import com.google.common.collect.Multisets; +import com.google.common.collect.Serialization; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.util.LinkedHashMap; + +@GwtCompatible(serializable=true, emulated=true) +public final class LinkedHashMultiset +extends AbstractMapBasedMultiset { + @GwtIncompatible(value="not needed in emulated source") + private static final long serialVersionUID = 0L; + + public static LinkedHashMultiset create() { + return new LinkedHashMultiset(); + } + + public static LinkedHashMultiset create(int distinctElements) { + return new LinkedHashMultiset(distinctElements); + } + + public static LinkedHashMultiset create(Iterable elements) { + LinkedHashMultiset multiset = LinkedHashMultiset.create(Multisets.inferDistinctElements(elements)); + Iterables.addAll(multiset, elements); + return multiset; + } + + private LinkedHashMultiset() { + super(new LinkedHashMap()); + } + + private LinkedHashMultiset(int distinctElements) { + super(new LinkedHashMap(Maps.capacity(distinctElements))); + } + + @GwtIncompatible(value="java.io.ObjectOutputStream") + private void writeObject(ObjectOutputStream stream) throws IOException { + stream.defaultWriteObject(); + Serialization.writeMultiset(this, stream); + } + + @GwtIncompatible(value="java.io.ObjectInputStream") + private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException { + stream.defaultReadObject(); + int distinctElements = Serialization.readCount(stream); + this.setBackingMap(new LinkedHashMap(Maps.capacity(distinctElements))); + Serialization.populateMultiset(this, stream, distinctElements); + } +} diff --git a/src/com/google/common/collect/LinkedListMultimap.java b/src/com/google/common/collect/LinkedListMultimap.java new file mode 100644 index 0000000..d066db4 --- /dev/null +++ b/src/com/google/common/collect/LinkedListMultimap.java @@ -0,0 +1,659 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.base.Preconditions; +import com.google.common.collect.AbstractMapEntry; +import com.google.common.collect.AbstractMultimap; +import com.google.common.collect.CollectPreconditions; +import com.google.common.collect.Iterators; +import com.google.common.collect.ListMultimap; +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import com.google.common.collect.Multimap; +import com.google.common.collect.Multimaps; +import com.google.common.collect.Sets; +import com.google.common.collect.TransformedListIterator; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.io.Serializable; +import java.util.AbstractSequentialList; +import java.util.Collection; +import java.util.Collections; +import java.util.ConcurrentModificationException; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.ListIterator; +import java.util.Map; +import java.util.NoSuchElementException; +import java.util.Set; +import javax.annotation.Nullable; + +@GwtCompatible(serializable=true, emulated=true) +public class LinkedListMultimap +extends AbstractMultimap +implements ListMultimap, +Serializable { + private transient Node head; + private transient Node tail; + private transient Map> keyToKeyList; + private transient int size; + private transient int modCount; + @GwtIncompatible(value="java serialization not supported") + private static final long serialVersionUID = 0L; + + public static LinkedListMultimap create() { + return new LinkedListMultimap(); + } + + public static LinkedListMultimap create(int expectedKeys) { + return new LinkedListMultimap(expectedKeys); + } + + public static LinkedListMultimap create(Multimap multimap) { + return new LinkedListMultimap(multimap); + } + + LinkedListMultimap() { + this.keyToKeyList = Maps.newHashMap(); + } + + private LinkedListMultimap(int expectedKeys) { + this.keyToKeyList = new HashMap>(expectedKeys); + } + + private LinkedListMultimap(Multimap multimap) { + this(multimap.keySet().size()); + this.putAll((Multimap)multimap); + } + + private Node addNode(@Nullable K key, @Nullable V value, @Nullable Node nextSibling) { + Node node = new Node(key, value); + if (this.head == null) { + this.tail = node; + this.head = this.tail; + this.keyToKeyList.put(key, new KeyList(node)); + ++this.modCount; + } else if (nextSibling == null) { + this.tail.next = node; + node.previous = this.tail; + this.tail = node; + KeyList keyList = this.keyToKeyList.get(key); + if (keyList == null) { + keyList = new KeyList(node); + this.keyToKeyList.put(key, keyList); + ++this.modCount; + } else { + ++keyList.count; + Node keyTail = keyList.tail; + keyTail.nextSibling = node; + node.previousSibling = keyTail; + keyList.tail = node; + } + } else { + KeyList keyList = this.keyToKeyList.get(key); + ++keyList.count; + node.previous = nextSibling.previous; + node.previousSibling = nextSibling.previousSibling; + node.next = nextSibling; + node.nextSibling = nextSibling; + if (nextSibling.previousSibling == null) { + this.keyToKeyList.get(key).head = node; + } else { + nextSibling.previousSibling.nextSibling = node; + } + if (nextSibling.previous == null) { + this.head = node; + } else { + nextSibling.previous.next = node; + } + nextSibling.previous = node; + nextSibling.previousSibling = node; + } + ++this.size; + return node; + } + + private void removeNode(Node node) { + if (node.previous != null) { + node.previous.next = node.next; + } else { + this.head = node.next; + } + if (node.next != null) { + node.next.previous = node.previous; + } else { + this.tail = node.previous; + } + if (node.previousSibling == null && node.nextSibling == null) { + KeyList keyList = this.keyToKeyList.remove(node.key); + keyList.count = 0; + ++this.modCount; + } else { + KeyList keyList = this.keyToKeyList.get(node.key); + --keyList.count; + if (node.previousSibling == null) { + keyList.head = node.nextSibling; + } else { + node.previousSibling.nextSibling = node.nextSibling; + } + if (node.nextSibling == null) { + keyList.tail = node.previousSibling; + } else { + node.nextSibling.previousSibling = node.previousSibling; + } + } + --this.size; + } + + private void removeAllNodes(@Nullable Object key) { + Iterators.clear(new ValueForKeyIterator(key)); + } + + private static void checkElement(@Nullable Object node) { + if (node == null) { + throw new NoSuchElementException(); + } + } + + @Override + public int size() { + return this.size; + } + + @Override + public boolean isEmpty() { + return this.head == null; + } + + @Override + public boolean containsKey(@Nullable Object key) { + return this.keyToKeyList.containsKey(key); + } + + @Override + public boolean containsValue(@Nullable Object value) { + return this.values().contains(value); + } + + @Override + public boolean put(@Nullable K key, @Nullable V value) { + this.addNode(key, value, null); + return true; + } + + @Override + public List replaceValues(@Nullable K key, Iterable values) { + List oldValues = this.getCopy(key); + ValueForKeyIterator keyValues = new ValueForKeyIterator(key); + Iterator newValues = values.iterator(); + while (keyValues.hasNext() && newValues.hasNext()) { + keyValues.next(); + keyValues.set(newValues.next()); + } + while (keyValues.hasNext()) { + keyValues.next(); + keyValues.remove(); + } + while (newValues.hasNext()) { + keyValues.add(newValues.next()); + } + return oldValues; + } + + private List getCopy(@Nullable Object key) { + return Collections.unmodifiableList(Lists.newArrayList(new ValueForKeyIterator(key))); + } + + @Override + public List removeAll(@Nullable Object key) { + List oldValues = this.getCopy(key); + this.removeAllNodes(key); + return oldValues; + } + + @Override + public void clear() { + this.head = null; + this.tail = null; + this.keyToKeyList.clear(); + this.size = 0; + ++this.modCount; + } + + @Override + public List get(final @Nullable K key) { + return new AbstractSequentialList(){ + + @Override + public int size() { + KeyList keyList = (KeyList)LinkedListMultimap.this.keyToKeyList.get(key); + return keyList == null ? 0 : keyList.count; + } + + @Override + public ListIterator listIterator(int index) { + return new ValueForKeyIterator(key, index); + } + }; + } + + @Override + Set createKeySet() { + return new Sets.ImprovedAbstractSet(){ + + @Override + public int size() { + return LinkedListMultimap.this.keyToKeyList.size(); + } + + @Override + public Iterator iterator() { + return new DistinctKeyIterator(); + } + + @Override + public boolean contains(Object key) { + return LinkedListMultimap.this.containsKey(key); + } + + @Override + public boolean remove(Object o) { + return !LinkedListMultimap.this.removeAll(o).isEmpty(); + } + }; + } + + @Override + public List values() { + return (List)super.values(); + } + + @Override + List createValues() { + return new AbstractSequentialList(){ + + @Override + public int size() { + return LinkedListMultimap.this.size; + } + + @Override + public ListIterator listIterator(int index) { + final NodeIterator nodeItr = new NodeIterator(index); + return new TransformedListIterator, V>(nodeItr){ + + @Override + V transform(Map.Entry entry) { + return entry.getValue(); + } + + @Override + public void set(V value) { + nodeItr.setValue(value); + } + }; + } + }; + } + + @Override + public List> entries() { + return (List)super.entries(); + } + + @Override + List> createEntries() { + return new AbstractSequentialList>(){ + + @Override + public int size() { + return LinkedListMultimap.this.size; + } + + @Override + public ListIterator> listIterator(int index) { + return new NodeIterator(index); + } + }; + } + + @Override + Iterator> entryIterator() { + throw new AssertionError((Object)"should never be called"); + } + + @Override + Map> createAsMap() { + return new Multimaps.AsMap(this); + } + + @GwtIncompatible(value="java.io.ObjectOutputStream") + private void writeObject(ObjectOutputStream stream) throws IOException { + stream.defaultWriteObject(); + stream.writeInt(this.size()); + for (Map.Entry entry : this.entries()) { + stream.writeObject(entry.getKey()); + stream.writeObject(entry.getValue()); + } + } + + @GwtIncompatible(value="java.io.ObjectInputStream") + private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException { + stream.defaultReadObject(); + this.keyToKeyList = Maps.newLinkedHashMap(); + int size = stream.readInt(); + for (int i = 0; i < size; ++i) { + Object key = stream.readObject(); + Object value = stream.readObject(); + this.put(key, value); + } + } + + private class ValueForKeyIterator + implements ListIterator { + final Object key; + int nextIndex; + Node next; + Node current; + Node previous; + + ValueForKeyIterator(Object key) { + this.key = key; + KeyList keyList = (KeyList)LinkedListMultimap.this.keyToKeyList.get(key); + this.next = keyList == null ? null : keyList.head; + } + + public ValueForKeyIterator(Object key, int index) { + KeyList keyList = (KeyList)LinkedListMultimap.this.keyToKeyList.get(key); + int size = keyList == null ? 0 : keyList.count; + Preconditions.checkPositionIndex(index, size); + if (index >= size / 2) { + this.previous = keyList == null ? null : keyList.tail; + this.nextIndex = size; + while (index++ < size) { + this.previous(); + } + } else { + Node node = this.next = keyList == null ? null : keyList.head; + while (index-- > 0) { + this.next(); + } + } + this.key = key; + this.current = null; + } + + @Override + public boolean hasNext() { + return this.next != null; + } + + @Override + public V next() { + LinkedListMultimap.checkElement(this.next); + this.current = this.next; + this.previous = this.current; + this.next = this.next.nextSibling; + ++this.nextIndex; + return this.current.value; + } + + @Override + public boolean hasPrevious() { + return this.previous != null; + } + + @Override + public V previous() { + LinkedListMultimap.checkElement(this.previous); + this.current = this.previous; + this.next = this.current; + this.previous = this.previous.previousSibling; + --this.nextIndex; + return this.current.value; + } + + @Override + public int nextIndex() { + return this.nextIndex; + } + + @Override + public int previousIndex() { + return this.nextIndex - 1; + } + + @Override + public void remove() { + CollectPreconditions.checkRemove(this.current != null); + if (this.current != this.next) { + this.previous = this.current.previousSibling; + --this.nextIndex; + } else { + this.next = this.current.nextSibling; + } + LinkedListMultimap.this.removeNode(this.current); + this.current = null; + } + + @Override + public void set(V value) { + Preconditions.checkState(this.current != null); + this.current.value = value; + } + + @Override + public void add(V value) { + this.previous = LinkedListMultimap.this.addNode(this.key, value, this.next); + ++this.nextIndex; + this.current = null; + } + } + + private class DistinctKeyIterator + implements Iterator { + final Set seenKeys; + Node next; + Node current; + int expectedModCount; + + private DistinctKeyIterator() { + this.seenKeys = Sets.newHashSetWithExpectedSize(LinkedListMultimap.this.keySet().size()); + this.next = LinkedListMultimap.this.head; + this.expectedModCount = LinkedListMultimap.this.modCount; + } + + private void checkForConcurrentModification() { + if (LinkedListMultimap.this.modCount != this.expectedModCount) { + throw new ConcurrentModificationException(); + } + } + + @Override + public boolean hasNext() { + this.checkForConcurrentModification(); + return this.next != null; + } + + @Override + public K next() { + this.checkForConcurrentModification(); + LinkedListMultimap.checkElement(this.next); + this.current = this.next; + this.seenKeys.add(this.current.key); + do { + this.next = this.next.next; + } while (this.next != null && !this.seenKeys.add(this.next.key)); + return this.current.key; + } + + @Override + public void remove() { + this.checkForConcurrentModification(); + CollectPreconditions.checkRemove(this.current != null); + LinkedListMultimap.this.removeAllNodes(this.current.key); + this.current = null; + this.expectedModCount = LinkedListMultimap.this.modCount; + } + } + + private class NodeIterator + implements ListIterator> { + int nextIndex; + Node next; + Node current; + Node previous; + int expectedModCount; + + NodeIterator(int index) { + this.expectedModCount = LinkedListMultimap.this.modCount; + int size = LinkedListMultimap.this.size(); + Preconditions.checkPositionIndex(index, size); + if (index >= size / 2) { + this.previous = LinkedListMultimap.this.tail; + this.nextIndex = size; + while (index++ < size) { + this.previous(); + } + } else { + this.next = LinkedListMultimap.this.head; + while (index-- > 0) { + this.next(); + } + } + this.current = null; + } + + private void checkForConcurrentModification() { + if (LinkedListMultimap.this.modCount != this.expectedModCount) { + throw new ConcurrentModificationException(); + } + } + + @Override + public boolean hasNext() { + this.checkForConcurrentModification(); + return this.next != null; + } + + @Override + public Node next() { + this.checkForConcurrentModification(); + LinkedListMultimap.checkElement(this.next); + this.current = this.next; + this.previous = this.current; + this.next = this.next.next; + ++this.nextIndex; + return this.current; + } + + @Override + public void remove() { + this.checkForConcurrentModification(); + CollectPreconditions.checkRemove(this.current != null); + if (this.current != this.next) { + this.previous = this.current.previous; + --this.nextIndex; + } else { + this.next = this.current.next; + } + LinkedListMultimap.this.removeNode(this.current); + this.current = null; + this.expectedModCount = LinkedListMultimap.this.modCount; + } + + @Override + public boolean hasPrevious() { + this.checkForConcurrentModification(); + return this.previous != null; + } + + @Override + public Node previous() { + this.checkForConcurrentModification(); + LinkedListMultimap.checkElement(this.previous); + this.current = this.previous; + this.next = this.current; + this.previous = this.previous.previous; + --this.nextIndex; + return this.current; + } + + @Override + public int nextIndex() { + return this.nextIndex; + } + + @Override + public int previousIndex() { + return this.nextIndex - 1; + } + + @Override + public void set(Map.Entry e) { + throw new UnsupportedOperationException(); + } + + @Override + public void add(Map.Entry e) { + throw new UnsupportedOperationException(); + } + + void setValue(V value) { + Preconditions.checkState(this.current != null); + this.current.value = value; + } + } + + private static class KeyList { + Node head; + Node tail; + int count; + + KeyList(Node firstNode) { + this.head = firstNode; + this.tail = firstNode; + firstNode.previousSibling = null; + firstNode.nextSibling = null; + this.count = 1; + } + } + + private static final class Node + extends AbstractMapEntry { + final K key; + V value; + Node next; + Node previous; + Node nextSibling; + Node previousSibling; + + Node(@Nullable K key, @Nullable V value) { + this.key = key; + this.value = value; + } + + @Override + public K getKey() { + return this.key; + } + + @Override + public V getValue() { + return this.value; + } + + @Override + public V setValue(@Nullable V newValue) { + V result = this.value; + this.value = newValue; + return result; + } + } +} diff --git a/src/com/google/common/collect/ListMultimap.java b/src/com/google/common/collect/ListMultimap.java new file mode 100644 index 0000000..256bf1d --- /dev/null +++ b/src/com/google/common/collect/ListMultimap.java @@ -0,0 +1,30 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.collect.Multimap; +import java.util.Collection; +import java.util.List; +import java.util.Map; +import javax.annotation.Nullable; + +@GwtCompatible +public interface ListMultimap +extends Multimap { + @Override + public List get(@Nullable K var1); + + @Override + public List removeAll(@Nullable Object var1); + + @Override + public List replaceValues(K var1, Iterable var2); + + @Override + public Map> asMap(); + + @Override + public boolean equals(@Nullable Object var1); +} diff --git a/src/com/google/common/collect/Lists.java b/src/com/google/common/collect/Lists.java new file mode 100644 index 0000000..a30697a --- /dev/null +++ b/src/com/google/common/collect/Lists.java @@ -0,0 +1,679 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.Function; +import com.google.common.base.Objects; +import com.google.common.base.Preconditions; +import com.google.common.collect.CartesianList; +import com.google.common.collect.CollectPreconditions; +import com.google.common.collect.Collections2; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.Iterables; +import com.google.common.collect.Iterators; +import com.google.common.collect.TransformedListIterator; +import com.google.common.math.IntMath; +import com.google.common.primitives.Ints; +import java.io.Serializable; +import java.math.RoundingMode; +import java.util.AbstractList; +import java.util.AbstractSequentialList; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; +import java.util.ListIterator; +import java.util.NoSuchElementException; +import java.util.RandomAccess; +import java.util.concurrent.CopyOnWriteArrayList; +import javax.annotation.Nullable; + +@GwtCompatible(emulated=true) +public final class Lists { + private Lists() { + } + + @GwtCompatible(serializable=true) + public static ArrayList newArrayList() { + return new ArrayList(); + } + + @GwtCompatible(serializable=true) + public static ArrayList newArrayList(E ... elements) { + Preconditions.checkNotNull(elements); + int capacity = Lists.computeArrayListCapacity(elements.length); + ArrayList list = new ArrayList(capacity); + Collections.addAll(list, elements); + return list; + } + + @VisibleForTesting + static int computeArrayListCapacity(int arraySize) { + CollectPreconditions.checkNonnegative(arraySize, "arraySize"); + return Ints.saturatedCast(5L + (long)arraySize + (long)(arraySize / 10)); + } + + @GwtCompatible(serializable=true) + public static ArrayList newArrayList(Iterable elements) { + Preconditions.checkNotNull(elements); + return elements instanceof Collection ? new ArrayList(Collections2.cast(elements)) : Lists.newArrayList(elements.iterator()); + } + + @GwtCompatible(serializable=true) + public static ArrayList newArrayList(Iterator elements) { + ArrayList list = Lists.newArrayList(); + Iterators.addAll(list, elements); + return list; + } + + @GwtCompatible(serializable=true) + public static ArrayList newArrayListWithCapacity(int initialArraySize) { + CollectPreconditions.checkNonnegative(initialArraySize, "initialArraySize"); + return new ArrayList(initialArraySize); + } + + @GwtCompatible(serializable=true) + public static ArrayList newArrayListWithExpectedSize(int estimatedSize) { + return new ArrayList(Lists.computeArrayListCapacity(estimatedSize)); + } + + @GwtCompatible(serializable=true) + public static LinkedList newLinkedList() { + return new LinkedList(); + } + + @GwtCompatible(serializable=true) + public static LinkedList newLinkedList(Iterable elements) { + LinkedList list = Lists.newLinkedList(); + Iterables.addAll(list, elements); + return list; + } + + @GwtIncompatible(value="CopyOnWriteArrayList") + public static CopyOnWriteArrayList newCopyOnWriteArrayList() { + return new CopyOnWriteArrayList(); + } + + @GwtIncompatible(value="CopyOnWriteArrayList") + public static CopyOnWriteArrayList newCopyOnWriteArrayList(Iterable elements) { + Collection elementsCollection = elements instanceof Collection ? Collections2.cast(elements) : Lists.newArrayList(elements); + return new CopyOnWriteArrayList(elementsCollection); + } + + public static List asList(@Nullable E first, E[] rest) { + return new OnePlusArrayList(first, rest); + } + + public static List asList(@Nullable E first, @Nullable E second, E[] rest) { + return new TwoPlusArrayList(first, second, rest); + } + + static List> cartesianProduct(List> lists) { + return CartesianList.create(lists); + } + + static List> cartesianProduct(List ... lists) { + return Lists.cartesianProduct(Arrays.asList(lists)); + } + + public static List transform(List fromList, Function function) { + return fromList instanceof RandomAccess ? new TransformingRandomAccessList(fromList, function) : new TransformingSequentialList(fromList, function); + } + + public static List> partition(List list, int size) { + Preconditions.checkNotNull(list); + Preconditions.checkArgument(size > 0); + return list instanceof RandomAccess ? new RandomAccessPartition(list, size) : new Partition(list, size); + } + + @Beta + public static ImmutableList charactersOf(String string) { + return new StringAsImmutableList(Preconditions.checkNotNull(string)); + } + + @Beta + public static List charactersOf(CharSequence sequence) { + return new CharSequenceAsList(Preconditions.checkNotNull(sequence)); + } + + public static List reverse(List list) { + if (list instanceof ImmutableList) { + return ((ImmutableList)list).reverse(); + } + if (list instanceof ReverseList) { + return ((ReverseList)list).getForwardList(); + } + if (list instanceof RandomAccess) { + return new RandomAccessReverseList(list); + } + return new ReverseList(list); + } + + static int hashCodeImpl(List list) { + int hashCode = 1; + for (Object o : list) { + hashCode = 31 * hashCode + (o == null ? 0 : o.hashCode()); + hashCode = ~(~hashCode); + } + return hashCode; + } + + static boolean equalsImpl(List list, @Nullable Object object) { + if (object == Preconditions.checkNotNull(list)) { + return true; + } + if (!(object instanceof List)) { + return false; + } + List o = (List)object; + return list.size() == o.size() && Iterators.elementsEqual(list.iterator(), o.iterator()); + } + + static boolean addAllImpl(List list, int index, Iterable elements) { + boolean changed = false; + ListIterator listIterator = list.listIterator(index); + for (E e : elements) { + listIterator.add(e); + changed = true; + } + return changed; + } + + static int indexOfImpl(List list, @Nullable Object element) { + ListIterator listIterator = list.listIterator(); + while (listIterator.hasNext()) { + if (!Objects.equal(element, listIterator.next())) continue; + return listIterator.previousIndex(); + } + return -1; + } + + static int lastIndexOfImpl(List list, @Nullable Object element) { + ListIterator listIterator = list.listIterator(list.size()); + while (listIterator.hasPrevious()) { + if (!Objects.equal(element, listIterator.previous())) continue; + return listIterator.nextIndex(); + } + return -1; + } + + static ListIterator listIteratorImpl(List list, int index) { + return new AbstractListWrapper(list).listIterator(index); + } + + static List subListImpl(List list, int fromIndex, int toIndex) { + AbstractListWrapper wrapper = list instanceof RandomAccess ? new RandomAccessListWrapper((List)list){ + private static final long serialVersionUID = 0L; + + @Override + public ListIterator listIterator(int index) { + return this.backingList.listIterator(index); + } + } : new AbstractListWrapper((List)list){ + private static final long serialVersionUID = 0L; + + @Override + public ListIterator listIterator(int index) { + return this.backingList.listIterator(index); + } + }; + return wrapper.subList(fromIndex, toIndex); + } + + static List cast(Iterable iterable) { + return (List)iterable; + } + + private static class RandomAccessListWrapper + extends AbstractListWrapper + implements RandomAccess { + RandomAccessListWrapper(List backingList) { + super(backingList); + } + } + + private static class AbstractListWrapper + extends AbstractList { + final List backingList; + + AbstractListWrapper(List backingList) { + this.backingList = Preconditions.checkNotNull(backingList); + } + + @Override + public void add(int index, E element) { + this.backingList.add(index, element); + } + + @Override + public boolean addAll(int index, Collection c) { + return this.backingList.addAll(index, c); + } + + @Override + public E get(int index) { + return this.backingList.get(index); + } + + @Override + public E remove(int index) { + return this.backingList.remove(index); + } + + @Override + public E set(int index, E element) { + return this.backingList.set(index, element); + } + + @Override + public boolean contains(Object o) { + return this.backingList.contains(o); + } + + @Override + public int size() { + return this.backingList.size(); + } + } + + private static class RandomAccessReverseList + extends ReverseList + implements RandomAccess { + RandomAccessReverseList(List forwardList) { + super(forwardList); + } + } + + private static class ReverseList + extends AbstractList { + private final List forwardList; + + ReverseList(List forwardList) { + this.forwardList = Preconditions.checkNotNull(forwardList); + } + + List getForwardList() { + return this.forwardList; + } + + private int reverseIndex(int index) { + int size = this.size(); + Preconditions.checkElementIndex(index, size); + return size - 1 - index; + } + + private int reversePosition(int index) { + int size = this.size(); + Preconditions.checkPositionIndex(index, size); + return size - index; + } + + @Override + public void add(int index, @Nullable T element) { + this.forwardList.add(this.reversePosition(index), element); + } + + @Override + public void clear() { + this.forwardList.clear(); + } + + @Override + public T remove(int index) { + return this.forwardList.remove(this.reverseIndex(index)); + } + + @Override + protected void removeRange(int fromIndex, int toIndex) { + this.subList(fromIndex, toIndex).clear(); + } + + @Override + public T set(int index, @Nullable T element) { + return this.forwardList.set(this.reverseIndex(index), element); + } + + @Override + public T get(int index) { + return this.forwardList.get(this.reverseIndex(index)); + } + + @Override + public int size() { + return this.forwardList.size(); + } + + @Override + public List subList(int fromIndex, int toIndex) { + Preconditions.checkPositionIndexes(fromIndex, toIndex, this.size()); + return Lists.reverse(this.forwardList.subList(this.reversePosition(toIndex), this.reversePosition(fromIndex))); + } + + @Override + public Iterator iterator() { + return this.listIterator(); + } + + @Override + public ListIterator listIterator(int index) { + int start = this.reversePosition(index); + final ListIterator forwardIterator = this.forwardList.listIterator(start); + return new ListIterator(){ + boolean canRemoveOrSet; + + @Override + public void add(T e) { + forwardIterator.add(e); + forwardIterator.previous(); + this.canRemoveOrSet = false; + } + + @Override + public boolean hasNext() { + return forwardIterator.hasPrevious(); + } + + @Override + public boolean hasPrevious() { + return forwardIterator.hasNext(); + } + + @Override + public T next() { + if (!this.hasNext()) { + throw new NoSuchElementException(); + } + this.canRemoveOrSet = true; + return forwardIterator.previous(); + } + + @Override + public int nextIndex() { + return ReverseList.this.reversePosition(forwardIterator.nextIndex()); + } + + @Override + public T previous() { + if (!this.hasPrevious()) { + throw new NoSuchElementException(); + } + this.canRemoveOrSet = true; + return forwardIterator.next(); + } + + @Override + public int previousIndex() { + return this.nextIndex() - 1; + } + + @Override + public void remove() { + CollectPreconditions.checkRemove(this.canRemoveOrSet); + forwardIterator.remove(); + this.canRemoveOrSet = false; + } + + @Override + public void set(T e) { + Preconditions.checkState(this.canRemoveOrSet); + forwardIterator.set(e); + } + }; + } + } + + private static final class CharSequenceAsList + extends AbstractList { + private final CharSequence sequence; + + CharSequenceAsList(CharSequence sequence) { + this.sequence = sequence; + } + + @Override + public Character get(int index) { + Preconditions.checkElementIndex(index, this.size()); + return Character.valueOf(this.sequence.charAt(index)); + } + + @Override + public int size() { + return this.sequence.length(); + } + } + + private static final class StringAsImmutableList + extends ImmutableList { + private final String string; + + StringAsImmutableList(String string) { + this.string = string; + } + + @Override + public int indexOf(@Nullable Object object) { + return object instanceof Character ? this.string.indexOf(((Character)object).charValue()) : -1; + } + + @Override + public int lastIndexOf(@Nullable Object object) { + return object instanceof Character ? this.string.lastIndexOf(((Character)object).charValue()) : -1; + } + + @Override + public ImmutableList subList(int fromIndex, int toIndex) { + Preconditions.checkPositionIndexes(fromIndex, toIndex, this.size()); + return Lists.charactersOf(this.string.substring(fromIndex, toIndex)); + } + + @Override + boolean isPartialView() { + return false; + } + + @Override + public Character get(int index) { + Preconditions.checkElementIndex(index, this.size()); + return Character.valueOf(this.string.charAt(index)); + } + + @Override + public int size() { + return this.string.length(); + } + } + + private static class RandomAccessPartition + extends Partition + implements RandomAccess { + RandomAccessPartition(List list, int size) { + super(list, size); + } + } + + private static class Partition + extends AbstractList> { + final List list; + final int size; + + Partition(List list, int size) { + this.list = list; + this.size = size; + } + + @Override + public List get(int index) { + Preconditions.checkElementIndex(index, this.size()); + int start = index * this.size; + int end = Math.min(start + this.size, this.list.size()); + return this.list.subList(start, end); + } + + @Override + public int size() { + return IntMath.divide(this.list.size(), this.size, RoundingMode.CEILING); + } + + @Override + public boolean isEmpty() { + return this.list.isEmpty(); + } + } + + private static class TransformingRandomAccessList + extends AbstractList + implements RandomAccess, + Serializable { + final List fromList; + final Function function; + private static final long serialVersionUID = 0L; + + TransformingRandomAccessList(List fromList, Function function) { + this.fromList = Preconditions.checkNotNull(fromList); + this.function = Preconditions.checkNotNull(function); + } + + @Override + public void clear() { + this.fromList.clear(); + } + + @Override + public T get(int index) { + return this.function.apply(this.fromList.get(index)); + } + + @Override + public Iterator iterator() { + return this.listIterator(); + } + + @Override + public ListIterator listIterator(int index) { + return new TransformedListIterator(this.fromList.listIterator(index)){ + + @Override + T transform(F from) { + return TransformingRandomAccessList.this.function.apply(from); + } + }; + } + + @Override + public boolean isEmpty() { + return this.fromList.isEmpty(); + } + + @Override + public T remove(int index) { + return this.function.apply(this.fromList.remove(index)); + } + + @Override + public int size() { + return this.fromList.size(); + } + } + + private static class TransformingSequentialList + extends AbstractSequentialList + implements Serializable { + final List fromList; + final Function function; + private static final long serialVersionUID = 0L; + + TransformingSequentialList(List fromList, Function function) { + this.fromList = Preconditions.checkNotNull(fromList); + this.function = Preconditions.checkNotNull(function); + } + + @Override + public void clear() { + this.fromList.clear(); + } + + @Override + public int size() { + return this.fromList.size(); + } + + @Override + public ListIterator listIterator(int index) { + return new TransformedListIterator(this.fromList.listIterator(index)){ + + @Override + T transform(F from) { + return TransformingSequentialList.this.function.apply(from); + } + }; + } + } + + private static class TwoPlusArrayList + extends AbstractList + implements Serializable, + RandomAccess { + final E first; + final E second; + final E[] rest; + private static final long serialVersionUID = 0L; + + TwoPlusArrayList(@Nullable E first, @Nullable E second, E[] rest) { + this.first = first; + this.second = second; + this.rest = Preconditions.checkNotNull(rest); + } + + @Override + public int size() { + return this.rest.length + 2; + } + + @Override + public E get(int index) { + switch (index) { + case 0: { + return this.first; + } + case 1: { + return this.second; + } + } + Preconditions.checkElementIndex(index, this.size()); + return this.rest[index - 2]; + } + } + + private static class OnePlusArrayList + extends AbstractList + implements Serializable, + RandomAccess { + final E first; + final E[] rest; + private static final long serialVersionUID = 0L; + + OnePlusArrayList(@Nullable E first, E[] rest) { + this.first = first; + this.rest = Preconditions.checkNotNull(rest); + } + + @Override + public int size() { + return this.rest.length + 1; + } + + @Override + public E get(int index) { + Preconditions.checkElementIndex(index, this.size()); + return index == 0 ? this.first : this.rest[index - 1]; + } + } +} diff --git a/src/com/google/common/collect/MapConstraint.java b/src/com/google/common/collect/MapConstraint.java new file mode 100644 index 0000000..86c4cb8 --- /dev/null +++ b/src/com/google/common/collect/MapConstraint.java @@ -0,0 +1,16 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import javax.annotation.Nullable; + +@GwtCompatible +@Beta +public interface MapConstraint { + public void checkKeyValue(@Nullable K var1, @Nullable V var2); + + public String toString(); +} diff --git a/src/com/google/common/collect/MapConstraints.java b/src/com/google/common/collect/MapConstraints.java new file mode 100644 index 0000000..7bc4779 --- /dev/null +++ b/src/com/google/common/collect/MapConstraints.java @@ -0,0 +1,680 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Preconditions; +import com.google.common.collect.BiMap; +import com.google.common.collect.Constraint; +import com.google.common.collect.Constraints; +import com.google.common.collect.ForwardingCollection; +import com.google.common.collect.ForwardingIterator; +import com.google.common.collect.ForwardingMap; +import com.google.common.collect.ForwardingMapEntry; +import com.google.common.collect.ForwardingMultimap; +import com.google.common.collect.ForwardingSet; +import com.google.common.collect.ListMultimap; +import com.google.common.collect.Lists; +import com.google.common.collect.MapConstraint; +import com.google.common.collect.Maps; +import com.google.common.collect.Multimap; +import com.google.common.collect.SetMultimap; +import com.google.common.collect.Sets; +import com.google.common.collect.SortedSetMultimap; +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Comparator; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.SortedSet; +import javax.annotation.Nullable; + +@Beta +@GwtCompatible +public final class MapConstraints { + private MapConstraints() { + } + + public static MapConstraint notNull() { + return NotNullMapConstraint.INSTANCE; + } + + public static Map constrainedMap(Map map, MapConstraint constraint) { + return new ConstrainedMap(map, constraint); + } + + public static Multimap constrainedMultimap(Multimap multimap, MapConstraint constraint) { + return new ConstrainedMultimap(multimap, constraint); + } + + public static ListMultimap constrainedListMultimap(ListMultimap multimap, MapConstraint constraint) { + return new ConstrainedListMultimap(multimap, constraint); + } + + public static SetMultimap constrainedSetMultimap(SetMultimap multimap, MapConstraint constraint) { + return new ConstrainedSetMultimap(multimap, constraint); + } + + public static SortedSetMultimap constrainedSortedSetMultimap(SortedSetMultimap multimap, MapConstraint constraint) { + return new ConstrainedSortedSetMultimap(multimap, constraint); + } + + private static Map.Entry constrainedEntry(final Map.Entry entry, final MapConstraint constraint) { + Preconditions.checkNotNull(entry); + Preconditions.checkNotNull(constraint); + return new ForwardingMapEntry(){ + + @Override + protected Map.Entry delegate() { + return entry; + } + + @Override + public V setValue(V value) { + constraint.checkKeyValue(this.getKey(), value); + return entry.setValue(value); + } + }; + } + + private static Map.Entry> constrainedAsMapEntry(final Map.Entry> entry, final MapConstraint constraint) { + Preconditions.checkNotNull(entry); + Preconditions.checkNotNull(constraint); + return new ForwardingMapEntry>(){ + + @Override + protected Map.Entry> delegate() { + return entry; + } + + @Override + public Collection getValue() { + return Constraints.constrainedTypePreservingCollection((Collection)entry.getValue(), new Constraint(){ + + @Override + public V checkElement(V value) { + constraint.checkKeyValue(this.getKey(), value); + return value; + } + }); + } + }; + } + + private static Set>> constrainedAsMapEntries(Set>> entries, MapConstraint constraint) { + return new ConstrainedAsMapEntries(entries, constraint); + } + + private static Collection> constrainedEntries(Collection> entries, MapConstraint constraint) { + if (entries instanceof Set) { + return MapConstraints.constrainedEntrySet((Set)entries, constraint); + } + return new ConstrainedEntries(entries, constraint); + } + + private static Set> constrainedEntrySet(Set> entries, MapConstraint constraint) { + return new ConstrainedEntrySet(entries, constraint); + } + + public static BiMap constrainedBiMap(BiMap map, MapConstraint constraint) { + return new ConstrainedBiMap(map, null, constraint); + } + + private static Collection checkValues(K key, Iterable values, MapConstraint constraint) { + ArrayList copy = Lists.newArrayList(values); + for (Object value : copy) { + constraint.checkKeyValue(key, value); + } + return copy; + } + + private static Map checkMap(Map map, MapConstraint constraint) { + LinkedHashMap copy = new LinkedHashMap(map); + for (Map.Entry entry : copy.entrySet()) { + constraint.checkKeyValue(entry.getKey(), entry.getValue()); + } + return copy; + } + + private static class ConstrainedSortedSetMultimap + extends ConstrainedSetMultimap + implements SortedSetMultimap { + ConstrainedSortedSetMultimap(SortedSetMultimap delegate, MapConstraint constraint) { + super(delegate, constraint); + } + + @Override + public SortedSet get(K key) { + return (SortedSet)super.get((Object)key); + } + + @Override + public SortedSet removeAll(Object key) { + return (SortedSet)super.removeAll(key); + } + + @Override + public SortedSet replaceValues(K key, Iterable values) { + return (SortedSet)super.replaceValues((Object)key, (Iterable)values); + } + + @Override + public Comparator valueComparator() { + return ((SortedSetMultimap)this.delegate()).valueComparator(); + } + } + + private static class ConstrainedSetMultimap + extends ConstrainedMultimap + implements SetMultimap { + ConstrainedSetMultimap(SetMultimap delegate, MapConstraint constraint) { + super(delegate, constraint); + } + + @Override + public Set get(K key) { + return (Set)super.get(key); + } + + @Override + public Set> entries() { + return (Set)super.entries(); + } + + @Override + public Set removeAll(Object key) { + return (Set)super.removeAll(key); + } + + @Override + public Set replaceValues(K key, Iterable values) { + return (Set)super.replaceValues(key, values); + } + } + + private static class ConstrainedListMultimap + extends ConstrainedMultimap + implements ListMultimap { + ConstrainedListMultimap(ListMultimap delegate, MapConstraint constraint) { + super(delegate, constraint); + } + + @Override + public List get(K key) { + return (List)super.get(key); + } + + @Override + public List removeAll(Object key) { + return (List)super.removeAll(key); + } + + @Override + public List replaceValues(K key, Iterable values) { + return (List)super.replaceValues(key, values); + } + } + + static class ConstrainedAsMapEntries + extends ForwardingSet>> { + private final MapConstraint constraint; + private final Set>> entries; + + ConstrainedAsMapEntries(Set>> entries, MapConstraint constraint) { + this.entries = entries; + this.constraint = constraint; + } + + @Override + protected Set>> delegate() { + return this.entries; + } + + @Override + public Iterator>> iterator() { + final Iterator>> iterator = this.entries.iterator(); + return new ForwardingIterator>>(){ + + @Override + public Map.Entry> next() { + return MapConstraints.constrainedAsMapEntry((Map.Entry)iterator.next(), ConstrainedAsMapEntries.this.constraint); + } + + @Override + protected Iterator>> delegate() { + return iterator; + } + }; + } + + @Override + public Object[] toArray() { + return this.standardToArray(); + } + + @Override + public T[] toArray(T[] array) { + return this.standardToArray(array); + } + + @Override + public boolean contains(Object o) { + return Maps.containsEntryImpl(this.delegate(), o); + } + + @Override + public boolean containsAll(Collection c) { + return this.standardContainsAll(c); + } + + @Override + public boolean equals(@Nullable Object object) { + return this.standardEquals(object); + } + + @Override + public int hashCode() { + return this.standardHashCode(); + } + + @Override + public boolean remove(Object o) { + return Maps.removeEntryImpl(this.delegate(), o); + } + + @Override + public boolean removeAll(Collection c) { + return this.standardRemoveAll(c); + } + + @Override + public boolean retainAll(Collection c) { + return this.standardRetainAll(c); + } + } + + static class ConstrainedEntrySet + extends ConstrainedEntries + implements Set> { + ConstrainedEntrySet(Set> entries, MapConstraint constraint) { + super(entries, constraint); + } + + @Override + public boolean equals(@Nullable Object object) { + return Sets.equalsImpl(this, object); + } + + @Override + public int hashCode() { + return Sets.hashCodeImpl(this); + } + } + + private static class ConstrainedEntries + extends ForwardingCollection> { + final MapConstraint constraint; + final Collection> entries; + + ConstrainedEntries(Collection> entries, MapConstraint constraint) { + this.entries = entries; + this.constraint = constraint; + } + + @Override + protected Collection> delegate() { + return this.entries; + } + + @Override + public Iterator> iterator() { + final Iterator> iterator = this.entries.iterator(); + return new ForwardingIterator>(){ + + @Override + public Map.Entry next() { + return MapConstraints.constrainedEntry((Map.Entry)iterator.next(), ConstrainedEntries.this.constraint); + } + + @Override + protected Iterator> delegate() { + return iterator; + } + }; + } + + @Override + public Object[] toArray() { + return this.standardToArray(); + } + + @Override + public T[] toArray(T[] array) { + return this.standardToArray(array); + } + + @Override + public boolean contains(Object o) { + return Maps.containsEntryImpl(this.delegate(), o); + } + + @Override + public boolean containsAll(Collection c) { + return this.standardContainsAll(c); + } + + @Override + public boolean remove(Object o) { + return Maps.removeEntryImpl(this.delegate(), o); + } + + @Override + public boolean removeAll(Collection c) { + return this.standardRemoveAll(c); + } + + @Override + public boolean retainAll(Collection c) { + return this.standardRetainAll(c); + } + } + + private static class ConstrainedAsMapValues + extends ForwardingCollection> { + final Collection> delegate; + final Set>> entrySet; + + ConstrainedAsMapValues(Collection> delegate, Set>> entrySet) { + this.delegate = delegate; + this.entrySet = entrySet; + } + + @Override + protected Collection> delegate() { + return this.delegate; + } + + @Override + public Iterator> iterator() { + final Iterator>> iterator = this.entrySet.iterator(); + return new Iterator>(){ + + @Override + public boolean hasNext() { + return iterator.hasNext(); + } + + @Override + public Collection next() { + return (Collection)((Map.Entry)iterator.next()).getValue(); + } + + @Override + public void remove() { + iterator.remove(); + } + }; + } + + @Override + public Object[] toArray() { + return this.standardToArray(); + } + + @Override + public T[] toArray(T[] array) { + return this.standardToArray(array); + } + + @Override + public boolean contains(Object o) { + return this.standardContains(o); + } + + @Override + public boolean containsAll(Collection c) { + return this.standardContainsAll(c); + } + + @Override + public boolean remove(Object o) { + return this.standardRemove(o); + } + + @Override + public boolean removeAll(Collection c) { + return this.standardRemoveAll(c); + } + + @Override + public boolean retainAll(Collection c) { + return this.standardRetainAll(c); + } + } + + private static class ConstrainedMultimap + extends ForwardingMultimap + implements Serializable { + final MapConstraint constraint; + final Multimap delegate; + transient Collection> entries; + transient Map> asMap; + + public ConstrainedMultimap(Multimap delegate, MapConstraint constraint) { + this.delegate = Preconditions.checkNotNull(delegate); + this.constraint = Preconditions.checkNotNull(constraint); + } + + @Override + protected Multimap delegate() { + return this.delegate; + } + + @Override + public Map> asMap() { + ForwardingMap result = this.asMap; + if (result == null) { + final Map> asMapDelegate = this.delegate.asMap(); + this.asMap = result = new ForwardingMap>(){ + Set>> entrySet; + Collection> values; + + @Override + protected Map> delegate() { + return asMapDelegate; + } + + @Override + public Set>> entrySet() { + Set result = this.entrySet; + if (result == null) { + this.entrySet = result = MapConstraints.constrainedAsMapEntries(asMapDelegate.entrySet(), ConstrainedMultimap.this.constraint); + } + return result; + } + + @Override + public Collection get(Object key) { + try { + Collection collection = ConstrainedMultimap.this.get(key); + return collection.isEmpty() ? null : collection; + } + catch (ClassCastException e) { + return null; + } + } + + @Override + public Collection> values() { + Collection result = this.values; + if (result == null) { + this.values = result = new ConstrainedAsMapValues(this.delegate().values(), this.entrySet()); + } + return result; + } + + @Override + public boolean containsValue(Object o) { + return this.values().contains(o); + } + }; + } + return result; + } + + @Override + public Collection> entries() { + Collection result = this.entries; + if (result == null) { + this.entries = result = MapConstraints.constrainedEntries(this.delegate.entries(), this.constraint); + } + return result; + } + + @Override + public Collection get(final K key) { + return Constraints.constrainedTypePreservingCollection(this.delegate.get(key), new Constraint(){ + + @Override + public V checkElement(V value) { + ConstrainedMultimap.this.constraint.checkKeyValue(key, value); + return value; + } + }); + } + + @Override + public boolean put(K key, V value) { + this.constraint.checkKeyValue(key, value); + return this.delegate.put(key, value); + } + + @Override + public boolean putAll(K key, Iterable values) { + return this.delegate.putAll(key, MapConstraints.checkValues(key, values, this.constraint)); + } + + @Override + public boolean putAll(Multimap multimap) { + boolean changed = false; + for (Map.Entry entry : multimap.entries()) { + changed |= this.put(entry.getKey(), entry.getValue()); + } + return changed; + } + + @Override + public Collection replaceValues(K key, Iterable values) { + return this.delegate.replaceValues(key, MapConstraints.checkValues(key, values, this.constraint)); + } + } + + private static class InverseConstraint + implements MapConstraint { + final MapConstraint constraint; + + public InverseConstraint(MapConstraint constraint) { + this.constraint = Preconditions.checkNotNull(constraint); + } + + @Override + public void checkKeyValue(K key, V value) { + this.constraint.checkKeyValue(value, key); + } + } + + private static class ConstrainedBiMap + extends ConstrainedMap + implements BiMap { + volatile BiMap inverse; + + ConstrainedBiMap(BiMap delegate, @Nullable BiMap inverse, MapConstraint constraint) { + super(delegate, constraint); + this.inverse = inverse; + } + + @Override + protected BiMap delegate() { + return (BiMap)super.delegate(); + } + + @Override + public V forcePut(K key, V value) { + this.constraint.checkKeyValue(key, value); + return this.delegate().forcePut(key, value); + } + + @Override + public BiMap inverse() { + if (this.inverse == null) { + this.inverse = new ConstrainedBiMap(this.delegate().inverse(), this, new InverseConstraint(this.constraint)); + } + return this.inverse; + } + + @Override + public Set values() { + return this.delegate().values(); + } + } + + static class ConstrainedMap + extends ForwardingMap { + private final Map delegate; + final MapConstraint constraint; + private transient Set> entrySet; + + ConstrainedMap(Map delegate, MapConstraint constraint) { + this.delegate = Preconditions.checkNotNull(delegate); + this.constraint = Preconditions.checkNotNull(constraint); + } + + @Override + protected Map delegate() { + return this.delegate; + } + + @Override + public Set> entrySet() { + Set result = this.entrySet; + if (result == null) { + this.entrySet = result = MapConstraints.constrainedEntrySet(this.delegate.entrySet(), this.constraint); + } + return result; + } + + @Override + public V put(K key, V value) { + this.constraint.checkKeyValue(key, value); + return this.delegate.put(key, value); + } + + @Override + public void putAll(Map map) { + this.delegate.putAll(MapConstraints.checkMap(map, this.constraint)); + } + } + + private static enum NotNullMapConstraint implements MapConstraint + { + INSTANCE; + + + @Override + public void checkKeyValue(Object key, Object value) { + Preconditions.checkNotNull(key); + Preconditions.checkNotNull(value); + } + + @Override + public String toString() { + return "Not null"; + } + } +} diff --git a/src/com/google/common/collect/MapDifference.java b/src/com/google/common/collect/MapDifference.java new file mode 100644 index 0000000..1e9cec4 --- /dev/null +++ b/src/com/google/common/collect/MapDifference.java @@ -0,0 +1,35 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import java.util.Map; +import javax.annotation.Nullable; + +@GwtCompatible +public interface MapDifference { + public boolean areEqual(); + + public Map entriesOnlyOnLeft(); + + public Map entriesOnlyOnRight(); + + public Map entriesInCommon(); + + public Map> entriesDiffering(); + + public boolean equals(@Nullable Object var1); + + public int hashCode(); + + public static interface ValueDifference { + public V leftValue(); + + public V rightValue(); + + public boolean equals(@Nullable Object var1); + + public int hashCode(); + } +} diff --git a/src/com/google/common/collect/MapMaker.java b/src/com/google/common/collect/MapMaker.java new file mode 100644 index 0000000..11f7b51 --- /dev/null +++ b/src/com/google/common/collect/MapMaker.java @@ -0,0 +1,450 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.base.Ascii; +import com.google.common.base.Equivalence; +import com.google.common.base.Function; +import com.google.common.base.MoreObjects; +import com.google.common.base.Preconditions; +import com.google.common.base.Throwables; +import com.google.common.base.Ticker; +import com.google.common.collect.ComputationException; +import com.google.common.collect.ComputingConcurrentHashMap; +import com.google.common.collect.GenericMapMaker; +import com.google.common.collect.ImmutableEntry; +import com.google.common.collect.MapMakerInternalMap; +import java.io.Serializable; +import java.util.AbstractMap; +import java.util.Collections; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentMap; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeUnit; +import javax.annotation.Nullable; + +@GwtCompatible(emulated=true) +public final class MapMaker +extends GenericMapMaker { + private static final int DEFAULT_INITIAL_CAPACITY = 16; + private static final int DEFAULT_CONCURRENCY_LEVEL = 4; + private static final int DEFAULT_EXPIRATION_NANOS = 0; + static final int UNSET_INT = -1; + boolean useCustomMap; + int initialCapacity = -1; + int concurrencyLevel = -1; + int maximumSize = -1; + MapMakerInternalMap.Strength keyStrength; + MapMakerInternalMap.Strength valueStrength; + long expireAfterWriteNanos = -1L; + long expireAfterAccessNanos = -1L; + RemovalCause nullRemovalCause; + Equivalence keyEquivalence; + Ticker ticker; + + @GwtIncompatible(value="To be supported") + MapMaker keyEquivalence(Equivalence equivalence) { + Preconditions.checkState(this.keyEquivalence == null, "key equivalence was already set to %s", this.keyEquivalence); + this.keyEquivalence = Preconditions.checkNotNull(equivalence); + this.useCustomMap = true; + return this; + } + + Equivalence getKeyEquivalence() { + return MoreObjects.firstNonNull(this.keyEquivalence, this.getKeyStrength().defaultEquivalence()); + } + + public MapMaker initialCapacity(int initialCapacity) { + Preconditions.checkState(this.initialCapacity == -1, "initial capacity was already set to %s", this.initialCapacity); + Preconditions.checkArgument(initialCapacity >= 0); + this.initialCapacity = initialCapacity; + return this; + } + + int getInitialCapacity() { + return this.initialCapacity == -1 ? 16 : this.initialCapacity; + } + + @Deprecated + MapMaker maximumSize(int size) { + Preconditions.checkState(this.maximumSize == -1, "maximum size was already set to %s", this.maximumSize); + Preconditions.checkArgument(size >= 0, "maximum size must not be negative"); + this.maximumSize = size; + this.useCustomMap = true; + if (this.maximumSize == 0) { + this.nullRemovalCause = RemovalCause.SIZE; + } + return this; + } + + public MapMaker concurrencyLevel(int concurrencyLevel) { + Preconditions.checkState(this.concurrencyLevel == -1, "concurrency level was already set to %s", this.concurrencyLevel); + Preconditions.checkArgument(concurrencyLevel > 0); + this.concurrencyLevel = concurrencyLevel; + return this; + } + + int getConcurrencyLevel() { + return this.concurrencyLevel == -1 ? 4 : this.concurrencyLevel; + } + + @GwtIncompatible(value="java.lang.ref.WeakReference") + public MapMaker weakKeys() { + return this.setKeyStrength(MapMakerInternalMap.Strength.WEAK); + } + + MapMaker setKeyStrength(MapMakerInternalMap.Strength strength) { + Preconditions.checkState(this.keyStrength == null, "Key strength was already set to %s", new Object[]{this.keyStrength}); + this.keyStrength = Preconditions.checkNotNull(strength); + Preconditions.checkArgument(this.keyStrength != MapMakerInternalMap.Strength.SOFT, "Soft keys are not supported"); + if (strength != MapMakerInternalMap.Strength.STRONG) { + this.useCustomMap = true; + } + return this; + } + + MapMakerInternalMap.Strength getKeyStrength() { + return MoreObjects.firstNonNull(this.keyStrength, MapMakerInternalMap.Strength.STRONG); + } + + @GwtIncompatible(value="java.lang.ref.WeakReference") + public MapMaker weakValues() { + return this.setValueStrength(MapMakerInternalMap.Strength.WEAK); + } + + @Deprecated + @GwtIncompatible(value="java.lang.ref.SoftReference") + public MapMaker softValues() { + return this.setValueStrength(MapMakerInternalMap.Strength.SOFT); + } + + MapMaker setValueStrength(MapMakerInternalMap.Strength strength) { + Preconditions.checkState(this.valueStrength == null, "Value strength was already set to %s", new Object[]{this.valueStrength}); + this.valueStrength = Preconditions.checkNotNull(strength); + if (strength != MapMakerInternalMap.Strength.STRONG) { + this.useCustomMap = true; + } + return this; + } + + MapMakerInternalMap.Strength getValueStrength() { + return MoreObjects.firstNonNull(this.valueStrength, MapMakerInternalMap.Strength.STRONG); + } + + @Deprecated + MapMaker expireAfterWrite(long duration, TimeUnit unit) { + this.checkExpiration(duration, unit); + this.expireAfterWriteNanos = unit.toNanos(duration); + if (duration == 0L && this.nullRemovalCause == null) { + this.nullRemovalCause = RemovalCause.EXPIRED; + } + this.useCustomMap = true; + return this; + } + + private void checkExpiration(long duration, TimeUnit unit) { + Preconditions.checkState(this.expireAfterWriteNanos == -1L, "expireAfterWrite was already set to %s ns", this.expireAfterWriteNanos); + Preconditions.checkState(this.expireAfterAccessNanos == -1L, "expireAfterAccess was already set to %s ns", this.expireAfterAccessNanos); + Preconditions.checkArgument(duration >= 0L, "duration cannot be negative: %s %s", new Object[]{duration, unit}); + } + + long getExpireAfterWriteNanos() { + return this.expireAfterWriteNanos == -1L ? 0L : this.expireAfterWriteNanos; + } + + @Deprecated + @GwtIncompatible(value="To be supported") + MapMaker expireAfterAccess(long duration, TimeUnit unit) { + this.checkExpiration(duration, unit); + this.expireAfterAccessNanos = unit.toNanos(duration); + if (duration == 0L && this.nullRemovalCause == null) { + this.nullRemovalCause = RemovalCause.EXPIRED; + } + this.useCustomMap = true; + return this; + } + + long getExpireAfterAccessNanos() { + return this.expireAfterAccessNanos == -1L ? 0L : this.expireAfterAccessNanos; + } + + Ticker getTicker() { + return MoreObjects.firstNonNull(this.ticker, Ticker.systemTicker()); + } + + @Deprecated + @GwtIncompatible(value="To be supported") + GenericMapMaker removalListener(RemovalListener listener) { + Preconditions.checkState(this.removalListener == null); + MapMaker me = this; + me.removalListener = Preconditions.checkNotNull(listener); + this.useCustomMap = true; + return me; + } + + @Override + public ConcurrentMap makeMap() { + if (!this.useCustomMap) { + return new ConcurrentHashMap(this.getInitialCapacity(), 0.75f, this.getConcurrencyLevel()); + } + return (ConcurrentMap)((Object)(this.nullRemovalCause == null ? new MapMakerInternalMap(this) : new NullConcurrentMap(this))); + } + + @Override + @GwtIncompatible(value="MapMakerInternalMap") + MapMakerInternalMap makeCustomMap() { + return new MapMakerInternalMap(this); + } + + @Override + @Deprecated + ConcurrentMap makeComputingMap(Function computingFunction) { + return (ConcurrentMap)((Object)(this.nullRemovalCause == null ? new ComputingMapAdapter(this, computingFunction) : new NullComputingConcurrentMap(this, computingFunction))); + } + + public String toString() { + long l; + MoreObjects.ToStringHelper s = MoreObjects.toStringHelper(this); + if (this.initialCapacity != -1) { + s.add("initialCapacity", this.initialCapacity); + } + if (this.concurrencyLevel != -1) { + s.add("concurrencyLevel", this.concurrencyLevel); + } + if (this.maximumSize != -1) { + s.add("maximumSize", this.maximumSize); + } + if (this.expireAfterWriteNanos != -1L) { + l = this.expireAfterWriteNanos; + s.add("expireAfterWrite", new StringBuilder(22).append(l).append("ns").toString()); + } + if (this.expireAfterAccessNanos != -1L) { + l = this.expireAfterAccessNanos; + s.add("expireAfterAccess", new StringBuilder(22).append(l).append("ns").toString()); + } + if (this.keyStrength != null) { + s.add("keyStrength", Ascii.toLowerCase(this.keyStrength.toString())); + } + if (this.valueStrength != null) { + s.add("valueStrength", Ascii.toLowerCase(this.valueStrength.toString())); + } + if (this.keyEquivalence != null) { + s.addValue("keyEquivalence"); + } + if (this.removalListener != null) { + s.addValue("removalListener"); + } + return s.toString(); + } + + static final class ComputingMapAdapter + extends ComputingConcurrentHashMap + implements Serializable { + private static final long serialVersionUID = 0L; + + ComputingMapAdapter(MapMaker mapMaker, Function computingFunction) { + super(mapMaker, computingFunction); + } + + @Override + public V get(Object key) { + Object value; + try { + value = this.getOrCompute(key); + } + catch (ExecutionException e) { + Throwable cause = e.getCause(); + Throwables.propagateIfInstanceOf(cause, ComputationException.class); + throw new ComputationException(cause); + } + if (value == null) { + String string = String.valueOf(String.valueOf(this.computingFunction)); + String string2 = String.valueOf(String.valueOf(key)); + throw new NullPointerException(new StringBuilder(24 + string.length() + string2.length()).append(string).append(" returned null for key ").append(string2).append(".").toString()); + } + return value; + } + } + + static final class NullComputingConcurrentMap + extends NullConcurrentMap { + private static final long serialVersionUID = 0L; + final Function computingFunction; + + NullComputingConcurrentMap(MapMaker mapMaker, Function computingFunction) { + super(mapMaker); + this.computingFunction = Preconditions.checkNotNull(computingFunction); + } + + @Override + public V get(Object k) { + Object key = k; + V value = this.compute(key); + Preconditions.checkNotNull(value, "%s returned null for key %s.", this.computingFunction, key); + this.notifyRemoval(key, value); + return value; + } + + private V compute(K key) { + Preconditions.checkNotNull(key); + try { + return this.computingFunction.apply(key); + } + catch (ComputationException e) { + throw e; + } + catch (Throwable t) { + throw new ComputationException(t); + } + } + } + + static class NullConcurrentMap + extends AbstractMap + implements ConcurrentMap, + Serializable { + private static final long serialVersionUID = 0L; + private final RemovalListener removalListener; + private final RemovalCause removalCause; + + NullConcurrentMap(MapMaker mapMaker) { + this.removalListener = mapMaker.getRemovalListener(); + this.removalCause = mapMaker.nullRemovalCause; + } + + @Override + public boolean containsKey(@Nullable Object key) { + return false; + } + + @Override + public boolean containsValue(@Nullable Object value) { + return false; + } + + @Override + public V get(@Nullable Object key) { + return null; + } + + void notifyRemoval(K key, V value) { + RemovalNotification notification = new RemovalNotification(key, value, this.removalCause); + this.removalListener.onRemoval(notification); + } + + @Override + public V put(K key, V value) { + Preconditions.checkNotNull(key); + Preconditions.checkNotNull(value); + this.notifyRemoval(key, value); + return null; + } + + @Override + public V putIfAbsent(K key, V value) { + return this.put(key, value); + } + + @Override + public V remove(@Nullable Object key) { + return null; + } + + @Override + public boolean remove(@Nullable Object key, @Nullable Object value) { + return false; + } + + @Override + public V replace(K key, V value) { + Preconditions.checkNotNull(key); + Preconditions.checkNotNull(value); + return null; + } + + @Override + public boolean replace(K key, @Nullable V oldValue, V newValue) { + Preconditions.checkNotNull(key); + Preconditions.checkNotNull(newValue); + return false; + } + + @Override + public Set> entrySet() { + return Collections.emptySet(); + } + } + + static enum RemovalCause { + EXPLICIT{ + + @Override + boolean wasEvicted() { + return false; + } + } + , + REPLACED{ + + @Override + boolean wasEvicted() { + return false; + } + } + , + COLLECTED{ + + @Override + boolean wasEvicted() { + return true; + } + } + , + EXPIRED{ + + @Override + boolean wasEvicted() { + return true; + } + } + , + SIZE{ + + @Override + boolean wasEvicted() { + return true; + } + }; + + + abstract boolean wasEvicted(); + } + + static final class RemovalNotification + extends ImmutableEntry { + private static final long serialVersionUID = 0L; + private final RemovalCause cause; + + RemovalNotification(@Nullable K key, @Nullable V value, RemovalCause cause) { + super(key, value); + this.cause = cause; + } + + public RemovalCause getCause() { + return this.cause; + } + + public boolean wasEvicted() { + return this.cause.wasEvicted(); + } + } + + static interface RemovalListener { + public void onRemoval(RemovalNotification var1); + } +} diff --git a/src/com/google/common/collect/MapMakerInternalMap.java b/src/com/google/common/collect/MapMakerInternalMap.java new file mode 100644 index 0000000..c920c8f --- /dev/null +++ b/src/com/google/common/collect/MapMakerInternalMap.java @@ -0,0 +1,3192 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.Equivalence; +import com.google.common.base.Preconditions; +import com.google.common.base.Ticker; +import com.google.common.collect.AbstractMapEntry; +import com.google.common.collect.AbstractSequentialIterator; +import com.google.common.collect.CollectPreconditions; +import com.google.common.collect.ForwardingConcurrentMap; +import com.google.common.collect.GenericMapMaker; +import com.google.common.collect.Iterators; +import com.google.common.collect.MapMaker; +import com.google.common.primitives.Ints; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.io.Serializable; +import java.lang.ref.Reference; +import java.lang.ref.ReferenceQueue; +import java.lang.ref.SoftReference; +import java.lang.ref.WeakReference; +import java.util.AbstractCollection; +import java.util.AbstractMap; +import java.util.AbstractQueue; +import java.util.AbstractSet; +import java.util.Collection; +import java.util.Iterator; +import java.util.Map; +import java.util.NoSuchElementException; +import java.util.Queue; +import java.util.Set; +import java.util.concurrent.CancellationException; +import java.util.concurrent.ConcurrentLinkedQueue; +import java.util.concurrent.ConcurrentMap; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.atomic.AtomicReferenceArray; +import java.util.concurrent.locks.ReentrantLock; +import java.util.logging.Level; +import java.util.logging.Logger; +import javax.annotation.Nullable; +import javax.annotation.concurrent.GuardedBy; + +class MapMakerInternalMap +extends AbstractMap +implements ConcurrentMap, +Serializable { + static final int MAXIMUM_CAPACITY = 0x40000000; + static final int MAX_SEGMENTS = 65536; + static final int CONTAINS_VALUE_RETRIES = 3; + static final int DRAIN_THRESHOLD = 63; + static final int DRAIN_MAX = 16; + static final long CLEANUP_EXECUTOR_DELAY_SECS = 60L; + private static final Logger logger = Logger.getLogger(MapMakerInternalMap.class.getName()); + final transient int segmentMask; + final transient int segmentShift; + final transient Segment[] segments; + final int concurrencyLevel; + final Equivalence keyEquivalence; + final Equivalence valueEquivalence; + final Strength keyStrength; + final Strength valueStrength; + final int maximumSize; + final long expireAfterAccessNanos; + final long expireAfterWriteNanos; + final Queue> removalNotificationQueue; + final MapMaker.RemovalListener removalListener; + final transient EntryFactory entryFactory; + final Ticker ticker; + static final ValueReference UNSET = new ValueReference(){ + + @Override + public Object get() { + return null; + } + + @Override + public ReferenceEntry getEntry() { + return null; + } + + @Override + public ValueReference copyFor(ReferenceQueue queue, @Nullable Object value, ReferenceEntry entry) { + return this; + } + + @Override + public boolean isComputingReference() { + return false; + } + + @Override + public Object waitForValue() { + return null; + } + + @Override + public void clear(ValueReference newValue) { + } + }; + static final Queue DISCARDING_QUEUE = new AbstractQueue(){ + + @Override + public boolean offer(Object o) { + return true; + } + + @Override + public Object peek() { + return null; + } + + @Override + public Object poll() { + return null; + } + + @Override + public int size() { + return 0; + } + + @Override + public Iterator iterator() { + return Iterators.emptyIterator(); + } + }; + transient Set keySet; + transient Collection values; + transient Set> entrySet; + private static final long serialVersionUID = 5L; + + MapMakerInternalMap(MapMaker builder) { + int segmentSize; + int segmentCount; + this.concurrencyLevel = Math.min(builder.getConcurrencyLevel(), 65536); + this.keyStrength = builder.getKeyStrength(); + this.valueStrength = builder.getValueStrength(); + this.keyEquivalence = builder.getKeyEquivalence(); + this.valueEquivalence = this.valueStrength.defaultEquivalence(); + this.maximumSize = builder.maximumSize; + this.expireAfterAccessNanos = builder.getExpireAfterAccessNanos(); + this.expireAfterWriteNanos = builder.getExpireAfterWriteNanos(); + this.entryFactory = EntryFactory.getFactory(this.keyStrength, this.expires(), this.evictsBySize()); + this.ticker = builder.getTicker(); + this.removalListener = builder.getRemovalListener(); + this.removalNotificationQueue = this.removalListener == GenericMapMaker.NullListener.INSTANCE ? MapMakerInternalMap.discardingQueue() : new ConcurrentLinkedQueue(); + int initialCapacity = Math.min(builder.getInitialCapacity(), 0x40000000); + if (this.evictsBySize()) { + initialCapacity = Math.min(initialCapacity, this.maximumSize); + } + int segmentShift = 0; + for (segmentCount = 1; !(segmentCount >= this.concurrencyLevel || this.evictsBySize() && segmentCount * 2 > this.maximumSize); segmentCount <<= 1) { + ++segmentShift; + } + this.segmentShift = 32 - segmentShift; + this.segmentMask = segmentCount - 1; + this.segments = this.newSegmentArray(segmentCount); + int segmentCapacity = initialCapacity / segmentCount; + if (segmentCapacity * segmentCount < initialCapacity) { + ++segmentCapacity; + } + for (segmentSize = 1; segmentSize < segmentCapacity; segmentSize <<= 1) { + } + if (this.evictsBySize()) { + int maximumSegmentSize = this.maximumSize / segmentCount + 1; + int remainder = this.maximumSize % segmentCount; + for (int i = 0; i < this.segments.length; ++i) { + if (i == remainder) { + --maximumSegmentSize; + } + this.segments[i] = this.createSegment(segmentSize, maximumSegmentSize); + } + } else { + for (int i = 0; i < this.segments.length; ++i) { + this.segments[i] = this.createSegment(segmentSize, -1); + } + } + } + + boolean evictsBySize() { + return this.maximumSize != -1; + } + + boolean expires() { + return this.expiresAfterWrite() || this.expiresAfterAccess(); + } + + boolean expiresAfterWrite() { + return this.expireAfterWriteNanos > 0L; + } + + boolean expiresAfterAccess() { + return this.expireAfterAccessNanos > 0L; + } + + boolean usesKeyReferences() { + return this.keyStrength != Strength.STRONG; + } + + boolean usesValueReferences() { + return this.valueStrength != Strength.STRONG; + } + + static ValueReference unset() { + return UNSET; + } + + static ReferenceEntry nullEntry() { + return NullEntry.INSTANCE; + } + + static Queue discardingQueue() { + return DISCARDING_QUEUE; + } + + static int rehash(int h) { + h += h << 15 ^ 0xFFFFCD7D; + h ^= h >>> 10; + h += h << 3; + h ^= h >>> 6; + h += (h << 2) + (h << 14); + return h ^ h >>> 16; + } + + @VisibleForTesting + ReferenceEntry newEntry(K key, int hash, @Nullable ReferenceEntry next) { + return this.segmentFor(hash).newEntry(key, hash, next); + } + + @VisibleForTesting + ReferenceEntry copyEntry(ReferenceEntry original, ReferenceEntry newNext) { + int hash = original.getHash(); + return this.segmentFor(hash).copyEntry(original, newNext); + } + + @VisibleForTesting + ValueReference newValueReference(ReferenceEntry entry, V value) { + int hash = entry.getHash(); + return this.valueStrength.referenceValue(this.segmentFor(hash), entry, value); + } + + int hash(Object key) { + int h = this.keyEquivalence.hash(key); + return MapMakerInternalMap.rehash(h); + } + + void reclaimValue(ValueReference valueReference) { + ReferenceEntry entry = valueReference.getEntry(); + int hash = entry.getHash(); + this.segmentFor(hash).reclaimValue(entry.getKey(), hash, valueReference); + } + + void reclaimKey(ReferenceEntry entry) { + int hash = entry.getHash(); + this.segmentFor(hash).reclaimKey(entry, hash); + } + + @VisibleForTesting + boolean isLive(ReferenceEntry entry) { + return this.segmentFor(entry.getHash()).getLiveValue(entry) != null; + } + + Segment segmentFor(int hash) { + return this.segments[hash >>> this.segmentShift & this.segmentMask]; + } + + Segment createSegment(int initialCapacity, int maxSegmentSize) { + return new Segment(this, initialCapacity, maxSegmentSize); + } + + V getLiveValue(ReferenceEntry entry) { + if (entry.getKey() == null) { + return null; + } + V value = entry.getValueReference().get(); + if (value == null) { + return null; + } + if (this.expires() && this.isExpired(entry)) { + return null; + } + return value; + } + + boolean isExpired(ReferenceEntry entry) { + return this.isExpired(entry, this.ticker.read()); + } + + boolean isExpired(ReferenceEntry entry, long now) { + return now - entry.getExpirationTime() > 0L; + } + + static void connectExpirables(ReferenceEntry previous, ReferenceEntry next) { + previous.setNextExpirable(next); + next.setPreviousExpirable(previous); + } + + static void nullifyExpirable(ReferenceEntry nulled) { + ReferenceEntry nullEntry = MapMakerInternalMap.nullEntry(); + nulled.setNextExpirable(nullEntry); + nulled.setPreviousExpirable(nullEntry); + } + + void processPendingNotifications() { + MapMaker.RemovalNotification notification; + while ((notification = this.removalNotificationQueue.poll()) != null) { + try { + this.removalListener.onRemoval(notification); + } + catch (Exception e) { + logger.log(Level.WARNING, "Exception thrown by removal listener", e); + } + } + } + + static void connectEvictables(ReferenceEntry previous, ReferenceEntry next) { + previous.setNextEvictable(next); + next.setPreviousEvictable(previous); + } + + static void nullifyEvictable(ReferenceEntry nulled) { + ReferenceEntry nullEntry = MapMakerInternalMap.nullEntry(); + nulled.setNextEvictable(nullEntry); + nulled.setPreviousEvictable(nullEntry); + } + + final Segment[] newSegmentArray(int ssize) { + return new Segment[ssize]; + } + + @Override + public boolean isEmpty() { + int i; + long sum = 0L; + Segment[] segments = this.segments; + for (i = 0; i < segments.length; ++i) { + if (segments[i].count != 0) { + return false; + } + sum += (long)segments[i].modCount; + } + if (sum != 0L) { + for (i = 0; i < segments.length; ++i) { + if (segments[i].count != 0) { + return false; + } + sum -= (long)segments[i].modCount; + } + if (sum != 0L) { + return false; + } + } + return true; + } + + @Override + public int size() { + Segment[] segments = this.segments; + long sum = 0L; + for (int i = 0; i < segments.length; ++i) { + sum += (long)segments[i].count; + } + return Ints.saturatedCast(sum); + } + + @Override + public V get(@Nullable Object key) { + if (key == null) { + return null; + } + int hash = this.hash(key); + return this.segmentFor(hash).get(key, hash); + } + + ReferenceEntry getEntry(@Nullable Object key) { + if (key == null) { + return null; + } + int hash = this.hash(key); + return this.segmentFor(hash).getEntry(key, hash); + } + + @Override + public boolean containsKey(@Nullable Object key) { + if (key == null) { + return false; + } + int hash = this.hash(key); + return this.segmentFor(hash).containsKey(key, hash); + } + + @Override + public boolean containsValue(@Nullable Object value) { + if (value == null) { + return false; + } + Segment[] segments = this.segments; + long last = -1L; + for (int i = 0; i < 3; ++i) { + long sum = 0L; + for (Segment segment : segments) { + int c = segment.count; + AtomicReferenceArray table = segment.table; + for (int j = 0; j < table.length(); ++j) { + for (ReferenceEntry e = table.get(j); e != null; e = e.getNext()) { + V v = segment.getLiveValue(e); + if (v == null || !this.valueEquivalence.equivalent(value, v)) continue; + return true; + } + } + sum += (long)segment.modCount; + } + if (sum == last) break; + last = sum; + } + return false; + } + + @Override + public V put(K key, V value) { + Preconditions.checkNotNull(key); + Preconditions.checkNotNull(value); + int hash = this.hash(key); + return this.segmentFor(hash).put(key, hash, value, false); + } + + @Override + public V putIfAbsent(K key, V value) { + Preconditions.checkNotNull(key); + Preconditions.checkNotNull(value); + int hash = this.hash(key); + return this.segmentFor(hash).put(key, hash, value, true); + } + + @Override + public void putAll(Map m) { + for (Map.Entry e : m.entrySet()) { + this.put(e.getKey(), e.getValue()); + } + } + + @Override + public V remove(@Nullable Object key) { + if (key == null) { + return null; + } + int hash = this.hash(key); + return this.segmentFor(hash).remove(key, hash); + } + + @Override + public boolean remove(@Nullable Object key, @Nullable Object value) { + if (key == null || value == null) { + return false; + } + int hash = this.hash(key); + return this.segmentFor(hash).remove(key, hash, value); + } + + @Override + public boolean replace(K key, @Nullable V oldValue, V newValue) { + Preconditions.checkNotNull(key); + Preconditions.checkNotNull(newValue); + if (oldValue == null) { + return false; + } + int hash = this.hash(key); + return this.segmentFor(hash).replace(key, hash, oldValue, newValue); + } + + @Override + public V replace(K key, V value) { + Preconditions.checkNotNull(key); + Preconditions.checkNotNull(value); + int hash = this.hash(key); + return this.segmentFor(hash).replace(key, hash, value); + } + + @Override + public void clear() { + for (Segment segment : this.segments) { + segment.clear(); + } + } + + @Override + public Set keySet() { + KeySet ks = this.keySet; + return ks != null ? ks : (this.keySet = new KeySet()); + } + + @Override + public Collection values() { + Values vs = this.values; + return vs != null ? vs : (this.values = new Values()); + } + + @Override + public Set> entrySet() { + EntrySet es = this.entrySet; + return es != null ? es : (this.entrySet = new EntrySet()); + } + + Object writeReplace() { + return new SerializationProxy(this.keyStrength, this.valueStrength, this.keyEquivalence, this.valueEquivalence, this.expireAfterWriteNanos, this.expireAfterAccessNanos, this.maximumSize, this.concurrencyLevel, this.removalListener, this); + } + + private static final class SerializationProxy + extends AbstractSerializationProxy { + private static final long serialVersionUID = 3L; + + SerializationProxy(Strength keyStrength, Strength valueStrength, Equivalence keyEquivalence, Equivalence valueEquivalence, long expireAfterWriteNanos, long expireAfterAccessNanos, int maximumSize, int concurrencyLevel, MapMaker.RemovalListener removalListener, ConcurrentMap delegate) { + super(keyStrength, valueStrength, keyEquivalence, valueEquivalence, expireAfterWriteNanos, expireAfterAccessNanos, maximumSize, concurrencyLevel, removalListener, delegate); + } + + private void writeObject(ObjectOutputStream out) throws IOException { + out.defaultWriteObject(); + this.writeMapTo(out); + } + + private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException { + in.defaultReadObject(); + MapMaker mapMaker = this.readMapMaker(in); + this.delegate = mapMaker.makeMap(); + this.readEntries(in); + } + + private Object readResolve() { + return this.delegate; + } + } + + static abstract class AbstractSerializationProxy + extends ForwardingConcurrentMap + implements Serializable { + private static final long serialVersionUID = 3L; + final Strength keyStrength; + final Strength valueStrength; + final Equivalence keyEquivalence; + final Equivalence valueEquivalence; + final long expireAfterWriteNanos; + final long expireAfterAccessNanos; + final int maximumSize; + final int concurrencyLevel; + final MapMaker.RemovalListener removalListener; + transient ConcurrentMap delegate; + + AbstractSerializationProxy(Strength keyStrength, Strength valueStrength, Equivalence keyEquivalence, Equivalence valueEquivalence, long expireAfterWriteNanos, long expireAfterAccessNanos, int maximumSize, int concurrencyLevel, MapMaker.RemovalListener removalListener, ConcurrentMap delegate) { + this.keyStrength = keyStrength; + this.valueStrength = valueStrength; + this.keyEquivalence = keyEquivalence; + this.valueEquivalence = valueEquivalence; + this.expireAfterWriteNanos = expireAfterWriteNanos; + this.expireAfterAccessNanos = expireAfterAccessNanos; + this.maximumSize = maximumSize; + this.concurrencyLevel = concurrencyLevel; + this.removalListener = removalListener; + this.delegate = delegate; + } + + @Override + protected ConcurrentMap delegate() { + return this.delegate; + } + + void writeMapTo(ObjectOutputStream out) throws IOException { + out.writeInt(this.delegate.size()); + for (Map.Entry entry : this.delegate.entrySet()) { + out.writeObject(entry.getKey()); + out.writeObject(entry.getValue()); + } + out.writeObject(null); + } + + MapMaker readMapMaker(ObjectInputStream in) throws IOException { + int size = in.readInt(); + MapMaker mapMaker = ((MapMaker)new MapMaker().initialCapacity(size).setKeyStrength(this.keyStrength).setValueStrength(this.valueStrength).keyEquivalence((Equivalence)this.keyEquivalence)).concurrencyLevel(this.concurrencyLevel); + mapMaker.removalListener(this.removalListener); + if (this.expireAfterWriteNanos > 0L) { + mapMaker.expireAfterWrite(this.expireAfterWriteNanos, TimeUnit.NANOSECONDS); + } + if (this.expireAfterAccessNanos > 0L) { + mapMaker.expireAfterAccess(this.expireAfterAccessNanos, TimeUnit.NANOSECONDS); + } + if (this.maximumSize != -1) { + mapMaker.maximumSize(this.maximumSize); + } + return mapMaker; + } + + void readEntries(ObjectInputStream in) throws IOException, ClassNotFoundException { + Object key; + while ((key = in.readObject()) != null) { + Object value = in.readObject(); + this.delegate.put(key, value); + } + } + } + + final class EntrySet + extends AbstractSet> { + EntrySet() { + } + + @Override + public Iterator> iterator() { + return new EntryIterator(); + } + + @Override + public boolean contains(Object o) { + if (!(o instanceof Map.Entry)) { + return false; + } + Map.Entry e = (Map.Entry)o; + Object key = e.getKey(); + if (key == null) { + return false; + } + Object v = MapMakerInternalMap.this.get(key); + return v != null && MapMakerInternalMap.this.valueEquivalence.equivalent(e.getValue(), v); + } + + @Override + public boolean remove(Object o) { + if (!(o instanceof Map.Entry)) { + return false; + } + Map.Entry e = (Map.Entry)o; + Object key = e.getKey(); + return key != null && MapMakerInternalMap.this.remove(key, e.getValue()); + } + + @Override + public int size() { + return MapMakerInternalMap.this.size(); + } + + @Override + public boolean isEmpty() { + return MapMakerInternalMap.this.isEmpty(); + } + + @Override + public void clear() { + MapMakerInternalMap.this.clear(); + } + } + + final class Values + extends AbstractCollection { + Values() { + } + + @Override + public Iterator iterator() { + return new ValueIterator(); + } + + @Override + public int size() { + return MapMakerInternalMap.this.size(); + } + + @Override + public boolean isEmpty() { + return MapMakerInternalMap.this.isEmpty(); + } + + @Override + public boolean contains(Object o) { + return MapMakerInternalMap.this.containsValue(o); + } + + @Override + public void clear() { + MapMakerInternalMap.this.clear(); + } + } + + final class KeySet + extends AbstractSet { + KeySet() { + } + + @Override + public Iterator iterator() { + return new KeyIterator(); + } + + @Override + public int size() { + return MapMakerInternalMap.this.size(); + } + + @Override + public boolean isEmpty() { + return MapMakerInternalMap.this.isEmpty(); + } + + @Override + public boolean contains(Object o) { + return MapMakerInternalMap.this.containsKey(o); + } + + @Override + public boolean remove(Object o) { + return MapMakerInternalMap.this.remove(o) != null; + } + + @Override + public void clear() { + MapMakerInternalMap.this.clear(); + } + } + + final class EntryIterator + extends HashIterator> { + EntryIterator() { + } + + @Override + public Map.Entry next() { + return this.nextEntry(); + } + } + + final class WriteThroughEntry + extends AbstractMapEntry { + final K key; + V value; + + WriteThroughEntry(K key, V value) { + this.key = key; + this.value = value; + } + + @Override + public K getKey() { + return this.key; + } + + @Override + public V getValue() { + return this.value; + } + + @Override + public boolean equals(@Nullable Object object) { + if (object instanceof Map.Entry) { + Map.Entry that = (Map.Entry)object; + return this.key.equals(that.getKey()) && this.value.equals(that.getValue()); + } + return false; + } + + @Override + public int hashCode() { + return this.key.hashCode() ^ this.value.hashCode(); + } + + @Override + public V setValue(V newValue) { + Object oldValue = MapMakerInternalMap.this.put(this.key, newValue); + this.value = newValue; + return oldValue; + } + } + + final class ValueIterator + extends HashIterator { + ValueIterator() { + } + + @Override + public V next() { + return this.nextEntry().getValue(); + } + } + + final class KeyIterator + extends HashIterator { + KeyIterator() { + } + + @Override + public K next() { + return this.nextEntry().getKey(); + } + } + + abstract class HashIterator + implements Iterator { + int nextSegmentIndex; + int nextTableIndex; + Segment currentSegment; + AtomicReferenceArray> currentTable; + ReferenceEntry nextEntry; + WriteThroughEntry nextExternal; + WriteThroughEntry lastReturned; + + HashIterator() { + this.nextSegmentIndex = MapMakerInternalMap.this.segments.length - 1; + this.nextTableIndex = -1; + this.advance(); + } + + @Override + public abstract E next(); + + final void advance() { + this.nextExternal = null; + if (this.nextInChain()) { + return; + } + if (this.nextInTable()) { + return; + } + while (this.nextSegmentIndex >= 0) { + this.currentSegment = MapMakerInternalMap.this.segments[this.nextSegmentIndex--]; + if (this.currentSegment.count == 0) continue; + this.currentTable = this.currentSegment.table; + this.nextTableIndex = this.currentTable.length() - 1; + if (!this.nextInTable()) continue; + return; + } + } + + boolean nextInChain() { + if (this.nextEntry != null) { + this.nextEntry = this.nextEntry.getNext(); + while (this.nextEntry != null) { + if (this.advanceTo(this.nextEntry)) { + return true; + } + this.nextEntry = this.nextEntry.getNext(); + } + } + return false; + } + + boolean nextInTable() { + while (this.nextTableIndex >= 0) { + if ((this.nextEntry = this.currentTable.get(this.nextTableIndex--)) == null || !this.advanceTo(this.nextEntry) && !this.nextInChain()) continue; + return true; + } + return false; + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + boolean advanceTo(ReferenceEntry entry) { + try { + Object key = entry.getKey(); + Object value = MapMakerInternalMap.this.getLiveValue(entry); + if (value != null) { + this.nextExternal = new WriteThroughEntry(key, value); + boolean bl = true; + return bl; + } + boolean bl = false; + return bl; + } + finally { + this.currentSegment.postReadCleanup(); + } + } + + @Override + public boolean hasNext() { + return this.nextExternal != null; + } + + WriteThroughEntry nextEntry() { + if (this.nextExternal == null) { + throw new NoSuchElementException(); + } + this.lastReturned = this.nextExternal; + this.advance(); + return this.lastReturned; + } + + @Override + public void remove() { + CollectPreconditions.checkRemove(this.lastReturned != null); + MapMakerInternalMap.this.remove(this.lastReturned.getKey()); + this.lastReturned = null; + } + } + + static final class CleanupMapTask + implements Runnable { + final WeakReference> mapReference; + + public CleanupMapTask(MapMakerInternalMap map) { + this.mapReference = new WeakReference(map); + } + + @Override + public void run() { + MapMakerInternalMap map = (MapMakerInternalMap)this.mapReference.get(); + if (map == null) { + throw new CancellationException(); + } + for (Segment segment : map.segments) { + segment.runCleanup(); + } + } + } + + static final class ExpirationQueue + extends AbstractQueue> { + final ReferenceEntry head = new AbstractReferenceEntry(){ + ReferenceEntry nextExpirable = this; + ReferenceEntry previousExpirable = this; + + @Override + public long getExpirationTime() { + return Long.MAX_VALUE; + } + + @Override + public void setExpirationTime(long time) { + } + + @Override + public ReferenceEntry getNextExpirable() { + return this.nextExpirable; + } + + @Override + public void setNextExpirable(ReferenceEntry next) { + this.nextExpirable = next; + } + + @Override + public ReferenceEntry getPreviousExpirable() { + return this.previousExpirable; + } + + @Override + public void setPreviousExpirable(ReferenceEntry previous) { + this.previousExpirable = previous; + } + }; + + ExpirationQueue() { + } + + @Override + public boolean offer(ReferenceEntry entry) { + MapMakerInternalMap.connectExpirables(entry.getPreviousExpirable(), entry.getNextExpirable()); + MapMakerInternalMap.connectExpirables(this.head.getPreviousExpirable(), entry); + MapMakerInternalMap.connectExpirables(entry, this.head); + return true; + } + + @Override + public ReferenceEntry peek() { + ReferenceEntry next = this.head.getNextExpirable(); + return next == this.head ? null : next; + } + + @Override + public ReferenceEntry poll() { + ReferenceEntry next = this.head.getNextExpirable(); + if (next == this.head) { + return null; + } + this.remove(next); + return next; + } + + @Override + public boolean remove(Object o) { + ReferenceEntry e = (ReferenceEntry)o; + ReferenceEntry previous = e.getPreviousExpirable(); + ReferenceEntry next = e.getNextExpirable(); + MapMakerInternalMap.connectExpirables(previous, next); + MapMakerInternalMap.nullifyExpirable(e); + return next != NullEntry.INSTANCE; + } + + @Override + public boolean contains(Object o) { + ReferenceEntry e = (ReferenceEntry)o; + return e.getNextExpirable() != NullEntry.INSTANCE; + } + + @Override + public boolean isEmpty() { + return this.head.getNextExpirable() == this.head; + } + + @Override + public int size() { + int size = 0; + for (ReferenceEntry e = this.head.getNextExpirable(); e != this.head; e = e.getNextExpirable()) { + ++size; + } + return size; + } + + @Override + public void clear() { + ReferenceEntry e = this.head.getNextExpirable(); + while (e != this.head) { + ReferenceEntry next = e.getNextExpirable(); + MapMakerInternalMap.nullifyExpirable(e); + e = next; + } + this.head.setNextExpirable(this.head); + this.head.setPreviousExpirable(this.head); + } + + @Override + public Iterator> iterator() { + return new AbstractSequentialIterator>((ReferenceEntry)this.peek()){ + + @Override + protected ReferenceEntry computeNext(ReferenceEntry previous) { + ReferenceEntry next = previous.getNextExpirable(); + return next == ExpirationQueue.this.head ? null : next; + } + }; + } + } + + static final class EvictionQueue + extends AbstractQueue> { + final ReferenceEntry head = new AbstractReferenceEntry(){ + ReferenceEntry nextEvictable = this; + ReferenceEntry previousEvictable = this; + + @Override + public ReferenceEntry getNextEvictable() { + return this.nextEvictable; + } + + @Override + public void setNextEvictable(ReferenceEntry next) { + this.nextEvictable = next; + } + + @Override + public ReferenceEntry getPreviousEvictable() { + return this.previousEvictable; + } + + @Override + public void setPreviousEvictable(ReferenceEntry previous) { + this.previousEvictable = previous; + } + }; + + EvictionQueue() { + } + + @Override + public boolean offer(ReferenceEntry entry) { + MapMakerInternalMap.connectEvictables(entry.getPreviousEvictable(), entry.getNextEvictable()); + MapMakerInternalMap.connectEvictables(this.head.getPreviousEvictable(), entry); + MapMakerInternalMap.connectEvictables(entry, this.head); + return true; + } + + @Override + public ReferenceEntry peek() { + ReferenceEntry next = this.head.getNextEvictable(); + return next == this.head ? null : next; + } + + @Override + public ReferenceEntry poll() { + ReferenceEntry next = this.head.getNextEvictable(); + if (next == this.head) { + return null; + } + this.remove(next); + return next; + } + + @Override + public boolean remove(Object o) { + ReferenceEntry e = (ReferenceEntry)o; + ReferenceEntry previous = e.getPreviousEvictable(); + ReferenceEntry next = e.getNextEvictable(); + MapMakerInternalMap.connectEvictables(previous, next); + MapMakerInternalMap.nullifyEvictable(e); + return next != NullEntry.INSTANCE; + } + + @Override + public boolean contains(Object o) { + ReferenceEntry e = (ReferenceEntry)o; + return e.getNextEvictable() != NullEntry.INSTANCE; + } + + @Override + public boolean isEmpty() { + return this.head.getNextEvictable() == this.head; + } + + @Override + public int size() { + int size = 0; + for (ReferenceEntry e = this.head.getNextEvictable(); e != this.head; e = e.getNextEvictable()) { + ++size; + } + return size; + } + + @Override + public void clear() { + ReferenceEntry e = this.head.getNextEvictable(); + while (e != this.head) { + ReferenceEntry next = e.getNextEvictable(); + MapMakerInternalMap.nullifyEvictable(e); + e = next; + } + this.head.setNextEvictable(this.head); + this.head.setPreviousEvictable(this.head); + } + + @Override + public Iterator> iterator() { + return new AbstractSequentialIterator>((ReferenceEntry)this.peek()){ + + @Override + protected ReferenceEntry computeNext(ReferenceEntry previous) { + ReferenceEntry next = previous.getNextEvictable(); + return next == EvictionQueue.this.head ? null : next; + } + }; + } + } + + static class Segment + extends ReentrantLock { + final MapMakerInternalMap map; + volatile int count; + int modCount; + int threshold; + volatile AtomicReferenceArray> table; + final int maxSegmentSize; + final ReferenceQueue keyReferenceQueue; + final ReferenceQueue valueReferenceQueue; + final Queue> recencyQueue; + final AtomicInteger readCount = new AtomicInteger(); + @GuardedBy(value="Segment.this") + final Queue> evictionQueue; + @GuardedBy(value="Segment.this") + final Queue> expirationQueue; + + Segment(MapMakerInternalMap map, int initialCapacity, int maxSegmentSize) { + this.map = map; + this.maxSegmentSize = maxSegmentSize; + this.initTable(this.newEntryArray(initialCapacity)); + this.keyReferenceQueue = map.usesKeyReferences() ? new ReferenceQueue() : null; + this.valueReferenceQueue = map.usesValueReferences() ? new ReferenceQueue() : null; + this.recencyQueue = map.evictsBySize() || map.expiresAfterAccess() ? new ConcurrentLinkedQueue() : MapMakerInternalMap.discardingQueue(); + this.evictionQueue = map.evictsBySize() ? new EvictionQueue() : MapMakerInternalMap.discardingQueue(); + this.expirationQueue = map.expires() ? new ExpirationQueue() : MapMakerInternalMap.discardingQueue(); + } + + AtomicReferenceArray> newEntryArray(int size) { + return new AtomicReferenceArray>(size); + } + + void initTable(AtomicReferenceArray> newTable) { + this.threshold = newTable.length() * 3 / 4; + if (this.threshold == this.maxSegmentSize) { + ++this.threshold; + } + this.table = newTable; + } + + @GuardedBy(value="Segment.this") + ReferenceEntry newEntry(K key, int hash, @Nullable ReferenceEntry next) { + return this.map.entryFactory.newEntry(this, key, hash, next); + } + + @GuardedBy(value="Segment.this") + ReferenceEntry copyEntry(ReferenceEntry original, ReferenceEntry newNext) { + if (original.getKey() == null) { + return null; + } + ValueReference valueReference = original.getValueReference(); + V value = valueReference.get(); + if (value == null && !valueReference.isComputingReference()) { + return null; + } + ReferenceEntry newEntry = this.map.entryFactory.copyEntry(this, original, newNext); + newEntry.setValueReference(valueReference.copyFor(this.valueReferenceQueue, value, newEntry)); + return newEntry; + } + + @GuardedBy(value="Segment.this") + void setValue(ReferenceEntry entry, V value) { + ValueReference valueReference = this.map.valueStrength.referenceValue(this, entry, value); + entry.setValueReference(valueReference); + this.recordWrite(entry); + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + void tryDrainReferenceQueues() { + if (this.tryLock()) { + try { + this.drainReferenceQueues(); + } + finally { + this.unlock(); + } + } + } + + @GuardedBy(value="Segment.this") + void drainReferenceQueues() { + if (this.map.usesKeyReferences()) { + this.drainKeyReferenceQueue(); + } + if (this.map.usesValueReferences()) { + this.drainValueReferenceQueue(); + } + } + + @GuardedBy(value="Segment.this") + void drainKeyReferenceQueue() { + Reference ref; + int i = 0; + while ((ref = this.keyReferenceQueue.poll()) != null) { + ReferenceEntry entry = (ReferenceEntry)((Object)ref); + this.map.reclaimKey(entry); + if (++i != 16) continue; + break; + } + } + + @GuardedBy(value="Segment.this") + void drainValueReferenceQueue() { + Reference ref; + int i = 0; + while ((ref = this.valueReferenceQueue.poll()) != null) { + ValueReference valueReference = (ValueReference)((Object)ref); + this.map.reclaimValue(valueReference); + if (++i != 16) continue; + break; + } + } + + void clearReferenceQueues() { + if (this.map.usesKeyReferences()) { + this.clearKeyReferenceQueue(); + } + if (this.map.usesValueReferences()) { + this.clearValueReferenceQueue(); + } + } + + void clearKeyReferenceQueue() { + while (this.keyReferenceQueue.poll() != null) { + } + } + + void clearValueReferenceQueue() { + while (this.valueReferenceQueue.poll() != null) { + } + } + + void recordRead(ReferenceEntry entry) { + if (this.map.expiresAfterAccess()) { + this.recordExpirationTime(entry, this.map.expireAfterAccessNanos); + } + this.recencyQueue.add(entry); + } + + @GuardedBy(value="Segment.this") + void recordLockedRead(ReferenceEntry entry) { + this.evictionQueue.add(entry); + if (this.map.expiresAfterAccess()) { + this.recordExpirationTime(entry, this.map.expireAfterAccessNanos); + this.expirationQueue.add(entry); + } + } + + @GuardedBy(value="Segment.this") + void recordWrite(ReferenceEntry entry) { + this.drainRecencyQueue(); + this.evictionQueue.add(entry); + if (this.map.expires()) { + long expiration = this.map.expiresAfterAccess() ? this.map.expireAfterAccessNanos : this.map.expireAfterWriteNanos; + this.recordExpirationTime(entry, expiration); + this.expirationQueue.add(entry); + } + } + + @GuardedBy(value="Segment.this") + void drainRecencyQueue() { + ReferenceEntry e; + while ((e = this.recencyQueue.poll()) != null) { + if (this.evictionQueue.contains(e)) { + this.evictionQueue.add(e); + } + if (!this.map.expiresAfterAccess() || !this.expirationQueue.contains(e)) continue; + this.expirationQueue.add(e); + } + } + + void recordExpirationTime(ReferenceEntry entry, long expirationNanos) { + entry.setExpirationTime(this.map.ticker.read() + expirationNanos); + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + void tryExpireEntries() { + if (this.tryLock()) { + try { + this.expireEntries(); + } + finally { + this.unlock(); + } + } + } + + @GuardedBy(value="Segment.this") + void expireEntries() { + ReferenceEntry e; + this.drainRecencyQueue(); + if (this.expirationQueue.isEmpty()) { + return; + } + long now = this.map.ticker.read(); + while ((e = this.expirationQueue.peek()) != null && this.map.isExpired(e, now)) { + if (!this.removeEntry(e, e.getHash(), MapMaker.RemovalCause.EXPIRED)) { + throw new AssertionError(); + } + } + } + + void enqueueNotification(ReferenceEntry entry, MapMaker.RemovalCause cause) { + this.enqueueNotification(entry.getKey(), entry.getHash(), entry.getValueReference().get(), cause); + } + + void enqueueNotification(@Nullable K key, int hash, @Nullable V value, MapMaker.RemovalCause cause) { + if (this.map.removalNotificationQueue != DISCARDING_QUEUE) { + MapMaker.RemovalNotification notification = new MapMaker.RemovalNotification(key, value, cause); + this.map.removalNotificationQueue.offer(notification); + } + } + + @GuardedBy(value="Segment.this") + boolean evictEntries() { + if (this.map.evictsBySize() && this.count >= this.maxSegmentSize) { + this.drainRecencyQueue(); + ReferenceEntry e = this.evictionQueue.remove(); + if (!this.removeEntry(e, e.getHash(), MapMaker.RemovalCause.SIZE)) { + throw new AssertionError(); + } + return true; + } + return false; + } + + ReferenceEntry getFirst(int hash) { + AtomicReferenceArray> table = this.table; + return table.get(hash & table.length() - 1); + } + + ReferenceEntry getEntry(Object key, int hash) { + if (this.count != 0) { + for (ReferenceEntry e = this.getFirst(hash); e != null; e = e.getNext()) { + if (e.getHash() != hash) continue; + K entryKey = e.getKey(); + if (entryKey == null) { + this.tryDrainReferenceQueues(); + continue; + } + if (!this.map.keyEquivalence.equivalent(key, entryKey)) continue; + return e; + } + } + return null; + } + + ReferenceEntry getLiveEntry(Object key, int hash) { + ReferenceEntry e = this.getEntry(key, hash); + if (e == null) { + return null; + } + if (this.map.expires() && this.map.isExpired(e)) { + this.tryExpireEntries(); + return null; + } + return e; + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + V get(Object key, int hash) { + try { + ReferenceEntry e = this.getLiveEntry(key, hash); + if (e == null) { + V v = null; + return v; + } + V value = e.getValueReference().get(); + if (value != null) { + this.recordRead(e); + } else { + this.tryDrainReferenceQueues(); + } + V v = value; + return v; + } + finally { + this.postReadCleanup(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + boolean containsKey(Object key, int hash) { + try { + if (this.count != 0) { + ReferenceEntry e = this.getLiveEntry(key, hash); + if (e == null) { + boolean bl = false; + return bl; + } + boolean bl = e.getValueReference().get() != null; + return bl; + } + boolean bl = false; + return bl; + } + finally { + this.postReadCleanup(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @VisibleForTesting + boolean containsValue(Object value) { + try { + if (this.count != 0) { + AtomicReferenceArray> table = this.table; + int length = table.length(); + for (int i = 0; i < length; ++i) { + for (ReferenceEntry e = table.get(i); e != null; e = e.getNext()) { + V entryValue = this.getLiveValue(e); + if (entryValue == null || !this.map.valueEquivalence.equivalent(value, entryValue)) continue; + boolean bl = true; + return bl; + } + } + } + boolean bl = false; + return bl; + } + finally { + this.postReadCleanup(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + V put(K key, int hash, V value, boolean onlyIfAbsent) { + this.lock(); + try { + ReferenceEntry first; + this.preWriteCleanup(); + int newCount = this.count + 1; + if (newCount > this.threshold) { + this.expand(); + newCount = this.count + 1; + } + AtomicReferenceArray> table = this.table; + int index = hash & table.length() - 1; + for (ReferenceEntry e = first = table.get(index); e != null; e = e.getNext()) { + K entryKey = e.getKey(); + if (e.getHash() != hash || entryKey == null || !this.map.keyEquivalence.equivalent(key, entryKey)) continue; + ValueReference valueReference = e.getValueReference(); + V entryValue = valueReference.get(); + if (entryValue == null) { + ++this.modCount; + this.setValue(e, value); + if (!valueReference.isComputingReference()) { + this.enqueueNotification(key, hash, entryValue, MapMaker.RemovalCause.COLLECTED); + newCount = this.count; + } else if (this.evictEntries()) { + newCount = this.count + 1; + } + this.count = newCount; + V v = null; + return v; + } + if (onlyIfAbsent) { + this.recordLockedRead(e); + V v = entryValue; + return v; + } + ++this.modCount; + this.enqueueNotification(key, hash, entryValue, MapMaker.RemovalCause.REPLACED); + this.setValue(e, value); + V v = entryValue; + return v; + } + ++this.modCount; + ReferenceEntry newEntry = this.newEntry(key, hash, first); + this.setValue(newEntry, value); + table.set(index, newEntry); + if (this.evictEntries()) { + newCount = this.count + 1; + } + this.count = newCount; + V v = null; + return v; + } + finally { + this.unlock(); + this.postWriteCleanup(); + } + } + + @GuardedBy(value="Segment.this") + void expand() { + AtomicReferenceArray> oldTable = this.table; + int oldCapacity = oldTable.length(); + if (oldCapacity >= 0x40000000) { + return; + } + int newCount = this.count; + AtomicReferenceArray> newTable = this.newEntryArray(oldCapacity << 1); + this.threshold = newTable.length() * 3 / 4; + int newMask = newTable.length() - 1; + for (int oldIndex = 0; oldIndex < oldCapacity; ++oldIndex) { + int newIndex; + ReferenceEntry e; + ReferenceEntry head = oldTable.get(oldIndex); + if (head == null) continue; + ReferenceEntry next = head.getNext(); + int headIndex = head.getHash() & newMask; + if (next == null) { + newTable.set(headIndex, head); + continue; + } + ReferenceEntry tail = head; + int tailIndex = headIndex; + for (e = next; e != null; e = e.getNext()) { + newIndex = e.getHash() & newMask; + if (newIndex == tailIndex) continue; + tailIndex = newIndex; + tail = e; + } + newTable.set(tailIndex, tail); + for (e = head; e != tail; e = e.getNext()) { + newIndex = e.getHash() & newMask; + ReferenceEntry newNext = newTable.get(newIndex); + ReferenceEntry newFirst = this.copyEntry(e, newNext); + if (newFirst != null) { + newTable.set(newIndex, newFirst); + continue; + } + this.removeCollectedEntry(e); + --newCount; + } + } + this.table = newTable; + this.count = newCount; + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + boolean replace(K key, int hash, V oldValue, V newValue) { + this.lock(); + try { + ReferenceEntry first; + this.preWriteCleanup(); + AtomicReferenceArray> table = this.table; + int index = hash & table.length() - 1; + for (ReferenceEntry e = first = table.get(index); e != null; e = e.getNext()) { + K entryKey = e.getKey(); + if (e.getHash() != hash || entryKey == null || !this.map.keyEquivalence.equivalent(key, entryKey)) continue; + ValueReference valueReference = e.getValueReference(); + V entryValue = valueReference.get(); + if (entryValue == null) { + if (this.isCollected(valueReference)) { + int newCount = this.count - 1; + ++this.modCount; + this.enqueueNotification(entryKey, hash, entryValue, MapMaker.RemovalCause.COLLECTED); + ReferenceEntry newFirst = this.removeFromChain(first, e); + newCount = this.count - 1; + table.set(index, newFirst); + this.count = newCount; + } + boolean bl = false; + return bl; + } + if (this.map.valueEquivalence.equivalent(oldValue, entryValue)) { + ++this.modCount; + this.enqueueNotification(key, hash, entryValue, MapMaker.RemovalCause.REPLACED); + this.setValue(e, newValue); + boolean bl = true; + return bl; + } + this.recordLockedRead(e); + boolean bl = false; + return bl; + } + boolean bl = false; + return bl; + } + finally { + this.unlock(); + this.postWriteCleanup(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + V replace(K key, int hash, V newValue) { + this.lock(); + try { + ReferenceEntry first; + this.preWriteCleanup(); + AtomicReferenceArray> table = this.table; + int index = hash & table.length() - 1; + for (ReferenceEntry e = first = table.get(index); e != null; e = e.getNext()) { + K entryKey = e.getKey(); + if (e.getHash() != hash || entryKey == null || !this.map.keyEquivalence.equivalent(key, entryKey)) continue; + ValueReference valueReference = e.getValueReference(); + V entryValue = valueReference.get(); + if (entryValue == null) { + if (this.isCollected(valueReference)) { + int newCount = this.count - 1; + ++this.modCount; + this.enqueueNotification(entryKey, hash, entryValue, MapMaker.RemovalCause.COLLECTED); + ReferenceEntry newFirst = this.removeFromChain(first, e); + newCount = this.count - 1; + table.set(index, newFirst); + this.count = newCount; + } + V v = null; + return v; + } + ++this.modCount; + this.enqueueNotification(key, hash, entryValue, MapMaker.RemovalCause.REPLACED); + this.setValue(e, newValue); + V v = entryValue; + return v; + } + V v = null; + return v; + } + finally { + this.unlock(); + this.postWriteCleanup(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + V remove(Object key, int hash) { + this.lock(); + try { + ReferenceEntry first; + this.preWriteCleanup(); + int newCount = this.count - 1; + AtomicReferenceArray> table = this.table; + int index = hash & table.length() - 1; + for (ReferenceEntry e = first = table.get(index); e != null; e = e.getNext()) { + MapMaker.RemovalCause cause; + K entryKey = e.getKey(); + if (e.getHash() != hash || entryKey == null || !this.map.keyEquivalence.equivalent(key, entryKey)) continue; + ValueReference valueReference = e.getValueReference(); + V entryValue = valueReference.get(); + if (entryValue != null) { + cause = MapMaker.RemovalCause.EXPLICIT; + } else if (this.isCollected(valueReference)) { + cause = MapMaker.RemovalCause.COLLECTED; + } else { + V v = null; + return v; + } + ++this.modCount; + this.enqueueNotification(entryKey, hash, entryValue, cause); + ReferenceEntry newFirst = this.removeFromChain(first, e); + newCount = this.count - 1; + table.set(index, newFirst); + this.count = newCount; + V v = entryValue; + return v; + } + V v = null; + return v; + } + finally { + this.unlock(); + this.postWriteCleanup(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + boolean remove(Object key, int hash, Object value) { + this.lock(); + try { + ReferenceEntry first; + this.preWriteCleanup(); + int newCount = this.count - 1; + AtomicReferenceArray> table = this.table; + int index = hash & table.length() - 1; + for (ReferenceEntry e = first = table.get(index); e != null; e = e.getNext()) { + MapMaker.RemovalCause cause; + K entryKey = e.getKey(); + if (e.getHash() != hash || entryKey == null || !this.map.keyEquivalence.equivalent(key, entryKey)) continue; + ValueReference valueReference = e.getValueReference(); + V entryValue = valueReference.get(); + if (this.map.valueEquivalence.equivalent(value, entryValue)) { + cause = MapMaker.RemovalCause.EXPLICIT; + } else if (this.isCollected(valueReference)) { + cause = MapMaker.RemovalCause.COLLECTED; + } else { + boolean bl = false; + return bl; + } + ++this.modCount; + this.enqueueNotification(entryKey, hash, entryValue, cause); + ReferenceEntry newFirst = this.removeFromChain(first, e); + newCount = this.count - 1; + table.set(index, newFirst); + this.count = newCount; + boolean bl = cause == MapMaker.RemovalCause.EXPLICIT; + return bl; + } + boolean bl = false; + return bl; + } + finally { + this.unlock(); + this.postWriteCleanup(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + void clear() { + if (this.count != 0) { + this.lock(); + try { + int i; + AtomicReferenceArray> table = this.table; + if (this.map.removalNotificationQueue != DISCARDING_QUEUE) { + for (i = 0; i < table.length(); ++i) { + for (ReferenceEntry e = table.get(i); e != null; e = e.getNext()) { + if (e.getValueReference().isComputingReference()) continue; + this.enqueueNotification(e, MapMaker.RemovalCause.EXPLICIT); + } + } + } + for (i = 0; i < table.length(); ++i) { + table.set(i, null); + } + this.clearReferenceQueues(); + this.evictionQueue.clear(); + this.expirationQueue.clear(); + this.readCount.set(0); + ++this.modCount; + this.count = 0; + } + finally { + this.unlock(); + this.postWriteCleanup(); + } + } + } + + @GuardedBy(value="Segment.this") + ReferenceEntry removeFromChain(ReferenceEntry first, ReferenceEntry entry) { + this.evictionQueue.remove(entry); + this.expirationQueue.remove(entry); + int newCount = this.count; + ReferenceEntry newFirst = entry.getNext(); + for (ReferenceEntry e = first; e != entry; e = e.getNext()) { + ReferenceEntry next = this.copyEntry(e, newFirst); + if (next != null) { + newFirst = next; + continue; + } + this.removeCollectedEntry(e); + --newCount; + } + this.count = newCount; + return newFirst; + } + + void removeCollectedEntry(ReferenceEntry entry) { + this.enqueueNotification(entry, MapMaker.RemovalCause.COLLECTED); + this.evictionQueue.remove(entry); + this.expirationQueue.remove(entry); + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + boolean reclaimKey(ReferenceEntry entry, int hash) { + this.lock(); + try { + ReferenceEntry first; + int newCount = this.count - 1; + AtomicReferenceArray> table = this.table; + int index = hash & table.length() - 1; + for (ReferenceEntry e = first = table.get(index); e != null; e = e.getNext()) { + if (e != entry) continue; + ++this.modCount; + this.enqueueNotification(e.getKey(), hash, e.getValueReference().get(), MapMaker.RemovalCause.COLLECTED); + ReferenceEntry newFirst = this.removeFromChain(first, e); + newCount = this.count - 1; + table.set(index, newFirst); + this.count = newCount; + boolean bl = true; + return bl; + } + boolean bl = false; + return bl; + } + finally { + this.unlock(); + this.postWriteCleanup(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + boolean reclaimValue(K key, int hash, ValueReference valueReference) { + this.lock(); + try { + ReferenceEntry first; + int newCount = this.count - 1; + AtomicReferenceArray> table = this.table; + int index = hash & table.length() - 1; + for (ReferenceEntry e = first = table.get(index); e != null; e = e.getNext()) { + K entryKey = e.getKey(); + if (e.getHash() != hash || entryKey == null || !this.map.keyEquivalence.equivalent(key, entryKey)) continue; + ValueReference v = e.getValueReference(); + if (v == valueReference) { + ++this.modCount; + this.enqueueNotification(key, hash, valueReference.get(), MapMaker.RemovalCause.COLLECTED); + ReferenceEntry newFirst = this.removeFromChain(first, e); + newCount = this.count - 1; + table.set(index, newFirst); + this.count = newCount; + boolean bl = true; + return bl; + } + boolean bl = false; + return bl; + } + boolean bl = false; + return bl; + } + finally { + this.unlock(); + if (!this.isHeldByCurrentThread()) { + this.postWriteCleanup(); + } + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + boolean clearValue(K key, int hash, ValueReference valueReference) { + this.lock(); + try { + ReferenceEntry first; + AtomicReferenceArray> table = this.table; + int index = hash & table.length() - 1; + for (ReferenceEntry e = first = table.get(index); e != null; e = e.getNext()) { + K entryKey = e.getKey(); + if (e.getHash() != hash || entryKey == null || !this.map.keyEquivalence.equivalent(key, entryKey)) continue; + ValueReference v = e.getValueReference(); + if (v == valueReference) { + ReferenceEntry newFirst = this.removeFromChain(first, e); + table.set(index, newFirst); + boolean bl = true; + return bl; + } + boolean bl = false; + return bl; + } + boolean bl = false; + return bl; + } + finally { + this.unlock(); + this.postWriteCleanup(); + } + } + + @GuardedBy(value="Segment.this") + boolean removeEntry(ReferenceEntry entry, int hash, MapMaker.RemovalCause cause) { + ReferenceEntry first; + int newCount = this.count - 1; + AtomicReferenceArray> table = this.table; + int index = hash & table.length() - 1; + for (ReferenceEntry e = first = table.get(index); e != null; e = e.getNext()) { + if (e != entry) continue; + ++this.modCount; + this.enqueueNotification(e.getKey(), hash, e.getValueReference().get(), cause); + ReferenceEntry newFirst = this.removeFromChain(first, e); + newCount = this.count - 1; + table.set(index, newFirst); + this.count = newCount; + return true; + } + return false; + } + + boolean isCollected(ValueReference valueReference) { + if (valueReference.isComputingReference()) { + return false; + } + return valueReference.get() == null; + } + + V getLiveValue(ReferenceEntry entry) { + if (entry.getKey() == null) { + this.tryDrainReferenceQueues(); + return null; + } + V value = entry.getValueReference().get(); + if (value == null) { + this.tryDrainReferenceQueues(); + return null; + } + if (this.map.expires() && this.map.isExpired(entry)) { + this.tryExpireEntries(); + return null; + } + return value; + } + + void postReadCleanup() { + if ((this.readCount.incrementAndGet() & 0x3F) == 0) { + this.runCleanup(); + } + } + + @GuardedBy(value="Segment.this") + void preWriteCleanup() { + this.runLockedCleanup(); + } + + void postWriteCleanup() { + this.runUnlockedCleanup(); + } + + void runCleanup() { + this.runLockedCleanup(); + this.runUnlockedCleanup(); + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + void runLockedCleanup() { + if (this.tryLock()) { + try { + this.drainReferenceQueues(); + this.expireEntries(); + this.readCount.set(0); + } + finally { + this.unlock(); + } + } + } + + void runUnlockedCleanup() { + if (!this.isHeldByCurrentThread()) { + this.map.processPendingNotifications(); + } + } + } + + static final class StrongValueReference + implements ValueReference { + final V referent; + + StrongValueReference(V referent) { + this.referent = referent; + } + + @Override + public V get() { + return this.referent; + } + + @Override + public ReferenceEntry getEntry() { + return null; + } + + @Override + public ValueReference copyFor(ReferenceQueue queue, V value, ReferenceEntry entry) { + return this; + } + + @Override + public boolean isComputingReference() { + return false; + } + + @Override + public V waitForValue() { + return this.get(); + } + + @Override + public void clear(ValueReference newValue) { + } + } + + static final class SoftValueReference + extends SoftReference + implements ValueReference { + final ReferenceEntry entry; + + SoftValueReference(ReferenceQueue queue, V referent, ReferenceEntry entry) { + super(referent, queue); + this.entry = entry; + } + + @Override + public ReferenceEntry getEntry() { + return this.entry; + } + + @Override + public void clear(ValueReference newValue) { + this.clear(); + } + + @Override + public ValueReference copyFor(ReferenceQueue queue, V value, ReferenceEntry entry) { + return new SoftValueReference(queue, value, entry); + } + + @Override + public boolean isComputingReference() { + return false; + } + + @Override + public V waitForValue() { + return (V)this.get(); + } + } + + static final class WeakValueReference + extends WeakReference + implements ValueReference { + final ReferenceEntry entry; + + WeakValueReference(ReferenceQueue queue, V referent, ReferenceEntry entry) { + super(referent, queue); + this.entry = entry; + } + + @Override + public ReferenceEntry getEntry() { + return this.entry; + } + + @Override + public void clear(ValueReference newValue) { + this.clear(); + } + + @Override + public ValueReference copyFor(ReferenceQueue queue, V value, ReferenceEntry entry) { + return new WeakValueReference(queue, value, entry); + } + + @Override + public boolean isComputingReference() { + return false; + } + + @Override + public V waitForValue() { + return (V)this.get(); + } + } + + static final class WeakExpirableEvictableEntry + extends WeakEntry + implements ReferenceEntry { + volatile long time = Long.MAX_VALUE; + ReferenceEntry nextExpirable = MapMakerInternalMap.nullEntry(); + ReferenceEntry previousExpirable = MapMakerInternalMap.nullEntry(); + ReferenceEntry nextEvictable = MapMakerInternalMap.nullEntry(); + ReferenceEntry previousEvictable = MapMakerInternalMap.nullEntry(); + + WeakExpirableEvictableEntry(ReferenceQueue queue, K key, int hash, @Nullable ReferenceEntry next) { + super(queue, key, hash, next); + } + + @Override + public long getExpirationTime() { + return this.time; + } + + @Override + public void setExpirationTime(long time) { + this.time = time; + } + + @Override + public ReferenceEntry getNextExpirable() { + return this.nextExpirable; + } + + @Override + public void setNextExpirable(ReferenceEntry next) { + this.nextExpirable = next; + } + + @Override + public ReferenceEntry getPreviousExpirable() { + return this.previousExpirable; + } + + @Override + public void setPreviousExpirable(ReferenceEntry previous) { + this.previousExpirable = previous; + } + + @Override + public ReferenceEntry getNextEvictable() { + return this.nextEvictable; + } + + @Override + public void setNextEvictable(ReferenceEntry next) { + this.nextEvictable = next; + } + + @Override + public ReferenceEntry getPreviousEvictable() { + return this.previousEvictable; + } + + @Override + public void setPreviousEvictable(ReferenceEntry previous) { + this.previousEvictable = previous; + } + } + + static final class WeakEvictableEntry + extends WeakEntry + implements ReferenceEntry { + ReferenceEntry nextEvictable = MapMakerInternalMap.nullEntry(); + ReferenceEntry previousEvictable = MapMakerInternalMap.nullEntry(); + + WeakEvictableEntry(ReferenceQueue queue, K key, int hash, @Nullable ReferenceEntry next) { + super(queue, key, hash, next); + } + + @Override + public ReferenceEntry getNextEvictable() { + return this.nextEvictable; + } + + @Override + public void setNextEvictable(ReferenceEntry next) { + this.nextEvictable = next; + } + + @Override + public ReferenceEntry getPreviousEvictable() { + return this.previousEvictable; + } + + @Override + public void setPreviousEvictable(ReferenceEntry previous) { + this.previousEvictable = previous; + } + } + + static final class WeakExpirableEntry + extends WeakEntry + implements ReferenceEntry { + volatile long time = Long.MAX_VALUE; + ReferenceEntry nextExpirable = MapMakerInternalMap.nullEntry(); + ReferenceEntry previousExpirable = MapMakerInternalMap.nullEntry(); + + WeakExpirableEntry(ReferenceQueue queue, K key, int hash, @Nullable ReferenceEntry next) { + super(queue, key, hash, next); + } + + @Override + public long getExpirationTime() { + return this.time; + } + + @Override + public void setExpirationTime(long time) { + this.time = time; + } + + @Override + public ReferenceEntry getNextExpirable() { + return this.nextExpirable; + } + + @Override + public void setNextExpirable(ReferenceEntry next) { + this.nextExpirable = next; + } + + @Override + public ReferenceEntry getPreviousExpirable() { + return this.previousExpirable; + } + + @Override + public void setPreviousExpirable(ReferenceEntry previous) { + this.previousExpirable = previous; + } + } + + static class WeakEntry + extends WeakReference + implements ReferenceEntry { + final int hash; + final ReferenceEntry next; + volatile ValueReference valueReference = MapMakerInternalMap.unset(); + + WeakEntry(ReferenceQueue queue, K key, int hash, @Nullable ReferenceEntry next) { + super(key, queue); + this.hash = hash; + this.next = next; + } + + @Override + public K getKey() { + return (K)this.get(); + } + + @Override + public long getExpirationTime() { + throw new UnsupportedOperationException(); + } + + @Override + public void setExpirationTime(long time) { + throw new UnsupportedOperationException(); + } + + @Override + public ReferenceEntry getNextExpirable() { + throw new UnsupportedOperationException(); + } + + @Override + public void setNextExpirable(ReferenceEntry next) { + throw new UnsupportedOperationException(); + } + + @Override + public ReferenceEntry getPreviousExpirable() { + throw new UnsupportedOperationException(); + } + + @Override + public void setPreviousExpirable(ReferenceEntry previous) { + throw new UnsupportedOperationException(); + } + + @Override + public ReferenceEntry getNextEvictable() { + throw new UnsupportedOperationException(); + } + + @Override + public void setNextEvictable(ReferenceEntry next) { + throw new UnsupportedOperationException(); + } + + @Override + public ReferenceEntry getPreviousEvictable() { + throw new UnsupportedOperationException(); + } + + @Override + public void setPreviousEvictable(ReferenceEntry previous) { + throw new UnsupportedOperationException(); + } + + @Override + public ValueReference getValueReference() { + return this.valueReference; + } + + @Override + public void setValueReference(ValueReference valueReference) { + ValueReference previous = this.valueReference; + this.valueReference = valueReference; + previous.clear(valueReference); + } + + @Override + public int getHash() { + return this.hash; + } + + @Override + public ReferenceEntry getNext() { + return this.next; + } + } + + static final class SoftExpirableEvictableEntry + extends SoftEntry + implements ReferenceEntry { + volatile long time = Long.MAX_VALUE; + ReferenceEntry nextExpirable = MapMakerInternalMap.nullEntry(); + ReferenceEntry previousExpirable = MapMakerInternalMap.nullEntry(); + ReferenceEntry nextEvictable = MapMakerInternalMap.nullEntry(); + ReferenceEntry previousEvictable = MapMakerInternalMap.nullEntry(); + + SoftExpirableEvictableEntry(ReferenceQueue queue, K key, int hash, @Nullable ReferenceEntry next) { + super(queue, key, hash, next); + } + + @Override + public long getExpirationTime() { + return this.time; + } + + @Override + public void setExpirationTime(long time) { + this.time = time; + } + + @Override + public ReferenceEntry getNextExpirable() { + return this.nextExpirable; + } + + @Override + public void setNextExpirable(ReferenceEntry next) { + this.nextExpirable = next; + } + + @Override + public ReferenceEntry getPreviousExpirable() { + return this.previousExpirable; + } + + @Override + public void setPreviousExpirable(ReferenceEntry previous) { + this.previousExpirable = previous; + } + + @Override + public ReferenceEntry getNextEvictable() { + return this.nextEvictable; + } + + @Override + public void setNextEvictable(ReferenceEntry next) { + this.nextEvictable = next; + } + + @Override + public ReferenceEntry getPreviousEvictable() { + return this.previousEvictable; + } + + @Override + public void setPreviousEvictable(ReferenceEntry previous) { + this.previousEvictable = previous; + } + } + + static final class SoftEvictableEntry + extends SoftEntry + implements ReferenceEntry { + ReferenceEntry nextEvictable = MapMakerInternalMap.nullEntry(); + ReferenceEntry previousEvictable = MapMakerInternalMap.nullEntry(); + + SoftEvictableEntry(ReferenceQueue queue, K key, int hash, @Nullable ReferenceEntry next) { + super(queue, key, hash, next); + } + + @Override + public ReferenceEntry getNextEvictable() { + return this.nextEvictable; + } + + @Override + public void setNextEvictable(ReferenceEntry next) { + this.nextEvictable = next; + } + + @Override + public ReferenceEntry getPreviousEvictable() { + return this.previousEvictable; + } + + @Override + public void setPreviousEvictable(ReferenceEntry previous) { + this.previousEvictable = previous; + } + } + + static final class SoftExpirableEntry + extends SoftEntry + implements ReferenceEntry { + volatile long time = Long.MAX_VALUE; + ReferenceEntry nextExpirable = MapMakerInternalMap.nullEntry(); + ReferenceEntry previousExpirable = MapMakerInternalMap.nullEntry(); + + SoftExpirableEntry(ReferenceQueue queue, K key, int hash, @Nullable ReferenceEntry next) { + super(queue, key, hash, next); + } + + @Override + public long getExpirationTime() { + return this.time; + } + + @Override + public void setExpirationTime(long time) { + this.time = time; + } + + @Override + public ReferenceEntry getNextExpirable() { + return this.nextExpirable; + } + + @Override + public void setNextExpirable(ReferenceEntry next) { + this.nextExpirable = next; + } + + @Override + public ReferenceEntry getPreviousExpirable() { + return this.previousExpirable; + } + + @Override + public void setPreviousExpirable(ReferenceEntry previous) { + this.previousExpirable = previous; + } + } + + static class SoftEntry + extends SoftReference + implements ReferenceEntry { + final int hash; + final ReferenceEntry next; + volatile ValueReference valueReference = MapMakerInternalMap.unset(); + + SoftEntry(ReferenceQueue queue, K key, int hash, @Nullable ReferenceEntry next) { + super(key, queue); + this.hash = hash; + this.next = next; + } + + @Override + public K getKey() { + return (K)this.get(); + } + + @Override + public long getExpirationTime() { + throw new UnsupportedOperationException(); + } + + @Override + public void setExpirationTime(long time) { + throw new UnsupportedOperationException(); + } + + @Override + public ReferenceEntry getNextExpirable() { + throw new UnsupportedOperationException(); + } + + @Override + public void setNextExpirable(ReferenceEntry next) { + throw new UnsupportedOperationException(); + } + + @Override + public ReferenceEntry getPreviousExpirable() { + throw new UnsupportedOperationException(); + } + + @Override + public void setPreviousExpirable(ReferenceEntry previous) { + throw new UnsupportedOperationException(); + } + + @Override + public ReferenceEntry getNextEvictable() { + throw new UnsupportedOperationException(); + } + + @Override + public void setNextEvictable(ReferenceEntry next) { + throw new UnsupportedOperationException(); + } + + @Override + public ReferenceEntry getPreviousEvictable() { + throw new UnsupportedOperationException(); + } + + @Override + public void setPreviousEvictable(ReferenceEntry previous) { + throw new UnsupportedOperationException(); + } + + @Override + public ValueReference getValueReference() { + return this.valueReference; + } + + @Override + public void setValueReference(ValueReference valueReference) { + ValueReference previous = this.valueReference; + this.valueReference = valueReference; + previous.clear(valueReference); + } + + @Override + public int getHash() { + return this.hash; + } + + @Override + public ReferenceEntry getNext() { + return this.next; + } + } + + static final class StrongExpirableEvictableEntry + extends StrongEntry + implements ReferenceEntry { + volatile long time = Long.MAX_VALUE; + ReferenceEntry nextExpirable = MapMakerInternalMap.nullEntry(); + ReferenceEntry previousExpirable = MapMakerInternalMap.nullEntry(); + ReferenceEntry nextEvictable = MapMakerInternalMap.nullEntry(); + ReferenceEntry previousEvictable = MapMakerInternalMap.nullEntry(); + + StrongExpirableEvictableEntry(K key, int hash, @Nullable ReferenceEntry next) { + super(key, hash, next); + } + + @Override + public long getExpirationTime() { + return this.time; + } + + @Override + public void setExpirationTime(long time) { + this.time = time; + } + + @Override + public ReferenceEntry getNextExpirable() { + return this.nextExpirable; + } + + @Override + public void setNextExpirable(ReferenceEntry next) { + this.nextExpirable = next; + } + + @Override + public ReferenceEntry getPreviousExpirable() { + return this.previousExpirable; + } + + @Override + public void setPreviousExpirable(ReferenceEntry previous) { + this.previousExpirable = previous; + } + + @Override + public ReferenceEntry getNextEvictable() { + return this.nextEvictable; + } + + @Override + public void setNextEvictable(ReferenceEntry next) { + this.nextEvictable = next; + } + + @Override + public ReferenceEntry getPreviousEvictable() { + return this.previousEvictable; + } + + @Override + public void setPreviousEvictable(ReferenceEntry previous) { + this.previousEvictable = previous; + } + } + + static final class StrongEvictableEntry + extends StrongEntry + implements ReferenceEntry { + ReferenceEntry nextEvictable = MapMakerInternalMap.nullEntry(); + ReferenceEntry previousEvictable = MapMakerInternalMap.nullEntry(); + + StrongEvictableEntry(K key, int hash, @Nullable ReferenceEntry next) { + super(key, hash, next); + } + + @Override + public ReferenceEntry getNextEvictable() { + return this.nextEvictable; + } + + @Override + public void setNextEvictable(ReferenceEntry next) { + this.nextEvictable = next; + } + + @Override + public ReferenceEntry getPreviousEvictable() { + return this.previousEvictable; + } + + @Override + public void setPreviousEvictable(ReferenceEntry previous) { + this.previousEvictable = previous; + } + } + + static final class StrongExpirableEntry + extends StrongEntry + implements ReferenceEntry { + volatile long time = Long.MAX_VALUE; + ReferenceEntry nextExpirable = MapMakerInternalMap.nullEntry(); + ReferenceEntry previousExpirable = MapMakerInternalMap.nullEntry(); + + StrongExpirableEntry(K key, int hash, @Nullable ReferenceEntry next) { + super(key, hash, next); + } + + @Override + public long getExpirationTime() { + return this.time; + } + + @Override + public void setExpirationTime(long time) { + this.time = time; + } + + @Override + public ReferenceEntry getNextExpirable() { + return this.nextExpirable; + } + + @Override + public void setNextExpirable(ReferenceEntry next) { + this.nextExpirable = next; + } + + @Override + public ReferenceEntry getPreviousExpirable() { + return this.previousExpirable; + } + + @Override + public void setPreviousExpirable(ReferenceEntry previous) { + this.previousExpirable = previous; + } + } + + static class StrongEntry + implements ReferenceEntry { + final K key; + final int hash; + final ReferenceEntry next; + volatile ValueReference valueReference = MapMakerInternalMap.unset(); + + StrongEntry(K key, int hash, @Nullable ReferenceEntry next) { + this.key = key; + this.hash = hash; + this.next = next; + } + + @Override + public K getKey() { + return this.key; + } + + @Override + public long getExpirationTime() { + throw new UnsupportedOperationException(); + } + + @Override + public void setExpirationTime(long time) { + throw new UnsupportedOperationException(); + } + + @Override + public ReferenceEntry getNextExpirable() { + throw new UnsupportedOperationException(); + } + + @Override + public void setNextExpirable(ReferenceEntry next) { + throw new UnsupportedOperationException(); + } + + @Override + public ReferenceEntry getPreviousExpirable() { + throw new UnsupportedOperationException(); + } + + @Override + public void setPreviousExpirable(ReferenceEntry previous) { + throw new UnsupportedOperationException(); + } + + @Override + public ReferenceEntry getNextEvictable() { + throw new UnsupportedOperationException(); + } + + @Override + public void setNextEvictable(ReferenceEntry next) { + throw new UnsupportedOperationException(); + } + + @Override + public ReferenceEntry getPreviousEvictable() { + throw new UnsupportedOperationException(); + } + + @Override + public void setPreviousEvictable(ReferenceEntry previous) { + throw new UnsupportedOperationException(); + } + + @Override + public ValueReference getValueReference() { + return this.valueReference; + } + + @Override + public void setValueReference(ValueReference valueReference) { + ValueReference previous = this.valueReference; + this.valueReference = valueReference; + previous.clear(valueReference); + } + + @Override + public int getHash() { + return this.hash; + } + + @Override + public ReferenceEntry getNext() { + return this.next; + } + } + + static abstract class AbstractReferenceEntry + implements ReferenceEntry { + AbstractReferenceEntry() { + } + + @Override + public ValueReference getValueReference() { + throw new UnsupportedOperationException(); + } + + @Override + public void setValueReference(ValueReference valueReference) { + throw new UnsupportedOperationException(); + } + + @Override + public ReferenceEntry getNext() { + throw new UnsupportedOperationException(); + } + + @Override + public int getHash() { + throw new UnsupportedOperationException(); + } + + @Override + public K getKey() { + throw new UnsupportedOperationException(); + } + + @Override + public long getExpirationTime() { + throw new UnsupportedOperationException(); + } + + @Override + public void setExpirationTime(long time) { + throw new UnsupportedOperationException(); + } + + @Override + public ReferenceEntry getNextExpirable() { + throw new UnsupportedOperationException(); + } + + @Override + public void setNextExpirable(ReferenceEntry next) { + throw new UnsupportedOperationException(); + } + + @Override + public ReferenceEntry getPreviousExpirable() { + throw new UnsupportedOperationException(); + } + + @Override + public void setPreviousExpirable(ReferenceEntry previous) { + throw new UnsupportedOperationException(); + } + + @Override + public ReferenceEntry getNextEvictable() { + throw new UnsupportedOperationException(); + } + + @Override + public void setNextEvictable(ReferenceEntry next) { + throw new UnsupportedOperationException(); + } + + @Override + public ReferenceEntry getPreviousEvictable() { + throw new UnsupportedOperationException(); + } + + @Override + public void setPreviousEvictable(ReferenceEntry previous) { + throw new UnsupportedOperationException(); + } + } + + private static enum NullEntry implements ReferenceEntry + { + INSTANCE; + + + @Override + public ValueReference getValueReference() { + return null; + } + + @Override + public void setValueReference(ValueReference valueReference) { + } + + @Override + public ReferenceEntry getNext() { + return null; + } + + @Override + public int getHash() { + return 0; + } + + @Override + public Object getKey() { + return null; + } + + @Override + public long getExpirationTime() { + return 0L; + } + + @Override + public void setExpirationTime(long time) { + } + + @Override + public ReferenceEntry getNextExpirable() { + return this; + } + + @Override + public void setNextExpirable(ReferenceEntry next) { + } + + @Override + public ReferenceEntry getPreviousExpirable() { + return this; + } + + @Override + public void setPreviousExpirable(ReferenceEntry previous) { + } + + @Override + public ReferenceEntry getNextEvictable() { + return this; + } + + @Override + public void setNextEvictable(ReferenceEntry next) { + } + + @Override + public ReferenceEntry getPreviousEvictable() { + return this; + } + + @Override + public void setPreviousEvictable(ReferenceEntry previous) { + } + } + + static interface ReferenceEntry { + public ValueReference getValueReference(); + + public void setValueReference(ValueReference var1); + + public ReferenceEntry getNext(); + + public int getHash(); + + public K getKey(); + + public long getExpirationTime(); + + public void setExpirationTime(long var1); + + public ReferenceEntry getNextExpirable(); + + public void setNextExpirable(ReferenceEntry var1); + + public ReferenceEntry getPreviousExpirable(); + + public void setPreviousExpirable(ReferenceEntry var1); + + public ReferenceEntry getNextEvictable(); + + public void setNextEvictable(ReferenceEntry var1); + + public ReferenceEntry getPreviousEvictable(); + + public void setPreviousEvictable(ReferenceEntry var1); + } + + static interface ValueReference { + public V get(); + + public V waitForValue() throws ExecutionException; + + public ReferenceEntry getEntry(); + + public ValueReference copyFor(ReferenceQueue var1, @Nullable V var2, ReferenceEntry var3); + + public void clear(@Nullable ValueReference var1); + + public boolean isComputingReference(); + } + + static enum EntryFactory { + STRONG{ + + @Override + ReferenceEntry newEntry(Segment segment, K key, int hash, @Nullable ReferenceEntry next) { + return new StrongEntry(key, hash, next); + } + } + , + STRONG_EXPIRABLE{ + + @Override + ReferenceEntry newEntry(Segment segment, K key, int hash, @Nullable ReferenceEntry next) { + return new StrongExpirableEntry(key, hash, next); + } + + @Override + ReferenceEntry copyEntry(Segment segment, ReferenceEntry original, ReferenceEntry newNext) { + ReferenceEntry newEntry = super.copyEntry(segment, original, newNext); + this.copyExpirableEntry(original, newEntry); + return newEntry; + } + } + , + STRONG_EVICTABLE{ + + @Override + ReferenceEntry newEntry(Segment segment, K key, int hash, @Nullable ReferenceEntry next) { + return new StrongEvictableEntry(key, hash, next); + } + + @Override + ReferenceEntry copyEntry(Segment segment, ReferenceEntry original, ReferenceEntry newNext) { + ReferenceEntry newEntry = super.copyEntry(segment, original, newNext); + this.copyEvictableEntry(original, newEntry); + return newEntry; + } + } + , + STRONG_EXPIRABLE_EVICTABLE{ + + @Override + ReferenceEntry newEntry(Segment segment, K key, int hash, @Nullable ReferenceEntry next) { + return new StrongExpirableEvictableEntry(key, hash, next); + } + + @Override + ReferenceEntry copyEntry(Segment segment, ReferenceEntry original, ReferenceEntry newNext) { + ReferenceEntry newEntry = super.copyEntry(segment, original, newNext); + this.copyExpirableEntry(original, newEntry); + this.copyEvictableEntry(original, newEntry); + return newEntry; + } + } + , + WEAK{ + + @Override + ReferenceEntry newEntry(Segment segment, K key, int hash, @Nullable ReferenceEntry next) { + return new WeakEntry(segment.keyReferenceQueue, key, hash, next); + } + } + , + WEAK_EXPIRABLE{ + + @Override + ReferenceEntry newEntry(Segment segment, K key, int hash, @Nullable ReferenceEntry next) { + return new WeakExpirableEntry(segment.keyReferenceQueue, key, hash, next); + } + + @Override + ReferenceEntry copyEntry(Segment segment, ReferenceEntry original, ReferenceEntry newNext) { + ReferenceEntry newEntry = super.copyEntry(segment, original, newNext); + this.copyExpirableEntry(original, newEntry); + return newEntry; + } + } + , + WEAK_EVICTABLE{ + + @Override + ReferenceEntry newEntry(Segment segment, K key, int hash, @Nullable ReferenceEntry next) { + return new WeakEvictableEntry(segment.keyReferenceQueue, key, hash, next); + } + + @Override + ReferenceEntry copyEntry(Segment segment, ReferenceEntry original, ReferenceEntry newNext) { + ReferenceEntry newEntry = super.copyEntry(segment, original, newNext); + this.copyEvictableEntry(original, newEntry); + return newEntry; + } + } + , + WEAK_EXPIRABLE_EVICTABLE{ + + @Override + ReferenceEntry newEntry(Segment segment, K key, int hash, @Nullable ReferenceEntry next) { + return new WeakExpirableEvictableEntry(segment.keyReferenceQueue, key, hash, next); + } + + @Override + ReferenceEntry copyEntry(Segment segment, ReferenceEntry original, ReferenceEntry newNext) { + ReferenceEntry newEntry = super.copyEntry(segment, original, newNext); + this.copyExpirableEntry(original, newEntry); + this.copyEvictableEntry(original, newEntry); + return newEntry; + } + }; + + static final int EXPIRABLE_MASK = 1; + static final int EVICTABLE_MASK = 2; + static final EntryFactory[][] factories; + + static EntryFactory getFactory(Strength keyStrength, boolean expireAfterWrite, boolean evictsBySize) { + int flags = (expireAfterWrite ? 1 : 0) | (evictsBySize ? 2 : 0); + return factories[keyStrength.ordinal()][flags]; + } + + abstract ReferenceEntry newEntry(Segment var1, K var2, int var3, @Nullable ReferenceEntry var4); + + ReferenceEntry copyEntry(Segment segment, ReferenceEntry original, ReferenceEntry newNext) { + return this.newEntry(segment, original.getKey(), original.getHash(), newNext); + } + + void copyExpirableEntry(ReferenceEntry original, ReferenceEntry newEntry) { + newEntry.setExpirationTime(original.getExpirationTime()); + MapMakerInternalMap.connectExpirables(original.getPreviousExpirable(), newEntry); + MapMakerInternalMap.connectExpirables(newEntry, original.getNextExpirable()); + MapMakerInternalMap.nullifyExpirable(original); + } + + void copyEvictableEntry(ReferenceEntry original, ReferenceEntry newEntry) { + MapMakerInternalMap.connectEvictables(original.getPreviousEvictable(), newEntry); + MapMakerInternalMap.connectEvictables(newEntry, original.getNextEvictable()); + MapMakerInternalMap.nullifyEvictable(original); + } + + static { + factories = new EntryFactory[][]{{STRONG, STRONG_EXPIRABLE, STRONG_EVICTABLE, STRONG_EXPIRABLE_EVICTABLE}, new EntryFactory[0], {WEAK, WEAK_EXPIRABLE, WEAK_EVICTABLE, WEAK_EXPIRABLE_EVICTABLE}}; + } + } + + static enum Strength { + STRONG{ + + @Override + ValueReference referenceValue(Segment segment, ReferenceEntry entry, V value) { + return new StrongValueReference(value); + } + + @Override + Equivalence defaultEquivalence() { + return Equivalence.equals(); + } + } + , + SOFT{ + + @Override + ValueReference referenceValue(Segment segment, ReferenceEntry entry, V value) { + return new SoftValueReference(segment.valueReferenceQueue, value, entry); + } + + @Override + Equivalence defaultEquivalence() { + return Equivalence.identity(); + } + } + , + WEAK{ + + @Override + ValueReference referenceValue(Segment segment, ReferenceEntry entry, V value) { + return new WeakValueReference(segment.valueReferenceQueue, value, entry); + } + + @Override + Equivalence defaultEquivalence() { + return Equivalence.identity(); + } + }; + + + abstract ValueReference referenceValue(Segment var1, ReferenceEntry var2, V var3); + + abstract Equivalence defaultEquivalence(); + } +} diff --git a/src/com/google/common/collect/Maps.java b/src/com/google/common/collect/Maps.java new file mode 100644 index 0000000..b05a84f --- /dev/null +++ b/src/com/google/common/collect/Maps.java @@ -0,0 +1,2691 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.base.Converter; +import com.google.common.base.Equivalence; +import com.google.common.base.Function; +import com.google.common.base.Joiner; +import com.google.common.base.Objects; +import com.google.common.base.Preconditions; +import com.google.common.base.Predicate; +import com.google.common.base.Predicates; +import com.google.common.collect.AbstractMapEntry; +import com.google.common.collect.AbstractNavigableMap; +import com.google.common.collect.BiMap; +import com.google.common.collect.CollectPreconditions; +import com.google.common.collect.Collections2; +import com.google.common.collect.ForwardingCollection; +import com.google.common.collect.ForwardingMap; +import com.google.common.collect.ForwardingMapEntry; +import com.google.common.collect.ForwardingNavigableSet; +import com.google.common.collect.ForwardingSet; +import com.google.common.collect.ForwardingSortedMap; +import com.google.common.collect.ForwardingSortedSet; +import com.google.common.collect.ImmutableEntry; +import com.google.common.collect.ImmutableEnumMap; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.Iterables; +import com.google.common.collect.Iterators; +import com.google.common.collect.Lists; +import com.google.common.collect.MapDifference; +import com.google.common.collect.MapMaker; +import com.google.common.collect.Ordering; +import com.google.common.collect.Platform; +import com.google.common.collect.Sets; +import com.google.common.collect.SortedMapDifference; +import com.google.common.collect.Synchronized; +import com.google.common.collect.TransformedIterator; +import com.google.common.collect.UnmodifiableIterator; +import java.io.Serializable; +import java.util.AbstractCollection; +import java.util.AbstractMap; +import java.util.Collection; +import java.util.Collections; +import java.util.Comparator; +import java.util.EnumMap; +import java.util.Enumeration; +import java.util.HashMap; +import java.util.HashSet; +import java.util.IdentityHashMap; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.NavigableMap; +import java.util.NavigableSet; +import java.util.Properties; +import java.util.Set; +import java.util.SortedMap; +import java.util.SortedSet; +import java.util.TreeMap; +import java.util.concurrent.ConcurrentMap; +import javax.annotation.Nullable; + +@GwtCompatible(emulated=true) +public final class Maps { + static final Joiner.MapJoiner STANDARD_JOINER = Collections2.STANDARD_JOINER.withKeyValueSeparator("="); + + private Maps() { + } + + static Function, K> keyFunction() { + return EntryFunction.KEY; + } + + static Function, V> valueFunction() { + return EntryFunction.VALUE; + } + + static Iterator keyIterator(Iterator> entryIterator) { + return Iterators.transform(entryIterator, Maps.keyFunction()); + } + + static Iterator valueIterator(Iterator> entryIterator) { + return Iterators.transform(entryIterator, Maps.valueFunction()); + } + + static UnmodifiableIterator valueIterator(final UnmodifiableIterator> entryIterator) { + return new UnmodifiableIterator(){ + + @Override + public boolean hasNext() { + return entryIterator.hasNext(); + } + + @Override + public V next() { + return ((Map.Entry)entryIterator.next()).getValue(); + } + }; + } + + @GwtCompatible(serializable=true) + @Beta + public static , V> ImmutableMap immutableEnumMap(Map map) { + if (map instanceof ImmutableEnumMap) { + ImmutableEnumMap result = (ImmutableEnumMap)map; + return result; + } + if (map.isEmpty()) { + return ImmutableMap.of(); + } + for (Map.Entry entry : map.entrySet()) { + Preconditions.checkNotNull(entry.getKey()); + Preconditions.checkNotNull(entry.getValue()); + } + return ImmutableEnumMap.asImmutable(new EnumMap(map)); + } + + public static HashMap newHashMap() { + return new HashMap(); + } + + public static HashMap newHashMapWithExpectedSize(int expectedSize) { + return new HashMap(Maps.capacity(expectedSize)); + } + + static int capacity(int expectedSize) { + if (expectedSize < 3) { + CollectPreconditions.checkNonnegative(expectedSize, "expectedSize"); + return expectedSize + 1; + } + if (expectedSize < 0x40000000) { + return expectedSize + expectedSize / 3; + } + return Integer.MAX_VALUE; + } + + public static HashMap newHashMap(Map map) { + return new HashMap(map); + } + + public static LinkedHashMap newLinkedHashMap() { + return new LinkedHashMap(); + } + + public static LinkedHashMap newLinkedHashMap(Map map) { + return new LinkedHashMap(map); + } + + public static ConcurrentMap newConcurrentMap() { + return new MapMaker().makeMap(); + } + + public static TreeMap newTreeMap() { + return new TreeMap(); + } + + public static TreeMap newTreeMap(SortedMap map) { + return new TreeMap(map); + } + + public static TreeMap newTreeMap(@Nullable Comparator comparator) { + return new TreeMap(comparator); + } + + public static , V> EnumMap newEnumMap(Class type) { + return new EnumMap(Preconditions.checkNotNull(type)); + } + + public static , V> EnumMap newEnumMap(Map map) { + return new EnumMap(map); + } + + public static IdentityHashMap newIdentityHashMap() { + return new IdentityHashMap(); + } + + public static MapDifference difference(Map left, Map right) { + if (left instanceof SortedMap) { + SortedMap sortedLeft = (SortedMap)left; + SortedMapDifference result = Maps.difference(sortedLeft, right); + return result; + } + return Maps.difference(left, right, Equivalence.equals()); + } + + @Beta + public static MapDifference difference(Map left, Map right, Equivalence valueEquivalence) { + Preconditions.checkNotNull(valueEquivalence); + HashMap onlyOnLeft = Maps.newHashMap(); + HashMap onlyOnRight = new HashMap(right); + HashMap onBoth = Maps.newHashMap(); + HashMap differences = Maps.newHashMap(); + Maps.doDifference(left, right, valueEquivalence, onlyOnLeft, onlyOnRight, onBoth, differences); + return new MapDifferenceImpl(onlyOnLeft, onlyOnRight, onBoth, differences); + } + + private static void doDifference(Map left, Map right, Equivalence valueEquivalence, Map onlyOnLeft, Map onlyOnRight, Map onBoth, Map> differences) { + for (Map.Entry entry : left.entrySet()) { + K leftKey = entry.getKey(); + V leftValue = entry.getValue(); + if (right.containsKey(leftKey)) { + V rightValue = onlyOnRight.remove(leftKey); + if (valueEquivalence.equivalent(leftValue, rightValue)) { + onBoth.put(leftKey, leftValue); + continue; + } + differences.put(leftKey, ValueDifferenceImpl.create(leftValue, rightValue)); + continue; + } + onlyOnLeft.put(leftKey, leftValue); + } + } + + private static Map unmodifiableMap(Map map) { + if (map instanceof SortedMap) { + return Collections.unmodifiableSortedMap((SortedMap)map); + } + return Collections.unmodifiableMap(map); + } + + public static SortedMapDifference difference(SortedMap left, Map right) { + Preconditions.checkNotNull(left); + Preconditions.checkNotNull(right); + Comparator comparator = Maps.orNaturalOrder(left.comparator()); + TreeMap onlyOnLeft = Maps.newTreeMap(comparator); + TreeMap onlyOnRight = Maps.newTreeMap(comparator); + onlyOnRight.putAll(right); + TreeMap onBoth = Maps.newTreeMap(comparator); + TreeMap differences = Maps.newTreeMap(comparator); + Maps.doDifference(left, right, Equivalence.equals(), onlyOnLeft, onlyOnRight, onBoth, differences); + return new SortedMapDifferenceImpl(onlyOnLeft, onlyOnRight, onBoth, differences); + } + + static Comparator orNaturalOrder(@Nullable Comparator comparator) { + if (comparator != null) { + return comparator; + } + return Ordering.natural(); + } + + @Beta + public static Map asMap(Set set, Function function) { + if (set instanceof SortedSet) { + return Maps.asMap((SortedSet)set, function); + } + return new AsMapView(set, function); + } + + @Beta + public static SortedMap asMap(SortedSet set, Function function) { + return Platform.mapsAsMapSortedSet(set, function); + } + + static SortedMap asMapSortedIgnoreNavigable(SortedSet set, Function function) { + return new SortedAsMapView(set, function); + } + + @Beta + @GwtIncompatible(value="NavigableMap") + public static NavigableMap asMap(NavigableSet set, Function function) { + return new NavigableAsMapView(set, function); + } + + static Iterator> asMapEntryIterator(Set set, final Function function) { + return new TransformedIterator>(set.iterator()){ + + @Override + Map.Entry transform(K key) { + return Maps.immutableEntry(key, function.apply(key)); + } + }; + } + + private static Set removeOnlySet(final Set set) { + return new ForwardingSet(){ + + @Override + protected Set delegate() { + return set; + } + + @Override + public boolean add(E element) { + throw new UnsupportedOperationException(); + } + + @Override + public boolean addAll(Collection es) { + throw new UnsupportedOperationException(); + } + }; + } + + private static SortedSet removeOnlySortedSet(final SortedSet set) { + return new ForwardingSortedSet(){ + + @Override + protected SortedSet delegate() { + return set; + } + + @Override + public boolean add(E element) { + throw new UnsupportedOperationException(); + } + + @Override + public boolean addAll(Collection es) { + throw new UnsupportedOperationException(); + } + + @Override + public SortedSet headSet(E toElement) { + return Maps.removeOnlySortedSet(super.headSet(toElement)); + } + + @Override + public SortedSet subSet(E fromElement, E toElement) { + return Maps.removeOnlySortedSet(super.subSet(fromElement, toElement)); + } + + @Override + public SortedSet tailSet(E fromElement) { + return Maps.removeOnlySortedSet(super.tailSet(fromElement)); + } + }; + } + + @GwtIncompatible(value="NavigableSet") + private static NavigableSet removeOnlyNavigableSet(final NavigableSet set) { + return new ForwardingNavigableSet(){ + + @Override + protected NavigableSet delegate() { + return set; + } + + @Override + public boolean add(E element) { + throw new UnsupportedOperationException(); + } + + @Override + public boolean addAll(Collection es) { + throw new UnsupportedOperationException(); + } + + @Override + public SortedSet headSet(E toElement) { + return Maps.removeOnlySortedSet(super.headSet(toElement)); + } + + @Override + public SortedSet subSet(E fromElement, E toElement) { + return Maps.removeOnlySortedSet(super.subSet(fromElement, toElement)); + } + + @Override + public SortedSet tailSet(E fromElement) { + return Maps.removeOnlySortedSet(super.tailSet(fromElement)); + } + + @Override + public NavigableSet headSet(E toElement, boolean inclusive) { + return Maps.removeOnlyNavigableSet(super.headSet(toElement, inclusive)); + } + + @Override + public NavigableSet tailSet(E fromElement, boolean inclusive) { + return Maps.removeOnlyNavigableSet(super.tailSet(fromElement, inclusive)); + } + + @Override + public NavigableSet subSet(E fromElement, boolean fromInclusive, E toElement, boolean toInclusive) { + return Maps.removeOnlyNavigableSet(super.subSet(fromElement, fromInclusive, toElement, toInclusive)); + } + + @Override + public NavigableSet descendingSet() { + return Maps.removeOnlyNavigableSet(super.descendingSet()); + } + }; + } + + @Beta + public static ImmutableMap toMap(Iterable keys, Function valueFunction) { + return Maps.toMap(keys.iterator(), valueFunction); + } + + @Beta + public static ImmutableMap toMap(Iterator keys, Function valueFunction) { + Preconditions.checkNotNull(valueFunction); + LinkedHashMap builder = Maps.newLinkedHashMap(); + while (keys.hasNext()) { + K key = keys.next(); + builder.put(key, valueFunction.apply(key)); + } + return ImmutableMap.copyOf(builder); + } + + public static ImmutableMap uniqueIndex(Iterable values, Function keyFunction) { + return Maps.uniqueIndex(values.iterator(), keyFunction); + } + + public static ImmutableMap uniqueIndex(Iterator values, Function keyFunction) { + Preconditions.checkNotNull(keyFunction); + ImmutableMap.Builder builder = ImmutableMap.builder(); + while (values.hasNext()) { + V value = values.next(); + builder.put(keyFunction.apply(value), value); + } + return builder.build(); + } + + @GwtIncompatible(value="java.util.Properties") + public static ImmutableMap fromProperties(Properties properties) { + ImmutableMap.Builder builder = ImmutableMap.builder(); + Enumeration e = properties.propertyNames(); + while (e.hasMoreElements()) { + String key = (String)e.nextElement(); + builder.put(key, properties.getProperty(key)); + } + return builder.build(); + } + + @GwtCompatible(serializable=true) + public static Map.Entry immutableEntry(@Nullable K key, @Nullable V value) { + return new ImmutableEntry(key, value); + } + + static Set> unmodifiableEntrySet(Set> entrySet) { + return new UnmodifiableEntrySet(Collections.unmodifiableSet(entrySet)); + } + + static Map.Entry unmodifiableEntry(final Map.Entry entry) { + Preconditions.checkNotNull(entry); + return new AbstractMapEntry(){ + + @Override + public K getKey() { + return entry.getKey(); + } + + @Override + public V getValue() { + return entry.getValue(); + } + }; + } + + @Beta + public static Converter asConverter(BiMap bimap) { + return new BiMapConverter(bimap); + } + + public static BiMap synchronizedBiMap(BiMap bimap) { + return Synchronized.biMap(bimap, null); + } + + public static BiMap unmodifiableBiMap(BiMap bimap) { + return new UnmodifiableBiMap(bimap, null); + } + + public static Map transformValues(Map fromMap, Function function) { + return Maps.transformEntries(fromMap, Maps.asEntryTransformer(function)); + } + + public static SortedMap transformValues(SortedMap fromMap, Function function) { + return Maps.transformEntries(fromMap, Maps.asEntryTransformer(function)); + } + + @GwtIncompatible(value="NavigableMap") + public static NavigableMap transformValues(NavigableMap fromMap, Function function) { + return Maps.transformEntries(fromMap, Maps.asEntryTransformer(function)); + } + + public static Map transformEntries(Map fromMap, EntryTransformer transformer) { + if (fromMap instanceof SortedMap) { + return Maps.transformEntries((SortedMap)fromMap, transformer); + } + return new TransformedEntriesMap(fromMap, transformer); + } + + public static SortedMap transformEntries(SortedMap fromMap, EntryTransformer transformer) { + return Platform.mapsTransformEntriesSortedMap(fromMap, transformer); + } + + @GwtIncompatible(value="NavigableMap") + public static NavigableMap transformEntries(NavigableMap fromMap, EntryTransformer transformer) { + return new TransformedEntriesNavigableMap(fromMap, transformer); + } + + static SortedMap transformEntriesIgnoreNavigable(SortedMap fromMap, EntryTransformer transformer) { + return new TransformedEntriesSortedMap(fromMap, transformer); + } + + static EntryTransformer asEntryTransformer(final Function function) { + Preconditions.checkNotNull(function); + return new EntryTransformer(){ + + @Override + public V2 transformEntry(K key, V1 value) { + return function.apply(value); + } + }; + } + + static Function asValueToValueFunction(final EntryTransformer transformer, final K key) { + Preconditions.checkNotNull(transformer); + return new Function(){ + + @Override + public V2 apply(@Nullable V1 v1) { + return transformer.transformEntry(key, v1); + } + }; + } + + static Function, V2> asEntryToValueFunction(final EntryTransformer transformer) { + Preconditions.checkNotNull(transformer); + return new Function, V2>(){ + + @Override + public V2 apply(Map.Entry entry) { + return transformer.transformEntry(entry.getKey(), entry.getValue()); + } + }; + } + + static Map.Entry transformEntry(final EntryTransformer transformer, final Map.Entry entry) { + Preconditions.checkNotNull(transformer); + Preconditions.checkNotNull(entry); + return new AbstractMapEntry(){ + + @Override + public K getKey() { + return entry.getKey(); + } + + @Override + public V2 getValue() { + return transformer.transformEntry(entry.getKey(), entry.getValue()); + } + }; + } + + static Function, Map.Entry> asEntryToEntryFunction(final EntryTransformer transformer) { + Preconditions.checkNotNull(transformer); + return new Function, Map.Entry>(){ + + @Override + public Map.Entry apply(Map.Entry entry) { + return Maps.transformEntry(transformer, entry); + } + }; + } + + static Predicate> keyPredicateOnEntries(Predicate keyPredicate) { + return Predicates.compose(keyPredicate, Maps.keyFunction()); + } + + static Predicate> valuePredicateOnEntries(Predicate valuePredicate) { + return Predicates.compose(valuePredicate, Maps.valueFunction()); + } + + public static Map filterKeys(Map unfiltered, Predicate keyPredicate) { + if (unfiltered instanceof SortedMap) { + return Maps.filterKeys((SortedMap)unfiltered, keyPredicate); + } + if (unfiltered instanceof BiMap) { + return Maps.filterKeys((BiMap)unfiltered, keyPredicate); + } + Preconditions.checkNotNull(keyPredicate); + Predicate> entryPredicate = Maps.keyPredicateOnEntries(keyPredicate); + return unfiltered instanceof AbstractFilteredMap ? Maps.filterFiltered((AbstractFilteredMap)unfiltered, entryPredicate) : new FilteredKeyMap(Preconditions.checkNotNull(unfiltered), keyPredicate, entryPredicate); + } + + public static SortedMap filterKeys(SortedMap unfiltered, Predicate keyPredicate) { + return Maps.filterEntries(unfiltered, Maps.keyPredicateOnEntries(keyPredicate)); + } + + @GwtIncompatible(value="NavigableMap") + public static NavigableMap filterKeys(NavigableMap unfiltered, Predicate keyPredicate) { + return Maps.filterEntries(unfiltered, Maps.keyPredicateOnEntries(keyPredicate)); + } + + public static BiMap filterKeys(BiMap unfiltered, Predicate keyPredicate) { + Preconditions.checkNotNull(keyPredicate); + return Maps.filterEntries(unfiltered, Maps.keyPredicateOnEntries(keyPredicate)); + } + + public static Map filterValues(Map unfiltered, Predicate valuePredicate) { + if (unfiltered instanceof SortedMap) { + return Maps.filterValues((SortedMap)unfiltered, valuePredicate); + } + if (unfiltered instanceof BiMap) { + return Maps.filterValues((BiMap)unfiltered, valuePredicate); + } + return Maps.filterEntries(unfiltered, Maps.valuePredicateOnEntries(valuePredicate)); + } + + public static SortedMap filterValues(SortedMap unfiltered, Predicate valuePredicate) { + return Maps.filterEntries(unfiltered, Maps.valuePredicateOnEntries(valuePredicate)); + } + + @GwtIncompatible(value="NavigableMap") + public static NavigableMap filterValues(NavigableMap unfiltered, Predicate valuePredicate) { + return Maps.filterEntries(unfiltered, Maps.valuePredicateOnEntries(valuePredicate)); + } + + public static BiMap filterValues(BiMap unfiltered, Predicate valuePredicate) { + return Maps.filterEntries(unfiltered, Maps.valuePredicateOnEntries(valuePredicate)); + } + + public static Map filterEntries(Map unfiltered, Predicate> entryPredicate) { + if (unfiltered instanceof SortedMap) { + return Maps.filterEntries((SortedMap)unfiltered, entryPredicate); + } + if (unfiltered instanceof BiMap) { + return Maps.filterEntries((BiMap)unfiltered, entryPredicate); + } + Preconditions.checkNotNull(entryPredicate); + return unfiltered instanceof AbstractFilteredMap ? Maps.filterFiltered((AbstractFilteredMap)unfiltered, entryPredicate) : new FilteredEntryMap(Preconditions.checkNotNull(unfiltered), entryPredicate); + } + + public static SortedMap filterEntries(SortedMap unfiltered, Predicate> entryPredicate) { + return Platform.mapsFilterSortedMap(unfiltered, entryPredicate); + } + + static SortedMap filterSortedIgnoreNavigable(SortedMap unfiltered, Predicate> entryPredicate) { + Preconditions.checkNotNull(entryPredicate); + return unfiltered instanceof FilteredEntrySortedMap ? Maps.filterFiltered((FilteredEntrySortedMap)unfiltered, entryPredicate) : new FilteredEntrySortedMap(Preconditions.checkNotNull(unfiltered), entryPredicate); + } + + @GwtIncompatible(value="NavigableMap") + public static NavigableMap filterEntries(NavigableMap unfiltered, Predicate> entryPredicate) { + Preconditions.checkNotNull(entryPredicate); + return unfiltered instanceof FilteredEntryNavigableMap ? Maps.filterFiltered((FilteredEntryNavigableMap)unfiltered, entryPredicate) : new FilteredEntryNavigableMap(Preconditions.checkNotNull(unfiltered), entryPredicate); + } + + public static BiMap filterEntries(BiMap unfiltered, Predicate> entryPredicate) { + Preconditions.checkNotNull(unfiltered); + Preconditions.checkNotNull(entryPredicate); + return unfiltered instanceof FilteredEntryBiMap ? Maps.filterFiltered((FilteredEntryBiMap)unfiltered, entryPredicate) : new FilteredEntryBiMap(unfiltered, entryPredicate); + } + + private static Map filterFiltered(AbstractFilteredMap map, Predicate> entryPredicate) { + return new FilteredEntryMap(map.unfiltered, Predicates.and(map.predicate, entryPredicate)); + } + + private static SortedMap filterFiltered(FilteredEntrySortedMap map, Predicate> entryPredicate) { + Predicate> predicate = Predicates.and(map.predicate, entryPredicate); + return new FilteredEntrySortedMap(map.sortedMap(), predicate); + } + + @GwtIncompatible(value="NavigableMap") + private static NavigableMap filterFiltered(FilteredEntryNavigableMap map, Predicate> entryPredicate) { + Predicate> predicate = Predicates.and(((FilteredEntryNavigableMap)map).entryPredicate, entryPredicate); + return new FilteredEntryNavigableMap(((FilteredEntryNavigableMap)map).unfiltered, predicate); + } + + private static BiMap filterFiltered(FilteredEntryBiMap map, Predicate> entryPredicate) { + Predicate> predicate = Predicates.and(map.predicate, entryPredicate); + return new FilteredEntryBiMap(map.unfiltered(), predicate); + } + + @GwtIncompatible(value="NavigableMap") + public static NavigableMap unmodifiableNavigableMap(NavigableMap map) { + Preconditions.checkNotNull(map); + if (map instanceof UnmodifiableNavigableMap) { + return map; + } + return new UnmodifiableNavigableMap(map); + } + + @Nullable + private static Map.Entry unmodifiableOrNull(@Nullable Map.Entry entry) { + return entry == null ? null : Maps.unmodifiableEntry(entry); + } + + @GwtIncompatible(value="NavigableMap") + public static NavigableMap synchronizedNavigableMap(NavigableMap navigableMap) { + return Synchronized.navigableMap(navigableMap); + } + + static V safeGet(Map map, @Nullable Object key) { + Preconditions.checkNotNull(map); + try { + return map.get(key); + } + catch (ClassCastException e) { + return null; + } + catch (NullPointerException e) { + return null; + } + } + + static boolean safeContainsKey(Map map, Object key) { + Preconditions.checkNotNull(map); + try { + return map.containsKey(key); + } + catch (ClassCastException e) { + return false; + } + catch (NullPointerException e) { + return false; + } + } + + static V safeRemove(Map map, Object key) { + Preconditions.checkNotNull(map); + try { + return map.remove(key); + } + catch (ClassCastException e) { + return null; + } + catch (NullPointerException e) { + return null; + } + } + + static boolean containsKeyImpl(Map map, @Nullable Object key) { + return Iterators.contains(Maps.keyIterator(map.entrySet().iterator()), key); + } + + static boolean containsValueImpl(Map map, @Nullable Object value) { + return Iterators.contains(Maps.valueIterator(map.entrySet().iterator()), value); + } + + static boolean containsEntryImpl(Collection> c, Object o) { + if (!(o instanceof Map.Entry)) { + return false; + } + return c.contains(Maps.unmodifiableEntry((Map.Entry)o)); + } + + static boolean removeEntryImpl(Collection> c, Object o) { + if (!(o instanceof Map.Entry)) { + return false; + } + return c.remove(Maps.unmodifiableEntry((Map.Entry)o)); + } + + static boolean equalsImpl(Map map, Object object) { + if (map == object) { + return true; + } + if (object instanceof Map) { + Map o = (Map)object; + return map.entrySet().equals(o.entrySet()); + } + return false; + } + + static String toStringImpl(Map map) { + StringBuilder sb = Collections2.newStringBuilderForCollection(map.size()).append('{'); + STANDARD_JOINER.appendTo(sb, map); + return sb.append('}').toString(); + } + + static void putAllImpl(Map self, Map map) { + for (Map.Entry entry : map.entrySet()) { + self.put(entry.getKey(), entry.getValue()); + } + } + + @Nullable + static K keyOrNull(@Nullable Map.Entry entry) { + return entry == null ? null : (K)entry.getKey(); + } + + @Nullable + static V valueOrNull(@Nullable Map.Entry entry) { + return entry == null ? null : (V)entry.getValue(); + } + + @GwtIncompatible(value="NavigableMap") + static abstract class DescendingMap + extends ForwardingMap + implements NavigableMap { + private transient Comparator comparator; + private transient Set> entrySet; + private transient NavigableSet navigableKeySet; + + DescendingMap() { + } + + abstract NavigableMap forward(); + + @Override + protected final Map delegate() { + return this.forward(); + } + + @Override + public Comparator comparator() { + Comparator result = this.comparator; + if (result == null) { + Comparator forwardCmp = this.forward().comparator(); + if (forwardCmp == null) { + forwardCmp = Ordering.natural(); + } + result = this.comparator = DescendingMap.reverse(forwardCmp); + } + return result; + } + + private static Ordering reverse(Comparator forward) { + return Ordering.from(forward).reverse(); + } + + @Override + public K firstKey() { + return this.forward().lastKey(); + } + + @Override + public K lastKey() { + return this.forward().firstKey(); + } + + @Override + public Map.Entry lowerEntry(K key) { + return this.forward().higherEntry(key); + } + + @Override + public K lowerKey(K key) { + return this.forward().higherKey(key); + } + + @Override + public Map.Entry floorEntry(K key) { + return this.forward().ceilingEntry(key); + } + + @Override + public K floorKey(K key) { + return this.forward().ceilingKey(key); + } + + @Override + public Map.Entry ceilingEntry(K key) { + return this.forward().floorEntry(key); + } + + @Override + public K ceilingKey(K key) { + return this.forward().floorKey(key); + } + + @Override + public Map.Entry higherEntry(K key) { + return this.forward().lowerEntry(key); + } + + @Override + public K higherKey(K key) { + return this.forward().lowerKey(key); + } + + @Override + public Map.Entry firstEntry() { + return this.forward().lastEntry(); + } + + @Override + public Map.Entry lastEntry() { + return this.forward().firstEntry(); + } + + @Override + public Map.Entry pollFirstEntry() { + return this.forward().pollLastEntry(); + } + + @Override + public Map.Entry pollLastEntry() { + return this.forward().pollFirstEntry(); + } + + @Override + public NavigableMap descendingMap() { + return this.forward(); + } + + @Override + public Set> entrySet() { + Set> result = this.entrySet; + return result == null ? (this.entrySet = this.createEntrySet()) : result; + } + + abstract Iterator> entryIterator(); + + Set> createEntrySet() { + return new EntrySet(){ + + @Override + Map map() { + return DescendingMap.this; + } + + @Override + public Iterator> iterator() { + return DescendingMap.this.entryIterator(); + } + }; + } + + @Override + public Set keySet() { + return this.navigableKeySet(); + } + + @Override + public NavigableSet navigableKeySet() { + NavigableSet result = this.navigableKeySet; + return result == null ? (this.navigableKeySet = new NavigableKeySet(this)) : result; + } + + @Override + public NavigableSet descendingKeySet() { + return this.forward().navigableKeySet(); + } + + @Override + public NavigableMap subMap(K fromKey, boolean fromInclusive, K toKey, boolean toInclusive) { + return this.forward().subMap(toKey, toInclusive, fromKey, fromInclusive).descendingMap(); + } + + @Override + public NavigableMap headMap(K toKey, boolean inclusive) { + return this.forward().tailMap(toKey, inclusive).descendingMap(); + } + + @Override + public NavigableMap tailMap(K fromKey, boolean inclusive) { + return this.forward().headMap(fromKey, inclusive).descendingMap(); + } + + @Override + public SortedMap subMap(K fromKey, K toKey) { + return this.subMap(fromKey, true, toKey, false); + } + + @Override + public SortedMap headMap(K toKey) { + return this.headMap(toKey, false); + } + + @Override + public SortedMap tailMap(K fromKey) { + return this.tailMap(fromKey, true); + } + + @Override + public Collection values() { + return new Values(this); + } + + @Override + public String toString() { + return this.standardToString(); + } + } + + static abstract class EntrySet + extends Sets.ImprovedAbstractSet> { + EntrySet() { + } + + abstract Map map(); + + @Override + public int size() { + return this.map().size(); + } + + @Override + public void clear() { + this.map().clear(); + } + + @Override + public boolean contains(Object o) { + if (o instanceof Map.Entry) { + Map.Entry entry = (Map.Entry)o; + Object key = entry.getKey(); + V value = Maps.safeGet(this.map(), key); + return Objects.equal(value, entry.getValue()) && (value != null || this.map().containsKey(key)); + } + return false; + } + + @Override + public boolean isEmpty() { + return this.map().isEmpty(); + } + + @Override + public boolean remove(Object o) { + if (this.contains(o)) { + Map.Entry entry = (Map.Entry)o; + return this.map().keySet().remove(entry.getKey()); + } + return false; + } + + @Override + public boolean removeAll(Collection c) { + try { + return super.removeAll(Preconditions.checkNotNull(c)); + } + catch (UnsupportedOperationException e) { + return Sets.removeAllImpl(this, c.iterator()); + } + } + + @Override + public boolean retainAll(Collection c) { + try { + return super.retainAll(Preconditions.checkNotNull(c)); + } + catch (UnsupportedOperationException e) { + HashSet keys = Sets.newHashSetWithExpectedSize(c.size()); + for (Object o : c) { + if (!this.contains(o)) continue; + Map.Entry entry = (Map.Entry)o; + keys.add(entry.getKey()); + } + return this.map().keySet().retainAll(keys); + } + } + } + + static class Values + extends AbstractCollection { + final Map map; + + Values(Map map) { + this.map = Preconditions.checkNotNull(map); + } + + final Map map() { + return this.map; + } + + @Override + public Iterator iterator() { + return Maps.valueIterator(this.map().entrySet().iterator()); + } + + @Override + public boolean remove(Object o) { + try { + return super.remove(o); + } + catch (UnsupportedOperationException e) { + for (Map.Entry entry : this.map().entrySet()) { + if (!Objects.equal(o, entry.getValue())) continue; + this.map().remove(entry.getKey()); + return true; + } + return false; + } + } + + @Override + public boolean removeAll(Collection c) { + try { + return super.removeAll(Preconditions.checkNotNull(c)); + } + catch (UnsupportedOperationException e) { + HashSet toRemove = Sets.newHashSet(); + for (Map.Entry entry : this.map().entrySet()) { + if (!c.contains(entry.getValue())) continue; + toRemove.add(entry.getKey()); + } + return this.map().keySet().removeAll(toRemove); + } + } + + @Override + public boolean retainAll(Collection c) { + try { + return super.retainAll(Preconditions.checkNotNull(c)); + } + catch (UnsupportedOperationException e) { + HashSet toRetain = Sets.newHashSet(); + for (Map.Entry entry : this.map().entrySet()) { + if (!c.contains(entry.getValue())) continue; + toRetain.add(entry.getKey()); + } + return this.map().keySet().retainAll(toRetain); + } + } + + @Override + public int size() { + return this.map().size(); + } + + @Override + public boolean isEmpty() { + return this.map().isEmpty(); + } + + @Override + public boolean contains(@Nullable Object o) { + return this.map().containsValue(o); + } + + @Override + public void clear() { + this.map().clear(); + } + } + + @GwtIncompatible(value="NavigableMap") + static class NavigableKeySet + extends SortedKeySet + implements NavigableSet { + NavigableKeySet(NavigableMap map) { + super(map); + } + + @Override + NavigableMap map() { + return (NavigableMap)this.map; + } + + @Override + public K lower(K e) { + return this.map().lowerKey(e); + } + + @Override + public K floor(K e) { + return this.map().floorKey(e); + } + + @Override + public K ceiling(K e) { + return this.map().ceilingKey(e); + } + + @Override + public K higher(K e) { + return this.map().higherKey(e); + } + + @Override + public K pollFirst() { + return Maps.keyOrNull(this.map().pollFirstEntry()); + } + + @Override + public K pollLast() { + return Maps.keyOrNull(this.map().pollLastEntry()); + } + + @Override + public NavigableSet descendingSet() { + return this.map().descendingKeySet(); + } + + @Override + public Iterator descendingIterator() { + return this.descendingSet().iterator(); + } + + @Override + public NavigableSet subSet(K fromElement, boolean fromInclusive, K toElement, boolean toInclusive) { + return this.map().subMap(fromElement, fromInclusive, toElement, toInclusive).navigableKeySet(); + } + + @Override + public NavigableSet headSet(K toElement, boolean inclusive) { + return this.map().headMap(toElement, inclusive).navigableKeySet(); + } + + @Override + public NavigableSet tailSet(K fromElement, boolean inclusive) { + return this.map().tailMap(fromElement, inclusive).navigableKeySet(); + } + + @Override + public SortedSet subSet(K fromElement, K toElement) { + return this.subSet(fromElement, true, toElement, false); + } + + @Override + public SortedSet headSet(K toElement) { + return this.headSet(toElement, false); + } + + @Override + public SortedSet tailSet(K fromElement) { + return this.tailSet(fromElement, true); + } + } + + static class SortedKeySet + extends KeySet + implements SortedSet { + SortedKeySet(SortedMap map) { + super(map); + } + + @Override + SortedMap map() { + return (SortedMap)super.map(); + } + + @Override + public Comparator comparator() { + return this.map().comparator(); + } + + @Override + public SortedSet subSet(K fromElement, K toElement) { + return new SortedKeySet(this.map().subMap(fromElement, toElement)); + } + + @Override + public SortedSet headSet(K toElement) { + return new SortedKeySet(this.map().headMap(toElement)); + } + + @Override + public SortedSet tailSet(K fromElement) { + return new SortedKeySet(this.map().tailMap(fromElement)); + } + + @Override + public K first() { + return this.map().firstKey(); + } + + @Override + public K last() { + return this.map().lastKey(); + } + } + + static class KeySet + extends Sets.ImprovedAbstractSet { + final Map map; + + KeySet(Map map) { + this.map = Preconditions.checkNotNull(map); + } + + Map map() { + return this.map; + } + + @Override + public Iterator iterator() { + return Maps.keyIterator(this.map().entrySet().iterator()); + } + + @Override + public int size() { + return this.map().size(); + } + + @Override + public boolean isEmpty() { + return this.map().isEmpty(); + } + + @Override + public boolean contains(Object o) { + return this.map().containsKey(o); + } + + @Override + public boolean remove(Object o) { + if (this.contains(o)) { + this.map().remove(o); + return true; + } + return false; + } + + @Override + public void clear() { + this.map().clear(); + } + } + + @GwtCompatible + static abstract class ImprovedAbstractMap + extends AbstractMap { + private transient Set> entrySet; + private transient Set keySet; + private transient Collection values; + + ImprovedAbstractMap() { + } + + abstract Set> createEntrySet(); + + @Override + public Set> entrySet() { + Set> result = this.entrySet; + return result == null ? (this.entrySet = this.createEntrySet()) : result; + } + + @Override + public Set keySet() { + Set result = this.keySet; + return result == null ? (this.keySet = this.createKeySet()) : result; + } + + Set createKeySet() { + return new KeySet(this); + } + + @Override + public Collection values() { + Collection result = this.values; + return result == null ? (this.values = this.createValues()) : result; + } + + Collection createValues() { + return new Values(this); + } + } + + @GwtIncompatible(value="NavigableMap") + static class UnmodifiableNavigableMap + extends ForwardingSortedMap + implements NavigableMap, + Serializable { + private final NavigableMap delegate; + private transient UnmodifiableNavigableMap descendingMap; + + UnmodifiableNavigableMap(NavigableMap delegate) { + this.delegate = delegate; + } + + UnmodifiableNavigableMap(NavigableMap delegate, UnmodifiableNavigableMap descendingMap) { + this.delegate = delegate; + this.descendingMap = descendingMap; + } + + @Override + protected SortedMap delegate() { + return Collections.unmodifiableSortedMap(this.delegate); + } + + @Override + public Map.Entry lowerEntry(K key) { + return Maps.unmodifiableOrNull(this.delegate.lowerEntry(key)); + } + + @Override + public K lowerKey(K key) { + return this.delegate.lowerKey(key); + } + + @Override + public Map.Entry floorEntry(K key) { + return Maps.unmodifiableOrNull(this.delegate.floorEntry(key)); + } + + @Override + public K floorKey(K key) { + return this.delegate.floorKey(key); + } + + @Override + public Map.Entry ceilingEntry(K key) { + return Maps.unmodifiableOrNull(this.delegate.ceilingEntry(key)); + } + + @Override + public K ceilingKey(K key) { + return this.delegate.ceilingKey(key); + } + + @Override + public Map.Entry higherEntry(K key) { + return Maps.unmodifiableOrNull(this.delegate.higherEntry(key)); + } + + @Override + public K higherKey(K key) { + return this.delegate.higherKey(key); + } + + @Override + public Map.Entry firstEntry() { + return Maps.unmodifiableOrNull(this.delegate.firstEntry()); + } + + @Override + public Map.Entry lastEntry() { + return Maps.unmodifiableOrNull(this.delegate.lastEntry()); + } + + @Override + public final Map.Entry pollFirstEntry() { + throw new UnsupportedOperationException(); + } + + @Override + public final Map.Entry pollLastEntry() { + throw new UnsupportedOperationException(); + } + + @Override + public NavigableMap descendingMap() { + UnmodifiableNavigableMap result = this.descendingMap; + return result == null ? (this.descendingMap = new UnmodifiableNavigableMap(this.delegate.descendingMap(), this)) : result; + } + + @Override + public Set keySet() { + return this.navigableKeySet(); + } + + @Override + public NavigableSet navigableKeySet() { + return Sets.unmodifiableNavigableSet(this.delegate.navigableKeySet()); + } + + @Override + public NavigableSet descendingKeySet() { + return Sets.unmodifiableNavigableSet(this.delegate.descendingKeySet()); + } + + @Override + public SortedMap subMap(K fromKey, K toKey) { + return this.subMap(fromKey, true, toKey, false); + } + + @Override + public SortedMap headMap(K toKey) { + return this.headMap(toKey, false); + } + + @Override + public SortedMap tailMap(K fromKey) { + return this.tailMap(fromKey, true); + } + + @Override + public NavigableMap subMap(K fromKey, boolean fromInclusive, K toKey, boolean toInclusive) { + return Maps.unmodifiableNavigableMap(this.delegate.subMap(fromKey, fromInclusive, toKey, toInclusive)); + } + + @Override + public NavigableMap headMap(K toKey, boolean inclusive) { + return Maps.unmodifiableNavigableMap(this.delegate.headMap(toKey, inclusive)); + } + + @Override + public NavigableMap tailMap(K fromKey, boolean inclusive) { + return Maps.unmodifiableNavigableMap(this.delegate.tailMap(fromKey, inclusive)); + } + } + + static final class FilteredEntryBiMap + extends FilteredEntryMap + implements BiMap { + private final BiMap inverse; + + private static Predicate> inversePredicate(final Predicate> forwardPredicate) { + return new Predicate>(){ + + @Override + public boolean apply(Map.Entry input) { + return forwardPredicate.apply(Maps.immutableEntry(input.getValue(), input.getKey())); + } + }; + } + + FilteredEntryBiMap(BiMap delegate, Predicate> predicate) { + super(delegate, predicate); + this.inverse = new FilteredEntryBiMap(delegate.inverse(), FilteredEntryBiMap.inversePredicate(predicate), this); + } + + private FilteredEntryBiMap(BiMap delegate, Predicate> predicate, BiMap inverse) { + super(delegate, predicate); + this.inverse = inverse; + } + + BiMap unfiltered() { + return (BiMap)this.unfiltered; + } + + @Override + public V forcePut(@Nullable K key, @Nullable V value) { + Preconditions.checkArgument(this.apply(key, value)); + return this.unfiltered().forcePut(key, value); + } + + @Override + public BiMap inverse() { + return this.inverse; + } + + @Override + public Set values() { + return this.inverse.keySet(); + } + } + + @GwtIncompatible(value="NavigableMap") + private static class FilteredEntryNavigableMap + extends AbstractNavigableMap { + private final NavigableMap unfiltered; + private final Predicate> entryPredicate; + private final Map filteredDelegate; + + FilteredEntryNavigableMap(NavigableMap unfiltered, Predicate> entryPredicate) { + this.unfiltered = Preconditions.checkNotNull(unfiltered); + this.entryPredicate = entryPredicate; + this.filteredDelegate = new FilteredEntryMap(unfiltered, entryPredicate); + } + + @Override + public Comparator comparator() { + return this.unfiltered.comparator(); + } + + @Override + public NavigableSet navigableKeySet() { + return new NavigableKeySet(this){ + + @Override + public boolean removeAll(Collection c) { + return Iterators.removeIf(FilteredEntryNavigableMap.this.unfiltered.entrySet().iterator(), Predicates.and(FilteredEntryNavigableMap.this.entryPredicate, Maps.keyPredicateOnEntries(Predicates.in(c)))); + } + + @Override + public boolean retainAll(Collection c) { + return Iterators.removeIf(FilteredEntryNavigableMap.this.unfiltered.entrySet().iterator(), Predicates.and(FilteredEntryNavigableMap.this.entryPredicate, Maps.keyPredicateOnEntries(Predicates.not(Predicates.in(c))))); + } + }; + } + + @Override + public Collection values() { + return new FilteredMapValues(this, this.unfiltered, this.entryPredicate); + } + + @Override + Iterator> entryIterator() { + return Iterators.filter(this.unfiltered.entrySet().iterator(), this.entryPredicate); + } + + @Override + Iterator> descendingEntryIterator() { + return Iterators.filter(this.unfiltered.descendingMap().entrySet().iterator(), this.entryPredicate); + } + + @Override + public int size() { + return this.filteredDelegate.size(); + } + + @Override + public boolean isEmpty() { + return !Iterables.any(this.unfiltered.entrySet(), this.entryPredicate); + } + + @Override + @Nullable + public V get(@Nullable Object key) { + return this.filteredDelegate.get(key); + } + + @Override + public boolean containsKey(@Nullable Object key) { + return this.filteredDelegate.containsKey(key); + } + + @Override + public V put(K key, V value) { + return this.filteredDelegate.put(key, value); + } + + @Override + public V remove(@Nullable Object key) { + return this.filteredDelegate.remove(key); + } + + @Override + public void putAll(Map m) { + this.filteredDelegate.putAll(m); + } + + @Override + public void clear() { + this.filteredDelegate.clear(); + } + + @Override + public Set> entrySet() { + return this.filteredDelegate.entrySet(); + } + + @Override + public Map.Entry pollFirstEntry() { + return Iterables.removeFirstMatching(this.unfiltered.entrySet(), this.entryPredicate); + } + + @Override + public Map.Entry pollLastEntry() { + return Iterables.removeFirstMatching(this.unfiltered.descendingMap().entrySet(), this.entryPredicate); + } + + @Override + public NavigableMap descendingMap() { + return Maps.filterEntries(this.unfiltered.descendingMap(), this.entryPredicate); + } + + @Override + public NavigableMap subMap(K fromKey, boolean fromInclusive, K toKey, boolean toInclusive) { + return Maps.filterEntries(this.unfiltered.subMap(fromKey, fromInclusive, toKey, toInclusive), this.entryPredicate); + } + + @Override + public NavigableMap headMap(K toKey, boolean inclusive) { + return Maps.filterEntries(this.unfiltered.headMap(toKey, inclusive), this.entryPredicate); + } + + @Override + public NavigableMap tailMap(K fromKey, boolean inclusive) { + return Maps.filterEntries(this.unfiltered.tailMap(fromKey, inclusive), this.entryPredicate); + } + } + + private static class FilteredEntrySortedMap + extends FilteredEntryMap + implements SortedMap { + FilteredEntrySortedMap(SortedMap unfiltered, Predicate> entryPredicate) { + super(unfiltered, entryPredicate); + } + + SortedMap sortedMap() { + return (SortedMap)this.unfiltered; + } + + @Override + public SortedSet keySet() { + return (SortedSet)super.keySet(); + } + + @Override + SortedSet createKeySet() { + return new SortedKeySet(); + } + + @Override + public Comparator comparator() { + return this.sortedMap().comparator(); + } + + @Override + public K firstKey() { + return (K)this.keySet().iterator().next(); + } + + @Override + public K lastKey() { + SortedMap headMap = this.sortedMap(); + K key; + while (!this.apply(key = headMap.lastKey(), this.unfiltered.get(key))) { + headMap = this.sortedMap().headMap(key); + } + return key; + } + + @Override + public SortedMap headMap(K toKey) { + return new FilteredEntrySortedMap(this.sortedMap().headMap(toKey), this.predicate); + } + + @Override + public SortedMap subMap(K fromKey, K toKey) { + return new FilteredEntrySortedMap(this.sortedMap().subMap(fromKey, toKey), this.predicate); + } + + @Override + public SortedMap tailMap(K fromKey) { + return new FilteredEntrySortedMap(this.sortedMap().tailMap(fromKey), this.predicate); + } + + class SortedKeySet + extends FilteredEntryMap.KeySet + implements SortedSet { + SortedKeySet() { + } + + @Override + public Comparator comparator() { + return FilteredEntrySortedMap.this.sortedMap().comparator(); + } + + @Override + public SortedSet subSet(K fromElement, K toElement) { + return (SortedSet)FilteredEntrySortedMap.this.subMap(fromElement, toElement).keySet(); + } + + @Override + public SortedSet headSet(K toElement) { + return (SortedSet)FilteredEntrySortedMap.this.headMap(toElement).keySet(); + } + + @Override + public SortedSet tailSet(K fromElement) { + return (SortedSet)FilteredEntrySortedMap.this.tailMap(fromElement).keySet(); + } + + @Override + public K first() { + return FilteredEntrySortedMap.this.firstKey(); + } + + @Override + public K last() { + return FilteredEntrySortedMap.this.lastKey(); + } + } + } + + static class FilteredEntryMap + extends AbstractFilteredMap { + final Set> filteredEntrySet; + + FilteredEntryMap(Map unfiltered, Predicate> entryPredicate) { + super(unfiltered, entryPredicate); + this.filteredEntrySet = Sets.filter(unfiltered.entrySet(), this.predicate); + } + + @Override + protected Set> createEntrySet() { + return new EntrySet(); + } + + @Override + Set createKeySet() { + return new KeySet(); + } + + class KeySet + extends com.google.common.collect.Maps$KeySet { + KeySet() { + super(FilteredEntryMap.this); + } + + @Override + public boolean remove(Object o) { + if (FilteredEntryMap.this.containsKey(o)) { + FilteredEntryMap.this.unfiltered.remove(o); + return true; + } + return false; + } + + @Override + private boolean removeIf(Predicate keyPredicate) { + return Iterables.removeIf(FilteredEntryMap.this.unfiltered.entrySet(), Predicates.and(FilteredEntryMap.this.predicate, Maps.keyPredicateOnEntries(keyPredicate))); + } + + @Override + public boolean removeAll(Collection c) { + return this.removeIf(Predicates.in(c)); + } + + @Override + public boolean retainAll(Collection c) { + return this.removeIf(Predicates.not(Predicates.in(c))); + } + + @Override + public Object[] toArray() { + return Lists.newArrayList(this.iterator()).toArray(); + } + + @Override + public T[] toArray(T[] array) { + return Lists.newArrayList(this.iterator()).toArray(array); + } + } + + private class EntrySet + extends ForwardingSet> { + private EntrySet() { + } + + @Override + protected Set> delegate() { + return FilteredEntryMap.this.filteredEntrySet; + } + + @Override + public Iterator> iterator() { + return new TransformedIterator, Map.Entry>(FilteredEntryMap.this.filteredEntrySet.iterator()){ + + @Override + Map.Entry transform(final Map.Entry entry) { + return new ForwardingMapEntry(){ + + @Override + protected Map.Entry delegate() { + return entry; + } + + @Override + public V setValue(V newValue) { + Preconditions.checkArgument(FilteredEntryMap.this.apply(this.getKey(), newValue)); + return super.setValue(newValue); + } + }; + } + }; + } + } + } + + private static class FilteredKeyMap + extends AbstractFilteredMap { + Predicate keyPredicate; + + FilteredKeyMap(Map unfiltered, Predicate keyPredicate, Predicate> entryPredicate) { + super(unfiltered, entryPredicate); + this.keyPredicate = keyPredicate; + } + + @Override + protected Set> createEntrySet() { + return Sets.filter(this.unfiltered.entrySet(), this.predicate); + } + + @Override + Set createKeySet() { + return Sets.filter(this.unfiltered.keySet(), this.keyPredicate); + } + + @Override + public boolean containsKey(Object key) { + return this.unfiltered.containsKey(key) && this.keyPredicate.apply(key); + } + } + + private static final class FilteredMapValues + extends Values { + Map unfiltered; + Predicate> predicate; + + FilteredMapValues(Map filteredMap, Map unfiltered, Predicate> predicate) { + super(filteredMap); + this.unfiltered = unfiltered; + this.predicate = predicate; + } + + @Override + public boolean remove(Object o) { + return Iterables.removeFirstMatching(this.unfiltered.entrySet(), Predicates.and(this.predicate, Maps.valuePredicateOnEntries(Predicates.equalTo(o)))) != null; + } + + @Override + private boolean removeIf(Predicate valuePredicate) { + return Iterables.removeIf(this.unfiltered.entrySet(), Predicates.and(this.predicate, Maps.valuePredicateOnEntries(valuePredicate))); + } + + @Override + public boolean removeAll(Collection collection) { + return this.removeIf(Predicates.in(collection)); + } + + @Override + public boolean retainAll(Collection collection) { + return this.removeIf(Predicates.not(Predicates.in(collection))); + } + + @Override + public Object[] toArray() { + return Lists.newArrayList(this.iterator()).toArray(); + } + + @Override + public T[] toArray(T[] array) { + return Lists.newArrayList(this.iterator()).toArray(array); + } + } + + private static abstract class AbstractFilteredMap + extends ImprovedAbstractMap { + final Map unfiltered; + final Predicate> predicate; + + AbstractFilteredMap(Map unfiltered, Predicate> predicate) { + this.unfiltered = unfiltered; + this.predicate = predicate; + } + + boolean apply(@Nullable Object key, @Nullable V value) { + Object k = key; + return this.predicate.apply(Maps.immutableEntry(k, value)); + } + + @Override + public V put(K key, V value) { + Preconditions.checkArgument(this.apply(key, value)); + return this.unfiltered.put(key, value); + } + + @Override + public void putAll(Map map) { + for (Map.Entry entry : map.entrySet()) { + Preconditions.checkArgument(this.apply(entry.getKey(), entry.getValue())); + } + this.unfiltered.putAll(map); + } + + @Override + public boolean containsKey(Object key) { + return this.unfiltered.containsKey(key) && this.apply(key, this.unfiltered.get(key)); + } + + @Override + public V get(Object key) { + V value = this.unfiltered.get(key); + return value != null && this.apply(key, value) ? (V)value : null; + } + + @Override + public boolean isEmpty() { + return this.entrySet().isEmpty(); + } + + @Override + public V remove(Object key) { + return this.containsKey(key) ? (V)this.unfiltered.remove(key) : null; + } + + @Override + Collection createValues() { + return new FilteredMapValues(this, this.unfiltered, this.predicate); + } + } + + @GwtIncompatible(value="NavigableMap") + private static class TransformedEntriesNavigableMap + extends TransformedEntriesSortedMap + implements NavigableMap { + TransformedEntriesNavigableMap(NavigableMap fromMap, EntryTransformer transformer) { + super(fromMap, transformer); + } + + @Override + public Map.Entry ceilingEntry(K key) { + return this.transformEntry(this.fromMap().ceilingEntry(key)); + } + + @Override + public K ceilingKey(K key) { + return this.fromMap().ceilingKey(key); + } + + @Override + public NavigableSet descendingKeySet() { + return this.fromMap().descendingKeySet(); + } + + @Override + public NavigableMap descendingMap() { + return Maps.transformEntries(this.fromMap().descendingMap(), this.transformer); + } + + @Override + public Map.Entry firstEntry() { + return this.transformEntry(this.fromMap().firstEntry()); + } + + @Override + public Map.Entry floorEntry(K key) { + return this.transformEntry(this.fromMap().floorEntry(key)); + } + + @Override + public K floorKey(K key) { + return this.fromMap().floorKey(key); + } + + @Override + public NavigableMap headMap(K toKey) { + return this.headMap(toKey, false); + } + + @Override + public NavigableMap headMap(K toKey, boolean inclusive) { + return Maps.transformEntries(this.fromMap().headMap(toKey, inclusive), this.transformer); + } + + @Override + public Map.Entry higherEntry(K key) { + return this.transformEntry(this.fromMap().higherEntry(key)); + } + + @Override + public K higherKey(K key) { + return this.fromMap().higherKey(key); + } + + @Override + public Map.Entry lastEntry() { + return this.transformEntry(this.fromMap().lastEntry()); + } + + @Override + public Map.Entry lowerEntry(K key) { + return this.transformEntry(this.fromMap().lowerEntry(key)); + } + + @Override + public K lowerKey(K key) { + return this.fromMap().lowerKey(key); + } + + @Override + public NavigableSet navigableKeySet() { + return this.fromMap().navigableKeySet(); + } + + @Override + public Map.Entry pollFirstEntry() { + return this.transformEntry(this.fromMap().pollFirstEntry()); + } + + @Override + public Map.Entry pollLastEntry() { + return this.transformEntry(this.fromMap().pollLastEntry()); + } + + @Override + public NavigableMap subMap(K fromKey, boolean fromInclusive, K toKey, boolean toInclusive) { + return Maps.transformEntries(this.fromMap().subMap(fromKey, fromInclusive, toKey, toInclusive), this.transformer); + } + + @Override + public NavigableMap subMap(K fromKey, K toKey) { + return this.subMap(fromKey, true, toKey, false); + } + + @Override + public NavigableMap tailMap(K fromKey) { + return this.tailMap(fromKey, true); + } + + @Override + public NavigableMap tailMap(K fromKey, boolean inclusive) { + return Maps.transformEntries(this.fromMap().tailMap(fromKey, inclusive), this.transformer); + } + + @Nullable + private Map.Entry transformEntry(@Nullable Map.Entry entry) { + return entry == null ? null : Maps.transformEntry(this.transformer, entry); + } + + @Override + protected NavigableMap fromMap() { + return (NavigableMap)super.fromMap(); + } + } + + static class TransformedEntriesSortedMap + extends TransformedEntriesMap + implements SortedMap { + protected SortedMap fromMap() { + return (SortedMap)this.fromMap; + } + + TransformedEntriesSortedMap(SortedMap fromMap, EntryTransformer transformer) { + super(fromMap, transformer); + } + + @Override + public Comparator comparator() { + return this.fromMap().comparator(); + } + + @Override + public K firstKey() { + return this.fromMap().firstKey(); + } + + @Override + public SortedMap headMap(K toKey) { + return Maps.transformEntries(this.fromMap().headMap(toKey), this.transformer); + } + + @Override + public K lastKey() { + return this.fromMap().lastKey(); + } + + @Override + public SortedMap subMap(K fromKey, K toKey) { + return Maps.transformEntries(this.fromMap().subMap(fromKey, toKey), this.transformer); + } + + @Override + public SortedMap tailMap(K fromKey) { + return Maps.transformEntries(this.fromMap().tailMap(fromKey), this.transformer); + } + } + + static class TransformedEntriesMap + extends ImprovedAbstractMap { + final Map fromMap; + final EntryTransformer transformer; + + TransformedEntriesMap(Map fromMap, EntryTransformer transformer) { + this.fromMap = Preconditions.checkNotNull(fromMap); + this.transformer = Preconditions.checkNotNull(transformer); + } + + @Override + public int size() { + return this.fromMap.size(); + } + + @Override + public boolean containsKey(Object key) { + return this.fromMap.containsKey(key); + } + + @Override + public V2 get(Object key) { + V1 value = this.fromMap.get(key); + return (V2)(value != null || this.fromMap.containsKey(key) ? this.transformer.transformEntry(key, value) : null); + } + + @Override + public V2 remove(Object key) { + return this.fromMap.containsKey(key) ? (V2)this.transformer.transformEntry((K)key, (V1)this.fromMap.remove(key)) : null; + } + + @Override + public void clear() { + this.fromMap.clear(); + } + + @Override + public Set keySet() { + return this.fromMap.keySet(); + } + + @Override + protected Set> createEntrySet() { + return new EntrySet(){ + + @Override + Map map() { + return TransformedEntriesMap.this; + } + + @Override + public Iterator> iterator() { + return Iterators.transform(TransformedEntriesMap.this.fromMap.entrySet().iterator(), Maps.asEntryToEntryFunction(TransformedEntriesMap.this.transformer)); + } + }; + } + } + + public static interface EntryTransformer { + public V2 transformEntry(@Nullable K var1, @Nullable V1 var2); + } + + private static class UnmodifiableBiMap + extends ForwardingMap + implements BiMap, + Serializable { + final Map unmodifiableMap; + final BiMap delegate; + BiMap inverse; + transient Set values; + private static final long serialVersionUID = 0L; + + UnmodifiableBiMap(BiMap delegate, @Nullable BiMap inverse) { + this.unmodifiableMap = Collections.unmodifiableMap(delegate); + this.delegate = delegate; + this.inverse = inverse; + } + + @Override + protected Map delegate() { + return this.unmodifiableMap; + } + + @Override + public V forcePut(K key, V value) { + throw new UnsupportedOperationException(); + } + + @Override + public BiMap inverse() { + BiMap result = this.inverse; + return result == null ? (this.inverse = new UnmodifiableBiMap(this.delegate.inverse(), this)) : result; + } + + @Override + public Set values() { + Set result = this.values; + return result == null ? (this.values = Collections.unmodifiableSet(this.delegate.values())) : result; + } + } + + private static final class BiMapConverter + extends Converter + implements Serializable { + private final BiMap bimap; + private static final long serialVersionUID = 0L; + + BiMapConverter(BiMap bimap) { + this.bimap = Preconditions.checkNotNull(bimap); + } + + @Override + protected B doForward(A a) { + return BiMapConverter.convert(this.bimap, a); + } + + @Override + protected A doBackward(B b) { + return BiMapConverter.convert(this.bimap.inverse(), b); + } + + private static Y convert(BiMap bimap, X input) { + Object output = bimap.get(input); + Preconditions.checkArgument(output != null, "No non-null mapping present for input: %s", input); + return (Y)output; + } + + @Override + public boolean equals(@Nullable Object object) { + if (object instanceof BiMapConverter) { + BiMapConverter that = (BiMapConverter)object; + return this.bimap.equals(that.bimap); + } + return false; + } + + public int hashCode() { + return this.bimap.hashCode(); + } + + public String toString() { + String string = String.valueOf(String.valueOf(this.bimap)); + return new StringBuilder(18 + string.length()).append("Maps.asConverter(").append(string).append(")").toString(); + } + } + + static class UnmodifiableEntrySet + extends UnmodifiableEntries + implements Set> { + UnmodifiableEntrySet(Set> entries) { + super(entries); + } + + @Override + public boolean equals(@Nullable Object object) { + return Sets.equalsImpl(this, object); + } + + @Override + public int hashCode() { + return Sets.hashCodeImpl(this); + } + } + + static class UnmodifiableEntries + extends ForwardingCollection> { + private final Collection> entries; + + UnmodifiableEntries(Collection> entries) { + this.entries = entries; + } + + @Override + protected Collection> delegate() { + return this.entries; + } + + @Override + public Iterator> iterator() { + final Iterator delegate = super.iterator(); + return new UnmodifiableIterator>(){ + + @Override + public boolean hasNext() { + return delegate.hasNext(); + } + + @Override + public Map.Entry next() { + return Maps.unmodifiableEntry((Map.Entry)delegate.next()); + } + }; + } + + @Override + public Object[] toArray() { + return this.standardToArray(); + } + + @Override + public T[] toArray(T[] array) { + return this.standardToArray(array); + } + } + + @GwtIncompatible(value="NavigableMap") + private static final class NavigableAsMapView + extends AbstractNavigableMap { + private final NavigableSet set; + private final Function function; + + NavigableAsMapView(NavigableSet ks, Function vFunction) { + this.set = Preconditions.checkNotNull(ks); + this.function = Preconditions.checkNotNull(vFunction); + } + + @Override + public NavigableMap subMap(K fromKey, boolean fromInclusive, K toKey, boolean toInclusive) { + return Maps.asMap(this.set.subSet(fromKey, fromInclusive, toKey, toInclusive), this.function); + } + + @Override + public NavigableMap headMap(K toKey, boolean inclusive) { + return Maps.asMap(this.set.headSet(toKey, inclusive), this.function); + } + + @Override + public NavigableMap tailMap(K fromKey, boolean inclusive) { + return Maps.asMap(this.set.tailSet(fromKey, inclusive), this.function); + } + + @Override + public Comparator comparator() { + return this.set.comparator(); + } + + @Override + @Nullable + public V get(@Nullable Object key) { + if (Collections2.safeContains(this.set, key)) { + Object k = key; + return this.function.apply(k); + } + return null; + } + + @Override + public void clear() { + this.set.clear(); + } + + @Override + Iterator> entryIterator() { + return Maps.asMapEntryIterator(this.set, this.function); + } + + @Override + Iterator> descendingEntryIterator() { + return this.descendingMap().entrySet().iterator(); + } + + @Override + public NavigableSet navigableKeySet() { + return Maps.removeOnlyNavigableSet(this.set); + } + + @Override + public int size() { + return this.set.size(); + } + + @Override + public NavigableMap descendingMap() { + return Maps.asMap(this.set.descendingSet(), this.function); + } + } + + private static class SortedAsMapView + extends AsMapView + implements SortedMap { + SortedAsMapView(SortedSet set, Function function) { + super(set, function); + } + + @Override + SortedSet backingSet() { + return (SortedSet)super.backingSet(); + } + + @Override + public Comparator comparator() { + return this.backingSet().comparator(); + } + + @Override + public Set keySet() { + return Maps.removeOnlySortedSet((SortedSet)this.backingSet()); + } + + @Override + public SortedMap subMap(K fromKey, K toKey) { + return Maps.asMap(this.backingSet().subSet(fromKey, toKey), this.function); + } + + @Override + public SortedMap headMap(K toKey) { + return Maps.asMap(this.backingSet().headSet(toKey), this.function); + } + + @Override + public SortedMap tailMap(K fromKey) { + return Maps.asMap(this.backingSet().tailSet(fromKey), this.function); + } + + @Override + public K firstKey() { + return (K)this.backingSet().first(); + } + + @Override + public K lastKey() { + return (K)this.backingSet().last(); + } + } + + private static class AsMapView + extends ImprovedAbstractMap { + private final Set set; + final Function function; + + Set backingSet() { + return this.set; + } + + AsMapView(Set set, Function function) { + this.set = Preconditions.checkNotNull(set); + this.function = Preconditions.checkNotNull(function); + } + + @Override + public Set createKeySet() { + return Maps.removeOnlySet(this.backingSet()); + } + + @Override + Collection createValues() { + return Collections2.transform(this.set, this.function); + } + + @Override + public int size() { + return this.backingSet().size(); + } + + @Override + public boolean containsKey(@Nullable Object key) { + return this.backingSet().contains(key); + } + + @Override + public V get(@Nullable Object key) { + if (Collections2.safeContains(this.backingSet(), key)) { + Object k = key; + return this.function.apply(k); + } + return null; + } + + @Override + public V remove(@Nullable Object key) { + if (this.backingSet().remove(key)) { + Object k = key; + return this.function.apply(k); + } + return null; + } + + @Override + public void clear() { + this.backingSet().clear(); + } + + @Override + protected Set> createEntrySet() { + return new EntrySet(){ + + @Override + Map map() { + return AsMapView.this; + } + + @Override + public Iterator> iterator() { + return Maps.asMapEntryIterator(AsMapView.this.backingSet(), AsMapView.this.function); + } + }; + } + } + + static class SortedMapDifferenceImpl + extends MapDifferenceImpl + implements SortedMapDifference { + SortedMapDifferenceImpl(SortedMap onlyOnLeft, SortedMap onlyOnRight, SortedMap onBoth, SortedMap> differences) { + super(onlyOnLeft, onlyOnRight, onBoth, differences); + } + + @Override + public SortedMap> entriesDiffering() { + return (SortedMap)super.entriesDiffering(); + } + + @Override + public SortedMap entriesInCommon() { + return (SortedMap)super.entriesInCommon(); + } + + @Override + public SortedMap entriesOnlyOnLeft() { + return (SortedMap)super.entriesOnlyOnLeft(); + } + + @Override + public SortedMap entriesOnlyOnRight() { + return (SortedMap)super.entriesOnlyOnRight(); + } + } + + static class ValueDifferenceImpl + implements MapDifference.ValueDifference { + private final V left; + private final V right; + + static MapDifference.ValueDifference create(@Nullable V left, @Nullable V right) { + return new ValueDifferenceImpl(left, right); + } + + private ValueDifferenceImpl(@Nullable V left, @Nullable V right) { + this.left = left; + this.right = right; + } + + @Override + public V leftValue() { + return this.left; + } + + @Override + public V rightValue() { + return this.right; + } + + @Override + public boolean equals(@Nullable Object object) { + if (object instanceof MapDifference.ValueDifference) { + MapDifference.ValueDifference that = (MapDifference.ValueDifference)object; + return Objects.equal(this.left, that.leftValue()) && Objects.equal(this.right, that.rightValue()); + } + return false; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.left, this.right); + } + + public String toString() { + String string = String.valueOf(String.valueOf(this.left)); + String string2 = String.valueOf(String.valueOf(this.right)); + return new StringBuilder(4 + string.length() + string2.length()).append("(").append(string).append(", ").append(string2).append(")").toString(); + } + } + + static class MapDifferenceImpl + implements MapDifference { + final Map onlyOnLeft; + final Map onlyOnRight; + final Map onBoth; + final Map> differences; + + MapDifferenceImpl(Map onlyOnLeft, Map onlyOnRight, Map onBoth, Map> differences) { + this.onlyOnLeft = Maps.unmodifiableMap(onlyOnLeft); + this.onlyOnRight = Maps.unmodifiableMap(onlyOnRight); + this.onBoth = Maps.unmodifiableMap(onBoth); + this.differences = Maps.unmodifiableMap(differences); + } + + @Override + public boolean areEqual() { + return this.onlyOnLeft.isEmpty() && this.onlyOnRight.isEmpty() && this.differences.isEmpty(); + } + + @Override + public Map entriesOnlyOnLeft() { + return this.onlyOnLeft; + } + + @Override + public Map entriesOnlyOnRight() { + return this.onlyOnRight; + } + + @Override + public Map entriesInCommon() { + return this.onBoth; + } + + @Override + public Map> entriesDiffering() { + return this.differences; + } + + @Override + public boolean equals(Object object) { + if (object == this) { + return true; + } + if (object instanceof MapDifference) { + MapDifference other = (MapDifference)object; + return this.entriesOnlyOnLeft().equals(other.entriesOnlyOnLeft()) && this.entriesOnlyOnRight().equals(other.entriesOnlyOnRight()) && this.entriesInCommon().equals(other.entriesInCommon()) && this.entriesDiffering().equals(other.entriesDiffering()); + } + return false; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.entriesOnlyOnLeft(), this.entriesOnlyOnRight(), this.entriesInCommon(), this.entriesDiffering()); + } + + public String toString() { + if (this.areEqual()) { + return "equal"; + } + StringBuilder result = new StringBuilder("not equal"); + if (!this.onlyOnLeft.isEmpty()) { + result.append(": only on left=").append(this.onlyOnLeft); + } + if (!this.onlyOnRight.isEmpty()) { + result.append(": only on right=").append(this.onlyOnRight); + } + if (!this.differences.isEmpty()) { + result.append(": value differences=").append(this.differences); + } + return result.toString(); + } + } + + private static enum EntryFunction implements Function, Object> + { + KEY{ + + @Override + @Nullable + public Object apply(Map.Entry entry) { + return entry.getKey(); + } + } + , + VALUE{ + + @Override + @Nullable + public Object apply(Map.Entry entry) { + return entry.getValue(); + } + }; + + } +} diff --git a/src/com/google/common/collect/MinMaxPriorityQueue.java b/src/com/google/common/collect/MinMaxPriorityQueue.java new file mode 100644 index 0000000..955ffd4 --- /dev/null +++ b/src/com/google/common/collect/MinMaxPriorityQueue.java @@ -0,0 +1,570 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.Preconditions; +import com.google.common.collect.CollectPreconditions; +import com.google.common.collect.Ordering; +import com.google.common.math.IntMath; +import java.util.AbstractQueue; +import java.util.ArrayDeque; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.Comparator; +import java.util.ConcurrentModificationException; +import java.util.Iterator; +import java.util.List; +import java.util.NoSuchElementException; +import java.util.Queue; + +@Beta +public final class MinMaxPriorityQueue +extends AbstractQueue { + private final Heap minHeap; + private final Heap maxHeap; + @VisibleForTesting + final int maximumSize; + private Object[] queue; + private int size; + private int modCount; + private static final int EVEN_POWERS_OF_TWO = 0x55555555; + private static final int ODD_POWERS_OF_TWO = -1431655766; + private static final int DEFAULT_CAPACITY = 11; + + public static > MinMaxPriorityQueue create() { + return new Builder(Ordering.natural()).create(); + } + + public static > MinMaxPriorityQueue create(Iterable initialContents) { + return new Builder(Ordering.natural()).create(initialContents); + } + + public static Builder orderedBy(Comparator comparator) { + return new Builder(comparator); + } + + public static Builder expectedSize(int expectedSize) { + return new Builder(Ordering.natural()).expectedSize(expectedSize); + } + + public static Builder maximumSize(int maximumSize) { + return new Builder(Ordering.natural()).maximumSize(maximumSize); + } + + private MinMaxPriorityQueue(Builder builder, int queueSize) { + Ordering ordering = ((Builder)builder).ordering(); + this.minHeap = new Heap(ordering); + this.minHeap.otherHeap = this.maxHeap = new Heap(ordering.reverse()); + this.maxHeap.otherHeap = this.minHeap; + this.maximumSize = ((Builder)builder).maximumSize; + this.queue = new Object[queueSize]; + } + + @Override + public int size() { + return this.size; + } + + @Override + public boolean add(E element) { + this.offer(element); + return true; + } + + @Override + public boolean addAll(Collection newElements) { + boolean modified = false; + for (E element : newElements) { + this.offer(element); + modified = true; + } + return modified; + } + + @Override + public boolean offer(E element) { + Preconditions.checkNotNull(element); + ++this.modCount; + int insertIndex = this.size++; + this.growIfNeeded(); + this.heapForIndex(insertIndex).bubbleUp(insertIndex, element); + return this.size <= this.maximumSize || this.pollLast() != element; + } + + @Override + public E poll() { + return this.isEmpty() ? null : (E)this.removeAndGet(0); + } + + E elementData(int index) { + return (E)this.queue[index]; + } + + @Override + public E peek() { + return this.isEmpty() ? null : (E)this.elementData(0); + } + + private int getMaxElementIndex() { + switch (this.size) { + case 1: { + return 0; + } + case 2: { + return 1; + } + } + return this.maxHeap.compareElements(1, 2) <= 0 ? 1 : 2; + } + + public E pollFirst() { + return this.poll(); + } + + public E removeFirst() { + return this.remove(); + } + + public E peekFirst() { + return this.peek(); + } + + public E pollLast() { + return this.isEmpty() ? null : (E)this.removeAndGet(this.getMaxElementIndex()); + } + + public E removeLast() { + if (this.isEmpty()) { + throw new NoSuchElementException(); + } + return this.removeAndGet(this.getMaxElementIndex()); + } + + public E peekLast() { + return this.isEmpty() ? null : (E)this.elementData(this.getMaxElementIndex()); + } + + @VisibleForTesting + MoveDesc removeAt(int index) { + Preconditions.checkPositionIndex(index, this.size); + ++this.modCount; + --this.size; + if (this.size == index) { + this.queue[this.size] = null; + return null; + } + E actualLastElement = this.elementData(this.size); + int lastElementAt = this.heapForIndex(this.size).getCorrectLastElement(actualLastElement); + E toTrickle = this.elementData(this.size); + this.queue[this.size] = null; + MoveDesc changes = this.fillHole(index, toTrickle); + if (lastElementAt < index) { + if (changes == null) { + return new MoveDesc(actualLastElement, toTrickle); + } + return new MoveDesc(actualLastElement, changes.replaced); + } + return changes; + } + + private MoveDesc fillHole(int index, E toTrickle) { + int vacated; + Heap heap = this.heapForIndex(index); + int bubbledTo = heap.bubbleUpAlternatingLevels(vacated = heap.fillHoleAt(index), toTrickle); + if (bubbledTo == vacated) { + return heap.tryCrossOverAndBubbleUp(index, vacated, toTrickle); + } + return bubbledTo < index ? new MoveDesc(toTrickle, this.elementData(index)) : null; + } + + private E removeAndGet(int index) { + E value = this.elementData(index); + this.removeAt(index); + return value; + } + + private Heap heapForIndex(int i) { + return MinMaxPriorityQueue.isEvenLevel(i) ? this.minHeap : this.maxHeap; + } + + @VisibleForTesting + static boolean isEvenLevel(int index) { + int oneBased = index + 1; + Preconditions.checkState(oneBased > 0, "negative index"); + return (oneBased & 0x55555555) > (oneBased & 0xAAAAAAAA); + } + + @VisibleForTesting + boolean isIntact() { + for (int i = 1; i < this.size; ++i) { + if (this.heapForIndex(i).verifyIndex(i)) continue; + return false; + } + return true; + } + + @Override + public Iterator iterator() { + return new QueueIterator(); + } + + @Override + public void clear() { + for (int i = 0; i < this.size; ++i) { + this.queue[i] = null; + } + this.size = 0; + } + + @Override + public Object[] toArray() { + Object[] copyTo = new Object[this.size]; + System.arraycopy(this.queue, 0, copyTo, 0, this.size); + return copyTo; + } + + public Comparator comparator() { + return this.minHeap.ordering; + } + + @VisibleForTesting + int capacity() { + return this.queue.length; + } + + @VisibleForTesting + static int initialQueueSize(int configuredExpectedSize, int maximumSize, Iterable initialContents) { + int result; + int n = result = configuredExpectedSize == -1 ? 11 : configuredExpectedSize; + if (initialContents instanceof Collection) { + int initialSize = ((Collection)initialContents).size(); + result = Math.max(result, initialSize); + } + return MinMaxPriorityQueue.capAtMaximumSize(result, maximumSize); + } + + private void growIfNeeded() { + if (this.size > this.queue.length) { + int newCapacity = this.calculateNewCapacity(); + Object[] newQueue = new Object[newCapacity]; + System.arraycopy(this.queue, 0, newQueue, 0, this.queue.length); + this.queue = newQueue; + } + } + + private int calculateNewCapacity() { + int oldCapacity = this.queue.length; + int newCapacity = oldCapacity < 64 ? (oldCapacity + 1) * 2 : IntMath.checkedMultiply(oldCapacity / 2, 3); + return MinMaxPriorityQueue.capAtMaximumSize(newCapacity, this.maximumSize); + } + + private static int capAtMaximumSize(int queueSize, int maximumSize) { + return Math.min(queueSize - 1, maximumSize) + 1; + } + + private class QueueIterator + implements Iterator { + private int cursor = -1; + private int expectedModCount = MinMaxPriorityQueue.access$700(MinMaxPriorityQueue.this); + private Queue forgetMeNot; + private List skipMe; + private E lastFromForgetMeNot; + private boolean canRemove; + + private QueueIterator() { + } + + @Override + public boolean hasNext() { + this.checkModCount(); + return this.nextNotInSkipMe(this.cursor + 1) < MinMaxPriorityQueue.this.size() || this.forgetMeNot != null && !this.forgetMeNot.isEmpty(); + } + + @Override + public E next() { + this.checkModCount(); + int tempCursor = this.nextNotInSkipMe(this.cursor + 1); + if (tempCursor < MinMaxPriorityQueue.this.size()) { + this.cursor = tempCursor; + this.canRemove = true; + return MinMaxPriorityQueue.this.elementData(this.cursor); + } + if (this.forgetMeNot != null) { + this.cursor = MinMaxPriorityQueue.this.size(); + this.lastFromForgetMeNot = this.forgetMeNot.poll(); + if (this.lastFromForgetMeNot != null) { + this.canRemove = true; + return this.lastFromForgetMeNot; + } + } + throw new NoSuchElementException("iterator moved past last element in queue."); + } + + @Override + public void remove() { + CollectPreconditions.checkRemove(this.canRemove); + this.checkModCount(); + this.canRemove = false; + ++this.expectedModCount; + if (this.cursor < MinMaxPriorityQueue.this.size()) { + MoveDesc moved = MinMaxPriorityQueue.this.removeAt(this.cursor); + if (moved != null) { + if (this.forgetMeNot == null) { + this.forgetMeNot = new ArrayDeque(); + this.skipMe = new ArrayList(3); + } + this.forgetMeNot.add(moved.toTrickle); + this.skipMe.add(moved.replaced); + } + --this.cursor; + } else { + Preconditions.checkState(this.removeExact(this.lastFromForgetMeNot)); + this.lastFromForgetMeNot = null; + } + } + + private boolean containsExact(Iterable elements, E target) { + for (Object element : elements) { + if (element != target) continue; + return true; + } + return false; + } + + boolean removeExact(Object target) { + for (int i = 0; i < MinMaxPriorityQueue.this.size; ++i) { + if (MinMaxPriorityQueue.this.queue[i] != target) continue; + MinMaxPriorityQueue.this.removeAt(i); + return true; + } + return false; + } + + void checkModCount() { + if (MinMaxPriorityQueue.this.modCount != this.expectedModCount) { + throw new ConcurrentModificationException(); + } + } + + private int nextNotInSkipMe(int c) { + if (this.skipMe != null) { + while (c < MinMaxPriorityQueue.this.size() && this.containsExact(this.skipMe, MinMaxPriorityQueue.this.elementData(c))) { + ++c; + } + } + return c; + } + } + + private class Heap { + final Ordering ordering; + Heap otherHeap; + + Heap(Ordering ordering) { + this.ordering = ordering; + } + + int compareElements(int a, int b) { + return this.ordering.compare(MinMaxPriorityQueue.this.elementData(a), MinMaxPriorityQueue.this.elementData(b)); + } + + MoveDesc tryCrossOverAndBubbleUp(int removeIndex, int vacated, E toTrickle) { + int crossOver = this.crossOver(vacated, toTrickle); + if (crossOver == vacated) { + return null; + } + Object parent = crossOver < removeIndex ? MinMaxPriorityQueue.this.elementData(removeIndex) : MinMaxPriorityQueue.this.elementData(this.getParentIndex(removeIndex)); + if (this.otherHeap.bubbleUpAlternatingLevels(crossOver, toTrickle) < removeIndex) { + return new MoveDesc(toTrickle, parent); + } + return null; + } + + void bubbleUp(int index, E x) { + Heap heap; + int crossOver = this.crossOverUp(index, x); + if (crossOver == index) { + heap = this; + } else { + index = crossOver; + heap = this.otherHeap; + } + heap.bubbleUpAlternatingLevels(index, x); + } + + int bubbleUpAlternatingLevels(int index, E x) { + int grandParentIndex; + Object e; + while (index > 2 && this.ordering.compare(e = MinMaxPriorityQueue.this.elementData(grandParentIndex = this.getGrandparentIndex(index)), x) > 0) { + ((MinMaxPriorityQueue)MinMaxPriorityQueue.this).queue[index] = e; + index = grandParentIndex; + } + ((MinMaxPriorityQueue)MinMaxPriorityQueue.this).queue[index] = x; + return index; + } + + int findMin(int index, int len) { + if (index >= MinMaxPriorityQueue.this.size) { + return -1; + } + Preconditions.checkState(index > 0); + int limit = Math.min(index, MinMaxPriorityQueue.this.size - len) + len; + int minIndex = index; + for (int i = index + 1; i < limit; ++i) { + if (this.compareElements(i, minIndex) >= 0) continue; + minIndex = i; + } + return minIndex; + } + + int findMinChild(int index) { + return this.findMin(this.getLeftChildIndex(index), 2); + } + + int findMinGrandChild(int index) { + int leftChildIndex = this.getLeftChildIndex(index); + if (leftChildIndex < 0) { + return -1; + } + return this.findMin(this.getLeftChildIndex(leftChildIndex), 4); + } + + int crossOverUp(int index, E x) { + Object uncleElement; + int grandparentIndex; + int uncleIndex; + if (index == 0) { + ((MinMaxPriorityQueue)MinMaxPriorityQueue.this).queue[0] = x; + return 0; + } + int parentIndex = this.getParentIndex(index); + Object parentElement = MinMaxPriorityQueue.this.elementData(parentIndex); + if (parentIndex != 0 && (uncleIndex = this.getRightChildIndex(grandparentIndex = this.getParentIndex(parentIndex))) != parentIndex && this.getLeftChildIndex(uncleIndex) >= MinMaxPriorityQueue.this.size && this.ordering.compare(uncleElement = MinMaxPriorityQueue.this.elementData(uncleIndex), parentElement) < 0) { + parentIndex = uncleIndex; + parentElement = uncleElement; + } + if (this.ordering.compare(parentElement, x) < 0) { + ((MinMaxPriorityQueue)MinMaxPriorityQueue.this).queue[index] = parentElement; + ((MinMaxPriorityQueue)MinMaxPriorityQueue.this).queue[parentIndex] = x; + return parentIndex; + } + ((MinMaxPriorityQueue)MinMaxPriorityQueue.this).queue[index] = x; + return index; + } + + int getCorrectLastElement(E actualLastElement) { + Object uncleElement; + int grandparentIndex; + int uncleIndex; + int parentIndex = this.getParentIndex(MinMaxPriorityQueue.this.size); + if (parentIndex != 0 && (uncleIndex = this.getRightChildIndex(grandparentIndex = this.getParentIndex(parentIndex))) != parentIndex && this.getLeftChildIndex(uncleIndex) >= MinMaxPriorityQueue.this.size && this.ordering.compare(uncleElement = MinMaxPriorityQueue.this.elementData(uncleIndex), actualLastElement) < 0) { + ((MinMaxPriorityQueue)MinMaxPriorityQueue.this).queue[uncleIndex] = actualLastElement; + ((MinMaxPriorityQueue)MinMaxPriorityQueue.this).queue[((MinMaxPriorityQueue)MinMaxPriorityQueue.this).size] = uncleElement; + return uncleIndex; + } + return MinMaxPriorityQueue.this.size; + } + + int crossOver(int index, E x) { + int minChildIndex = this.findMinChild(index); + if (minChildIndex > 0 && this.ordering.compare(MinMaxPriorityQueue.this.elementData(minChildIndex), x) < 0) { + ((MinMaxPriorityQueue)MinMaxPriorityQueue.this).queue[index] = MinMaxPriorityQueue.this.elementData(minChildIndex); + ((MinMaxPriorityQueue)MinMaxPriorityQueue.this).queue[minChildIndex] = x; + return minChildIndex; + } + return this.crossOverUp(index, x); + } + + int fillHoleAt(int index) { + int minGrandchildIndex; + while ((minGrandchildIndex = this.findMinGrandChild(index)) > 0) { + ((MinMaxPriorityQueue)MinMaxPriorityQueue.this).queue[index] = MinMaxPriorityQueue.this.elementData(minGrandchildIndex); + index = minGrandchildIndex; + } + return index; + } + + private boolean verifyIndex(int i) { + if (this.getLeftChildIndex(i) < MinMaxPriorityQueue.this.size && this.compareElements(i, this.getLeftChildIndex(i)) > 0) { + return false; + } + if (this.getRightChildIndex(i) < MinMaxPriorityQueue.this.size && this.compareElements(i, this.getRightChildIndex(i)) > 0) { + return false; + } + if (i > 0 && this.compareElements(i, this.getParentIndex(i)) > 0) { + return false; + } + return i <= 2 || this.compareElements(this.getGrandparentIndex(i), i) <= 0; + } + + private int getLeftChildIndex(int i) { + return i * 2 + 1; + } + + private int getRightChildIndex(int i) { + return i * 2 + 2; + } + + private int getParentIndex(int i) { + return (i - 1) / 2; + } + + private int getGrandparentIndex(int i) { + return this.getParentIndex(this.getParentIndex(i)); + } + } + + static class MoveDesc { + final E toTrickle; + final E replaced; + + MoveDesc(E toTrickle, E replaced) { + this.toTrickle = toTrickle; + this.replaced = replaced; + } + } + + @Beta + public static final class Builder { + private static final int UNSET_EXPECTED_SIZE = -1; + private final Comparator comparator; + private int expectedSize = -1; + private int maximumSize = Integer.MAX_VALUE; + + private Builder(Comparator comparator) { + this.comparator = Preconditions.checkNotNull(comparator); + } + + public Builder expectedSize(int expectedSize) { + Preconditions.checkArgument(expectedSize >= 0); + this.expectedSize = expectedSize; + return this; + } + + public Builder maximumSize(int maximumSize) { + Preconditions.checkArgument(maximumSize > 0); + this.maximumSize = maximumSize; + return this; + } + + public MinMaxPriorityQueue create() { + return this.create(Collections.emptySet()); + } + + public MinMaxPriorityQueue create(Iterable initialContents) { + MinMaxPriorityQueue queue = new MinMaxPriorityQueue(this, MinMaxPriorityQueue.initialQueueSize(this.expectedSize, this.maximumSize, initialContents)); + for (T element : initialContents) { + queue.offer(element); + } + return queue; + } + + private Ordering ordering() { + return Ordering.from(this.comparator); + } + } +} diff --git a/src/com/google/common/collect/Multimap.java b/src/com/google/common/collect/Multimap.java new file mode 100644 index 0000000..88d50bf --- /dev/null +++ b/src/com/google/common/collect/Multimap.java @@ -0,0 +1,54 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.collect.Multiset; +import java.util.Collection; +import java.util.Map; +import java.util.Set; +import javax.annotation.Nullable; + +@GwtCompatible +public interface Multimap { + public int size(); + + public boolean isEmpty(); + + public boolean containsKey(@Nullable Object var1); + + public boolean containsValue(@Nullable Object var1); + + public boolean containsEntry(@Nullable Object var1, @Nullable Object var2); + + public boolean put(@Nullable K var1, @Nullable V var2); + + public boolean remove(@Nullable Object var1, @Nullable Object var2); + + public boolean putAll(@Nullable K var1, Iterable var2); + + public boolean putAll(Multimap var1); + + public Collection replaceValues(@Nullable K var1, Iterable var2); + + public Collection removeAll(@Nullable Object var1); + + public void clear(); + + public Collection get(@Nullable K var1); + + public Set keySet(); + + public Multiset keys(); + + public Collection values(); + + public Collection> entries(); + + public Map> asMap(); + + public boolean equals(@Nullable Object var1); + + public int hashCode(); +} diff --git a/src/com/google/common/collect/MultimapBuilder.java b/src/com/google/common/collect/MultimapBuilder.java new file mode 100644 index 0000000..d65edc7 --- /dev/null +++ b/src/com/google/common/collect/MultimapBuilder.java @@ -0,0 +1,330 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Preconditions; +import com.google.common.base.Supplier; +import com.google.common.collect.CollectPreconditions; +import com.google.common.collect.ListMultimap; +import com.google.common.collect.Multimap; +import com.google.common.collect.Multimaps; +import com.google.common.collect.Ordering; +import com.google.common.collect.SetMultimap; +import com.google.common.collect.SortedSetMultimap; +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Comparator; +import java.util.EnumMap; +import java.util.EnumSet; +import java.util.HashMap; +import java.util.HashSet; +import java.util.LinkedHashMap; +import java.util.LinkedHashSet; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.SortedSet; +import java.util.TreeMap; +import java.util.TreeSet; + +@Beta +@GwtCompatible +public abstract class MultimapBuilder { + private static final int DEFAULT_EXPECTED_KEYS = 8; + + private MultimapBuilder() { + } + + public static MultimapBuilderWithKeys hashKeys() { + return MultimapBuilder.hashKeys(8); + } + + public static MultimapBuilderWithKeys hashKeys(final int expectedKeys) { + CollectPreconditions.checkNonnegative(expectedKeys, "expectedKeys"); + return new MultimapBuilderWithKeys(){ + + @Override + Map> createMap() { + return new HashMap(expectedKeys); + } + }; + } + + public static MultimapBuilderWithKeys linkedHashKeys() { + return MultimapBuilder.linkedHashKeys(8); + } + + public static MultimapBuilderWithKeys linkedHashKeys(final int expectedKeys) { + CollectPreconditions.checkNonnegative(expectedKeys, "expectedKeys"); + return new MultimapBuilderWithKeys(){ + + @Override + Map> createMap() { + return new LinkedHashMap(expectedKeys); + } + }; + } + + public static MultimapBuilderWithKeys treeKeys() { + return MultimapBuilder.treeKeys(Ordering.natural()); + } + + public static MultimapBuilderWithKeys treeKeys(final Comparator comparator) { + Preconditions.checkNotNull(comparator); + return new MultimapBuilderWithKeys(){ + + @Override + Map> createMap() { + return new TreeMap(comparator); + } + }; + } + + public static > MultimapBuilderWithKeys enumKeys(final Class keyClass) { + Preconditions.checkNotNull(keyClass); + return new MultimapBuilderWithKeys(){ + + @Override + Map> createMap() { + return new EnumMap(keyClass); + } + }; + } + + public abstract Multimap build(); + + public Multimap build(Multimap multimap) { + Multimap result = this.build(); + result.putAll(multimap); + return result; + } + + public static abstract class SortedSetMultimapBuilder + extends SetMultimapBuilder { + SortedSetMultimapBuilder() { + } + + @Override + public abstract SortedSetMultimap build(); + + @Override + public SortedSetMultimap build(Multimap multimap) { + return (SortedSetMultimap)super.build((Multimap)multimap); + } + } + + public static abstract class SetMultimapBuilder + extends MultimapBuilder { + SetMultimapBuilder() { + } + + @Override + public abstract SetMultimap build(); + + @Override + public SetMultimap build(Multimap multimap) { + return (SetMultimap)super.build(multimap); + } + } + + public static abstract class ListMultimapBuilder + extends MultimapBuilder { + ListMultimapBuilder() { + } + + @Override + public abstract ListMultimap build(); + + @Override + public ListMultimap build(Multimap multimap) { + return (ListMultimap)super.build(multimap); + } + } + + public static abstract class MultimapBuilderWithKeys { + private static final int DEFAULT_EXPECTED_VALUES_PER_KEY = 2; + + MultimapBuilderWithKeys() { + } + + abstract Map> createMap(); + + public ListMultimapBuilder arrayListValues() { + return this.arrayListValues(2); + } + + public ListMultimapBuilder arrayListValues(final int expectedValuesPerKey) { + CollectPreconditions.checkNonnegative(expectedValuesPerKey, "expectedValuesPerKey"); + return new ListMultimapBuilder(){ + + @Override + public ListMultimap build() { + return Multimaps.newListMultimap(MultimapBuilderWithKeys.this.createMap(), new ArrayListSupplier(expectedValuesPerKey)); + } + }; + } + + public ListMultimapBuilder linkedListValues() { + return new ListMultimapBuilder(){ + + @Override + public ListMultimap build() { + return Multimaps.newListMultimap(MultimapBuilderWithKeys.this.createMap(), LinkedListSupplier.instance()); + } + }; + } + + public SetMultimapBuilder hashSetValues() { + return this.hashSetValues(2); + } + + public SetMultimapBuilder hashSetValues(final int expectedValuesPerKey) { + CollectPreconditions.checkNonnegative(expectedValuesPerKey, "expectedValuesPerKey"); + return new SetMultimapBuilder(){ + + @Override + public SetMultimap build() { + return Multimaps.newSetMultimap(MultimapBuilderWithKeys.this.createMap(), new HashSetSupplier(expectedValuesPerKey)); + } + }; + } + + public SetMultimapBuilder linkedHashSetValues() { + return this.linkedHashSetValues(2); + } + + public SetMultimapBuilder linkedHashSetValues(final int expectedValuesPerKey) { + CollectPreconditions.checkNonnegative(expectedValuesPerKey, "expectedValuesPerKey"); + return new SetMultimapBuilder(){ + + @Override + public SetMultimap build() { + return Multimaps.newSetMultimap(MultimapBuilderWithKeys.this.createMap(), new LinkedHashSetSupplier(expectedValuesPerKey)); + } + }; + } + + public SortedSetMultimapBuilder treeSetValues() { + return this.treeSetValues(Ordering.natural()); + } + + public SortedSetMultimapBuilder treeSetValues(final Comparator comparator) { + Preconditions.checkNotNull(comparator, "comparator"); + return new SortedSetMultimapBuilder(){ + + @Override + public SortedSetMultimap build() { + return Multimaps.newSortedSetMultimap(MultimapBuilderWithKeys.this.createMap(), new TreeSetSupplier(comparator)); + } + }; + } + + public > SetMultimapBuilder enumSetValues(final Class valueClass) { + Preconditions.checkNotNull(valueClass, "valueClass"); + return new SetMultimapBuilder(){ + + @Override + public SetMultimap build() { + EnumSetSupplier factory = new EnumSetSupplier(valueClass); + return Multimaps.newSetMultimap(MultimapBuilderWithKeys.this.createMap(), factory); + } + }; + } + } + + private static final class EnumSetSupplier> + implements Supplier>, + Serializable { + private final Class clazz; + + EnumSetSupplier(Class clazz) { + this.clazz = Preconditions.checkNotNull(clazz); + } + + @Override + public Set get() { + return EnumSet.noneOf(this.clazz); + } + } + + private static final class TreeSetSupplier + implements Supplier>, + Serializable { + private final Comparator comparator; + + TreeSetSupplier(Comparator comparator) { + this.comparator = Preconditions.checkNotNull(comparator); + } + + @Override + public SortedSet get() { + return new TreeSet(this.comparator); + } + } + + private static final class LinkedHashSetSupplier + implements Supplier>, + Serializable { + private final int expectedValuesPerKey; + + LinkedHashSetSupplier(int expectedValuesPerKey) { + this.expectedValuesPerKey = CollectPreconditions.checkNonnegative(expectedValuesPerKey, "expectedValuesPerKey"); + } + + @Override + public Set get() { + return new LinkedHashSet(this.expectedValuesPerKey); + } + } + + private static final class HashSetSupplier + implements Supplier>, + Serializable { + private final int expectedValuesPerKey; + + HashSetSupplier(int expectedValuesPerKey) { + this.expectedValuesPerKey = CollectPreconditions.checkNonnegative(expectedValuesPerKey, "expectedValuesPerKey"); + } + + @Override + public Set get() { + return new HashSet(this.expectedValuesPerKey); + } + } + + private static enum LinkedListSupplier implements Supplier> + { + INSTANCE; + + + public static Supplier> instance() { + LinkedListSupplier result = INSTANCE; + return result; + } + + @Override + public List get() { + return new LinkedList(); + } + } + + private static final class ArrayListSupplier + implements Supplier>, + Serializable { + private final int expectedValuesPerKey; + + ArrayListSupplier(int expectedValuesPerKey) { + this.expectedValuesPerKey = CollectPreconditions.checkNonnegative(expectedValuesPerKey, "expectedValuesPerKey"); + } + + @Override + public List get() { + return new ArrayList(this.expectedValuesPerKey); + } + } +} diff --git a/src/com/google/common/collect/Multimaps.java b/src/com/google/common/collect/Multimaps.java new file mode 100644 index 0000000..45b4b1d --- /dev/null +++ b/src/com/google/common/collect/Multimaps.java @@ -0,0 +1,1190 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.base.Function; +import com.google.common.base.Preconditions; +import com.google.common.base.Predicate; +import com.google.common.base.Predicates; +import com.google.common.base.Supplier; +import com.google.common.collect.AbstractListMultimap; +import com.google.common.collect.AbstractMapBasedMultimap; +import com.google.common.collect.AbstractMultimap; +import com.google.common.collect.AbstractMultiset; +import com.google.common.collect.AbstractSetMultimap; +import com.google.common.collect.AbstractSortedSetMultimap; +import com.google.common.collect.CollectPreconditions; +import com.google.common.collect.Collections2; +import com.google.common.collect.FilteredEntryMultimap; +import com.google.common.collect.FilteredEntrySetMultimap; +import com.google.common.collect.FilteredKeyListMultimap; +import com.google.common.collect.FilteredKeyMultimap; +import com.google.common.collect.FilteredKeySetMultimap; +import com.google.common.collect.FilteredMultimap; +import com.google.common.collect.FilteredSetMultimap; +import com.google.common.collect.ForwardingMultimap; +import com.google.common.collect.ImmutableListMultimap; +import com.google.common.collect.ImmutableMultimap; +import com.google.common.collect.ImmutableSetMultimap; +import com.google.common.collect.Iterators; +import com.google.common.collect.ListMultimap; +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import com.google.common.collect.Multimap; +import com.google.common.collect.Multiset; +import com.google.common.collect.Multisets; +import com.google.common.collect.SetMultimap; +import com.google.common.collect.Sets; +import com.google.common.collect.SortedSetMultimap; +import com.google.common.collect.Synchronized; +import com.google.common.collect.TransformedIterator; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.io.Serializable; +import java.util.AbstractCollection; +import java.util.Collection; +import java.util.Collections; +import java.util.Comparator; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.NoSuchElementException; +import java.util.Set; +import java.util.SortedSet; +import javax.annotation.Nullable; + +@GwtCompatible(emulated=true) +public final class Multimaps { + private Multimaps() { + } + + public static Multimap newMultimap(Map> map, Supplier> factory) { + return new CustomMultimap(map, factory); + } + + public static ListMultimap newListMultimap(Map> map, Supplier> factory) { + return new CustomListMultimap(map, factory); + } + + public static SetMultimap newSetMultimap(Map> map, Supplier> factory) { + return new CustomSetMultimap(map, factory); + } + + public static SortedSetMultimap newSortedSetMultimap(Map> map, Supplier> factory) { + return new CustomSortedSetMultimap(map, factory); + } + + public static > M invertFrom(Multimap source, M dest) { + Preconditions.checkNotNull(dest); + for (Map.Entry entry : source.entries()) { + dest.put(entry.getValue(), entry.getKey()); + } + return dest; + } + + public static Multimap synchronizedMultimap(Multimap multimap) { + return Synchronized.multimap(multimap, null); + } + + public static Multimap unmodifiableMultimap(Multimap delegate) { + if (delegate instanceof UnmodifiableMultimap || delegate instanceof ImmutableMultimap) { + return delegate; + } + return new UnmodifiableMultimap(delegate); + } + + @Deprecated + public static Multimap unmodifiableMultimap(ImmutableMultimap delegate) { + return Preconditions.checkNotNull(delegate); + } + + public static SetMultimap synchronizedSetMultimap(SetMultimap multimap) { + return Synchronized.setMultimap(multimap, null); + } + + public static SetMultimap unmodifiableSetMultimap(SetMultimap delegate) { + if (delegate instanceof UnmodifiableSetMultimap || delegate instanceof ImmutableSetMultimap) { + return delegate; + } + return new UnmodifiableSetMultimap(delegate); + } + + @Deprecated + public static SetMultimap unmodifiableSetMultimap(ImmutableSetMultimap delegate) { + return Preconditions.checkNotNull(delegate); + } + + public static SortedSetMultimap synchronizedSortedSetMultimap(SortedSetMultimap multimap) { + return Synchronized.sortedSetMultimap(multimap, null); + } + + public static SortedSetMultimap unmodifiableSortedSetMultimap(SortedSetMultimap delegate) { + if (delegate instanceof UnmodifiableSortedSetMultimap) { + return delegate; + } + return new UnmodifiableSortedSetMultimap(delegate); + } + + public static ListMultimap synchronizedListMultimap(ListMultimap multimap) { + return Synchronized.listMultimap(multimap, null); + } + + public static ListMultimap unmodifiableListMultimap(ListMultimap delegate) { + if (delegate instanceof UnmodifiableListMultimap || delegate instanceof ImmutableListMultimap) { + return delegate; + } + return new UnmodifiableListMultimap(delegate); + } + + @Deprecated + public static ListMultimap unmodifiableListMultimap(ImmutableListMultimap delegate) { + return Preconditions.checkNotNull(delegate); + } + + private static Collection unmodifiableValueCollection(Collection collection) { + if (collection instanceof SortedSet) { + return Collections.unmodifiableSortedSet((SortedSet)collection); + } + if (collection instanceof Set) { + return Collections.unmodifiableSet((Set)collection); + } + if (collection instanceof List) { + return Collections.unmodifiableList((List)collection); + } + return Collections.unmodifiableCollection(collection); + } + + private static Collection> unmodifiableEntries(Collection> entries) { + if (entries instanceof Set) { + return Maps.unmodifiableEntrySet((Set)entries); + } + return new Maps.UnmodifiableEntries(Collections.unmodifiableCollection(entries)); + } + + @Beta + public static Map> asMap(ListMultimap multimap) { + return multimap.asMap(); + } + + @Beta + public static Map> asMap(SetMultimap multimap) { + return multimap.asMap(); + } + + @Beta + public static Map> asMap(SortedSetMultimap multimap) { + return multimap.asMap(); + } + + @Beta + public static Map> asMap(Multimap multimap) { + return multimap.asMap(); + } + + public static SetMultimap forMap(Map map) { + return new MapMultimap(map); + } + + public static Multimap transformValues(Multimap fromMultimap, Function function) { + Preconditions.checkNotNull(function); + Maps.EntryTransformer transformer = Maps.asEntryTransformer(function); + return Multimaps.transformEntries(fromMultimap, transformer); + } + + public static Multimap transformEntries(Multimap fromMap, Maps.EntryTransformer transformer) { + return new TransformedEntriesMultimap(fromMap, transformer); + } + + public static ListMultimap transformValues(ListMultimap fromMultimap, Function function) { + Preconditions.checkNotNull(function); + Maps.EntryTransformer transformer = Maps.asEntryTransformer(function); + return Multimaps.transformEntries(fromMultimap, transformer); + } + + public static ListMultimap transformEntries(ListMultimap fromMap, Maps.EntryTransformer transformer) { + return new TransformedEntriesListMultimap(fromMap, transformer); + } + + public static ImmutableListMultimap index(Iterable values, Function keyFunction) { + return Multimaps.index(values.iterator(), keyFunction); + } + + public static ImmutableListMultimap index(Iterator values, Function keyFunction) { + Preconditions.checkNotNull(keyFunction); + ImmutableListMultimap.Builder builder = ImmutableListMultimap.builder(); + while (values.hasNext()) { + V value = values.next(); + Preconditions.checkNotNull(value, values); + builder.put((Object)keyFunction.apply(value), (Object)value); + } + return builder.build(); + } + + public static Multimap filterKeys(Multimap unfiltered, Predicate keyPredicate) { + if (unfiltered instanceof SetMultimap) { + return Multimaps.filterKeys((SetMultimap)unfiltered, keyPredicate); + } + if (unfiltered instanceof ListMultimap) { + return Multimaps.filterKeys((ListMultimap)unfiltered, keyPredicate); + } + if (unfiltered instanceof FilteredKeyMultimap) { + FilteredKeyMultimap prev = (FilteredKeyMultimap)unfiltered; + return new FilteredKeyMultimap(prev.unfiltered, Predicates.and(prev.keyPredicate, keyPredicate)); + } + if (unfiltered instanceof FilteredMultimap) { + FilteredMultimap prev = (FilteredMultimap)unfiltered; + return Multimaps.filterFiltered(prev, Maps.keyPredicateOnEntries(keyPredicate)); + } + return new FilteredKeyMultimap(unfiltered, keyPredicate); + } + + public static SetMultimap filterKeys(SetMultimap unfiltered, Predicate keyPredicate) { + if (unfiltered instanceof FilteredKeySetMultimap) { + FilteredKeySetMultimap prev = (FilteredKeySetMultimap)unfiltered; + return new FilteredKeySetMultimap(prev.unfiltered(), Predicates.and(prev.keyPredicate, keyPredicate)); + } + if (unfiltered instanceof FilteredSetMultimap) { + FilteredSetMultimap prev = (FilteredSetMultimap)unfiltered; + return Multimaps.filterFiltered(prev, Maps.keyPredicateOnEntries(keyPredicate)); + } + return new FilteredKeySetMultimap(unfiltered, keyPredicate); + } + + public static ListMultimap filterKeys(ListMultimap unfiltered, Predicate keyPredicate) { + if (unfiltered instanceof FilteredKeyListMultimap) { + FilteredKeyListMultimap prev = (FilteredKeyListMultimap)unfiltered; + return new FilteredKeyListMultimap(prev.unfiltered(), Predicates.and(prev.keyPredicate, keyPredicate)); + } + return new FilteredKeyListMultimap(unfiltered, keyPredicate); + } + + public static Multimap filterValues(Multimap unfiltered, Predicate valuePredicate) { + return Multimaps.filterEntries(unfiltered, Maps.valuePredicateOnEntries(valuePredicate)); + } + + public static SetMultimap filterValues(SetMultimap unfiltered, Predicate valuePredicate) { + return Multimaps.filterEntries(unfiltered, Maps.valuePredicateOnEntries(valuePredicate)); + } + + public static Multimap filterEntries(Multimap unfiltered, Predicate> entryPredicate) { + Preconditions.checkNotNull(entryPredicate); + if (unfiltered instanceof SetMultimap) { + return Multimaps.filterEntries((SetMultimap)unfiltered, entryPredicate); + } + return unfiltered instanceof FilteredMultimap ? Multimaps.filterFiltered((FilteredMultimap)unfiltered, entryPredicate) : new FilteredEntryMultimap(Preconditions.checkNotNull(unfiltered), entryPredicate); + } + + public static SetMultimap filterEntries(SetMultimap unfiltered, Predicate> entryPredicate) { + Preconditions.checkNotNull(entryPredicate); + return unfiltered instanceof FilteredSetMultimap ? Multimaps.filterFiltered((FilteredSetMultimap)unfiltered, entryPredicate) : new FilteredEntrySetMultimap(Preconditions.checkNotNull(unfiltered), entryPredicate); + } + + private static Multimap filterFiltered(FilteredMultimap multimap, Predicate> entryPredicate) { + Predicate> predicate = Predicates.and(multimap.entryPredicate(), entryPredicate); + return new FilteredEntryMultimap(multimap.unfiltered(), predicate); + } + + private static SetMultimap filterFiltered(FilteredSetMultimap multimap, Predicate> entryPredicate) { + Predicate> predicate = Predicates.and(multimap.entryPredicate(), entryPredicate); + return new FilteredEntrySetMultimap(multimap.unfiltered(), predicate); + } + + static boolean equalsImpl(Multimap multimap, @Nullable Object object) { + if (object == multimap) { + return true; + } + if (object instanceof Multimap) { + Multimap that = (Multimap)object; + return multimap.asMap().equals(that.asMap()); + } + return false; + } + + static final class AsMap + extends Maps.ImprovedAbstractMap> { + private final Multimap multimap; + + AsMap(Multimap multimap) { + this.multimap = Preconditions.checkNotNull(multimap); + } + + @Override + public int size() { + return this.multimap.keySet().size(); + } + + @Override + protected Set>> createEntrySet() { + return new EntrySet(); + } + + void removeValuesForKey(Object key) { + this.multimap.keySet().remove(key); + } + + @Override + public Collection get(Object key) { + return this.containsKey(key) ? this.multimap.get(key) : null; + } + + @Override + public Collection remove(Object key) { + return this.containsKey(key) ? this.multimap.removeAll(key) : null; + } + + @Override + public Set keySet() { + return this.multimap.keySet(); + } + + @Override + public boolean isEmpty() { + return this.multimap.isEmpty(); + } + + @Override + public boolean containsKey(Object key) { + return this.multimap.containsKey(key); + } + + @Override + public void clear() { + this.multimap.clear(); + } + + class EntrySet + extends Maps.EntrySet> { + EntrySet() { + } + + @Override + Map> map() { + return AsMap.this; + } + + @Override + public Iterator>> iterator() { + return Maps.asMapEntryIterator(AsMap.this.multimap.keySet(), new Function>(){ + + @Override + public Collection apply(K key) { + return AsMap.this.multimap.get(key); + } + }); + } + + @Override + public boolean remove(Object o) { + if (!this.contains(o)) { + return false; + } + Map.Entry entry = (Map.Entry)o; + AsMap.this.removeValuesForKey(entry.getKey()); + return true; + } + } + } + + static abstract class Entries + extends AbstractCollection> { + Entries() { + } + + abstract Multimap multimap(); + + @Override + public int size() { + return this.multimap().size(); + } + + @Override + public boolean contains(@Nullable Object o) { + if (o instanceof Map.Entry) { + Map.Entry entry = (Map.Entry)o; + return this.multimap().containsEntry(entry.getKey(), entry.getValue()); + } + return false; + } + + @Override + public boolean remove(@Nullable Object o) { + if (o instanceof Map.Entry) { + Map.Entry entry = (Map.Entry)o; + return this.multimap().remove(entry.getKey(), entry.getValue()); + } + return false; + } + + @Override + public void clear() { + this.multimap().clear(); + } + } + + static class Keys + extends AbstractMultiset { + final Multimap multimap; + + Keys(Multimap multimap) { + this.multimap = multimap; + } + + @Override + Iterator> entryIterator() { + return new TransformedIterator>, Multiset.Entry>(this.multimap.asMap().entrySet().iterator()){ + + @Override + Multiset.Entry transform(final Map.Entry> backingEntry) { + return new Multisets.AbstractEntry(){ + + @Override + public K getElement() { + return backingEntry.getKey(); + } + + @Override + public int getCount() { + return ((Collection)backingEntry.getValue()).size(); + } + }; + } + }; + } + + @Override + int distinctElements() { + return this.multimap.asMap().size(); + } + + @Override + Set> createEntrySet() { + return new KeysEntrySet(); + } + + @Override + public boolean contains(@Nullable Object element) { + return this.multimap.containsKey(element); + } + + @Override + public Iterator iterator() { + return Maps.keyIterator(this.multimap.entries().iterator()); + } + + @Override + public int count(@Nullable Object element) { + Collection values = Maps.safeGet(this.multimap.asMap(), element); + return values == null ? 0 : values.size(); + } + + @Override + public int remove(@Nullable Object element, int occurrences) { + CollectPreconditions.checkNonnegative(occurrences, "occurrences"); + if (occurrences == 0) { + return this.count(element); + } + Collection values = Maps.safeGet(this.multimap.asMap(), element); + if (values == null) { + return 0; + } + int oldCount = values.size(); + if (occurrences >= oldCount) { + values.clear(); + } else { + Iterator iterator = values.iterator(); + for (int i = 0; i < occurrences; ++i) { + iterator.next(); + iterator.remove(); + } + } + return oldCount; + } + + @Override + public void clear() { + this.multimap.clear(); + } + + @Override + public Set elementSet() { + return this.multimap.keySet(); + } + + class KeysEntrySet + extends Multisets.EntrySet { + KeysEntrySet() { + } + + @Override + Multiset multiset() { + return Keys.this; + } + + @Override + public Iterator> iterator() { + return Keys.this.entryIterator(); + } + + @Override + public int size() { + return Keys.this.distinctElements(); + } + + @Override + public boolean isEmpty() { + return Keys.this.multimap.isEmpty(); + } + + @Override + public boolean contains(@Nullable Object o) { + if (o instanceof Multiset.Entry) { + Multiset.Entry entry = (Multiset.Entry)o; + Collection collection = Keys.this.multimap.asMap().get(entry.getElement()); + return collection != null && collection.size() == entry.getCount(); + } + return false; + } + + @Override + public boolean remove(@Nullable Object o) { + if (o instanceof Multiset.Entry) { + Multiset.Entry entry = (Multiset.Entry)o; + Collection collection = Keys.this.multimap.asMap().get(entry.getElement()); + if (collection != null && collection.size() == entry.getCount()) { + collection.clear(); + return true; + } + } + return false; + } + } + } + + private static final class TransformedEntriesListMultimap + extends TransformedEntriesMultimap + implements ListMultimap { + TransformedEntriesListMultimap(ListMultimap fromMultimap, Maps.EntryTransformer transformer) { + super(fromMultimap, transformer); + } + + @Override + List transform(K key, Collection values) { + return Lists.transform((List)values, Maps.asValueToValueFunction(this.transformer, key)); + } + + @Override + public List get(K key) { + return this.transform((Object)key, this.fromMultimap.get(key)); + } + + @Override + public List removeAll(Object key) { + return this.transform(key, this.fromMultimap.removeAll(key)); + } + + @Override + public List replaceValues(K key, Iterable values) { + throw new UnsupportedOperationException(); + } + } + + private static class TransformedEntriesMultimap + extends AbstractMultimap { + final Multimap fromMultimap; + final Maps.EntryTransformer transformer; + + TransformedEntriesMultimap(Multimap fromMultimap, Maps.EntryTransformer transformer) { + this.fromMultimap = Preconditions.checkNotNull(fromMultimap); + this.transformer = Preconditions.checkNotNull(transformer); + } + + Collection transform(K key, Collection values) { + Function function = Maps.asValueToValueFunction(this.transformer, key); + if (values instanceof List) { + return Lists.transform((List)values, function); + } + return Collections2.transform(values, function); + } + + @Override + Map> createAsMap() { + return Maps.transformEntries(this.fromMultimap.asMap(), new Maps.EntryTransformer, Collection>(){ + + @Override + public Collection transformEntry(K key, Collection value) { + return TransformedEntriesMultimap.this.transform(key, value); + } + }); + } + + @Override + public void clear() { + this.fromMultimap.clear(); + } + + @Override + public boolean containsKey(Object key) { + return this.fromMultimap.containsKey(key); + } + + @Override + Iterator> entryIterator() { + return Iterators.transform(this.fromMultimap.entries().iterator(), Maps.asEntryToEntryFunction(this.transformer)); + } + + @Override + public Collection get(K key) { + return this.transform(key, this.fromMultimap.get(key)); + } + + @Override + public boolean isEmpty() { + return this.fromMultimap.isEmpty(); + } + + @Override + public Set keySet() { + return this.fromMultimap.keySet(); + } + + @Override + public Multiset keys() { + return this.fromMultimap.keys(); + } + + @Override + public boolean put(K key, V2 value) { + throw new UnsupportedOperationException(); + } + + @Override + public boolean putAll(K key, Iterable values) { + throw new UnsupportedOperationException(); + } + + @Override + public boolean putAll(Multimap multimap) { + throw new UnsupportedOperationException(); + } + + @Override + public boolean remove(Object key, Object value) { + return this.get(key).remove(value); + } + + @Override + public Collection removeAll(Object key) { + return this.transform(key, this.fromMultimap.removeAll(key)); + } + + @Override + public Collection replaceValues(K key, Iterable values) { + throw new UnsupportedOperationException(); + } + + @Override + public int size() { + return this.fromMultimap.size(); + } + + @Override + Collection createValues() { + return Collections2.transform(this.fromMultimap.entries(), Maps.asEntryToValueFunction(this.transformer)); + } + } + + private static class MapMultimap + extends AbstractMultimap + implements SetMultimap, + Serializable { + final Map map; + private static final long serialVersionUID = 7845222491160860175L; + + MapMultimap(Map map) { + this.map = Preconditions.checkNotNull(map); + } + + @Override + public int size() { + return this.map.size(); + } + + @Override + public boolean containsKey(Object key) { + return this.map.containsKey(key); + } + + @Override + public boolean containsValue(Object value) { + return this.map.containsValue(value); + } + + @Override + public boolean containsEntry(Object key, Object value) { + return this.map.entrySet().contains(Maps.immutableEntry(key, value)); + } + + @Override + public Set get(final K key) { + return new Sets.ImprovedAbstractSet(){ + + @Override + public Iterator iterator() { + return new Iterator(){ + int i; + + @Override + public boolean hasNext() { + return this.i == 0 && MapMultimap.this.map.containsKey(key); + } + + @Override + public V next() { + if (!this.hasNext()) { + throw new NoSuchElementException(); + } + ++this.i; + return MapMultimap.this.map.get(key); + } + + @Override + public void remove() { + CollectPreconditions.checkRemove(this.i == 1); + this.i = -1; + MapMultimap.this.map.remove(key); + } + }; + } + + @Override + public int size() { + return MapMultimap.this.map.containsKey(key) ? 1 : 0; + } + }; + } + + @Override + public boolean put(K key, V value) { + throw new UnsupportedOperationException(); + } + + @Override + public boolean putAll(K key, Iterable values) { + throw new UnsupportedOperationException(); + } + + @Override + public boolean putAll(Multimap multimap) { + throw new UnsupportedOperationException(); + } + + @Override + public Set replaceValues(K key, Iterable values) { + throw new UnsupportedOperationException(); + } + + @Override + public boolean remove(Object key, Object value) { + return this.map.entrySet().remove(Maps.immutableEntry(key, value)); + } + + @Override + public Set removeAll(Object key) { + HashSet values = new HashSet(2); + if (!this.map.containsKey(key)) { + return values; + } + values.add(this.map.remove(key)); + return values; + } + + @Override + public void clear() { + this.map.clear(); + } + + @Override + public Set keySet() { + return this.map.keySet(); + } + + @Override + public Collection values() { + return this.map.values(); + } + + @Override + public Set> entries() { + return this.map.entrySet(); + } + + @Override + Iterator> entryIterator() { + return this.map.entrySet().iterator(); + } + + @Override + Map> createAsMap() { + return new AsMap(this); + } + + @Override + public int hashCode() { + return this.map.hashCode(); + } + } + + private static class UnmodifiableSortedSetMultimap + extends UnmodifiableSetMultimap + implements SortedSetMultimap { + private static final long serialVersionUID = 0L; + + UnmodifiableSortedSetMultimap(SortedSetMultimap delegate) { + super(delegate); + } + + @Override + public SortedSetMultimap delegate() { + return (SortedSetMultimap)super.delegate(); + } + + @Override + public SortedSet get(K key) { + return Collections.unmodifiableSortedSet(this.delegate().get(key)); + } + + @Override + public SortedSet removeAll(Object key) { + throw new UnsupportedOperationException(); + } + + @Override + public SortedSet replaceValues(K key, Iterable values) { + throw new UnsupportedOperationException(); + } + + @Override + public Comparator valueComparator() { + return this.delegate().valueComparator(); + } + } + + private static class UnmodifiableSetMultimap + extends UnmodifiableMultimap + implements SetMultimap { + private static final long serialVersionUID = 0L; + + UnmodifiableSetMultimap(SetMultimap delegate) { + super(delegate); + } + + @Override + public SetMultimap delegate() { + return (SetMultimap)super.delegate(); + } + + @Override + public Set get(K key) { + return Collections.unmodifiableSet(this.delegate().get(key)); + } + + @Override + public Set> entries() { + return Maps.unmodifiableEntrySet(this.delegate().entries()); + } + + @Override + public Set removeAll(Object key) { + throw new UnsupportedOperationException(); + } + + @Override + public Set replaceValues(K key, Iterable values) { + throw new UnsupportedOperationException(); + } + } + + private static class UnmodifiableListMultimap + extends UnmodifiableMultimap + implements ListMultimap { + private static final long serialVersionUID = 0L; + + UnmodifiableListMultimap(ListMultimap delegate) { + super(delegate); + } + + @Override + public ListMultimap delegate() { + return (ListMultimap)super.delegate(); + } + + @Override + public List get(K key) { + return Collections.unmodifiableList(this.delegate().get(key)); + } + + @Override + public List removeAll(Object key) { + throw new UnsupportedOperationException(); + } + + @Override + public List replaceValues(K key, Iterable values) { + throw new UnsupportedOperationException(); + } + } + + private static class UnmodifiableMultimap + extends ForwardingMultimap + implements Serializable { + final Multimap delegate; + transient Collection> entries; + transient Multiset keys; + transient Set keySet; + transient Collection values; + transient Map> map; + private static final long serialVersionUID = 0L; + + UnmodifiableMultimap(Multimap delegate) { + this.delegate = Preconditions.checkNotNull(delegate); + } + + @Override + protected Multimap delegate() { + return this.delegate; + } + + @Override + public void clear() { + throw new UnsupportedOperationException(); + } + + @Override + public Map> asMap() { + Map> result = this.map; + if (result == null) { + result = this.map = Collections.unmodifiableMap(Maps.transformValues(this.delegate.asMap(), new Function, Collection>(){ + + @Override + public Collection apply(Collection collection) { + return Multimaps.unmodifiableValueCollection(collection); + } + })); + } + return result; + } + + @Override + public Collection> entries() { + Collection result = this.entries; + if (result == null) { + this.entries = result = Multimaps.unmodifiableEntries(this.delegate.entries()); + } + return result; + } + + @Override + public Collection get(K key) { + return Multimaps.unmodifiableValueCollection(this.delegate.get(key)); + } + + @Override + public Multiset keys() { + Multiset result = this.keys; + if (result == null) { + this.keys = result = Multisets.unmodifiableMultiset(this.delegate.keys()); + } + return result; + } + + @Override + public Set keySet() { + Set result = this.keySet; + if (result == null) { + this.keySet = result = Collections.unmodifiableSet(this.delegate.keySet()); + } + return result; + } + + @Override + public boolean put(K key, V value) { + throw new UnsupportedOperationException(); + } + + @Override + public boolean putAll(K key, Iterable values) { + throw new UnsupportedOperationException(); + } + + @Override + public boolean putAll(Multimap multimap) { + throw new UnsupportedOperationException(); + } + + @Override + public boolean remove(Object key, Object value) { + throw new UnsupportedOperationException(); + } + + @Override + public Collection removeAll(Object key) { + throw new UnsupportedOperationException(); + } + + @Override + public Collection replaceValues(K key, Iterable values) { + throw new UnsupportedOperationException(); + } + + @Override + public Collection values() { + Collection result = this.values; + if (result == null) { + this.values = result = Collections.unmodifiableCollection(this.delegate.values()); + } + return result; + } + } + + private static class CustomSortedSetMultimap + extends AbstractSortedSetMultimap { + transient Supplier> factory; + transient Comparator valueComparator; + @GwtIncompatible(value="not needed in emulated source") + private static final long serialVersionUID = 0L; + + CustomSortedSetMultimap(Map> map, Supplier> factory) { + super(map); + this.factory = Preconditions.checkNotNull(factory); + this.valueComparator = factory.get().comparator(); + } + + @Override + protected SortedSet createCollection() { + return this.factory.get(); + } + + @Override + public Comparator valueComparator() { + return this.valueComparator; + } + + @GwtIncompatible(value="java.io.ObjectOutputStream") + private void writeObject(ObjectOutputStream stream) throws IOException { + stream.defaultWriteObject(); + stream.writeObject(this.factory); + stream.writeObject(this.backingMap()); + } + + @GwtIncompatible(value="java.io.ObjectInputStream") + private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException { + stream.defaultReadObject(); + this.factory = (Supplier)stream.readObject(); + this.valueComparator = this.factory.get().comparator(); + Map map = (Map)stream.readObject(); + this.setMap(map); + } + } + + private static class CustomSetMultimap + extends AbstractSetMultimap { + transient Supplier> factory; + @GwtIncompatible(value="not needed in emulated source") + private static final long serialVersionUID = 0L; + + CustomSetMultimap(Map> map, Supplier> factory) { + super(map); + this.factory = Preconditions.checkNotNull(factory); + } + + @Override + protected Set createCollection() { + return this.factory.get(); + } + + @GwtIncompatible(value="java.io.ObjectOutputStream") + private void writeObject(ObjectOutputStream stream) throws IOException { + stream.defaultWriteObject(); + stream.writeObject(this.factory); + stream.writeObject(this.backingMap()); + } + + @GwtIncompatible(value="java.io.ObjectInputStream") + private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException { + stream.defaultReadObject(); + this.factory = (Supplier)stream.readObject(); + Map map = (Map)stream.readObject(); + this.setMap(map); + } + } + + private static class CustomListMultimap + extends AbstractListMultimap { + transient Supplier> factory; + @GwtIncompatible(value="java serialization not supported") + private static final long serialVersionUID = 0L; + + CustomListMultimap(Map> map, Supplier> factory) { + super(map); + this.factory = Preconditions.checkNotNull(factory); + } + + @Override + protected List createCollection() { + return this.factory.get(); + } + + @GwtIncompatible(value="java.io.ObjectOutputStream") + private void writeObject(ObjectOutputStream stream) throws IOException { + stream.defaultWriteObject(); + stream.writeObject(this.factory); + stream.writeObject(this.backingMap()); + } + + @GwtIncompatible(value="java.io.ObjectInputStream") + private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException { + stream.defaultReadObject(); + this.factory = (Supplier)stream.readObject(); + Map map = (Map)stream.readObject(); + this.setMap(map); + } + } + + private static class CustomMultimap + extends AbstractMapBasedMultimap { + transient Supplier> factory; + @GwtIncompatible(value="java serialization not supported") + private static final long serialVersionUID = 0L; + + CustomMultimap(Map> map, Supplier> factory) { + super(map); + this.factory = Preconditions.checkNotNull(factory); + } + + @Override + protected Collection createCollection() { + return this.factory.get(); + } + + @GwtIncompatible(value="java.io.ObjectOutputStream") + private void writeObject(ObjectOutputStream stream) throws IOException { + stream.defaultWriteObject(); + stream.writeObject(this.factory); + stream.writeObject(this.backingMap()); + } + + @GwtIncompatible(value="java.io.ObjectInputStream") + private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException { + stream.defaultReadObject(); + this.factory = (Supplier)stream.readObject(); + Map map = (Map)stream.readObject(); + this.setMap(map); + } + } +} diff --git a/src/com/google/common/collect/Multiset.java b/src/com/google/common/collect/Multiset.java new file mode 100644 index 0000000..89cb56c --- /dev/null +++ b/src/com/google/common/collect/Multiset.java @@ -0,0 +1,69 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import java.util.Collection; +import java.util.Iterator; +import java.util.Set; +import javax.annotation.Nullable; + +@GwtCompatible +public interface Multiset +extends Collection { + public int count(@Nullable Object var1); + + public int add(@Nullable E var1, int var2); + + public int remove(@Nullable Object var1, int var2); + + public int setCount(E var1, int var2); + + public boolean setCount(E var1, int var2, int var3); + + public Set elementSet(); + + public Set> entrySet(); + + @Override + public boolean equals(@Nullable Object var1); + + @Override + public int hashCode(); + + public String toString(); + + @Override + public Iterator iterator(); + + @Override + public boolean contains(@Nullable Object var1); + + @Override + public boolean containsAll(Collection var1); + + @Override + public boolean add(E var1); + + @Override + public boolean remove(@Nullable Object var1); + + @Override + public boolean removeAll(Collection var1); + + @Override + public boolean retainAll(Collection var1); + + public static interface Entry { + public E getElement(); + + public int getCount(); + + public boolean equals(Object var1); + + public int hashCode(); + + public String toString(); + } +} diff --git a/src/com/google/common/collect/Multisets.java b/src/com/google/common/collect/Multisets.java new file mode 100644 index 0000000..929a18d --- /dev/null +++ b/src/com/google/common/collect/Multisets.java @@ -0,0 +1,810 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Objects; +import com.google.common.base.Preconditions; +import com.google.common.base.Predicate; +import com.google.common.base.Predicates; +import com.google.common.collect.AbstractIterator; +import com.google.common.collect.AbstractMultiset; +import com.google.common.collect.CollectPreconditions; +import com.google.common.collect.ForwardingMultiset; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMultiset; +import com.google.common.collect.Iterators; +import com.google.common.collect.Multiset; +import com.google.common.collect.Ordering; +import com.google.common.collect.Sets; +import com.google.common.collect.SortedMultiset; +import com.google.common.collect.TransformedIterator; +import com.google.common.collect.UnmodifiableIterator; +import com.google.common.collect.UnmodifiableSortedMultiset; +import com.google.common.primitives.Ints; +import java.io.Serializable; +import java.util.Collection; +import java.util.Collections; +import java.util.Iterator; +import java.util.NoSuchElementException; +import java.util.Set; +import javax.annotation.Nullable; + +@GwtCompatible +public final class Multisets { + private static final Ordering> DECREASING_COUNT_ORDERING = new Ordering>(){ + + @Override + public int compare(Multiset.Entry entry1, Multiset.Entry entry2) { + return Ints.compare(entry2.getCount(), entry1.getCount()); + } + }; + + private Multisets() { + } + + public static Multiset unmodifiableMultiset(Multiset multiset) { + if (multiset instanceof UnmodifiableMultiset || multiset instanceof ImmutableMultiset) { + Multiset result = multiset; + return result; + } + return new UnmodifiableMultiset(Preconditions.checkNotNull(multiset)); + } + + @Deprecated + public static Multiset unmodifiableMultiset(ImmutableMultiset multiset) { + return Preconditions.checkNotNull(multiset); + } + + @Beta + public static SortedMultiset unmodifiableSortedMultiset(SortedMultiset sortedMultiset) { + return new UnmodifiableSortedMultiset(Preconditions.checkNotNull(sortedMultiset)); + } + + public static Multiset.Entry immutableEntry(@Nullable E e, int n) { + return new ImmutableEntry(e, n); + } + + @Beta + public static Multiset filter(Multiset unfiltered, Predicate predicate) { + if (unfiltered instanceof FilteredMultiset) { + FilteredMultiset filtered = (FilteredMultiset)unfiltered; + Predicate combinedPredicate = Predicates.and(filtered.predicate, predicate); + return new FilteredMultiset(filtered.unfiltered, combinedPredicate); + } + return new FilteredMultiset(unfiltered, predicate); + } + + static int inferDistinctElements(Iterable elements) { + if (elements instanceof Multiset) { + return ((Multiset)elements).elementSet().size(); + } + return 11; + } + + @Beta + public static Multiset union(final Multiset multiset1, final Multiset multiset2) { + Preconditions.checkNotNull(multiset1); + Preconditions.checkNotNull(multiset2); + return new AbstractMultiset(){ + + @Override + public boolean contains(@Nullable Object element) { + return multiset1.contains(element) || multiset2.contains(element); + } + + @Override + public boolean isEmpty() { + return multiset1.isEmpty() && multiset2.isEmpty(); + } + + @Override + public int count(Object element) { + return Math.max(multiset1.count(element), multiset2.count(element)); + } + + @Override + Set createElementSet() { + return Sets.union(multiset1.elementSet(), multiset2.elementSet()); + } + + @Override + Iterator> entryIterator() { + final Iterator iterator1 = multiset1.entrySet().iterator(); + final Iterator iterator2 = multiset2.entrySet().iterator(); + return new AbstractIterator>(){ + + @Override + protected Multiset.Entry computeNext() { + if (iterator1.hasNext()) { + Multiset.Entry entry1 = (Multiset.Entry)iterator1.next(); + Object element = entry1.getElement(); + int count = Math.max(entry1.getCount(), multiset2.count(element)); + return Multisets.immutableEntry(element, count); + } + while (iterator2.hasNext()) { + Multiset.Entry entry2 = (Multiset.Entry)iterator2.next(); + Object element = entry2.getElement(); + if (multiset1.contains(element)) continue; + return Multisets.immutableEntry(element, entry2.getCount()); + } + return (Multiset.Entry)this.endOfData(); + } + }; + } + + @Override + int distinctElements() { + return this.elementSet().size(); + } + }; + } + + public static Multiset intersection(final Multiset multiset1, final Multiset multiset2) { + Preconditions.checkNotNull(multiset1); + Preconditions.checkNotNull(multiset2); + return new AbstractMultiset(){ + + @Override + public int count(Object element) { + int count1 = multiset1.count(element); + return count1 == 0 ? 0 : Math.min(count1, multiset2.count(element)); + } + + @Override + Set createElementSet() { + return Sets.intersection(multiset1.elementSet(), multiset2.elementSet()); + } + + @Override + Iterator> entryIterator() { + final Iterator iterator1 = multiset1.entrySet().iterator(); + return new AbstractIterator>(){ + + @Override + protected Multiset.Entry computeNext() { + while (iterator1.hasNext()) { + Multiset.Entry entry1 = (Multiset.Entry)iterator1.next(); + Object element = entry1.getElement(); + int count = Math.min(entry1.getCount(), multiset2.count(element)); + if (count <= 0) continue; + return Multisets.immutableEntry(element, count); + } + return (Multiset.Entry)this.endOfData(); + } + }; + } + + @Override + int distinctElements() { + return this.elementSet().size(); + } + }; + } + + @Beta + public static Multiset sum(final Multiset multiset1, final Multiset multiset2) { + Preconditions.checkNotNull(multiset1); + Preconditions.checkNotNull(multiset2); + return new AbstractMultiset(){ + + @Override + public boolean contains(@Nullable Object element) { + return multiset1.contains(element) || multiset2.contains(element); + } + + @Override + public boolean isEmpty() { + return multiset1.isEmpty() && multiset2.isEmpty(); + } + + @Override + public int size() { + return multiset1.size() + multiset2.size(); + } + + @Override + public int count(Object element) { + return multiset1.count(element) + multiset2.count(element); + } + + @Override + Set createElementSet() { + return Sets.union(multiset1.elementSet(), multiset2.elementSet()); + } + + @Override + Iterator> entryIterator() { + final Iterator iterator1 = multiset1.entrySet().iterator(); + final Iterator iterator2 = multiset2.entrySet().iterator(); + return new AbstractIterator>(){ + + @Override + protected Multiset.Entry computeNext() { + if (iterator1.hasNext()) { + Multiset.Entry entry1 = (Multiset.Entry)iterator1.next(); + Object element = entry1.getElement(); + int count = entry1.getCount() + multiset2.count(element); + return Multisets.immutableEntry(element, count); + } + while (iterator2.hasNext()) { + Multiset.Entry entry2 = (Multiset.Entry)iterator2.next(); + Object element = entry2.getElement(); + if (multiset1.contains(element)) continue; + return Multisets.immutableEntry(element, entry2.getCount()); + } + return (Multiset.Entry)this.endOfData(); + } + }; + } + + @Override + int distinctElements() { + return this.elementSet().size(); + } + }; + } + + @Beta + public static Multiset difference(final Multiset multiset1, final Multiset multiset2) { + Preconditions.checkNotNull(multiset1); + Preconditions.checkNotNull(multiset2); + return new AbstractMultiset(){ + + @Override + public int count(@Nullable Object element) { + int count1 = multiset1.count(element); + return count1 == 0 ? 0 : Math.max(0, count1 - multiset2.count(element)); + } + + @Override + Iterator> entryIterator() { + final Iterator iterator1 = multiset1.entrySet().iterator(); + return new AbstractIterator>(){ + + @Override + protected Multiset.Entry computeNext() { + while (iterator1.hasNext()) { + Multiset.Entry entry1 = (Multiset.Entry)iterator1.next(); + Object element = entry1.getElement(); + int count = entry1.getCount() - multiset2.count(element); + if (count <= 0) continue; + return Multisets.immutableEntry(element, count); + } + return (Multiset.Entry)this.endOfData(); + } + }; + } + + @Override + int distinctElements() { + return Iterators.size(this.entryIterator()); + } + }; + } + + public static boolean containsOccurrences(Multiset superMultiset, Multiset subMultiset) { + Preconditions.checkNotNull(superMultiset); + Preconditions.checkNotNull(subMultiset); + for (Multiset.Entry entry : subMultiset.entrySet()) { + int superCount = superMultiset.count(entry.getElement()); + if (superCount >= entry.getCount()) continue; + return false; + } + return true; + } + + public static boolean retainOccurrences(Multiset multisetToModify, Multiset multisetToRetain) { + return Multisets.retainOccurrencesImpl(multisetToModify, multisetToRetain); + } + + private static boolean retainOccurrencesImpl(Multiset multisetToModify, Multiset occurrencesToRetain) { + Preconditions.checkNotNull(multisetToModify); + Preconditions.checkNotNull(occurrencesToRetain); + Iterator> entryIterator = multisetToModify.entrySet().iterator(); + boolean changed = false; + while (entryIterator.hasNext()) { + Multiset.Entry entry = entryIterator.next(); + int retainCount = occurrencesToRetain.count(entry.getElement()); + if (retainCount == 0) { + entryIterator.remove(); + changed = true; + continue; + } + if (retainCount >= entry.getCount()) continue; + multisetToModify.setCount(entry.getElement(), retainCount); + changed = true; + } + return changed; + } + + public static boolean removeOccurrences(Multiset multisetToModify, Iterable occurrencesToRemove) { + if (occurrencesToRemove instanceof Multiset) { + return Multisets.removeOccurrencesImpl(multisetToModify, (Multiset)occurrencesToRemove); + } + return Multisets.removeOccurrencesImpl(multisetToModify, occurrencesToRemove); + } + + private static boolean removeOccurrencesImpl(Multiset multisetToModify, Iterable occurrencesToRemove) { + Preconditions.checkNotNull(multisetToModify); + Preconditions.checkNotNull(occurrencesToRemove); + boolean changed = false; + for (Object o : occurrencesToRemove) { + changed |= multisetToModify.remove(o); + } + return changed; + } + + private static boolean removeOccurrencesImpl(Multiset multisetToModify, Multiset occurrencesToRemove) { + Preconditions.checkNotNull(multisetToModify); + Preconditions.checkNotNull(occurrencesToRemove); + boolean changed = false; + Iterator> entryIterator = multisetToModify.entrySet().iterator(); + while (entryIterator.hasNext()) { + Multiset.Entry entry = entryIterator.next(); + int removeCount = occurrencesToRemove.count(entry.getElement()); + if (removeCount >= entry.getCount()) { + entryIterator.remove(); + changed = true; + continue; + } + if (removeCount <= 0) continue; + multisetToModify.remove(entry.getElement(), removeCount); + changed = true; + } + return changed; + } + + static boolean equalsImpl(Multiset multiset, @Nullable Object object) { + if (object == multiset) { + return true; + } + if (object instanceof Multiset) { + Multiset that = (Multiset)object; + if (multiset.size() != that.size() || multiset.entrySet().size() != that.entrySet().size()) { + return false; + } + for (Multiset.Entry entry : that.entrySet()) { + if (multiset.count(entry.getElement()) == entry.getCount()) continue; + return false; + } + return true; + } + return false; + } + + static boolean addAllImpl(Multiset self, Collection elements) { + if (elements.isEmpty()) { + return false; + } + if (elements instanceof Multiset) { + Multiset that = Multisets.cast(elements); + for (Multiset.Entry entry : that.entrySet()) { + self.add(entry.getElement(), entry.getCount()); + } + } else { + Iterators.addAll(self, elements.iterator()); + } + return true; + } + + static boolean removeAllImpl(Multiset self, Collection elementsToRemove) { + Collection collection = elementsToRemove instanceof Multiset ? ((Multiset)elementsToRemove).elementSet() : elementsToRemove; + return self.elementSet().removeAll(collection); + } + + static boolean retainAllImpl(Multiset self, Collection elementsToRetain) { + Preconditions.checkNotNull(elementsToRetain); + Collection collection = elementsToRetain instanceof Multiset ? ((Multiset)elementsToRetain).elementSet() : elementsToRetain; + return self.elementSet().retainAll(collection); + } + + static int setCountImpl(Multiset self, E element, int count) { + CollectPreconditions.checkNonnegative(count, "count"); + int oldCount = self.count(element); + int delta = count - oldCount; + if (delta > 0) { + self.add(element, delta); + } else if (delta < 0) { + self.remove(element, -delta); + } + return oldCount; + } + + static boolean setCountImpl(Multiset self, E element, int oldCount, int newCount) { + CollectPreconditions.checkNonnegative(oldCount, "oldCount"); + CollectPreconditions.checkNonnegative(newCount, "newCount"); + if (self.count(element) == oldCount) { + self.setCount(element, newCount); + return true; + } + return false; + } + + static Iterator iteratorImpl(Multiset multiset) { + return new MultisetIteratorImpl(multiset, multiset.entrySet().iterator()); + } + + static int sizeImpl(Multiset multiset) { + long size = 0L; + for (Multiset.Entry entry : multiset.entrySet()) { + size += (long)entry.getCount(); + } + return Ints.saturatedCast(size); + } + + static Multiset cast(Iterable iterable) { + return (Multiset)iterable; + } + + @Beta + public static ImmutableMultiset copyHighestCountFirst(Multiset multiset) { + ImmutableList> sortedEntries = DECREASING_COUNT_ORDERING.immutableSortedCopy(multiset.entrySet()); + return ImmutableMultiset.copyFromEntries(sortedEntries); + } + + static final class MultisetIteratorImpl + implements Iterator { + private final Multiset multiset; + private final Iterator> entryIterator; + private Multiset.Entry currentEntry; + private int laterCount; + private int totalCount; + private boolean canRemove; + + MultisetIteratorImpl(Multiset multiset, Iterator> entryIterator) { + this.multiset = multiset; + this.entryIterator = entryIterator; + } + + @Override + public boolean hasNext() { + return this.laterCount > 0 || this.entryIterator.hasNext(); + } + + @Override + public E next() { + if (!this.hasNext()) { + throw new NoSuchElementException(); + } + if (this.laterCount == 0) { + this.currentEntry = this.entryIterator.next(); + this.totalCount = this.laterCount = this.currentEntry.getCount(); + } + --this.laterCount; + this.canRemove = true; + return this.currentEntry.getElement(); + } + + @Override + public void remove() { + CollectPreconditions.checkRemove(this.canRemove); + if (this.totalCount == 1) { + this.entryIterator.remove(); + } else { + this.multiset.remove(this.currentEntry.getElement()); + } + --this.totalCount; + this.canRemove = false; + } + } + + static abstract class EntrySet + extends Sets.ImprovedAbstractSet> { + EntrySet() { + } + + abstract Multiset multiset(); + + @Override + public boolean contains(@Nullable Object o) { + if (o instanceof Multiset.Entry) { + Multiset.Entry entry = (Multiset.Entry)o; + if (entry.getCount() <= 0) { + return false; + } + int count = this.multiset().count(entry.getElement()); + return count == entry.getCount(); + } + return false; + } + + @Override + public boolean remove(Object object) { + if (object instanceof Multiset.Entry) { + Multiset.Entry entry = (Multiset.Entry)object; + Object element = entry.getElement(); + int entryCount = entry.getCount(); + if (entryCount != 0) { + Multiset multiset = this.multiset(); + return multiset.setCount(element, entryCount, 0); + } + } + return false; + } + + @Override + public void clear() { + this.multiset().clear(); + } + } + + static abstract class ElementSet + extends Sets.ImprovedAbstractSet { + ElementSet() { + } + + abstract Multiset multiset(); + + @Override + public void clear() { + this.multiset().clear(); + } + + @Override + public boolean contains(Object o) { + return this.multiset().contains(o); + } + + @Override + public boolean containsAll(Collection c) { + return this.multiset().containsAll(c); + } + + @Override + public boolean isEmpty() { + return this.multiset().isEmpty(); + } + + @Override + public Iterator iterator() { + return new TransformedIterator, E>(this.multiset().entrySet().iterator()){ + + @Override + E transform(Multiset.Entry entry) { + return entry.getElement(); + } + }; + } + + @Override + public boolean remove(Object o) { + int count = this.multiset().count(o); + if (count > 0) { + this.multiset().remove(o, count); + return true; + } + return false; + } + + @Override + public int size() { + return this.multiset().entrySet().size(); + } + } + + static abstract class AbstractEntry + implements Multiset.Entry { + AbstractEntry() { + } + + @Override + public boolean equals(@Nullable Object object) { + if (object instanceof Multiset.Entry) { + Multiset.Entry that = (Multiset.Entry)object; + return this.getCount() == that.getCount() && Objects.equal(this.getElement(), that.getElement()); + } + return false; + } + + @Override + public int hashCode() { + Object e = this.getElement(); + return (e == null ? 0 : e.hashCode()) ^ this.getCount(); + } + + @Override + public String toString() { + String string; + String text = String.valueOf(this.getElement()); + int n = this.getCount(); + if (n == 1) { + string = text; + } else { + String string2 = String.valueOf(String.valueOf(text)); + int n2 = n; + string = new StringBuilder(14 + string2.length()).append(string2).append(" x ").append(n2).toString(); + } + return string; + } + } + + private static final class FilteredMultiset + extends AbstractMultiset { + final Multiset unfiltered; + final Predicate predicate; + + FilteredMultiset(Multiset unfiltered, Predicate predicate) { + this.unfiltered = Preconditions.checkNotNull(unfiltered); + this.predicate = Preconditions.checkNotNull(predicate); + } + + @Override + public UnmodifiableIterator iterator() { + return Iterators.filter(this.unfiltered.iterator(), this.predicate); + } + + @Override + Set createElementSet() { + return Sets.filter(this.unfiltered.elementSet(), this.predicate); + } + + @Override + Set> createEntrySet() { + return Sets.filter(this.unfiltered.entrySet(), new Predicate>(){ + + @Override + public boolean apply(Multiset.Entry entry) { + return FilteredMultiset.this.predicate.apply(entry.getElement()); + } + }); + } + + @Override + Iterator> entryIterator() { + throw new AssertionError((Object)"should never be called"); + } + + @Override + int distinctElements() { + return this.elementSet().size(); + } + + @Override + public int count(@Nullable Object element) { + int count = this.unfiltered.count(element); + if (count > 0) { + Object e = element; + return this.predicate.apply(e) ? count : 0; + } + return 0; + } + + @Override + public int add(@Nullable E element, int occurrences) { + Preconditions.checkArgument(this.predicate.apply(element), "Element %s does not match predicate %s", element, this.predicate); + return this.unfiltered.add(element, occurrences); + } + + @Override + public int remove(@Nullable Object element, int occurrences) { + CollectPreconditions.checkNonnegative(occurrences, "occurrences"); + if (occurrences == 0) { + return this.count(element); + } + return this.contains(element) ? this.unfiltered.remove(element, occurrences) : 0; + } + + @Override + public void clear() { + this.elementSet().clear(); + } + } + + static final class ImmutableEntry + extends AbstractEntry + implements Serializable { + @Nullable + final E element; + final int count; + private static final long serialVersionUID = 0L; + + ImmutableEntry(@Nullable E element, int count) { + this.element = element; + this.count = count; + CollectPreconditions.checkNonnegative(count, "count"); + } + + @Override + @Nullable + public E getElement() { + return this.element; + } + + @Override + public int getCount() { + return this.count; + } + } + + static class UnmodifiableMultiset + extends ForwardingMultiset + implements Serializable { + final Multiset delegate; + transient Set elementSet; + transient Set> entrySet; + private static final long serialVersionUID = 0L; + + UnmodifiableMultiset(Multiset delegate) { + this.delegate = delegate; + } + + @Override + protected Multiset delegate() { + return this.delegate; + } + + Set createElementSet() { + return Collections.unmodifiableSet(this.delegate.elementSet()); + } + + @Override + public Set elementSet() { + Set es = this.elementSet; + return es == null ? (this.elementSet = this.createElementSet()) : es; + } + + @Override + public Set> entrySet() { + Set>> es = this.entrySet; + return es == null ? (this.entrySet = Collections.unmodifiableSet(this.delegate.entrySet())) : es; + } + + @Override + public Iterator iterator() { + return Iterators.unmodifiableIterator(this.delegate.iterator()); + } + + @Override + public boolean add(E element) { + throw new UnsupportedOperationException(); + } + + @Override + public int add(E element, int occurences) { + throw new UnsupportedOperationException(); + } + + @Override + public boolean addAll(Collection elementsToAdd) { + throw new UnsupportedOperationException(); + } + + @Override + public boolean remove(Object element) { + throw new UnsupportedOperationException(); + } + + @Override + public int remove(Object element, int occurrences) { + throw new UnsupportedOperationException(); + } + + @Override + public boolean removeAll(Collection elementsToRemove) { + throw new UnsupportedOperationException(); + } + + @Override + public boolean retainAll(Collection elementsToRetain) { + throw new UnsupportedOperationException(); + } + + @Override + public void clear() { + throw new UnsupportedOperationException(); + } + + @Override + public int setCount(E element, int count) { + throw new UnsupportedOperationException(); + } + + @Override + public boolean setCount(E element, int oldCount, int newCount) { + throw new UnsupportedOperationException(); + } + } +} diff --git a/src/com/google/common/collect/MutableClassToInstanceMap.java b/src/com/google/common/collect/MutableClassToInstanceMap.java new file mode 100644 index 0000000..57214af --- /dev/null +++ b/src/com/google/common/collect/MutableClassToInstanceMap.java @@ -0,0 +1,50 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.collect.ClassToInstanceMap; +import com.google.common.collect.MapConstraint; +import com.google.common.collect.MapConstraints; +import com.google.common.primitives.Primitives; +import java.util.HashMap; +import java.util.Map; + +public final class MutableClassToInstanceMap +extends MapConstraints.ConstrainedMap, B> +implements ClassToInstanceMap { + private static final MapConstraint, Object> VALUE_CAN_BE_CAST_TO_KEY = new MapConstraint, Object>(){ + + @Override + public void checkKeyValue(Class key, Object value) { + MutableClassToInstanceMap.cast(key, value); + } + }; + private static final long serialVersionUID = 0L; + + public static MutableClassToInstanceMap create() { + return new MutableClassToInstanceMap(new HashMap()); + } + + public static MutableClassToInstanceMap create(Map, B> backingMap) { + return new MutableClassToInstanceMap(backingMap); + } + + private MutableClassToInstanceMap(Map, B> delegate) { + super(delegate, VALUE_CAN_BE_CAST_TO_KEY); + } + + @Override + public T putInstance(Class type, T value) { + return MutableClassToInstanceMap.cast(type, this.put(type, value)); + } + + @Override + public T getInstance(Class type) { + return MutableClassToInstanceMap.cast(type, this.get(type)); + } + + private static T cast(Class type, B value) { + return Primitives.wrap(type).cast(value); + } +} diff --git a/src/com/google/common/collect/NaturalOrdering.java b/src/com/google/common/collect/NaturalOrdering.java new file mode 100644 index 0000000..e139fbc --- /dev/null +++ b/src/com/google/common/collect/NaturalOrdering.java @@ -0,0 +1,41 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Preconditions; +import com.google.common.collect.Ordering; +import com.google.common.collect.ReverseNaturalOrdering; +import java.io.Serializable; + +@GwtCompatible(serializable=true) +final class NaturalOrdering +extends Ordering +implements Serializable { + static final NaturalOrdering INSTANCE = new NaturalOrdering(); + private static final long serialVersionUID = 0L; + + @Override + public int compare(Comparable left, Comparable right) { + Preconditions.checkNotNull(left); + Preconditions.checkNotNull(right); + return left.compareTo(right); + } + + @Override + public Ordering reverse() { + return ReverseNaturalOrdering.INSTANCE; + } + + private Object readResolve() { + return INSTANCE; + } + + public String toString() { + return "Ordering.natural()"; + } + + private NaturalOrdering() { + } +} diff --git a/src/com/google/common/collect/NullsFirstOrdering.java b/src/com/google/common/collect/NullsFirstOrdering.java new file mode 100644 index 0000000..e239dbf --- /dev/null +++ b/src/com/google/common/collect/NullsFirstOrdering.java @@ -0,0 +1,71 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.collect.Ordering; +import java.io.Serializable; +import javax.annotation.Nullable; + +@GwtCompatible(serializable=true) +final class NullsFirstOrdering +extends Ordering +implements Serializable { + final Ordering ordering; + private static final long serialVersionUID = 0L; + + NullsFirstOrdering(Ordering ordering) { + this.ordering = ordering; + } + + @Override + public int compare(@Nullable T left, @Nullable T right) { + if (left == right) { + return 0; + } + if (left == null) { + return -1; + } + if (right == null) { + return 1; + } + return this.ordering.compare(left, right); + } + + @Override + public Ordering reverse() { + return this.ordering.reverse().nullsLast(); + } + + @Override + public Ordering nullsFirst() { + return this; + } + + @Override + public Ordering nullsLast() { + return this.ordering.nullsLast(); + } + + @Override + public boolean equals(@Nullable Object object) { + if (object == this) { + return true; + } + if (object instanceof NullsFirstOrdering) { + NullsFirstOrdering that = (NullsFirstOrdering)object; + return this.ordering.equals(that.ordering); + } + return false; + } + + public int hashCode() { + return this.ordering.hashCode() ^ 0x39153A74; + } + + public String toString() { + String string = String.valueOf(String.valueOf(this.ordering)); + return new StringBuilder(13 + string.length()).append(string).append(".nullsFirst()").toString(); + } +} diff --git a/src/com/google/common/collect/NullsLastOrdering.java b/src/com/google/common/collect/NullsLastOrdering.java new file mode 100644 index 0000000..d3c0c09 --- /dev/null +++ b/src/com/google/common/collect/NullsLastOrdering.java @@ -0,0 +1,71 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.collect.Ordering; +import java.io.Serializable; +import javax.annotation.Nullable; + +@GwtCompatible(serializable=true) +final class NullsLastOrdering +extends Ordering +implements Serializable { + final Ordering ordering; + private static final long serialVersionUID = 0L; + + NullsLastOrdering(Ordering ordering) { + this.ordering = ordering; + } + + @Override + public int compare(@Nullable T left, @Nullable T right) { + if (left == right) { + return 0; + } + if (left == null) { + return 1; + } + if (right == null) { + return -1; + } + return this.ordering.compare(left, right); + } + + @Override + public Ordering reverse() { + return this.ordering.reverse().nullsFirst(); + } + + @Override + public Ordering nullsFirst() { + return this.ordering.nullsFirst(); + } + + @Override + public Ordering nullsLast() { + return this; + } + + @Override + public boolean equals(@Nullable Object object) { + if (object == this) { + return true; + } + if (object instanceof NullsLastOrdering) { + NullsLastOrdering that = (NullsLastOrdering)object; + return this.ordering.equals(that.ordering); + } + return false; + } + + public int hashCode() { + return this.ordering.hashCode() ^ 0xC9177248; + } + + public String toString() { + String string = String.valueOf(String.valueOf(this.ordering)); + return new StringBuilder(12 + string.length()).append(string).append(".nullsLast()").toString(); + } +} diff --git a/src/com/google/common/collect/ObjectArrays.java b/src/com/google/common/collect/ObjectArrays.java new file mode 100644 index 0000000..bb5ba3f --- /dev/null +++ b/src/com/google/common/collect/ObjectArrays.java @@ -0,0 +1,126 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.base.Preconditions; +import com.google.common.collect.Platform; +import java.lang.reflect.Array; +import java.util.Collection; +import javax.annotation.Nullable; + +@GwtCompatible(emulated=true) +public final class ObjectArrays { + static final Object[] EMPTY_ARRAY = new Object[0]; + + private ObjectArrays() { + } + + @GwtIncompatible(value="Array.newInstance(Class, int)") + public static T[] newArray(Class type, int length) { + return (Object[])Array.newInstance(type, length); + } + + public static T[] newArray(T[] reference, int length) { + return Platform.newArray(reference, length); + } + + @GwtIncompatible(value="Array.newInstance(Class, int)") + public static T[] concat(T[] first, T[] second, Class type) { + T[] result = ObjectArrays.newArray(type, first.length + second.length); + System.arraycopy(first, 0, result, 0, first.length); + System.arraycopy(second, 0, result, first.length, second.length); + return result; + } + + public static T[] concat(@Nullable T element, T[] array) { + T[] result = ObjectArrays.newArray(array, array.length + 1); + result[0] = element; + System.arraycopy(array, 0, result, 1, array.length); + return result; + } + + public static T[] concat(T[] array, @Nullable T element) { + T[] result = ObjectArrays.arraysCopyOf(array, array.length + 1); + result[array.length] = element; + return result; + } + + static T[] arraysCopyOf(T[] original, int newLength) { + T[] copy = ObjectArrays.newArray(original, newLength); + System.arraycopy(original, 0, copy, 0, Math.min(original.length, newLength)); + return copy; + } + + static T[] toArrayImpl(Collection c, T[] array) { + int size = c.size(); + if (array.length < size) { + array = ObjectArrays.newArray(array, size); + } + ObjectArrays.fillArray(c, array); + if (array.length > size) { + array[size] = null; + } + return array; + } + + static T[] toArrayImpl(Object[] src, int offset, int len, T[] dst) { + Preconditions.checkPositionIndexes(offset, offset + len, src.length); + if (dst.length < len) { + dst = ObjectArrays.newArray(dst, len); + } else if (dst.length > len) { + dst[len] = null; + } + System.arraycopy(src, offset, dst, 0, len); + return dst; + } + + static Object[] toArrayImpl(Collection c) { + return ObjectArrays.fillArray(c, new Object[c.size()]); + } + + static Object[] copyAsObjectArray(Object[] elements, int offset, int length) { + Preconditions.checkPositionIndexes(offset, offset + length, elements.length); + if (length == 0) { + return EMPTY_ARRAY; + } + Object[] result = new Object[length]; + System.arraycopy(elements, offset, result, 0, length); + return result; + } + + private static Object[] fillArray(Iterable elements, Object[] array) { + int i = 0; + for (Object element : elements) { + array[i++] = element; + } + return array; + } + + static void swap(Object[] array, int i, int j) { + Object temp = array[i]; + array[i] = array[j]; + array[j] = temp; + } + + static Object[] checkElementsNotNull(Object ... array) { + return ObjectArrays.checkElementsNotNull(array, array.length); + } + + static Object[] checkElementsNotNull(Object[] array, int length) { + for (int i = 0; i < length; ++i) { + ObjectArrays.checkElementNotNull(array[i], i); + } + return array; + } + + static Object checkElementNotNull(Object element, int index) { + if (element == null) { + int n = index; + throw new NullPointerException(new StringBuilder(20).append("at index ").append(n).toString()); + } + return element; + } +} diff --git a/src/com/google/common/collect/Ordering.java b/src/com/google/common/collect/Ordering.java new file mode 100644 index 0000000..e3c1e96 --- /dev/null +++ b/src/com/google/common/collect/Ordering.java @@ -0,0 +1,385 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.Function; +import com.google.common.base.Preconditions; +import com.google.common.collect.AllEqualOrdering; +import com.google.common.collect.ByFunctionOrdering; +import com.google.common.collect.CollectPreconditions; +import com.google.common.collect.ComparatorOrdering; +import com.google.common.collect.CompoundOrdering; +import com.google.common.collect.ExplicitOrdering; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.Iterables; +import com.google.common.collect.LexicographicalOrdering; +import com.google.common.collect.Lists; +import com.google.common.collect.MapMaker; +import com.google.common.collect.Maps; +import com.google.common.collect.NaturalOrdering; +import com.google.common.collect.NullsFirstOrdering; +import com.google.common.collect.NullsLastOrdering; +import com.google.common.collect.ObjectArrays; +import com.google.common.collect.Platform; +import com.google.common.collect.ReverseOrdering; +import com.google.common.collect.UsingToStringOrdering; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.Comparator; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.concurrent.atomic.AtomicInteger; +import javax.annotation.Nullable; + +@GwtCompatible +public abstract class Ordering +implements Comparator { + static final int LEFT_IS_GREATER = 1; + static final int RIGHT_IS_GREATER = -1; + + @GwtCompatible(serializable=true) + public static Ordering natural() { + return NaturalOrdering.INSTANCE; + } + + @GwtCompatible(serializable=true) + public static Ordering from(Comparator comparator) { + return comparator instanceof Ordering ? (Ordering)comparator : new ComparatorOrdering(comparator); + } + + @Deprecated + @GwtCompatible(serializable=true) + public static Ordering from(Ordering ordering) { + return Preconditions.checkNotNull(ordering); + } + + @GwtCompatible(serializable=true) + public static Ordering explicit(List valuesInOrder) { + return new ExplicitOrdering(valuesInOrder); + } + + @GwtCompatible(serializable=true) + public static Ordering explicit(T leastValue, T ... remainingValuesInOrder) { + return Ordering.explicit(Lists.asList(leastValue, remainingValuesInOrder)); + } + + @GwtCompatible(serializable=true) + public static Ordering allEqual() { + return AllEqualOrdering.INSTANCE; + } + + @GwtCompatible(serializable=true) + public static Ordering usingToString() { + return UsingToStringOrdering.INSTANCE; + } + + public static Ordering arbitrary() { + return ArbitraryOrderingHolder.ARBITRARY_ORDERING; + } + + protected Ordering() { + } + + @GwtCompatible(serializable=true) + public Ordering reverse() { + return new ReverseOrdering(this); + } + + @GwtCompatible(serializable=true) + public Ordering nullsFirst() { + return new NullsFirstOrdering(this); + } + + @GwtCompatible(serializable=true) + public Ordering nullsLast() { + return new NullsLastOrdering(this); + } + + @GwtCompatible(serializable=true) + public Ordering onResultOf(Function function) { + return new ByFunctionOrdering(function, this); + } + + Ordering> onKeys() { + return this.onResultOf(Maps.keyFunction()); + } + + @GwtCompatible(serializable=true) + public Ordering compound(Comparator secondaryComparator) { + return new CompoundOrdering(this, Preconditions.checkNotNull(secondaryComparator)); + } + + @GwtCompatible(serializable=true) + public static Ordering compound(Iterable> comparators) { + return new CompoundOrdering(comparators); + } + + @GwtCompatible(serializable=true) + public Ordering> lexicographical() { + return new LexicographicalOrdering(this); + } + + @Override + public abstract int compare(@Nullable T var1, @Nullable T var2); + + public E min(Iterator iterator) { + E minSoFar = iterator.next(); + while (iterator.hasNext()) { + minSoFar = this.min(minSoFar, iterator.next()); + } + return minSoFar; + } + + public E min(Iterable iterable) { + return this.min(iterable.iterator()); + } + + public E min(@Nullable E a, @Nullable E b) { + return this.compare(a, b) <= 0 ? a : b; + } + + public E min(@Nullable E a, @Nullable E b, @Nullable E c, E ... rest) { + E minSoFar = this.min(this.min(a, b), c); + for (E r : rest) { + minSoFar = this.min(minSoFar, r); + } + return minSoFar; + } + + public E max(Iterator iterator) { + E maxSoFar = iterator.next(); + while (iterator.hasNext()) { + maxSoFar = this.max(maxSoFar, iterator.next()); + } + return maxSoFar; + } + + public E max(Iterable iterable) { + return this.max(iterable.iterator()); + } + + public E max(@Nullable E a, @Nullable E b) { + return this.compare(a, b) >= 0 ? a : b; + } + + public E max(@Nullable E a, @Nullable E b, @Nullable E c, E ... rest) { + E maxSoFar = this.max(this.max(a, b), c); + for (E r : rest) { + maxSoFar = this.max(maxSoFar, r); + } + return maxSoFar; + } + + public List leastOf(Iterable iterable, int k) { + Collection collection; + if (iterable instanceof Collection && (long)(collection = (Collection)iterable).size() <= 2L * (long)k) { + Object[] array = collection.toArray(); + Arrays.sort(array, this); + if (array.length > k) { + array = ObjectArrays.arraysCopyOf(array, k); + } + return Collections.unmodifiableList(Arrays.asList(array)); + } + return this.leastOf(iterable.iterator(), k); + } + + public List leastOf(Iterator elements, int k) { + E e; + Preconditions.checkNotNull(elements); + CollectPreconditions.checkNonnegative(k, "k"); + if (k == 0 || !elements.hasNext()) { + return ImmutableList.of(); + } + if (k >= 0x3FFFFFFF) { + ArrayList list = Lists.newArrayList(elements); + Collections.sort(list, this); + if (list.size() > k) { + list.subList(k, list.size()).clear(); + } + list.trimToSize(); + return Collections.unmodifiableList(list); + } + int bufferCap = k * 2; + Object[] buffer = new Object[bufferCap]; + Object threshold = elements.next(); + buffer[0] = threshold; + int bufferSize = 1; + while (bufferSize < k && elements.hasNext()) { + e = elements.next(); + buffer[bufferSize++] = e; + threshold = this.max(threshold, e); + } + while (elements.hasNext()) { + e = elements.next(); + if (this.compare(e, threshold) >= 0) continue; + buffer[bufferSize++] = e; + if (bufferSize != bufferCap) continue; + int left = 0; + int right = bufferCap - 1; + int minThresholdPosition = 0; + while (left < right) { + int pivotIndex = left + right + 1 >>> 1; + int pivotNewIndex = this.partition(buffer, left, right, pivotIndex); + if (pivotNewIndex > k) { + right = pivotNewIndex - 1; + continue; + } + if (pivotNewIndex >= k) break; + left = Math.max(pivotNewIndex, left + 1); + minThresholdPosition = pivotNewIndex; + } + bufferSize = k; + threshold = buffer[minThresholdPosition]; + for (int i = minThresholdPosition + 1; i < bufferSize; ++i) { + threshold = this.max(threshold, buffer[i]); + } + } + Arrays.sort(buffer, 0, bufferSize, this); + bufferSize = Math.min(bufferSize, k); + return Collections.unmodifiableList(Arrays.asList(ObjectArrays.arraysCopyOf(buffer, bufferSize))); + } + + private int partition(E[] values, int left, int right, int pivotIndex) { + E pivotValue = values[pivotIndex]; + values[pivotIndex] = values[right]; + values[right] = pivotValue; + int storeIndex = left; + for (int i = left; i < right; ++i) { + if (this.compare(values[i], pivotValue) >= 0) continue; + ObjectArrays.swap(values, storeIndex, i); + ++storeIndex; + } + ObjectArrays.swap(values, right, storeIndex); + return storeIndex; + } + + public List greatestOf(Iterable iterable, int k) { + return this.reverse().leastOf(iterable, k); + } + + public List greatestOf(Iterator iterator, int k) { + return this.reverse().leastOf(iterator, k); + } + + public List sortedCopy(Iterable elements) { + Object[] array = Iterables.toArray(elements); + Arrays.sort(array, this); + return Lists.newArrayList(Arrays.asList(array)); + } + + public ImmutableList immutableSortedCopy(Iterable elements) { + Object[] array; + for (Object e : array = Iterables.toArray(elements)) { + Preconditions.checkNotNull(e); + } + Arrays.sort(array, this); + return ImmutableList.asImmutableList(array); + } + + public boolean isOrdered(Iterable iterable) { + Iterator it = iterable.iterator(); + if (it.hasNext()) { + T prev = it.next(); + while (it.hasNext()) { + T next = it.next(); + if (this.compare(prev, next) > 0) { + return false; + } + prev = next; + } + } + return true; + } + + public boolean isStrictlyOrdered(Iterable iterable) { + Iterator it = iterable.iterator(); + if (it.hasNext()) { + T prev = it.next(); + while (it.hasNext()) { + T next = it.next(); + if (this.compare(prev, next) >= 0) { + return false; + } + prev = next; + } + } + return true; + } + + public int binarySearch(List sortedList, @Nullable T key) { + return Collections.binarySearch(sortedList, key, this); + } + + @VisibleForTesting + static class IncomparableValueException + extends ClassCastException { + final Object value; + private static final long serialVersionUID = 0L; + + IncomparableValueException(Object value) { + String string = String.valueOf(String.valueOf(value)); + super(new StringBuilder(22 + string.length()).append("Cannot compare value: ").append(string).toString()); + this.value = value; + } + } + + @VisibleForTesting + static class ArbitraryOrdering + extends Ordering { + private Map uids = Platform.tryWeakKeys(new MapMaker()).makeComputingMap(new Function(){ + final AtomicInteger counter = new AtomicInteger(0); + + @Override + public Integer apply(Object from) { + return this.counter.getAndIncrement(); + } + }); + + ArbitraryOrdering() { + } + + @Override + public int compare(Object left, Object right) { + int rightCode; + if (left == right) { + return 0; + } + if (left == null) { + return -1; + } + if (right == null) { + return 1; + } + int leftCode = this.identityHashCode(left); + if (leftCode != (rightCode = this.identityHashCode(right))) { + return leftCode < rightCode ? -1 : 1; + } + int result = this.uids.get(left).compareTo(this.uids.get(right)); + if (result == 0) { + throw new AssertionError(); + } + return result; + } + + public String toString() { + return "Ordering.arbitrary()"; + } + + int identityHashCode(Object object) { + return System.identityHashCode(object); + } + } + + private static class ArbitraryOrderingHolder { + static final Ordering ARBITRARY_ORDERING = new ArbitraryOrdering(); + + private ArbitraryOrderingHolder() { + } + } +} diff --git a/src/com/google/common/collect/PeekingIterator.java b/src/com/google/common/collect/PeekingIterator.java new file mode 100644 index 0000000..9d04ddd --- /dev/null +++ b/src/com/google/common/collect/PeekingIterator.java @@ -0,0 +1,19 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import java.util.Iterator; + +@GwtCompatible +public interface PeekingIterator +extends Iterator { + public E peek(); + + @Override + public E next(); + + @Override + public void remove(); +} diff --git a/src/com/google/common/collect/Platform.java b/src/com/google/common/collect/Platform.java new file mode 100644 index 0000000..509778c --- /dev/null +++ b/src/com/google/common/collect/Platform.java @@ -0,0 +1,55 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Function; +import com.google.common.base.Predicate; +import com.google.common.collect.MapMaker; +import com.google.common.collect.Maps; +import com.google.common.collect.Sets; +import java.lang.reflect.Array; +import java.util.Collections; +import java.util.Map; +import java.util.NavigableMap; +import java.util.NavigableSet; +import java.util.Set; +import java.util.SortedMap; +import java.util.SortedSet; + +@GwtCompatible(emulated=true) +final class Platform { + static T[] newArray(T[] reference, int length) { + Class type = reference.getClass().getComponentType(); + Object[] result = (Object[])Array.newInstance(type, length); + return result; + } + + static Set newSetFromMap(Map map) { + return Collections.newSetFromMap(map); + } + + static MapMaker tryWeakKeys(MapMaker mapMaker) { + return mapMaker.weakKeys(); + } + + static SortedMap mapsTransformEntriesSortedMap(SortedMap fromMap, Maps.EntryTransformer transformer) { + return fromMap instanceof NavigableMap ? Maps.transformEntries((NavigableMap)fromMap, transformer) : Maps.transformEntriesIgnoreNavigable(fromMap, transformer); + } + + static SortedMap mapsAsMapSortedSet(SortedSet set, Function function) { + return set instanceof NavigableSet ? Maps.asMap((NavigableSet)set, function) : Maps.asMapSortedIgnoreNavigable(set, function); + } + + static SortedSet setsFilterSortedSet(SortedSet set, Predicate predicate) { + return set instanceof NavigableSet ? Sets.filter((NavigableSet)set, predicate) : Sets.filterSortedIgnoreNavigable(set, predicate); + } + + static SortedMap mapsFilterSortedMap(SortedMap map, Predicate> predicate) { + return map instanceof NavigableMap ? Maps.filterEntries((NavigableMap)map, predicate) : Maps.filterSortedIgnoreNavigable(map, predicate); + } + + private Platform() { + } +} diff --git a/src/com/google/common/collect/Queues.java b/src/com/google/common/collect/Queues.java new file mode 100644 index 0000000..a5348fe --- /dev/null +++ b/src/com/google/common/collect/Queues.java @@ -0,0 +1,183 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.Beta; +import com.google.common.base.Preconditions; +import com.google.common.collect.Collections2; +import com.google.common.collect.Iterables; +import com.google.common.collect.Synchronized; +import java.util.ArrayDeque; +import java.util.Collection; +import java.util.Deque; +import java.util.PriorityQueue; +import java.util.Queue; +import java.util.concurrent.ArrayBlockingQueue; +import java.util.concurrent.BlockingQueue; +import java.util.concurrent.ConcurrentLinkedQueue; +import java.util.concurrent.LinkedBlockingDeque; +import java.util.concurrent.LinkedBlockingQueue; +import java.util.concurrent.PriorityBlockingQueue; +import java.util.concurrent.SynchronousQueue; +import java.util.concurrent.TimeUnit; + +public final class Queues { + private Queues() { + } + + public static ArrayBlockingQueue newArrayBlockingQueue(int capacity) { + return new ArrayBlockingQueue(capacity); + } + + public static ArrayDeque newArrayDeque() { + return new ArrayDeque(); + } + + public static ArrayDeque newArrayDeque(Iterable elements) { + if (elements instanceof Collection) { + return new ArrayDeque(Collections2.cast(elements)); + } + ArrayDeque deque = new ArrayDeque(); + Iterables.addAll(deque, elements); + return deque; + } + + public static ConcurrentLinkedQueue newConcurrentLinkedQueue() { + return new ConcurrentLinkedQueue(); + } + + public static ConcurrentLinkedQueue newConcurrentLinkedQueue(Iterable elements) { + if (elements instanceof Collection) { + return new ConcurrentLinkedQueue(Collections2.cast(elements)); + } + ConcurrentLinkedQueue queue = new ConcurrentLinkedQueue(); + Iterables.addAll(queue, elements); + return queue; + } + + public static LinkedBlockingDeque newLinkedBlockingDeque() { + return new LinkedBlockingDeque(); + } + + public static LinkedBlockingDeque newLinkedBlockingDeque(int capacity) { + return new LinkedBlockingDeque(capacity); + } + + public static LinkedBlockingDeque newLinkedBlockingDeque(Iterable elements) { + if (elements instanceof Collection) { + return new LinkedBlockingDeque(Collections2.cast(elements)); + } + LinkedBlockingDeque deque = new LinkedBlockingDeque(); + Iterables.addAll(deque, elements); + return deque; + } + + public static LinkedBlockingQueue newLinkedBlockingQueue() { + return new LinkedBlockingQueue(); + } + + public static LinkedBlockingQueue newLinkedBlockingQueue(int capacity) { + return new LinkedBlockingQueue(capacity); + } + + public static LinkedBlockingQueue newLinkedBlockingQueue(Iterable elements) { + if (elements instanceof Collection) { + return new LinkedBlockingQueue(Collections2.cast(elements)); + } + LinkedBlockingQueue queue = new LinkedBlockingQueue(); + Iterables.addAll(queue, elements); + return queue; + } + + public static PriorityBlockingQueue newPriorityBlockingQueue() { + return new PriorityBlockingQueue(); + } + + public static PriorityBlockingQueue newPriorityBlockingQueue(Iterable elements) { + if (elements instanceof Collection) { + return new PriorityBlockingQueue(Collections2.cast(elements)); + } + PriorityBlockingQueue queue = new PriorityBlockingQueue(); + Iterables.addAll(queue, elements); + return queue; + } + + public static PriorityQueue newPriorityQueue() { + return new PriorityQueue(); + } + + public static PriorityQueue newPriorityQueue(Iterable elements) { + if (elements instanceof Collection) { + return new PriorityQueue(Collections2.cast(elements)); + } + PriorityQueue queue = new PriorityQueue(); + Iterables.addAll(queue, elements); + return queue; + } + + public static SynchronousQueue newSynchronousQueue() { + return new SynchronousQueue(); + } + + @Beta + public static int drain(BlockingQueue q, Collection buffer, int numElements, long timeout, TimeUnit unit) throws InterruptedException { + Preconditions.checkNotNull(buffer); + long deadline = System.nanoTime() + unit.toNanos(timeout); + int added = 0; + while (added < numElements) { + if ((added += q.drainTo(buffer, numElements - added)) >= numElements) continue; + E e = q.poll(deadline - System.nanoTime(), TimeUnit.NANOSECONDS); + if (e == null) break; + buffer.add(e); + ++added; + } + return added; + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Beta + public static int drainUninterruptibly(BlockingQueue q, Collection buffer, int numElements, long timeout, TimeUnit unit) { + Preconditions.checkNotNull(buffer); + long deadline = System.nanoTime() + unit.toNanos(timeout); + int added = 0; + boolean interrupted = false; + try { + while (added < numElements) { + E e; + if ((added += q.drainTo(buffer, numElements - added)) >= numElements) continue; + while (true) { + try { + e = q.poll(deadline - System.nanoTime(), TimeUnit.NANOSECONDS); + } + catch (InterruptedException ex) { + interrupted = true; + continue; + } + break; + } + if (e == null) { + break; + } + buffer.add(e); + ++added; + } + } + finally { + if (interrupted) { + Thread.currentThread().interrupt(); + } + } + return added; + } + + public static Queue synchronizedQueue(Queue queue) { + return Synchronized.queue(queue, null); + } + + public static Deque synchronizedDeque(Deque deque) { + return Synchronized.deque(deque, null); + } +} diff --git a/src/com/google/common/collect/Range.java b/src/com/google/common/collect/Range.java new file mode 100644 index 0000000..f81c974 --- /dev/null +++ b/src/com/google/common/collect/Range.java @@ -0,0 +1,301 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Function; +import com.google.common.base.Preconditions; +import com.google.common.base.Predicate; +import com.google.common.collect.BoundType; +import com.google.common.collect.ComparisonChain; +import com.google.common.collect.ContiguousSet; +import com.google.common.collect.Cut; +import com.google.common.collect.DiscreteDomain; +import com.google.common.collect.Iterables; +import com.google.common.collect.Ordering; +import java.io.Serializable; +import java.util.Comparator; +import java.util.Iterator; +import java.util.SortedSet; +import javax.annotation.Nullable; + +@GwtCompatible +public final class Range +implements Predicate, +Serializable { + private static final Function LOWER_BOUND_FN = new Function(){ + + @Override + public Cut apply(Range range) { + return range.lowerBound; + } + }; + private static final Function UPPER_BOUND_FN = new Function(){ + + @Override + public Cut apply(Range range) { + return range.upperBound; + } + }; + static final Ordering> RANGE_LEX_ORDERING = new Ordering>(){ + + @Override + public int compare(Range left, Range right) { + return ComparisonChain.start().compare(left.lowerBound, right.lowerBound).compare(left.upperBound, right.upperBound).result(); + } + }; + private static final Range ALL = new Range(Cut.belowAll(), Cut.aboveAll()); + final Cut lowerBound; + final Cut upperBound; + private static final long serialVersionUID = 0L; + + static > Function, Cut> lowerBoundFn() { + return LOWER_BOUND_FN; + } + + static > Function, Cut> upperBoundFn() { + return UPPER_BOUND_FN; + } + + static > Range create(Cut lowerBound, Cut upperBound) { + return new Range(lowerBound, upperBound); + } + + public static > Range open(C lower, C upper) { + return Range.create(Cut.aboveValue(lower), Cut.belowValue(upper)); + } + + public static > Range closed(C lower, C upper) { + return Range.create(Cut.belowValue(lower), Cut.aboveValue(upper)); + } + + public static > Range closedOpen(C lower, C upper) { + return Range.create(Cut.belowValue(lower), Cut.belowValue(upper)); + } + + public static > Range openClosed(C lower, C upper) { + return Range.create(Cut.aboveValue(lower), Cut.aboveValue(upper)); + } + + public static > Range range(C lower, BoundType lowerType, C upper, BoundType upperType) { + Preconditions.checkNotNull(lowerType); + Preconditions.checkNotNull(upperType); + Cut lowerBound = lowerType == BoundType.OPEN ? Cut.aboveValue(lower) : Cut.belowValue(lower); + Cut upperBound = upperType == BoundType.OPEN ? Cut.belowValue(upper) : Cut.aboveValue(upper); + return Range.create(lowerBound, upperBound); + } + + public static > Range lessThan(C endpoint) { + return Range.create(Cut.belowAll(), Cut.belowValue(endpoint)); + } + + public static > Range atMost(C endpoint) { + return Range.create(Cut.belowAll(), Cut.aboveValue(endpoint)); + } + + public static > Range upTo(C endpoint, BoundType boundType) { + switch (boundType) { + case OPEN: { + return Range.lessThan(endpoint); + } + case CLOSED: { + return Range.atMost(endpoint); + } + } + throw new AssertionError(); + } + + public static > Range greaterThan(C endpoint) { + return Range.create(Cut.aboveValue(endpoint), Cut.aboveAll()); + } + + public static > Range atLeast(C endpoint) { + return Range.create(Cut.belowValue(endpoint), Cut.aboveAll()); + } + + public static > Range downTo(C endpoint, BoundType boundType) { + switch (boundType) { + case OPEN: { + return Range.greaterThan(endpoint); + } + case CLOSED: { + return Range.atLeast(endpoint); + } + } + throw new AssertionError(); + } + + public static > Range all() { + return ALL; + } + + public static > Range singleton(C value) { + return Range.closed(value, value); + } + + public static > Range encloseAll(Iterable values) { + Comparable min; + Preconditions.checkNotNull(values); + if (values instanceof ContiguousSet) { + return ((ContiguousSet)values).range(); + } + Iterator valueIterator = values.iterator(); + Comparable max = min = (Comparable)Preconditions.checkNotNull(valueIterator.next()); + while (valueIterator.hasNext()) { + Comparable value = (Comparable)Preconditions.checkNotNull(valueIterator.next()); + min = Ordering.natural().min(min, value); + max = Ordering.natural().max(max, value); + } + return Range.closed(min, max); + } + + private Range(Cut lowerBound, Cut upperBound) { + if (lowerBound.compareTo(upperBound) > 0 || lowerBound == Cut.aboveAll() || upperBound == Cut.belowAll()) { + String string = String.valueOf(Range.toString(lowerBound, upperBound)); + throw new IllegalArgumentException(string.length() != 0 ? "Invalid range: ".concat(string) : new String("Invalid range: ")); + } + this.lowerBound = Preconditions.checkNotNull(lowerBound); + this.upperBound = Preconditions.checkNotNull(upperBound); + } + + public boolean hasLowerBound() { + return this.lowerBound != Cut.belowAll(); + } + + public C lowerEndpoint() { + return this.lowerBound.endpoint(); + } + + public BoundType lowerBoundType() { + return this.lowerBound.typeAsLowerBound(); + } + + public boolean hasUpperBound() { + return this.upperBound != Cut.aboveAll(); + } + + public C upperEndpoint() { + return this.upperBound.endpoint(); + } + + public BoundType upperBoundType() { + return this.upperBound.typeAsUpperBound(); + } + + public boolean isEmpty() { + return this.lowerBound.equals(this.upperBound); + } + + public boolean contains(C value) { + Preconditions.checkNotNull(value); + return this.lowerBound.isLessThan(value) && !this.upperBound.isLessThan(value); + } + + @Override + @Deprecated + public boolean apply(C input) { + return this.contains(input); + } + + public boolean containsAll(Iterable values) { + if (Iterables.isEmpty(values)) { + return true; + } + if (values instanceof SortedSet) { + SortedSet set = Range.cast(values); + Comparator comparator = set.comparator(); + if (Ordering.natural().equals(comparator) || comparator == null) { + return this.contains((Comparable)set.first()) && this.contains((Comparable)set.last()); + } + } + for (Comparable value : values) { + if (this.contains(value)) continue; + return false; + } + return true; + } + + public boolean encloses(Range other) { + return this.lowerBound.compareTo(other.lowerBound) <= 0 && this.upperBound.compareTo(other.upperBound) >= 0; + } + + public boolean isConnected(Range other) { + return this.lowerBound.compareTo(other.upperBound) <= 0 && other.lowerBound.compareTo(this.upperBound) <= 0; + } + + public Range intersection(Range connectedRange) { + int lowerCmp = this.lowerBound.compareTo(connectedRange.lowerBound); + int upperCmp = this.upperBound.compareTo(connectedRange.upperBound); + if (lowerCmp >= 0 && upperCmp <= 0) { + return this; + } + if (lowerCmp <= 0 && upperCmp >= 0) { + return connectedRange; + } + Cut newLower = lowerCmp >= 0 ? this.lowerBound : connectedRange.lowerBound; + Cut newUpper = upperCmp <= 0 ? this.upperBound : connectedRange.upperBound; + return Range.create(newLower, newUpper); + } + + public Range span(Range other) { + int lowerCmp = this.lowerBound.compareTo(other.lowerBound); + int upperCmp = this.upperBound.compareTo(other.upperBound); + if (lowerCmp <= 0 && upperCmp >= 0) { + return this; + } + if (lowerCmp >= 0 && upperCmp <= 0) { + return other; + } + Cut newLower = lowerCmp <= 0 ? this.lowerBound : other.lowerBound; + Cut newUpper = upperCmp >= 0 ? this.upperBound : other.upperBound; + return Range.create(newLower, newUpper); + } + + public Range canonical(DiscreteDomain domain) { + Preconditions.checkNotNull(domain); + Cut lower = this.lowerBound.canonical(domain); + Cut upper = this.upperBound.canonical(domain); + return lower == this.lowerBound && upper == this.upperBound ? this : Range.create(lower, upper); + } + + @Override + public boolean equals(@Nullable Object object) { + if (object instanceof Range) { + Range other = (Range)object; + return this.lowerBound.equals(other.lowerBound) && this.upperBound.equals(other.upperBound); + } + return false; + } + + public int hashCode() { + return this.lowerBound.hashCode() * 31 + this.upperBound.hashCode(); + } + + public String toString() { + return Range.toString(this.lowerBound, this.upperBound); + } + + private static String toString(Cut lowerBound, Cut upperBound) { + StringBuilder sb = new StringBuilder(16); + lowerBound.describeAsLowerBound(sb); + sb.append('\u2025'); + upperBound.describeAsUpperBound(sb); + return sb.toString(); + } + + private static SortedSet cast(Iterable iterable) { + return (SortedSet)iterable; + } + + Object readResolve() { + if (this.equals(ALL)) { + return Range.all(); + } + return this; + } + + static int compareOrThrow(Comparable left, Comparable right) { + return left.compareTo(right); + } +} diff --git a/src/com/google/common/collect/RangeMap.java b/src/com/google/common/collect/RangeMap.java new file mode 100644 index 0000000..f73e1ec --- /dev/null +++ b/src/com/google/common/collect/RangeMap.java @@ -0,0 +1,38 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.Beta; +import com.google.common.collect.Range; +import java.util.Map; +import javax.annotation.Nullable; + +@Beta +public interface RangeMap { + @Nullable + public V get(K var1); + + @Nullable + public Map.Entry, V> getEntry(K var1); + + public Range span(); + + public void put(Range var1, V var2); + + public void putAll(RangeMap var1); + + public void clear(); + + public void remove(Range var1); + + public Map, V> asMapOfRanges(); + + public RangeMap subRangeMap(Range var1); + + public boolean equals(@Nullable Object var1); + + public int hashCode(); + + public String toString(); +} diff --git a/src/com/google/common/collect/RangeSet.java b/src/com/google/common/collect/RangeSet.java new file mode 100644 index 0000000..d39ad54 --- /dev/null +++ b/src/com/google/common/collect/RangeSet.java @@ -0,0 +1,46 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.Beta; +import com.google.common.collect.Range; +import java.util.Set; +import javax.annotation.Nullable; + +@Beta +public interface RangeSet { + public boolean contains(C var1); + + public Range rangeContaining(C var1); + + public boolean encloses(Range var1); + + public boolean enclosesAll(RangeSet var1); + + public boolean isEmpty(); + + public Range span(); + + public Set> asRanges(); + + public RangeSet complement(); + + public RangeSet subRangeSet(Range var1); + + public void add(Range var1); + + public void remove(Range var1); + + public void clear(); + + public void addAll(RangeSet var1); + + public void removeAll(RangeSet var1); + + public boolean equals(@Nullable Object var1); + + public int hashCode(); + + public String toString(); +} diff --git a/src/com/google/common/collect/RegularContiguousSet.java b/src/com/google/common/collect/RegularContiguousSet.java new file mode 100644 index 0000000..58af3f4 --- /dev/null +++ b/src/com/google/common/collect/RegularContiguousSet.java @@ -0,0 +1,203 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.base.Preconditions; +import com.google.common.collect.AbstractSequentialIterator; +import com.google.common.collect.BoundType; +import com.google.common.collect.Collections2; +import com.google.common.collect.ContiguousSet; +import com.google.common.collect.DiscreteDomain; +import com.google.common.collect.EmptyContiguousSet; +import com.google.common.collect.Ordering; +import com.google.common.collect.Range; +import com.google.common.collect.Sets; +import com.google.common.collect.UnmodifiableIterator; +import java.io.Serializable; +import java.util.Collection; +import javax.annotation.Nullable; + +@GwtCompatible(emulated=true) +final class RegularContiguousSet +extends ContiguousSet { + private final Range range; + private static final long serialVersionUID = 0L; + + RegularContiguousSet(Range range, DiscreteDomain domain) { + super(domain); + this.range = range; + } + + private ContiguousSet intersectionInCurrentDomain(Range other) { + return this.range.isConnected(other) ? ContiguousSet.create(this.range.intersection(other), this.domain) : new EmptyContiguousSet(this.domain); + } + + @Override + ContiguousSet headSetImpl(C toElement, boolean inclusive) { + return this.intersectionInCurrentDomain(Range.upTo(toElement, BoundType.forBoolean(inclusive))); + } + + @Override + ContiguousSet subSetImpl(C fromElement, boolean fromInclusive, C toElement, boolean toInclusive) { + if (fromElement.compareTo(toElement) == 0 && !fromInclusive && !toInclusive) { + return new EmptyContiguousSet(this.domain); + } + return this.intersectionInCurrentDomain(Range.range(fromElement, BoundType.forBoolean(fromInclusive), toElement, BoundType.forBoolean(toInclusive))); + } + + @Override + ContiguousSet tailSetImpl(C fromElement, boolean inclusive) { + return this.intersectionInCurrentDomain(Range.downTo(fromElement, BoundType.forBoolean(inclusive))); + } + + @Override + @GwtIncompatible(value="not used by GWT emulation") + int indexOf(Object target) { + return this.contains(target) ? (int)this.domain.distance(this.first(), (Comparable)target) : -1; + } + + @Override + public UnmodifiableIterator iterator() { + return new AbstractSequentialIterator((Comparable)this.first()){ + final C last; + { + this.last = RegularContiguousSet.this.last(); + } + + @Override + protected C computeNext(C previous) { + return RegularContiguousSet.equalsOrThrow(previous, this.last) ? null : (Object)RegularContiguousSet.this.domain.next(previous); + } + }; + } + + @Override + @GwtIncompatible(value="NavigableSet") + public UnmodifiableIterator descendingIterator() { + return new AbstractSequentialIterator((Comparable)this.last()){ + final C first; + { + this.first = RegularContiguousSet.this.first(); + } + + @Override + protected C computeNext(C previous) { + return RegularContiguousSet.equalsOrThrow(previous, this.first) ? null : (Object)RegularContiguousSet.this.domain.previous(previous); + } + }; + } + + private static boolean equalsOrThrow(Comparable left, @Nullable Comparable right) { + return right != null && Range.compareOrThrow(left, right) == 0; + } + + @Override + boolean isPartialView() { + return false; + } + + @Override + public C first() { + return this.range.lowerBound.leastValueAbove(this.domain); + } + + @Override + public C last() { + return this.range.upperBound.greatestValueBelow(this.domain); + } + + @Override + public int size() { + long distance = this.domain.distance(this.first(), this.last()); + return distance >= Integer.MAX_VALUE ? Integer.MAX_VALUE : (int)distance + 1; + } + + @Override + public boolean contains(@Nullable Object object) { + if (object == null) { + return false; + } + try { + return this.range.contains((Comparable)object); + } + catch (ClassCastException e) { + return false; + } + } + + @Override + public boolean containsAll(Collection targets) { + return Collections2.containsAllImpl(this, targets); + } + + @Override + public boolean isEmpty() { + return false; + } + + @Override + public ContiguousSet intersection(ContiguousSet other) { + Comparable upperEndpoint; + Preconditions.checkNotNull(other); + Preconditions.checkArgument(this.domain.equals(other.domain)); + if (other.isEmpty()) { + return other; + } + Comparable lowerEndpoint = (Comparable)Ordering.natural().max(this.first(), other.first()); + return lowerEndpoint.compareTo(upperEndpoint = (Comparable)Ordering.natural().min(this.last(), other.last())) < 0 ? ContiguousSet.create(Range.closed(lowerEndpoint, upperEndpoint), this.domain) : new EmptyContiguousSet(this.domain); + } + + @Override + public Range range() { + return this.range(BoundType.CLOSED, BoundType.CLOSED); + } + + @Override + public Range range(BoundType lowerBoundType, BoundType upperBoundType) { + return Range.create(this.range.lowerBound.withLowerBoundType(lowerBoundType, this.domain), this.range.upperBound.withUpperBoundType(upperBoundType, this.domain)); + } + + @Override + public boolean equals(@Nullable Object object) { + if (object == this) { + return true; + } + if (object instanceof RegularContiguousSet) { + RegularContiguousSet that = (RegularContiguousSet)object; + if (this.domain.equals(that.domain)) { + return this.first().equals(that.first()) && this.last().equals(that.last()); + } + } + return super.equals(object); + } + + @Override + public int hashCode() { + return Sets.hashCodeImpl(this); + } + + @Override + @GwtIncompatible(value="serialization") + Object writeReplace() { + return new SerializedForm(this.range, this.domain); + } + + @GwtIncompatible(value="serialization") + private static final class SerializedForm + implements Serializable { + final Range range; + final DiscreteDomain domain; + + private SerializedForm(Range range, DiscreteDomain domain) { + this.range = range; + this.domain = domain; + } + + private Object readResolve() { + return new RegularContiguousSet(this.range, this.domain); + } + } +} diff --git a/src/com/google/common/collect/RegularImmutableAsList.java b/src/com/google/common/collect/RegularImmutableAsList.java new file mode 100644 index 0000000..8465999 --- /dev/null +++ b/src/com/google/common/collect/RegularImmutableAsList.java @@ -0,0 +1,52 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.collect.ImmutableAsList; +import com.google.common.collect.ImmutableCollection; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.UnmodifiableListIterator; + +@GwtCompatible(emulated=true) +class RegularImmutableAsList +extends ImmutableAsList { + private final ImmutableCollection delegate; + private final ImmutableList delegateList; + + RegularImmutableAsList(ImmutableCollection delegate, ImmutableList delegateList) { + this.delegate = delegate; + this.delegateList = delegateList; + } + + RegularImmutableAsList(ImmutableCollection delegate, Object[] array) { + this(delegate, ImmutableList.asImmutableList(array)); + } + + @Override + ImmutableCollection delegateCollection() { + return this.delegate; + } + + ImmutableList delegateList() { + return this.delegateList; + } + + @Override + public UnmodifiableListIterator listIterator(int index) { + return this.delegateList.listIterator(index); + } + + @Override + @GwtIncompatible(value="not present in emulated superclass") + int copyIntoArray(Object[] dst, int offset) { + return this.delegateList.copyIntoArray(dst, offset); + } + + @Override + public E get(int index) { + return this.delegateList.get(index); + } +} diff --git a/src/com/google/common/collect/RegularImmutableBiMap.java b/src/com/google/common/collect/RegularImmutableBiMap.java new file mode 100644 index 0000000..fe77a79 --- /dev/null +++ b/src/com/google/common/collect/RegularImmutableBiMap.java @@ -0,0 +1,308 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.collect.CollectPreconditions; +import com.google.common.collect.Hashing; +import com.google.common.collect.ImmutableAsList; +import com.google.common.collect.ImmutableBiMap; +import com.google.common.collect.ImmutableCollection; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableMapEntry; +import com.google.common.collect.ImmutableMapEntrySet; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Maps; +import com.google.common.collect.RegularImmutableAsList; +import com.google.common.collect.UnmodifiableIterator; +import java.io.Serializable; +import java.util.Map; +import javax.annotation.Nullable; + +@GwtCompatible(serializable=true, emulated=true) +class RegularImmutableBiMap +extends ImmutableBiMap { + static final double MAX_LOAD_FACTOR = 1.2; + private final transient ImmutableMapEntry[] keyTable; + private final transient ImmutableMapEntry[] valueTable; + private final transient ImmutableMapEntry[] entries; + private final transient int mask; + private final transient int hashCode; + private transient ImmutableBiMap inverse; + + RegularImmutableBiMap(ImmutableMapEntry.TerminalEntry ... entriesToAdd) { + this(entriesToAdd.length, entriesToAdd); + } + + RegularImmutableBiMap(int n, ImmutableMapEntry.TerminalEntry[] entriesToAdd) { + int tableSize = Hashing.closedTableSize(n, 1.2); + this.mask = tableSize - 1; + ImmutableMapEntry[] keyTable = RegularImmutableBiMap.createEntryArray(tableSize); + ImmutableMapEntry[] valueTable = RegularImmutableBiMap.createEntryArray(tableSize); + ImmutableMapEntry[] entries = RegularImmutableBiMap.createEntryArray(n); + int hashCode = 0; + for (int i = 0; i < n; ++i) { + ImmutableMapEntry nextInValueBucket; + ImmutableMapEntry nextInKeyBucket; + ImmutableMapEntry.TerminalEntry entry = entriesToAdd[i]; + Object key = entry.getKey(); + Object value = entry.getValue(); + int keyHash = key.hashCode(); + int valueHash = value.hashCode(); + int keyBucket = Hashing.smear(keyHash) & this.mask; + int valueBucket = Hashing.smear(valueHash) & this.mask; + for (ImmutableMapEntry keyEntry = nextInKeyBucket = keyTable[keyBucket]; keyEntry != null; keyEntry = keyEntry.getNextInKeyBucket()) { + RegularImmutableBiMap.checkNoConflict(!key.equals(keyEntry.getKey()), "key", entry, keyEntry); + } + for (ImmutableMapEntry valueEntry = nextInValueBucket = valueTable[valueBucket]; valueEntry != null; valueEntry = valueEntry.getNextInValueBucket()) { + RegularImmutableBiMap.checkNoConflict(!value.equals(valueEntry.getValue()), "value", entry, valueEntry); + } + ImmutableMapEntry newEntry = nextInKeyBucket == null && nextInValueBucket == null ? entry : new NonTerminalBiMapEntry(entry, nextInKeyBucket, nextInValueBucket); + keyTable[keyBucket] = newEntry; + valueTable[valueBucket] = newEntry; + entries[i] = newEntry; + hashCode += keyHash ^ valueHash; + } + this.keyTable = keyTable; + this.valueTable = valueTable; + this.entries = entries; + this.hashCode = hashCode; + } + + RegularImmutableBiMap(Map.Entry[] entriesToAdd) { + int n = entriesToAdd.length; + int tableSize = Hashing.closedTableSize(n, 1.2); + this.mask = tableSize - 1; + ImmutableMapEntry[] keyTable = RegularImmutableBiMap.createEntryArray(tableSize); + ImmutableMapEntry[] valueTable = RegularImmutableBiMap.createEntryArray(tableSize); + ImmutableMapEntry[] entries = RegularImmutableBiMap.createEntryArray(n); + int hashCode = 0; + for (int i = 0; i < n; ++i) { + ImmutableMapEntry nextInValueBucket; + ImmutableMapEntry nextInKeyBucket; + Map.Entry entry = entriesToAdd[i]; + Object key = entry.getKey(); + Object value = entry.getValue(); + CollectPreconditions.checkEntryNotNull(key, value); + int keyHash = key.hashCode(); + int valueHash = value.hashCode(); + int keyBucket = Hashing.smear(keyHash) & this.mask; + int valueBucket = Hashing.smear(valueHash) & this.mask; + for (ImmutableMapEntry keyEntry = nextInKeyBucket = keyTable[keyBucket]; keyEntry != null; keyEntry = keyEntry.getNextInKeyBucket()) { + RegularImmutableBiMap.checkNoConflict(!key.equals(keyEntry.getKey()), "key", entry, keyEntry); + } + for (ImmutableMapEntry valueEntry = nextInValueBucket = valueTable[valueBucket]; valueEntry != null; valueEntry = valueEntry.getNextInValueBucket()) { + RegularImmutableBiMap.checkNoConflict(!value.equals(valueEntry.getValue()), "value", entry, valueEntry); + } + ImmutableMapEntry newEntry = nextInKeyBucket == null && nextInValueBucket == null ? new ImmutableMapEntry.TerminalEntry(key, value) : new NonTerminalBiMapEntry(key, value, nextInKeyBucket, nextInValueBucket); + keyTable[keyBucket] = newEntry; + valueTable[valueBucket] = newEntry; + entries[i] = newEntry; + hashCode += keyHash ^ valueHash; + } + this.keyTable = keyTable; + this.valueTable = valueTable; + this.entries = entries; + this.hashCode = hashCode; + } + + private static ImmutableMapEntry[] createEntryArray(int length) { + return new ImmutableMapEntry[length]; + } + + @Override + @Nullable + public V get(@Nullable Object key) { + if (key == null) { + return null; + } + int bucket = Hashing.smear(key.hashCode()) & this.mask; + for (ImmutableMapEntry entry = this.keyTable[bucket]; entry != null; entry = entry.getNextInKeyBucket()) { + if (!key.equals(entry.getKey())) continue; + return entry.getValue(); + } + return null; + } + + @Override + ImmutableSet> createEntrySet() { + return new ImmutableMapEntrySet(){ + + @Override + ImmutableMap map() { + return RegularImmutableBiMap.this; + } + + @Override + public UnmodifiableIterator> iterator() { + return this.asList().iterator(); + } + + @Override + ImmutableList> createAsList() { + return new RegularImmutableAsList(this, RegularImmutableBiMap.this.entries); + } + + @Override + boolean isHashCodeFast() { + return true; + } + + @Override + public int hashCode() { + return RegularImmutableBiMap.this.hashCode; + } + }; + } + + @Override + boolean isPartialView() { + return false; + } + + @Override + public int size() { + return this.entries.length; + } + + @Override + public ImmutableBiMap inverse() { + Inverse result = this.inverse; + return result == null ? (this.inverse = new Inverse()) : result; + } + + private static class InverseSerializedForm + implements Serializable { + private final ImmutableBiMap forward; + private static final long serialVersionUID = 1L; + + InverseSerializedForm(ImmutableBiMap forward) { + this.forward = forward; + } + + Object readResolve() { + return this.forward.inverse(); + } + } + + private final class Inverse + extends ImmutableBiMap { + private Inverse() { + } + + @Override + public int size() { + return this.inverse().size(); + } + + @Override + public ImmutableBiMap inverse() { + return RegularImmutableBiMap.this; + } + + @Override + public K get(@Nullable Object value) { + if (value == null) { + return null; + } + int bucket = Hashing.smear(value.hashCode()) & RegularImmutableBiMap.this.mask; + for (ImmutableMapEntry entry = RegularImmutableBiMap.this.valueTable[bucket]; entry != null; entry = entry.getNextInValueBucket()) { + if (!value.equals(entry.getValue())) continue; + return entry.getKey(); + } + return null; + } + + @Override + ImmutableSet> createEntrySet() { + return new InverseEntrySet(); + } + + @Override + boolean isPartialView() { + return false; + } + + @Override + Object writeReplace() { + return new InverseSerializedForm(RegularImmutableBiMap.this); + } + + final class InverseEntrySet + extends ImmutableMapEntrySet { + InverseEntrySet() { + } + + @Override + ImmutableMap map() { + return Inverse.this; + } + + @Override + boolean isHashCodeFast() { + return true; + } + + @Override + public int hashCode() { + return RegularImmutableBiMap.this.hashCode; + } + + @Override + public UnmodifiableIterator> iterator() { + return this.asList().iterator(); + } + + @Override + ImmutableList> createAsList() { + return new ImmutableAsList>(){ + + @Override + public Map.Entry get(int index) { + ImmutableMapEntry entry = RegularImmutableBiMap.this.entries[index]; + return Maps.immutableEntry(entry.getValue(), entry.getKey()); + } + + @Override + ImmutableCollection> delegateCollection() { + return InverseEntrySet.this; + } + }; + } + } + } + + private static final class NonTerminalBiMapEntry + extends ImmutableMapEntry { + @Nullable + private final ImmutableMapEntry nextInKeyBucket; + @Nullable + private final ImmutableMapEntry nextInValueBucket; + + NonTerminalBiMapEntry(K key, V value, @Nullable ImmutableMapEntry nextInKeyBucket, @Nullable ImmutableMapEntry nextInValueBucket) { + super(key, value); + this.nextInKeyBucket = nextInKeyBucket; + this.nextInValueBucket = nextInValueBucket; + } + + NonTerminalBiMapEntry(ImmutableMapEntry contents, @Nullable ImmutableMapEntry nextInKeyBucket, @Nullable ImmutableMapEntry nextInValueBucket) { + super(contents); + this.nextInKeyBucket = nextInKeyBucket; + this.nextInValueBucket = nextInValueBucket; + } + + @Override + @Nullable + ImmutableMapEntry getNextInKeyBucket() { + return this.nextInKeyBucket; + } + + @Override + @Nullable + ImmutableMapEntry getNextInValueBucket() { + return this.nextInValueBucket; + } + } +} diff --git a/src/com/google/common/collect/RegularImmutableList.java b/src/com/google/common/collect/RegularImmutableList.java new file mode 100644 index 0000000..a8d8aef --- /dev/null +++ b/src/com/google/common/collect/RegularImmutableList.java @@ -0,0 +1,85 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Preconditions; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.Iterators; +import com.google.common.collect.UnmodifiableListIterator; +import javax.annotation.Nullable; + +@GwtCompatible(serializable=true, emulated=true) +class RegularImmutableList +extends ImmutableList { + private final transient int offset; + private final transient int size; + private final transient Object[] array; + + RegularImmutableList(Object[] array, int offset, int size) { + this.offset = offset; + this.size = size; + this.array = array; + } + + RegularImmutableList(Object[] array) { + this(array, 0, array.length); + } + + @Override + public int size() { + return this.size; + } + + @Override + boolean isPartialView() { + return this.size != this.array.length; + } + + @Override + int copyIntoArray(Object[] dst, int dstOff) { + System.arraycopy(this.array, this.offset, dst, dstOff, this.size); + return dstOff + this.size; + } + + @Override + public E get(int index) { + Preconditions.checkElementIndex(index, this.size); + return (E)this.array[index + this.offset]; + } + + @Override + public int indexOf(@Nullable Object object) { + if (object == null) { + return -1; + } + for (int i = 0; i < this.size; ++i) { + if (!this.array[this.offset + i].equals(object)) continue; + return i; + } + return -1; + } + + @Override + public int lastIndexOf(@Nullable Object object) { + if (object == null) { + return -1; + } + for (int i = this.size - 1; i >= 0; --i) { + if (!this.array[this.offset + i].equals(object)) continue; + return i; + } + return -1; + } + + @Override + ImmutableList subListUnchecked(int fromIndex, int toIndex) { + return new RegularImmutableList(this.array, this.offset + fromIndex, toIndex - fromIndex); + } + + @Override + public UnmodifiableListIterator listIterator(int index) { + return Iterators.forArray(this.array, this.offset, this.size, index); + } +} diff --git a/src/com/google/common/collect/RegularImmutableMap.java b/src/com/google/common/collect/RegularImmutableMap.java new file mode 100644 index 0000000..af5b7d4 --- /dev/null +++ b/src/com/google/common/collect/RegularImmutableMap.java @@ -0,0 +1,155 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.collect.CollectPreconditions; +import com.google.common.collect.Hashing; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableMapEntry; +import com.google.common.collect.ImmutableMapEntrySet; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.RegularImmutableAsList; +import com.google.common.collect.UnmodifiableIterator; +import java.util.Map; +import javax.annotation.Nullable; + +@GwtCompatible(serializable=true, emulated=true) +final class RegularImmutableMap +extends ImmutableMap { + private final transient ImmutableMapEntry[] entries; + private final transient ImmutableMapEntry[] table; + private final transient int mask; + private static final double MAX_LOAD_FACTOR = 1.2; + private static final long serialVersionUID = 0L; + + RegularImmutableMap(ImmutableMapEntry.TerminalEntry ... theEntries) { + this(theEntries.length, theEntries); + } + + RegularImmutableMap(int size, ImmutableMapEntry.TerminalEntry[] theEntries) { + this.entries = this.createEntryArray(size); + int tableSize = Hashing.closedTableSize(size, 1.2); + this.table = this.createEntryArray(tableSize); + this.mask = tableSize - 1; + for (int entryIndex = 0; entryIndex < size; ++entryIndex) { + ImmutableMapEntry.TerminalEntry entry = theEntries[entryIndex]; + Object key = entry.getKey(); + int tableIndex = Hashing.smear(key.hashCode()) & this.mask; + ImmutableMapEntry existing = this.table[tableIndex]; + ImmutableMapEntry newEntry = existing == null ? entry : new NonTerminalMapEntry((ImmutableMapEntry)entry, existing); + this.table[tableIndex] = newEntry; + this.entries[entryIndex] = newEntry; + this.checkNoConflictInBucket(key, newEntry, existing); + } + } + + RegularImmutableMap(Map.Entry[] theEntries) { + int size = theEntries.length; + this.entries = this.createEntryArray(size); + int tableSize = Hashing.closedTableSize(size, 1.2); + this.table = this.createEntryArray(tableSize); + this.mask = tableSize - 1; + for (int entryIndex = 0; entryIndex < size; ++entryIndex) { + Map.Entry entry = theEntries[entryIndex]; + Object key = entry.getKey(); + Object value = entry.getValue(); + CollectPreconditions.checkEntryNotNull(key, value); + int tableIndex = Hashing.smear(key.hashCode()) & this.mask; + ImmutableMapEntry existing = this.table[tableIndex]; + ImmutableMapEntry newEntry = existing == null ? new ImmutableMapEntry.TerminalEntry(key, value) : new NonTerminalMapEntry(key, value, existing); + this.table[tableIndex] = newEntry; + this.entries[entryIndex] = newEntry; + this.checkNoConflictInBucket(key, newEntry, existing); + } + } + + private void checkNoConflictInBucket(K key, ImmutableMapEntry entry, ImmutableMapEntry bucketHead) { + while (bucketHead != null) { + RegularImmutableMap.checkNoConflict(!key.equals(bucketHead.getKey()), "key", entry, bucketHead); + bucketHead = bucketHead.getNextInKeyBucket(); + } + } + + private ImmutableMapEntry[] createEntryArray(int size) { + return new ImmutableMapEntry[size]; + } + + @Override + public V get(@Nullable Object key) { + if (key == null) { + return null; + } + int index = Hashing.smear(key.hashCode()) & this.mask; + for (ImmutableMapEntry entry = this.table[index]; entry != null; entry = entry.getNextInKeyBucket()) { + Object candidateKey = entry.getKey(); + if (!key.equals(candidateKey)) continue; + return entry.getValue(); + } + return null; + } + + @Override + public int size() { + return this.entries.length; + } + + @Override + boolean isPartialView() { + return false; + } + + @Override + ImmutableSet> createEntrySet() { + return new EntrySet(); + } + + private class EntrySet + extends ImmutableMapEntrySet { + private EntrySet() { + } + + @Override + ImmutableMap map() { + return RegularImmutableMap.this; + } + + @Override + public UnmodifiableIterator> iterator() { + return this.asList().iterator(); + } + + @Override + ImmutableList> createAsList() { + return new RegularImmutableAsList(this, RegularImmutableMap.this.entries); + } + } + + private static final class NonTerminalMapEntry + extends ImmutableMapEntry { + private final ImmutableMapEntry nextInKeyBucket; + + NonTerminalMapEntry(K key, V value, ImmutableMapEntry nextInKeyBucket) { + super(key, value); + this.nextInKeyBucket = nextInKeyBucket; + } + + NonTerminalMapEntry(ImmutableMapEntry contents, ImmutableMapEntry nextInKeyBucket) { + super(contents); + this.nextInKeyBucket = nextInKeyBucket; + } + + @Override + ImmutableMapEntry getNextInKeyBucket() { + return this.nextInKeyBucket; + } + + @Override + @Nullable + ImmutableMapEntry getNextInValueBucket() { + return null; + } + } +} diff --git a/src/com/google/common/collect/RegularImmutableMultiset.java b/src/com/google/common/collect/RegularImmutableMultiset.java new file mode 100644 index 0000000..20f938f --- /dev/null +++ b/src/com/google/common/collect/RegularImmutableMultiset.java @@ -0,0 +1,63 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.collect.ImmutableCollection; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableMultiset; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Multiset; +import com.google.common.collect.Multisets; +import java.util.Map; +import javax.annotation.Nullable; + +@GwtCompatible(serializable=true) +class RegularImmutableMultiset +extends ImmutableMultiset { + private final transient ImmutableMap map; + private final transient int size; + + RegularImmutableMultiset(ImmutableMap map, int size) { + this.map = map; + this.size = size; + } + + @Override + boolean isPartialView() { + return this.map.isPartialView(); + } + + @Override + public int count(@Nullable Object element) { + Integer value = this.map.get(element); + return value == null ? 0 : value; + } + + @Override + public int size() { + return this.size; + } + + @Override + public boolean contains(@Nullable Object element) { + return this.map.containsKey(element); + } + + @Override + public ImmutableSet elementSet() { + return this.map.keySet(); + } + + @Override + Multiset.Entry getEntry(int index) { + Map.Entry mapEntry = (Map.Entry)((ImmutableCollection)((Object)this.map.entrySet())).asList().get(index); + return Multisets.immutableEntry(mapEntry.getKey(), (Integer)mapEntry.getValue()); + } + + @Override + public int hashCode() { + return this.map.hashCode(); + } +} diff --git a/src/com/google/common/collect/RegularImmutableSet.java b/src/com/google/common/collect/RegularImmutableSet.java new file mode 100644 index 0000000..e4ebb39 --- /dev/null +++ b/src/com/google/common/collect/RegularImmutableSet.java @@ -0,0 +1,82 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.VisibleForTesting; +import com.google.common.collect.Hashing; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Iterators; +import com.google.common.collect.RegularImmutableAsList; +import com.google.common.collect.UnmodifiableIterator; + +@GwtCompatible(serializable=true, emulated=true) +final class RegularImmutableSet +extends ImmutableSet { + private final Object[] elements; + @VisibleForTesting + final transient Object[] table; + private final transient int mask; + private final transient int hashCode; + + RegularImmutableSet(Object[] elements, int hashCode, Object[] table, int mask) { + this.elements = elements; + this.table = table; + this.mask = mask; + this.hashCode = hashCode; + } + + @Override + public boolean contains(Object target) { + if (target == null) { + return false; + } + int i = Hashing.smear(target.hashCode()); + Object candidate; + while ((candidate = this.table[i & this.mask]) != null) { + if (candidate.equals(target)) { + return true; + } + ++i; + } + return false; + } + + @Override + public int size() { + return this.elements.length; + } + + @Override + public UnmodifiableIterator iterator() { + return Iterators.forArray(this.elements); + } + + @Override + int copyIntoArray(Object[] dst, int offset) { + System.arraycopy(this.elements, 0, dst, offset, this.elements.length); + return offset + this.elements.length; + } + + @Override + ImmutableList createAsList() { + return new RegularImmutableAsList(this, this.elements); + } + + @Override + boolean isPartialView() { + return false; + } + + @Override + public int hashCode() { + return this.hashCode; + } + + @Override + boolean isHashCodeFast() { + return true; + } +} diff --git a/src/com/google/common/collect/RegularImmutableSortedMap.java b/src/com/google/common/collect/RegularImmutableSortedMap.java new file mode 100644 index 0000000..b89c86a --- /dev/null +++ b/src/com/google/common/collect/RegularImmutableSortedMap.java @@ -0,0 +1,120 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Preconditions; +import com.google.common.collect.ImmutableAsList; +import com.google.common.collect.ImmutableCollection; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableMapEntrySet; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.ImmutableSortedMap; +import com.google.common.collect.ImmutableSortedSet; +import com.google.common.collect.Maps; +import com.google.common.collect.RegularImmutableSortedSet; +import com.google.common.collect.UnmodifiableIterator; +import java.util.Map; +import javax.annotation.Nullable; + +@GwtCompatible(emulated=true) +final class RegularImmutableSortedMap +extends ImmutableSortedMap { + private final transient RegularImmutableSortedSet keySet; + private final transient ImmutableList valueList; + + RegularImmutableSortedMap(RegularImmutableSortedSet keySet, ImmutableList valueList) { + this.keySet = keySet; + this.valueList = valueList; + } + + RegularImmutableSortedMap(RegularImmutableSortedSet keySet, ImmutableList valueList, ImmutableSortedMap descendingMap) { + super(descendingMap); + this.keySet = keySet; + this.valueList = valueList; + } + + @Override + ImmutableSet> createEntrySet() { + return new EntrySet(); + } + + @Override + public ImmutableSortedSet keySet() { + return this.keySet; + } + + @Override + public ImmutableCollection values() { + return this.valueList; + } + + @Override + public V get(@Nullable Object key) { + int index = this.keySet.indexOf(key); + return index == -1 ? null : (V)this.valueList.get(index); + } + + private ImmutableSortedMap getSubMap(int fromIndex, int toIndex) { + if (fromIndex == 0 && toIndex == this.size()) { + return this; + } + if (fromIndex == toIndex) { + return RegularImmutableSortedMap.emptyMap(this.comparator()); + } + return RegularImmutableSortedMap.from(this.keySet.getSubSet(fromIndex, toIndex), this.valueList.subList(fromIndex, toIndex)); + } + + @Override + public ImmutableSortedMap headMap(K toKey, boolean inclusive) { + return this.getSubMap(0, this.keySet.headIndex(Preconditions.checkNotNull(toKey), inclusive)); + } + + @Override + public ImmutableSortedMap tailMap(K fromKey, boolean inclusive) { + return this.getSubMap(this.keySet.tailIndex(Preconditions.checkNotNull(fromKey), inclusive), this.size()); + } + + @Override + ImmutableSortedMap createDescendingMap() { + return new RegularImmutableSortedMap((RegularImmutableSortedSet)this.keySet.descendingSet(), this.valueList.reverse(), this); + } + + private class EntrySet + extends ImmutableMapEntrySet { + private EntrySet() { + } + + @Override + public UnmodifiableIterator> iterator() { + return this.asList().iterator(); + } + + @Override + ImmutableList> createAsList() { + return new ImmutableAsList>(){ + private final ImmutableList keyList; + { + this.keyList = ((ImmutableCollection)((Object)RegularImmutableSortedMap.this.keySet())).asList(); + } + + @Override + public Map.Entry get(int index) { + return Maps.immutableEntry(this.keyList.get(index), RegularImmutableSortedMap.this.valueList.get(index)); + } + + @Override + ImmutableCollection> delegateCollection() { + return EntrySet.this; + } + }; + } + + @Override + ImmutableMap map() { + return RegularImmutableSortedMap.this; + } + } +} diff --git a/src/com/google/common/collect/RegularImmutableSortedMultiset.java b/src/com/google/common/collect/RegularImmutableSortedMultiset.java new file mode 100644 index 0000000..3ee3454 --- /dev/null +++ b/src/com/google/common/collect/RegularImmutableSortedMultiset.java @@ -0,0 +1,90 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.base.Preconditions; +import com.google.common.collect.BoundType; +import com.google.common.collect.ImmutableSortedMultiset; +import com.google.common.collect.ImmutableSortedSet; +import com.google.common.collect.Multiset; +import com.google.common.collect.Multisets; +import com.google.common.collect.RegularImmutableSortedSet; +import com.google.common.primitives.Ints; +import javax.annotation.Nullable; + +final class RegularImmutableSortedMultiset +extends ImmutableSortedMultiset { + private final transient RegularImmutableSortedSet elementSet; + private final transient int[] counts; + private final transient long[] cumulativeCounts; + private final transient int offset; + private final transient int length; + + RegularImmutableSortedMultiset(RegularImmutableSortedSet elementSet, int[] counts, long[] cumulativeCounts, int offset, int length) { + this.elementSet = elementSet; + this.counts = counts; + this.cumulativeCounts = cumulativeCounts; + this.offset = offset; + this.length = length; + } + + @Override + Multiset.Entry getEntry(int index) { + return Multisets.immutableEntry(this.elementSet.asList().get(index), this.counts[this.offset + index]); + } + + @Override + public Multiset.Entry firstEntry() { + return this.getEntry(0); + } + + @Override + public Multiset.Entry lastEntry() { + return this.getEntry(this.length - 1); + } + + @Override + public int count(@Nullable Object element) { + int index = this.elementSet.indexOf(element); + return index == -1 ? 0 : this.counts[index + this.offset]; + } + + @Override + public int size() { + long size = this.cumulativeCounts[this.offset + this.length] - this.cumulativeCounts[this.offset]; + return Ints.saturatedCast(size); + } + + @Override + public ImmutableSortedSet elementSet() { + return this.elementSet; + } + + @Override + public ImmutableSortedMultiset headMultiset(E upperBound, BoundType boundType) { + return this.getSubMultiset(0, this.elementSet.headIndex(upperBound, Preconditions.checkNotNull(boundType) == BoundType.CLOSED)); + } + + @Override + public ImmutableSortedMultiset tailMultiset(E lowerBound, BoundType boundType) { + return this.getSubMultiset(this.elementSet.tailIndex(lowerBound, Preconditions.checkNotNull(boundType) == BoundType.CLOSED), this.length); + } + + ImmutableSortedMultiset getSubMultiset(int from, int to) { + Preconditions.checkPositionIndexes(from, to, this.length); + if (from == to) { + return RegularImmutableSortedMultiset.emptyMultiset(this.comparator()); + } + if (from == 0 && to == this.length) { + return this; + } + RegularImmutableSortedSet subElementSet = (RegularImmutableSortedSet)this.elementSet.getSubSet(from, to); + return new RegularImmutableSortedMultiset(subElementSet, this.counts, this.cumulativeCounts, this.offset + from, to - from); + } + + @Override + boolean isPartialView() { + return this.offset > 0 || this.length < this.counts.length; + } +} diff --git a/src/com/google/common/collect/RegularImmutableSortedSet.java b/src/com/google/common/collect/RegularImmutableSortedSet.java new file mode 100644 index 0000000..acb0662 --- /dev/null +++ b/src/com/google/common/collect/RegularImmutableSortedSet.java @@ -0,0 +1,248 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.base.Preconditions; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableSortedAsList; +import com.google.common.collect.ImmutableSortedSet; +import com.google.common.collect.Iterators; +import com.google.common.collect.Multiset; +import com.google.common.collect.Ordering; +import com.google.common.collect.PeekingIterator; +import com.google.common.collect.SortedIterables; +import com.google.common.collect.SortedLists; +import com.google.common.collect.UnmodifiableIterator; +import java.util.Collection; +import java.util.Collections; +import java.util.Comparator; +import java.util.Iterator; +import java.util.NoSuchElementException; +import java.util.Set; +import javax.annotation.Nullable; + +@GwtCompatible(serializable=true, emulated=true) +final class RegularImmutableSortedSet +extends ImmutableSortedSet { + private final transient ImmutableList elements; + + RegularImmutableSortedSet(ImmutableList elements, Comparator comparator) { + super(comparator); + this.elements = elements; + Preconditions.checkArgument(!elements.isEmpty()); + } + + @Override + public UnmodifiableIterator iterator() { + return this.elements.iterator(); + } + + @Override + @GwtIncompatible(value="NavigableSet") + public UnmodifiableIterator descendingIterator() { + return this.elements.reverse().iterator(); + } + + @Override + public boolean isEmpty() { + return false; + } + + @Override + public int size() { + return this.elements.size(); + } + + @Override + public boolean contains(Object o) { + try { + return o != null && this.unsafeBinarySearch(o) >= 0; + } + catch (ClassCastException e) { + return false; + } + } + + @Override + public boolean containsAll(Collection targets) { + if (targets instanceof Multiset) { + targets = ((Multiset)targets).elementSet(); + } + if (!SortedIterables.hasSameComparator(this.comparator(), targets) || targets.size() <= 1) { + return super.containsAll(targets); + } + PeekingIterator thisIterator = Iterators.peekingIterator(this.iterator()); + Iterator thatIterator = targets.iterator(); + Object target = thatIterator.next(); + try { + while (thisIterator.hasNext()) { + int cmp = this.unsafeCompare(thisIterator.peek(), target); + if (cmp < 0) { + thisIterator.next(); + continue; + } + if (cmp == 0) { + if (!thatIterator.hasNext()) { + return true; + } + target = thatIterator.next(); + continue; + } + if (cmp <= 0) continue; + return false; + } + } + catch (NullPointerException e) { + return false; + } + catch (ClassCastException e) { + return false; + } + return false; + } + + private int unsafeBinarySearch(Object key) throws ClassCastException { + return Collections.binarySearch(this.elements, key, this.unsafeComparator()); + } + + @Override + boolean isPartialView() { + return this.elements.isPartialView(); + } + + @Override + int copyIntoArray(Object[] dst, int offset) { + return this.elements.copyIntoArray(dst, offset); + } + + @Override + public boolean equals(@Nullable Object object) { + if (object == this) { + return true; + } + if (!(object instanceof Set)) { + return false; + } + Set that = (Set)object; + if (this.size() != that.size()) { + return false; + } + if (SortedIterables.hasSameComparator(this.comparator, that)) { + Iterator otherIterator = that.iterator(); + try { + for (Object element : this) { + Object otherElement = otherIterator.next(); + if (otherElement != null && this.unsafeCompare(element, otherElement) == 0) continue; + return false; + } + return true; + } + catch (ClassCastException e) { + return false; + } + catch (NoSuchElementException e) { + return false; + } + } + return this.containsAll(that); + } + + @Override + public E first() { + return this.elements.get(0); + } + + @Override + public E last() { + return this.elements.get(this.size() - 1); + } + + @Override + public E lower(E element) { + int index = this.headIndex(element, false) - 1; + return index == -1 ? null : (E)this.elements.get(index); + } + + @Override + public E floor(E element) { + int index = this.headIndex(element, true) - 1; + return index == -1 ? null : (E)this.elements.get(index); + } + + @Override + public E ceiling(E element) { + int index = this.tailIndex(element, true); + return index == this.size() ? null : (E)this.elements.get(index); + } + + @Override + public E higher(E element) { + int index = this.tailIndex(element, false); + return index == this.size() ? null : (E)this.elements.get(index); + } + + @Override + ImmutableSortedSet headSetImpl(E toElement, boolean inclusive) { + return this.getSubSet(0, this.headIndex(toElement, inclusive)); + } + + int headIndex(E toElement, boolean inclusive) { + return SortedLists.binarySearch(this.elements, Preconditions.checkNotNull(toElement), this.comparator(), inclusive ? SortedLists.KeyPresentBehavior.FIRST_AFTER : SortedLists.KeyPresentBehavior.FIRST_PRESENT, SortedLists.KeyAbsentBehavior.NEXT_HIGHER); + } + + @Override + ImmutableSortedSet subSetImpl(E fromElement, boolean fromInclusive, E toElement, boolean toInclusive) { + return this.tailSetImpl(fromElement, fromInclusive).headSetImpl(toElement, toInclusive); + } + + @Override + ImmutableSortedSet tailSetImpl(E fromElement, boolean inclusive) { + return this.getSubSet(this.tailIndex(fromElement, inclusive), this.size()); + } + + int tailIndex(E fromElement, boolean inclusive) { + return SortedLists.binarySearch(this.elements, Preconditions.checkNotNull(fromElement), this.comparator(), inclusive ? SortedLists.KeyPresentBehavior.FIRST_PRESENT : SortedLists.KeyPresentBehavior.FIRST_AFTER, SortedLists.KeyAbsentBehavior.NEXT_HIGHER); + } + + Comparator unsafeComparator() { + return this.comparator; + } + + ImmutableSortedSet getSubSet(int newFromIndex, int newToIndex) { + if (newFromIndex == 0 && newToIndex == this.size()) { + return this; + } + if (newFromIndex < newToIndex) { + return new RegularImmutableSortedSet(this.elements.subList(newFromIndex, newToIndex), this.comparator); + } + return RegularImmutableSortedSet.emptySet(this.comparator); + } + + @Override + int indexOf(@Nullable Object target) { + int position; + if (target == null) { + return -1; + } + try { + position = SortedLists.binarySearch(this.elements, target, this.unsafeComparator(), SortedLists.KeyPresentBehavior.ANY_PRESENT, SortedLists.KeyAbsentBehavior.INVERTED_INSERTION_INDEX); + } + catch (ClassCastException e) { + return -1; + } + return position >= 0 ? position : -1; + } + + @Override + ImmutableList createAsList() { + return new ImmutableSortedAsList(this, this.elements); + } + + @Override + ImmutableSortedSet createDescendingSet() { + return new RegularImmutableSortedSet(this.elements.reverse(), Ordering.from(this.comparator).reverse()); + } +} diff --git a/src/com/google/common/collect/RegularImmutableTable.java b/src/com/google/common/collect/RegularImmutableTable.java new file mode 100644 index 0000000..07f32f5 --- /dev/null +++ b/src/com/google/common/collect/RegularImmutableTable.java @@ -0,0 +1,162 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Preconditions; +import com.google.common.collect.DenseImmutableTable; +import com.google.common.collect.ImmutableAsList; +import com.google.common.collect.ImmutableCollection; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.ImmutableTable; +import com.google.common.collect.Lists; +import com.google.common.collect.SparseImmutableTable; +import com.google.common.collect.Table; +import com.google.common.collect.UnmodifiableIterator; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; +import javax.annotation.Nullable; + +@GwtCompatible +abstract class RegularImmutableTable +extends ImmutableTable { + RegularImmutableTable() { + } + + abstract Table.Cell getCell(int var1); + + @Override + final ImmutableSet> createCellSet() { + return this.isEmpty() ? ImmutableSet.of() : new CellSet(); + } + + abstract V getValue(int var1); + + @Override + final ImmutableCollection createValues() { + return this.isEmpty() ? ImmutableList.of() : new Values(); + } + + static RegularImmutableTable forCells(List> cells, final @Nullable Comparator rowComparator, final @Nullable Comparator columnComparator) { + Preconditions.checkNotNull(cells); + if (rowComparator != null || columnComparator != null) { + Comparator comparator = new Comparator>(){ + + @Override + public int compare(Table.Cell cell1, Table.Cell cell2) { + int rowCompare; + int n = rowCompare = rowComparator == null ? 0 : rowComparator.compare(cell1.getRowKey(), cell2.getRowKey()); + if (rowCompare != 0) { + return rowCompare; + } + return columnComparator == null ? 0 : columnComparator.compare(cell1.getColumnKey(), cell2.getColumnKey()); + } + }; + Collections.sort(cells, comparator); + } + return RegularImmutableTable.forCellsInternal(cells, rowComparator, columnComparator); + } + + static RegularImmutableTable forCells(Iterable> cells) { + return RegularImmutableTable.forCellsInternal(cells, null, null); + } + + /* + * WARNING - void declaration + */ + private static final RegularImmutableTable forCellsInternal(Iterable> cells, @Nullable Comparator rowComparator, @Nullable Comparator columnComparator) { + void var7_12; + ImmutableSet.Builder rowSpaceBuilder = ImmutableSet.builder(); + ImmutableSet.Builder columnSpaceBuilder = ImmutableSet.builder(); + ImmutableList> cellList = ImmutableList.copyOf(cells); + for (Table.Cell cell : cellList) { + rowSpaceBuilder.add(cell.getRowKey()); + columnSpaceBuilder.add(cell.getColumnKey()); + } + ImmutableSet rowSpace = rowSpaceBuilder.build(); + if (rowComparator != null) { + ArrayList arrayList = Lists.newArrayList(rowSpace); + Collections.sort(arrayList, rowComparator); + rowSpace = ImmutableSet.copyOf(arrayList); + } + ImmutableCollection immutableCollection = columnSpaceBuilder.build(); + if (columnComparator != null) { + ArrayList columnList = Lists.newArrayList(immutableCollection); + Collections.sort(columnList, columnComparator); + ImmutableSet immutableSet = ImmutableSet.copyOf(columnList); + } + return (long)cellList.size() > (long)rowSpace.size() * (long)var7_12.size() / 2L ? new DenseImmutableTable(cellList, rowSpace, var7_12) : new SparseImmutableTable(cellList, rowSpace, var7_12); + } + + private final class Values + extends ImmutableList { + private Values() { + } + + @Override + public int size() { + return RegularImmutableTable.this.size(); + } + + @Override + public V get(int index) { + return RegularImmutableTable.this.getValue(index); + } + + @Override + boolean isPartialView() { + return true; + } + } + + private final class CellSet + extends ImmutableSet> { + private CellSet() { + } + + @Override + public int size() { + return RegularImmutableTable.this.size(); + } + + @Override + public UnmodifiableIterator> iterator() { + return this.asList().iterator(); + } + + @Override + ImmutableList> createAsList() { + return new ImmutableAsList>(){ + + @Override + public Table.Cell get(int index) { + return RegularImmutableTable.this.getCell(index); + } + + @Override + ImmutableCollection> delegateCollection() { + return CellSet.this; + } + }; + } + + @Override + public boolean contains(@Nullable Object object) { + if (object instanceof Table.Cell) { + Table.Cell cell = (Table.Cell)object; + Object value = RegularImmutableTable.this.get(cell.getRowKey(), cell.getColumnKey()); + return value != null && value.equals(cell.getValue()); + } + return false; + } + + @Override + boolean isPartialView() { + return false; + } + } +} diff --git a/src/com/google/common/collect/ReverseNaturalOrdering.java b/src/com/google/common/collect/ReverseNaturalOrdering.java new file mode 100644 index 0000000..c477d97 --- /dev/null +++ b/src/com/google/common/collect/ReverseNaturalOrdering.java @@ -0,0 +1,84 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Preconditions; +import com.google.common.collect.NaturalOrdering; +import com.google.common.collect.Ordering; +import java.io.Serializable; +import java.util.Iterator; + +@GwtCompatible(serializable=true) +final class ReverseNaturalOrdering +extends Ordering +implements Serializable { + static final ReverseNaturalOrdering INSTANCE = new ReverseNaturalOrdering(); + private static final long serialVersionUID = 0L; + + @Override + public int compare(Comparable left, Comparable right) { + Preconditions.checkNotNull(left); + if (left == right) { + return 0; + } + return right.compareTo(left); + } + + @Override + public Ordering reverse() { + return Ordering.natural(); + } + + @Override + public E min(E a, E b) { + return NaturalOrdering.INSTANCE.max(a, b); + } + + @Override + public E min(E a, E b, E c, E ... rest) { + return NaturalOrdering.INSTANCE.max(a, b, c, rest); + } + + @Override + public E min(Iterator iterator) { + return (E)((Comparable)NaturalOrdering.INSTANCE.max(iterator)); + } + + @Override + public E min(Iterable iterable) { + return (E)((Comparable)NaturalOrdering.INSTANCE.max(iterable)); + } + + @Override + public E max(E a, E b) { + return NaturalOrdering.INSTANCE.min(a, b); + } + + @Override + public E max(E a, E b, E c, E ... rest) { + return NaturalOrdering.INSTANCE.min(a, b, c, rest); + } + + @Override + public E max(Iterator iterator) { + return (E)((Comparable)NaturalOrdering.INSTANCE.min(iterator)); + } + + @Override + public E max(Iterable iterable) { + return (E)((Comparable)NaturalOrdering.INSTANCE.min(iterable)); + } + + private Object readResolve() { + return INSTANCE; + } + + public String toString() { + return "Ordering.natural().reverse()"; + } + + private ReverseNaturalOrdering() { + } +} diff --git a/src/com/google/common/collect/ReverseOrdering.java b/src/com/google/common/collect/ReverseOrdering.java new file mode 100644 index 0000000..19e6612 --- /dev/null +++ b/src/com/google/common/collect/ReverseOrdering.java @@ -0,0 +1,94 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Preconditions; +import com.google.common.collect.Ordering; +import java.io.Serializable; +import java.util.Iterator; +import javax.annotation.Nullable; + +@GwtCompatible(serializable=true) +final class ReverseOrdering +extends Ordering +implements Serializable { + final Ordering forwardOrder; + private static final long serialVersionUID = 0L; + + ReverseOrdering(Ordering forwardOrder) { + this.forwardOrder = Preconditions.checkNotNull(forwardOrder); + } + + @Override + public int compare(T a, T b) { + return this.forwardOrder.compare(b, a); + } + + @Override + public Ordering reverse() { + return this.forwardOrder; + } + + @Override + public E min(E a, E b) { + return this.forwardOrder.max(a, b); + } + + @Override + public E min(E a, E b, E c, E ... rest) { + return this.forwardOrder.max(a, b, c, rest); + } + + @Override + public E min(Iterator iterator) { + return this.forwardOrder.max(iterator); + } + + @Override + public E min(Iterable iterable) { + return this.forwardOrder.max(iterable); + } + + @Override + public E max(E a, E b) { + return this.forwardOrder.min(a, b); + } + + @Override + public E max(E a, E b, E c, E ... rest) { + return this.forwardOrder.min(a, b, c, rest); + } + + @Override + public E max(Iterator iterator) { + return this.forwardOrder.min(iterator); + } + + @Override + public E max(Iterable iterable) { + return this.forwardOrder.min(iterable); + } + + public int hashCode() { + return -this.forwardOrder.hashCode(); + } + + @Override + public boolean equals(@Nullable Object object) { + if (object == this) { + return true; + } + if (object instanceof ReverseOrdering) { + ReverseOrdering that = (ReverseOrdering)object; + return this.forwardOrder.equals(that.forwardOrder); + } + return false; + } + + public String toString() { + String string = String.valueOf(String.valueOf(this.forwardOrder)); + return new StringBuilder(10 + string.length()).append(string).append(".reverse()").toString(); + } +} diff --git a/src/com/google/common/collect/RowSortedTable.java b/src/com/google/common/collect/RowSortedTable.java new file mode 100644 index 0000000..2df832d --- /dev/null +++ b/src/com/google/common/collect/RowSortedTable.java @@ -0,0 +1,22 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.collect.Table; +import java.util.Map; +import java.util.SortedMap; +import java.util.SortedSet; + +@GwtCompatible +@Beta +public interface RowSortedTable +extends Table { + @Override + public SortedSet rowKeySet(); + + @Override + public SortedMap> rowMap(); +} diff --git a/src/com/google/common/collect/Serialization.java b/src/com/google/common/collect/Serialization.java new file mode 100644 index 0000000..62f90f2 --- /dev/null +++ b/src/com/google/common/collect/Serialization.java @@ -0,0 +1,130 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.collect.Multimap; +import com.google.common.collect.Multiset; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.lang.reflect.Field; +import java.util.Collection; +import java.util.Map; + +final class Serialization { + private Serialization() { + } + + static int readCount(ObjectInputStream stream) throws IOException { + return stream.readInt(); + } + + static void writeMap(Map map, ObjectOutputStream stream) throws IOException { + stream.writeInt(map.size()); + for (Map.Entry entry : map.entrySet()) { + stream.writeObject(entry.getKey()); + stream.writeObject(entry.getValue()); + } + } + + static void populateMap(Map map, ObjectInputStream stream) throws IOException, ClassNotFoundException { + int size = stream.readInt(); + Serialization.populateMap(map, stream, size); + } + + static void populateMap(Map map, ObjectInputStream stream, int size) throws IOException, ClassNotFoundException { + for (int i = 0; i < size; ++i) { + Object key = stream.readObject(); + Object value = stream.readObject(); + map.put(key, value); + } + } + + static void writeMultiset(Multiset multiset, ObjectOutputStream stream) throws IOException { + int entryCount = multiset.entrySet().size(); + stream.writeInt(entryCount); + for (Multiset.Entry entry : multiset.entrySet()) { + stream.writeObject(entry.getElement()); + stream.writeInt(entry.getCount()); + } + } + + static void populateMultiset(Multiset multiset, ObjectInputStream stream) throws IOException, ClassNotFoundException { + int distinctElements = stream.readInt(); + Serialization.populateMultiset(multiset, stream, distinctElements); + } + + static void populateMultiset(Multiset multiset, ObjectInputStream stream, int distinctElements) throws IOException, ClassNotFoundException { + for (int i = 0; i < distinctElements; ++i) { + Object element = stream.readObject(); + int count = stream.readInt(); + multiset.add(element, count); + } + } + + static void writeMultimap(Multimap multimap, ObjectOutputStream stream) throws IOException { + stream.writeInt(multimap.asMap().size()); + for (Map.Entry> entry : multimap.asMap().entrySet()) { + stream.writeObject(entry.getKey()); + stream.writeInt(entry.getValue().size()); + for (V value : entry.getValue()) { + stream.writeObject(value); + } + } + } + + static void populateMultimap(Multimap multimap, ObjectInputStream stream) throws IOException, ClassNotFoundException { + int distinctKeys = stream.readInt(); + Serialization.populateMultimap(multimap, stream, distinctKeys); + } + + static void populateMultimap(Multimap multimap, ObjectInputStream stream, int distinctKeys) throws IOException, ClassNotFoundException { + for (int i = 0; i < distinctKeys; ++i) { + Object key = stream.readObject(); + Collection values = multimap.get(key); + int valueCount = stream.readInt(); + for (int j = 0; j < valueCount; ++j) { + Object value = stream.readObject(); + values.add(value); + } + } + } + + static FieldSetter getFieldSetter(Class clazz, String fieldName) { + try { + Field field = clazz.getDeclaredField(fieldName); + return new FieldSetter(field); + } + catch (NoSuchFieldException e) { + throw new AssertionError((Object)e); + } + } + + static final class FieldSetter { + private final Field field; + + private FieldSetter(Field field) { + this.field = field; + field.setAccessible(true); + } + + void set(T instance, Object value) { + try { + this.field.set(instance, value); + } + catch (IllegalAccessException impossible) { + throw new AssertionError((Object)impossible); + } + } + + void set(T instance, int value) { + try { + this.field.set(instance, value); + } + catch (IllegalAccessException impossible) { + throw new AssertionError((Object)impossible); + } + } + } +} diff --git a/src/com/google/common/collect/SetMultimap.java b/src/com/google/common/collect/SetMultimap.java new file mode 100644 index 0000000..d802923 --- /dev/null +++ b/src/com/google/common/collect/SetMultimap.java @@ -0,0 +1,33 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.collect.Multimap; +import java.util.Collection; +import java.util.Map; +import java.util.Set; +import javax.annotation.Nullable; + +@GwtCompatible +public interface SetMultimap +extends Multimap { + @Override + public Set get(@Nullable K var1); + + @Override + public Set removeAll(@Nullable Object var1); + + @Override + public Set replaceValues(K var1, Iterable var2); + + @Override + public Set> entries(); + + @Override + public Map> asMap(); + + @Override + public boolean equals(@Nullable Object var1); +} diff --git a/src/com/google/common/collect/Sets.java b/src/com/google/common/collect/Sets.java new file mode 100644 index 0000000..47d55d3 --- /dev/null +++ b/src/com/google/common/collect/Sets.java @@ -0,0 +1,972 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.base.Preconditions; +import com.google.common.base.Predicate; +import com.google.common.base.Predicates; +import com.google.common.collect.AbstractIndexedListIterator; +import com.google.common.collect.CartesianList; +import com.google.common.collect.Collections2; +import com.google.common.collect.ForwardingCollection; +import com.google.common.collect.ForwardingNavigableSet; +import com.google.common.collect.ForwardingSortedSet; +import com.google.common.collect.ImmutableCollection; +import com.google.common.collect.ImmutableEnumSet; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.ImmutableSortedSet; +import com.google.common.collect.Iterables; +import com.google.common.collect.Iterators; +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import com.google.common.collect.Multiset; +import com.google.common.collect.Ordering; +import com.google.common.collect.Platform; +import com.google.common.collect.Synchronized; +import com.google.common.collect.UnmodifiableIterator; +import java.io.Serializable; +import java.util.AbstractCollection; +import java.util.AbstractSet; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.Comparator; +import java.util.EnumSet; +import java.util.HashSet; +import java.util.Iterator; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Map; +import java.util.NavigableSet; +import java.util.NoSuchElementException; +import java.util.Set; +import java.util.SortedSet; +import java.util.TreeSet; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.CopyOnWriteArraySet; +import javax.annotation.Nullable; + +@GwtCompatible(emulated=true) +public final class Sets { + private Sets() { + } + + @GwtCompatible(serializable=true) + public static > ImmutableSet immutableEnumSet(E anElement, E ... otherElements) { + return ImmutableEnumSet.asImmutable(EnumSet.of(anElement, otherElements)); + } + + @GwtCompatible(serializable=true) + public static > ImmutableSet immutableEnumSet(Iterable elements) { + if (elements instanceof ImmutableEnumSet) { + return (ImmutableEnumSet)elements; + } + if (elements instanceof Collection) { + Collection collection = (Collection)elements; + if (collection.isEmpty()) { + return ImmutableSet.of(); + } + return ImmutableEnumSet.asImmutable(EnumSet.copyOf(collection)); + } + Iterator itr = elements.iterator(); + if (itr.hasNext()) { + EnumSet enumSet = EnumSet.of((Enum)itr.next()); + Iterators.addAll(enumSet, itr); + return ImmutableEnumSet.asImmutable(enumSet); + } + return ImmutableSet.of(); + } + + public static > EnumSet newEnumSet(Iterable iterable, Class elementType) { + EnumSet set = EnumSet.noneOf(elementType); + Iterables.addAll(set, iterable); + return set; + } + + public static HashSet newHashSet() { + return new HashSet(); + } + + public static HashSet newHashSet(E ... elements) { + HashSet set = Sets.newHashSetWithExpectedSize(elements.length); + Collections.addAll(set, elements); + return set; + } + + public static HashSet newHashSetWithExpectedSize(int expectedSize) { + return new HashSet(Maps.capacity(expectedSize)); + } + + public static HashSet newHashSet(Iterable elements) { + return elements instanceof Collection ? new HashSet(Collections2.cast(elements)) : Sets.newHashSet(elements.iterator()); + } + + public static HashSet newHashSet(Iterator elements) { + HashSet set = Sets.newHashSet(); + Iterators.addAll(set, elements); + return set; + } + + public static Set newConcurrentHashSet() { + return Sets.newSetFromMap(new ConcurrentHashMap()); + } + + public static Set newConcurrentHashSet(Iterable elements) { + Set set = Sets.newConcurrentHashSet(); + Iterables.addAll(set, elements); + return set; + } + + public static LinkedHashSet newLinkedHashSet() { + return new LinkedHashSet(); + } + + public static LinkedHashSet newLinkedHashSetWithExpectedSize(int expectedSize) { + return new LinkedHashSet(Maps.capacity(expectedSize)); + } + + public static LinkedHashSet newLinkedHashSet(Iterable elements) { + if (elements instanceof Collection) { + return new LinkedHashSet(Collections2.cast(elements)); + } + LinkedHashSet set = Sets.newLinkedHashSet(); + Iterables.addAll(set, elements); + return set; + } + + public static TreeSet newTreeSet() { + return new TreeSet(); + } + + public static TreeSet newTreeSet(Iterable elements) { + TreeSet set = Sets.newTreeSet(); + Iterables.addAll(set, elements); + return set; + } + + public static TreeSet newTreeSet(Comparator comparator) { + return new TreeSet(Preconditions.checkNotNull(comparator)); + } + + public static Set newIdentityHashSet() { + return Sets.newSetFromMap(Maps.newIdentityHashMap()); + } + + @GwtIncompatible(value="CopyOnWriteArraySet") + public static CopyOnWriteArraySet newCopyOnWriteArraySet() { + return new CopyOnWriteArraySet(); + } + + @GwtIncompatible(value="CopyOnWriteArraySet") + public static CopyOnWriteArraySet newCopyOnWriteArraySet(Iterable elements) { + Collection elementsCollection = elements instanceof Collection ? Collections2.cast(elements) : Lists.newArrayList(elements); + return new CopyOnWriteArraySet(elementsCollection); + } + + public static > EnumSet complementOf(Collection collection) { + if (collection instanceof EnumSet) { + return EnumSet.complementOf((EnumSet)collection); + } + Preconditions.checkArgument(!collection.isEmpty(), "collection is empty; use the other version of this method"); + Class type = ((Enum)collection.iterator().next()).getDeclaringClass(); + return Sets.makeComplementByHand(collection, type); + } + + public static > EnumSet complementOf(Collection collection, Class type) { + Preconditions.checkNotNull(collection); + return collection instanceof EnumSet ? EnumSet.complementOf((EnumSet)collection) : Sets.makeComplementByHand(collection, type); + } + + private static > EnumSet makeComplementByHand(Collection collection, Class type) { + EnumSet result = EnumSet.allOf(type); + result.removeAll(collection); + return result; + } + + public static Set newSetFromMap(Map map) { + return Platform.newSetFromMap(map); + } + + public static SetView union(final Set set1, final Set set2) { + Preconditions.checkNotNull(set1, "set1"); + Preconditions.checkNotNull(set2, "set2"); + final SetView set2minus1 = Sets.difference(set2, set1); + return new SetView(){ + + @Override + public int size() { + return set1.size() + set2minus1.size(); + } + + @Override + public boolean isEmpty() { + return set1.isEmpty() && set2.isEmpty(); + } + + @Override + public Iterator iterator() { + return Iterators.unmodifiableIterator(Iterators.concat(set1.iterator(), set2minus1.iterator())); + } + + @Override + public boolean contains(Object object) { + return set1.contains(object) || set2.contains(object); + } + + @Override + public > S copyInto(S set) { + set.addAll(set1); + set.addAll(set2); + return set; + } + + @Override + public ImmutableSet immutableCopy() { + return ((ImmutableSet.Builder)((ImmutableSet.Builder)new ImmutableSet.Builder().addAll((Iterable)set1)).addAll((Iterable)set2)).build(); + } + }; + } + + public static SetView intersection(final Set set1, final Set set2) { + Preconditions.checkNotNull(set1, "set1"); + Preconditions.checkNotNull(set2, "set2"); + final Predicate inSet2 = Predicates.in(set2); + return new SetView(){ + + @Override + public Iterator iterator() { + return Iterators.filter(set1.iterator(), inSet2); + } + + @Override + public int size() { + return Iterators.size(this.iterator()); + } + + @Override + public boolean isEmpty() { + return !this.iterator().hasNext(); + } + + @Override + public boolean contains(Object object) { + return set1.contains(object) && set2.contains(object); + } + + @Override + public boolean containsAll(Collection collection) { + return set1.containsAll(collection) && set2.containsAll(collection); + } + }; + } + + public static SetView difference(final Set set1, final Set set2) { + Preconditions.checkNotNull(set1, "set1"); + Preconditions.checkNotNull(set2, "set2"); + final Predicate notInSet2 = Predicates.not(Predicates.in(set2)); + return new SetView(){ + + @Override + public Iterator iterator() { + return Iterators.filter(set1.iterator(), notInSet2); + } + + @Override + public int size() { + return Iterators.size(this.iterator()); + } + + @Override + public boolean isEmpty() { + return set2.containsAll(set1); + } + + @Override + public boolean contains(Object element) { + return set1.contains(element) && !set2.contains(element); + } + }; + } + + public static SetView symmetricDifference(Set set1, Set set2) { + Preconditions.checkNotNull(set1, "set1"); + Preconditions.checkNotNull(set2, "set2"); + return Sets.difference(Sets.union(set1, set2), Sets.intersection(set1, set2)); + } + + public static Set filter(Set unfiltered, Predicate predicate) { + if (unfiltered instanceof SortedSet) { + return Sets.filter((SortedSet)unfiltered, predicate); + } + if (unfiltered instanceof FilteredSet) { + FilteredSet filtered = (FilteredSet)unfiltered; + Predicate combinedPredicate = Predicates.and(filtered.predicate, predicate); + return new FilteredSet((Set)filtered.unfiltered, combinedPredicate); + } + return new FilteredSet(Preconditions.checkNotNull(unfiltered), Preconditions.checkNotNull(predicate)); + } + + public static SortedSet filter(SortedSet unfiltered, Predicate predicate) { + return Platform.setsFilterSortedSet(unfiltered, predicate); + } + + static SortedSet filterSortedIgnoreNavigable(SortedSet unfiltered, Predicate predicate) { + if (unfiltered instanceof FilteredSet) { + FilteredSet filtered = (FilteredSet)((Object)unfiltered); + Predicate combinedPredicate = Predicates.and(filtered.predicate, predicate); + return new FilteredSortedSet((SortedSet)filtered.unfiltered, combinedPredicate); + } + return new FilteredSortedSet(Preconditions.checkNotNull(unfiltered), Preconditions.checkNotNull(predicate)); + } + + @GwtIncompatible(value="NavigableSet") + public static NavigableSet filter(NavigableSet unfiltered, Predicate predicate) { + if (unfiltered instanceof FilteredSet) { + FilteredSet filtered = (FilteredSet)((Object)unfiltered); + Predicate combinedPredicate = Predicates.and(filtered.predicate, predicate); + return new FilteredNavigableSet((NavigableSet)filtered.unfiltered, combinedPredicate); + } + return new FilteredNavigableSet(Preconditions.checkNotNull(unfiltered), Preconditions.checkNotNull(predicate)); + } + + public static Set> cartesianProduct(List> sets) { + return CartesianSet.create(sets); + } + + public static Set> cartesianProduct(Set ... sets) { + return Sets.cartesianProduct(Arrays.asList(sets)); + } + + @GwtCompatible(serializable=false) + public static Set> powerSet(Set set) { + return new PowerSet(set); + } + + static int hashCodeImpl(Set s) { + int hashCode = 0; + for (Object o : s) { + hashCode += o != null ? o.hashCode() : 0; + hashCode = ~(~hashCode); + } + return hashCode; + } + + static boolean equalsImpl(Set s, @Nullable Object object) { + if (s == object) { + return true; + } + if (object instanceof Set) { + Set o = (Set)object; + try { + return s.size() == o.size() && s.containsAll(o); + } + catch (NullPointerException ignored) { + return false; + } + catch (ClassCastException ignored) { + return false; + } + } + return false; + } + + @GwtIncompatible(value="NavigableSet") + public static NavigableSet unmodifiableNavigableSet(NavigableSet set) { + if (set instanceof ImmutableSortedSet || set instanceof UnmodifiableNavigableSet) { + return set; + } + return new UnmodifiableNavigableSet(set); + } + + @GwtIncompatible(value="NavigableSet") + public static NavigableSet synchronizedNavigableSet(NavigableSet navigableSet) { + return Synchronized.navigableSet(navigableSet); + } + + static boolean removeAllImpl(Set set, Iterator iterator) { + boolean changed = false; + while (iterator.hasNext()) { + changed |= set.remove(iterator.next()); + } + return changed; + } + + static boolean removeAllImpl(Set set, Collection collection) { + Preconditions.checkNotNull(collection); + if (collection instanceof Multiset) { + collection = ((Multiset)collection).elementSet(); + } + if (collection instanceof Set && collection.size() > set.size()) { + return Iterators.removeAll(set.iterator(), collection); + } + return Sets.removeAllImpl(set, collection.iterator()); + } + + @GwtIncompatible(value="NavigableSet") + static class DescendingSet + extends ForwardingNavigableSet { + private final NavigableSet forward; + + DescendingSet(NavigableSet forward) { + this.forward = forward; + } + + @Override + protected NavigableSet delegate() { + return this.forward; + } + + @Override + public E lower(E e) { + return this.forward.higher(e); + } + + @Override + public E floor(E e) { + return this.forward.ceiling(e); + } + + @Override + public E ceiling(E e) { + return this.forward.floor(e); + } + + @Override + public E higher(E e) { + return this.forward.lower(e); + } + + @Override + public E pollFirst() { + return this.forward.pollLast(); + } + + @Override + public E pollLast() { + return this.forward.pollFirst(); + } + + @Override + public NavigableSet descendingSet() { + return this.forward; + } + + @Override + public Iterator descendingIterator() { + return this.forward.iterator(); + } + + @Override + public NavigableSet subSet(E fromElement, boolean fromInclusive, E toElement, boolean toInclusive) { + return this.forward.subSet(toElement, toInclusive, fromElement, fromInclusive).descendingSet(); + } + + @Override + public NavigableSet headSet(E toElement, boolean inclusive) { + return this.forward.tailSet(toElement, inclusive).descendingSet(); + } + + @Override + public NavigableSet tailSet(E fromElement, boolean inclusive) { + return this.forward.headSet(fromElement, inclusive).descendingSet(); + } + + @Override + public Comparator comparator() { + Comparator forwardComparator = this.forward.comparator(); + if (forwardComparator == null) { + return Ordering.natural().reverse(); + } + return DescendingSet.reverse(forwardComparator); + } + + private static Ordering reverse(Comparator forward) { + return Ordering.from(forward).reverse(); + } + + @Override + public E first() { + return this.forward.last(); + } + + @Override + public SortedSet headSet(E toElement) { + return this.standardHeadSet(toElement); + } + + @Override + public E last() { + return this.forward.first(); + } + + @Override + public SortedSet subSet(E fromElement, E toElement) { + return this.standardSubSet(fromElement, toElement); + } + + @Override + public SortedSet tailSet(E fromElement) { + return this.standardTailSet(fromElement); + } + + @Override + public Iterator iterator() { + return this.forward.descendingIterator(); + } + + @Override + public Object[] toArray() { + return this.standardToArray(); + } + + @Override + public T[] toArray(T[] array) { + return this.standardToArray(array); + } + + @Override + public String toString() { + return this.standardToString(); + } + } + + @GwtIncompatible(value="NavigableSet") + static final class UnmodifiableNavigableSet + extends ForwardingSortedSet + implements NavigableSet, + Serializable { + private final NavigableSet delegate; + private transient UnmodifiableNavigableSet descendingSet; + private static final long serialVersionUID = 0L; + + UnmodifiableNavigableSet(NavigableSet delegate) { + this.delegate = Preconditions.checkNotNull(delegate); + } + + @Override + protected SortedSet delegate() { + return Collections.unmodifiableSortedSet(this.delegate); + } + + @Override + public E lower(E e) { + return this.delegate.lower(e); + } + + @Override + public E floor(E e) { + return this.delegate.floor(e); + } + + @Override + public E ceiling(E e) { + return this.delegate.ceiling(e); + } + + @Override + public E higher(E e) { + return this.delegate.higher(e); + } + + @Override + public E pollFirst() { + throw new UnsupportedOperationException(); + } + + @Override + public E pollLast() { + throw new UnsupportedOperationException(); + } + + @Override + public NavigableSet descendingSet() { + UnmodifiableNavigableSet result = this.descendingSet; + if (result == null) { + result = this.descendingSet = new UnmodifiableNavigableSet(this.delegate.descendingSet()); + result.descendingSet = this; + } + return result; + } + + @Override + public Iterator descendingIterator() { + return Iterators.unmodifiableIterator(this.delegate.descendingIterator()); + } + + @Override + public NavigableSet subSet(E fromElement, boolean fromInclusive, E toElement, boolean toInclusive) { + return Sets.unmodifiableNavigableSet(this.delegate.subSet(fromElement, fromInclusive, toElement, toInclusive)); + } + + @Override + public NavigableSet headSet(E toElement, boolean inclusive) { + return Sets.unmodifiableNavigableSet(this.delegate.headSet(toElement, inclusive)); + } + + @Override + public NavigableSet tailSet(E fromElement, boolean inclusive) { + return Sets.unmodifiableNavigableSet(this.delegate.tailSet(fromElement, inclusive)); + } + } + + private static final class PowerSet + extends AbstractSet> { + final ImmutableMap inputSet; + + PowerSet(Set input) { + ImmutableMap.Builder builder = ImmutableMap.builder(); + int i = 0; + for (E e : Preconditions.checkNotNull(input)) { + builder.put(e, i++); + } + this.inputSet = builder.build(); + Preconditions.checkArgument(this.inputSet.size() <= 30, "Too many elements to create power set: %s > 30", this.inputSet.size()); + } + + @Override + public int size() { + return 1 << this.inputSet.size(); + } + + @Override + public boolean isEmpty() { + return false; + } + + @Override + public Iterator> iterator() { + return new AbstractIndexedListIterator>(this.size()){ + + @Override + protected Set get(int setBits) { + return new SubSet(PowerSet.this.inputSet, setBits); + } + }; + } + + @Override + public boolean contains(@Nullable Object obj) { + if (obj instanceof Set) { + Set set = (Set)obj; + return ((AbstractCollection)((Object)this.inputSet.keySet())).containsAll(set); + } + return false; + } + + @Override + public boolean equals(@Nullable Object obj) { + if (obj instanceof PowerSet) { + PowerSet that = (PowerSet)obj; + return this.inputSet.equals(that.inputSet); + } + return super.equals(obj); + } + + @Override + public int hashCode() { + return ((ImmutableSet)this.inputSet.keySet()).hashCode() << this.inputSet.size() - 1; + } + + @Override + public String toString() { + String string = String.valueOf(String.valueOf(this.inputSet)); + return new StringBuilder(10 + string.length()).append("powerSet(").append(string).append(")").toString(); + } + } + + private static final class SubSet + extends AbstractSet { + private final ImmutableMap inputSet; + private final int mask; + + SubSet(ImmutableMap inputSet, int mask) { + this.inputSet = inputSet; + this.mask = mask; + } + + @Override + public Iterator iterator() { + return new UnmodifiableIterator(){ + final ImmutableList elements; + int remainingSetBits; + { + this.elements = ((ImmutableCollection)((Object)SubSet.this.inputSet.keySet())).asList(); + this.remainingSetBits = SubSet.this.mask; + } + + @Override + public boolean hasNext() { + return this.remainingSetBits != 0; + } + + @Override + public E next() { + int index = Integer.numberOfTrailingZeros(this.remainingSetBits); + if (index == 32) { + throw new NoSuchElementException(); + } + this.remainingSetBits &= ~(1 << index); + return this.elements.get(index); + } + }; + } + + @Override + public int size() { + return Integer.bitCount(this.mask); + } + + @Override + public boolean contains(@Nullable Object o) { + Integer index = this.inputSet.get(o); + return index != null && (this.mask & 1 << index) != 0; + } + } + + private static final class CartesianSet + extends ForwardingCollection> + implements Set> { + private final transient ImmutableList> axes; + private final transient CartesianList delegate; + + static Set> create(List> sets) { + ImmutableList.Builder axesBuilder = new ImmutableList.Builder(sets.size()); + for (Set set : sets) { + ImmutableSet copy = ImmutableSet.copyOf(set); + if (copy.isEmpty()) { + return ImmutableSet.of(); + } + axesBuilder.add(copy); + } + ImmutableCollection axes = axesBuilder.build(); + ImmutableList immutableList = new ImmutableList>((ImmutableList)axes){ + final /* synthetic */ ImmutableList val$axes; + { + this.val$axes = immutableList; + } + + @Override + public int size() { + return this.val$axes.size(); + } + + @Override + public List get(int index) { + return ((ImmutableSet)this.val$axes.get(index)).asList(); + } + + @Override + boolean isPartialView() { + return true; + } + }; + return new CartesianSet(axes, new CartesianList(immutableList)); + } + + private CartesianSet(ImmutableList> axes, CartesianList delegate) { + this.axes = axes; + this.delegate = delegate; + } + + @Override + protected Collection> delegate() { + return this.delegate; + } + + @Override + public boolean equals(@Nullable Object object) { + if (object instanceof CartesianSet) { + CartesianSet that = (CartesianSet)object; + return this.axes.equals(that.axes); + } + return super.equals(object); + } + + @Override + public int hashCode() { + int adjust = this.size() - 1; + for (int i = 0; i < this.axes.size(); ++i) { + adjust *= 31; + adjust = ~(~adjust); + } + int hash = 1; + for (Set set : this.axes) { + hash = 31 * hash + this.size() / set.size() * set.hashCode(); + hash = ~(~hash); + } + return ~(~(hash += adjust)); + } + } + + @GwtIncompatible(value="NavigableSet") + private static class FilteredNavigableSet + extends FilteredSortedSet + implements NavigableSet { + FilteredNavigableSet(NavigableSet unfiltered, Predicate predicate) { + super(unfiltered, predicate); + } + + NavigableSet unfiltered() { + return (NavigableSet)this.unfiltered; + } + + @Override + @Nullable + public E lower(E e) { + return Iterators.getNext(this.headSet(e, false).descendingIterator(), null); + } + + @Override + @Nullable + public E floor(E e) { + return Iterators.getNext(this.headSet(e, true).descendingIterator(), null); + } + + @Override + public E ceiling(E e) { + return Iterables.getFirst(this.tailSet(e, true), null); + } + + @Override + public E higher(E e) { + return Iterables.getFirst(this.tailSet(e, false), null); + } + + @Override + public E pollFirst() { + return Iterables.removeFirstMatching(this.unfiltered(), this.predicate); + } + + @Override + public E pollLast() { + return Iterables.removeFirstMatching(this.unfiltered().descendingSet(), this.predicate); + } + + @Override + public NavigableSet descendingSet() { + return Sets.filter(this.unfiltered().descendingSet(), this.predicate); + } + + @Override + public Iterator descendingIterator() { + return Iterators.filter(this.unfiltered().descendingIterator(), this.predicate); + } + + @Override + public E last() { + return this.descendingIterator().next(); + } + + @Override + public NavigableSet subSet(E fromElement, boolean fromInclusive, E toElement, boolean toInclusive) { + return Sets.filter(this.unfiltered().subSet(fromElement, fromInclusive, toElement, toInclusive), this.predicate); + } + + @Override + public NavigableSet headSet(E toElement, boolean inclusive) { + return Sets.filter(this.unfiltered().headSet(toElement, inclusive), this.predicate); + } + + @Override + public NavigableSet tailSet(E fromElement, boolean inclusive) { + return Sets.filter(this.unfiltered().tailSet(fromElement, inclusive), this.predicate); + } + } + + private static class FilteredSortedSet + extends FilteredSet + implements SortedSet { + FilteredSortedSet(SortedSet unfiltered, Predicate predicate) { + super(unfiltered, predicate); + } + + @Override + public Comparator comparator() { + return ((SortedSet)this.unfiltered).comparator(); + } + + @Override + public SortedSet subSet(E fromElement, E toElement) { + return new FilteredSortedSet(((SortedSet)this.unfiltered).subSet(fromElement, toElement), this.predicate); + } + + @Override + public SortedSet headSet(E toElement) { + return new FilteredSortedSet(((SortedSet)this.unfiltered).headSet(toElement), this.predicate); + } + + @Override + public SortedSet tailSet(E fromElement) { + return new FilteredSortedSet(((SortedSet)this.unfiltered).tailSet(fromElement), this.predicate); + } + + @Override + public E first() { + return this.iterator().next(); + } + + @Override + public E last() { + SortedSet sortedUnfiltered = (SortedSet)this.unfiltered; + Object element; + while (!this.predicate.apply(element = sortedUnfiltered.last())) { + sortedUnfiltered = sortedUnfiltered.headSet(element); + } + return element; + } + } + + private static class FilteredSet + extends Collections2.FilteredCollection + implements Set { + FilteredSet(Set unfiltered, Predicate predicate) { + super(unfiltered, predicate); + } + + @Override + public boolean equals(@Nullable Object object) { + return Sets.equalsImpl(this, object); + } + + @Override + public int hashCode() { + return Sets.hashCodeImpl(this); + } + } + + public static abstract class SetView + extends AbstractSet { + private SetView() { + } + + public ImmutableSet immutableCopy() { + return ImmutableSet.copyOf(this); + } + + public > S copyInto(S set) { + set.addAll(this); + return set; + } + } + + static abstract class ImprovedAbstractSet + extends AbstractSet { + ImprovedAbstractSet() { + } + + @Override + public boolean removeAll(Collection c) { + return Sets.removeAllImpl(this, c); + } + + @Override + public boolean retainAll(Collection c) { + return super.retainAll(Preconditions.checkNotNull(c)); + } + } +} diff --git a/src/com/google/common/collect/SingletonImmutableBiMap.java b/src/com/google/common/collect/SingletonImmutableBiMap.java new file mode 100644 index 0000000..96a1472 --- /dev/null +++ b/src/com/google/common/collect/SingletonImmutableBiMap.java @@ -0,0 +1,81 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.collect.CollectPreconditions; +import com.google.common.collect.ImmutableBiMap; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Maps; +import java.util.Map; +import javax.annotation.Nullable; + +@GwtCompatible(serializable=true, emulated=true) +final class SingletonImmutableBiMap +extends ImmutableBiMap { + final transient K singleKey; + final transient V singleValue; + transient ImmutableBiMap inverse; + + SingletonImmutableBiMap(K singleKey, V singleValue) { + CollectPreconditions.checkEntryNotNull(singleKey, singleValue); + this.singleKey = singleKey; + this.singleValue = singleValue; + } + + private SingletonImmutableBiMap(K singleKey, V singleValue, ImmutableBiMap inverse) { + this.singleKey = singleKey; + this.singleValue = singleValue; + this.inverse = inverse; + } + + SingletonImmutableBiMap(Map.Entry entry) { + this(entry.getKey(), entry.getValue()); + } + + @Override + public V get(@Nullable Object key) { + return this.singleKey.equals(key) ? (V)this.singleValue : null; + } + + @Override + public int size() { + return 1; + } + + @Override + public boolean containsKey(@Nullable Object key) { + return this.singleKey.equals(key); + } + + @Override + public boolean containsValue(@Nullable Object value) { + return this.singleValue.equals(value); + } + + @Override + boolean isPartialView() { + return false; + } + + @Override + ImmutableSet> createEntrySet() { + return ImmutableSet.of(Maps.immutableEntry(this.singleKey, this.singleValue)); + } + + @Override + ImmutableSet createKeySet() { + return ImmutableSet.of(this.singleKey); + } + + @Override + public ImmutableBiMap inverse() { + ImmutableBiMap result = this.inverse; + if (result == null) { + this.inverse = new SingletonImmutableBiMap(this.singleValue, this.singleKey, this); + return this.inverse; + } + return result; + } +} diff --git a/src/com/google/common/collect/SingletonImmutableList.java b/src/com/google/common/collect/SingletonImmutableList.java new file mode 100644 index 0000000..47dc98f --- /dev/null +++ b/src/com/google/common/collect/SingletonImmutableList.java @@ -0,0 +1,103 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Preconditions; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.Iterators; +import com.google.common.collect.UnmodifiableIterator; +import java.util.List; +import javax.annotation.Nullable; + +@GwtCompatible(serializable=true, emulated=true) +final class SingletonImmutableList +extends ImmutableList { + final transient E element; + + SingletonImmutableList(E element) { + this.element = Preconditions.checkNotNull(element); + } + + @Override + public E get(int index) { + Preconditions.checkElementIndex(index, 1); + return this.element; + } + + @Override + public int indexOf(@Nullable Object object) { + return this.element.equals(object) ? 0 : -1; + } + + @Override + public UnmodifiableIterator iterator() { + return Iterators.singletonIterator(this.element); + } + + @Override + public int lastIndexOf(@Nullable Object object) { + return this.indexOf(object); + } + + @Override + public int size() { + return 1; + } + + @Override + public ImmutableList subList(int fromIndex, int toIndex) { + Preconditions.checkPositionIndexes(fromIndex, toIndex, 1); + return fromIndex == toIndex ? ImmutableList.of() : this; + } + + @Override + public ImmutableList reverse() { + return this; + } + + @Override + public boolean contains(@Nullable Object object) { + return this.element.equals(object); + } + + @Override + public boolean equals(@Nullable Object object) { + if (object == this) { + return true; + } + if (object instanceof List) { + List that = (List)object; + return that.size() == 1 && this.element.equals(that.get(0)); + } + return false; + } + + @Override + public int hashCode() { + return 31 + this.element.hashCode(); + } + + @Override + public String toString() { + String elementToString = this.element.toString(); + return new StringBuilder(elementToString.length() + 2).append('[').append(elementToString).append(']').toString(); + } + + @Override + public boolean isEmpty() { + return false; + } + + @Override + boolean isPartialView() { + return false; + } + + @Override + int copyIntoArray(Object[] dst, int offset) { + dst[offset] = this.element; + return offset + 1; + } +} diff --git a/src/com/google/common/collect/SingletonImmutableSet.java b/src/com/google/common/collect/SingletonImmutableSet.java new file mode 100644 index 0000000..e2c3836 --- /dev/null +++ b/src/com/google/common/collect/SingletonImmutableSet.java @@ -0,0 +1,91 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Preconditions; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Iterators; +import com.google.common.collect.UnmodifiableIterator; +import java.util.Set; +import javax.annotation.Nullable; + +@GwtCompatible(serializable=true, emulated=true) +final class SingletonImmutableSet +extends ImmutableSet { + final transient E element; + private transient int cachedHashCode; + + SingletonImmutableSet(E element) { + this.element = Preconditions.checkNotNull(element); + } + + SingletonImmutableSet(E element, int hashCode) { + this.element = element; + this.cachedHashCode = hashCode; + } + + @Override + public int size() { + return 1; + } + + @Override + public boolean isEmpty() { + return false; + } + + @Override + public boolean contains(Object target) { + return this.element.equals(target); + } + + @Override + public UnmodifiableIterator iterator() { + return Iterators.singletonIterator(this.element); + } + + @Override + boolean isPartialView() { + return false; + } + + @Override + int copyIntoArray(Object[] dst, int offset) { + dst[offset] = this.element; + return offset + 1; + } + + @Override + public boolean equals(@Nullable Object object) { + if (object == this) { + return true; + } + if (object instanceof Set) { + Set that = (Set)object; + return that.size() == 1 && this.element.equals(that.iterator().next()); + } + return false; + } + + @Override + public final int hashCode() { + int code = this.cachedHashCode; + if (code == 0) { + this.cachedHashCode = code = this.element.hashCode(); + } + return code; + } + + @Override + boolean isHashCodeFast() { + return this.cachedHashCode != 0; + } + + @Override + public String toString() { + String elementToString = this.element.toString(); + return new StringBuilder(elementToString.length() + 2).append('[').append(elementToString).append(']').toString(); + } +} diff --git a/src/com/google/common/collect/SingletonImmutableTable.java b/src/com/google/common/collect/SingletonImmutableTable.java new file mode 100644 index 0000000..05f51fd --- /dev/null +++ b/src/com/google/common/collect/SingletonImmutableTable.java @@ -0,0 +1,62 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Preconditions; +import com.google.common.collect.ImmutableCollection; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.ImmutableTable; +import com.google.common.collect.Table; +import java.util.Map; + +@GwtCompatible +class SingletonImmutableTable +extends ImmutableTable { + final R singleRowKey; + final C singleColumnKey; + final V singleValue; + + SingletonImmutableTable(R rowKey, C columnKey, V value) { + this.singleRowKey = Preconditions.checkNotNull(rowKey); + this.singleColumnKey = Preconditions.checkNotNull(columnKey); + this.singleValue = Preconditions.checkNotNull(value); + } + + SingletonImmutableTable(Table.Cell cell) { + this(cell.getRowKey(), cell.getColumnKey(), cell.getValue()); + } + + @Override + public ImmutableMap column(C columnKey) { + Preconditions.checkNotNull(columnKey); + return this.containsColumn(columnKey) ? ImmutableMap.of(this.singleRowKey, this.singleValue) : ImmutableMap.of(); + } + + @Override + public ImmutableMap> columnMap() { + return ImmutableMap.of(this.singleColumnKey, ImmutableMap.of(this.singleRowKey, this.singleValue)); + } + + @Override + public ImmutableMap> rowMap() { + return ImmutableMap.of(this.singleRowKey, ImmutableMap.of(this.singleColumnKey, this.singleValue)); + } + + @Override + public int size() { + return 1; + } + + @Override + ImmutableSet> createCellSet() { + return ImmutableSet.of(SingletonImmutableTable.cellOf(this.singleRowKey, this.singleColumnKey, this.singleValue)); + } + + @Override + ImmutableCollection createValues() { + return ImmutableSet.of(this.singleValue); + } +} diff --git a/src/com/google/common/collect/SortedIterable.java b/src/com/google/common/collect/SortedIterable.java new file mode 100644 index 0000000..ca065b1 --- /dev/null +++ b/src/com/google/common/collect/SortedIterable.java @@ -0,0 +1,17 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import java.util.Comparator; +import java.util.Iterator; + +@GwtCompatible +interface SortedIterable +extends Iterable { + public Comparator comparator(); + + @Override + public Iterator iterator(); +} diff --git a/src/com/google/common/collect/SortedIterables.java b/src/com/google/common/collect/SortedIterables.java new file mode 100644 index 0000000..bc9adcb --- /dev/null +++ b/src/com/google/common/collect/SortedIterables.java @@ -0,0 +1,39 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Preconditions; +import com.google.common.collect.Ordering; +import com.google.common.collect.SortedIterable; +import java.util.Comparator; +import java.util.SortedSet; + +@GwtCompatible +final class SortedIterables { + private SortedIterables() { + } + + public static boolean hasSameComparator(Comparator comparator, Iterable elements) { + Comparator comparator2; + Preconditions.checkNotNull(comparator); + Preconditions.checkNotNull(elements); + if (elements instanceof SortedSet) { + comparator2 = SortedIterables.comparator((SortedSet)elements); + } else if (elements instanceof SortedIterable) { + comparator2 = ((SortedIterable)elements).comparator(); + } else { + return false; + } + return comparator.equals(comparator2); + } + + public static Comparator comparator(SortedSet sortedSet) { + Comparator result = sortedSet.comparator(); + if (result == null) { + result = Ordering.natural(); + } + return result; + } +} diff --git a/src/com/google/common/collect/SortedLists.java b/src/com/google/common/collect/SortedLists.java new file mode 100644 index 0000000..e1fe328 --- /dev/null +++ b/src/com/google/common/collect/SortedLists.java @@ -0,0 +1,157 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Function; +import com.google.common.base.Preconditions; +import com.google.common.collect.Lists; +import com.google.common.collect.Ordering; +import java.util.Comparator; +import java.util.List; +import java.util.RandomAccess; +import javax.annotation.Nullable; + +@GwtCompatible +@Beta +final class SortedLists { + private SortedLists() { + } + + public static int binarySearch(List list, E e, KeyPresentBehavior presentBehavior, KeyAbsentBehavior absentBehavior) { + Preconditions.checkNotNull(e); + return SortedLists.binarySearch(list, Preconditions.checkNotNull(e), Ordering.natural(), presentBehavior, absentBehavior); + } + + public static int binarySearch(List list, Function keyFunction, @Nullable K key, KeyPresentBehavior presentBehavior, KeyAbsentBehavior absentBehavior) { + return SortedLists.binarySearch(list, keyFunction, key, Ordering.natural(), presentBehavior, absentBehavior); + } + + public static int binarySearch(List list, Function keyFunction, @Nullable K key, Comparator keyComparator, KeyPresentBehavior presentBehavior, KeyAbsentBehavior absentBehavior) { + return SortedLists.binarySearch(Lists.transform(list, keyFunction), key, keyComparator, presentBehavior, absentBehavior); + } + + public static int binarySearch(List list, @Nullable E key, Comparator comparator, KeyPresentBehavior presentBehavior, KeyAbsentBehavior absentBehavior) { + Preconditions.checkNotNull(comparator); + Preconditions.checkNotNull(list); + Preconditions.checkNotNull(presentBehavior); + Preconditions.checkNotNull(absentBehavior); + if (!(list instanceof RandomAccess)) { + list = Lists.newArrayList(list); + } + int lower = 0; + int upper = list.size() - 1; + while (lower <= upper) { + int middle = lower + upper >>> 1; + int c = comparator.compare(key, list.get(middle)); + if (c < 0) { + upper = middle - 1; + continue; + } + if (c > 0) { + lower = middle + 1; + continue; + } + return lower + presentBehavior.resultIndex(comparator, key, list.subList(lower, upper + 1), middle - lower); + } + return absentBehavior.resultIndex(lower); + } + + public static enum KeyAbsentBehavior { + NEXT_LOWER{ + + @Override + int resultIndex(int higherIndex) { + return higherIndex - 1; + } + } + , + NEXT_HIGHER{ + + @Override + public int resultIndex(int higherIndex) { + return higherIndex; + } + } + , + INVERTED_INSERTION_INDEX{ + + @Override + public int resultIndex(int higherIndex) { + return ~higherIndex; + } + }; + + + abstract int resultIndex(int var1); + } + + public static enum KeyPresentBehavior { + ANY_PRESENT{ + + @Override + int resultIndex(Comparator comparator, E key, List list, int foundIndex) { + return foundIndex; + } + } + , + LAST_PRESENT{ + + @Override + int resultIndex(Comparator comparator, E key, List list, int foundIndex) { + int lower = foundIndex; + int upper = list.size() - 1; + while (lower < upper) { + int middle = lower + upper + 1 >>> 1; + int c = comparator.compare(list.get(middle), key); + if (c > 0) { + upper = middle - 1; + continue; + } + lower = middle; + } + return lower; + } + } + , + FIRST_PRESENT{ + + @Override + int resultIndex(Comparator comparator, E key, List list, int foundIndex) { + int lower = 0; + int upper = foundIndex; + while (lower < upper) { + int middle = lower + upper >>> 1; + int c = comparator.compare(list.get(middle), key); + if (c < 0) { + lower = middle + 1; + continue; + } + upper = middle; + } + return lower; + } + } + , + FIRST_AFTER{ + + @Override + public int resultIndex(Comparator comparator, E key, List list, int foundIndex) { + return LAST_PRESENT.resultIndex(comparator, key, list, foundIndex) + 1; + } + } + , + LAST_BEFORE{ + + @Override + public int resultIndex(Comparator comparator, E key, List list, int foundIndex) { + return FIRST_PRESENT.resultIndex(comparator, key, list, foundIndex) - 1; + } + }; + + + abstract int resultIndex(Comparator var1, E var2, List var3, int var4); + } +} diff --git a/src/com/google/common/collect/SortedMapDifference.java b/src/com/google/common/collect/SortedMapDifference.java new file mode 100644 index 0000000..5935a5e --- /dev/null +++ b/src/com/google/common/collect/SortedMapDifference.java @@ -0,0 +1,24 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.collect.MapDifference; +import java.util.SortedMap; + +@GwtCompatible +public interface SortedMapDifference +extends MapDifference { + @Override + public SortedMap entriesOnlyOnLeft(); + + @Override + public SortedMap entriesOnlyOnRight(); + + @Override + public SortedMap entriesInCommon(); + + @Override + public SortedMap> entriesDiffering(); +} diff --git a/src/com/google/common/collect/SortedMultiset.java b/src/com/google/common/collect/SortedMultiset.java new file mode 100644 index 0000000..dee92ea --- /dev/null +++ b/src/com/google/common/collect/SortedMultiset.java @@ -0,0 +1,49 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.collect.BoundType; +import com.google.common.collect.Multiset; +import com.google.common.collect.SortedIterable; +import com.google.common.collect.SortedMultisetBridge; +import java.util.Comparator; +import java.util.Iterator; +import java.util.NavigableSet; +import java.util.Set; + +@Beta +@GwtCompatible(emulated=true) +public interface SortedMultiset +extends SortedMultisetBridge, +SortedIterable { + @Override + public Comparator comparator(); + + public Multiset.Entry firstEntry(); + + public Multiset.Entry lastEntry(); + + public Multiset.Entry pollFirstEntry(); + + public Multiset.Entry pollLastEntry(); + + @Override + public NavigableSet elementSet(); + + @Override + public Set> entrySet(); + + @Override + public Iterator iterator(); + + public SortedMultiset descendingMultiset(); + + public SortedMultiset headMultiset(E var1, BoundType var2); + + public SortedMultiset subMultiset(E var1, BoundType var2, E var3, BoundType var4); + + public SortedMultiset tailMultiset(E var1, BoundType var2); +} diff --git a/src/com/google/common/collect/SortedMultisetBridge.java b/src/com/google/common/collect/SortedMultisetBridge.java new file mode 100644 index 0000000..3d04227 --- /dev/null +++ b/src/com/google/common/collect/SortedMultisetBridge.java @@ -0,0 +1,13 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.collect.Multiset; +import java.util.SortedSet; + +interface SortedMultisetBridge +extends Multiset { + @Override + public SortedSet elementSet(); +} diff --git a/src/com/google/common/collect/SortedMultisets.java b/src/com/google/common/collect/SortedMultisets.java new file mode 100644 index 0000000..9459981 --- /dev/null +++ b/src/com/google/common/collect/SortedMultisets.java @@ -0,0 +1,143 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.collect.BoundType; +import com.google.common.collect.Multiset; +import com.google.common.collect.Multisets; +import com.google.common.collect.SortedMultiset; +import java.util.Comparator; +import java.util.Iterator; +import java.util.NavigableSet; +import java.util.NoSuchElementException; +import java.util.SortedSet; +import javax.annotation.Nullable; + +@GwtCompatible(emulated=true) +final class SortedMultisets { + private SortedMultisets() { + } + + private static E getElementOrThrow(Multiset.Entry entry) { + if (entry == null) { + throw new NoSuchElementException(); + } + return entry.getElement(); + } + + private static E getElementOrNull(@Nullable Multiset.Entry entry) { + return entry == null ? null : (E)entry.getElement(); + } + + @GwtIncompatible(value="Navigable") + static class NavigableElementSet + extends ElementSet + implements NavigableSet { + NavigableElementSet(SortedMultiset multiset) { + super(multiset); + } + + @Override + public E lower(E e) { + return (E)SortedMultisets.getElementOrNull(this.multiset().headMultiset(e, BoundType.OPEN).lastEntry()); + } + + @Override + public E floor(E e) { + return (E)SortedMultisets.getElementOrNull(this.multiset().headMultiset(e, BoundType.CLOSED).lastEntry()); + } + + @Override + public E ceiling(E e) { + return (E)SortedMultisets.getElementOrNull(this.multiset().tailMultiset(e, BoundType.CLOSED).firstEntry()); + } + + @Override + public E higher(E e) { + return (E)SortedMultisets.getElementOrNull(this.multiset().tailMultiset(e, BoundType.OPEN).firstEntry()); + } + + @Override + public NavigableSet descendingSet() { + return new NavigableElementSet(this.multiset().descendingMultiset()); + } + + @Override + public Iterator descendingIterator() { + return this.descendingSet().iterator(); + } + + @Override + public E pollFirst() { + return (E)SortedMultisets.getElementOrNull(this.multiset().pollFirstEntry()); + } + + @Override + public E pollLast() { + return (E)SortedMultisets.getElementOrNull(this.multiset().pollLastEntry()); + } + + @Override + public NavigableSet subSet(E fromElement, boolean fromInclusive, E toElement, boolean toInclusive) { + return new NavigableElementSet(this.multiset().subMultiset(fromElement, BoundType.forBoolean(fromInclusive), toElement, BoundType.forBoolean(toInclusive))); + } + + @Override + public NavigableSet headSet(E toElement, boolean inclusive) { + return new NavigableElementSet(this.multiset().headMultiset(toElement, BoundType.forBoolean(inclusive))); + } + + @Override + public NavigableSet tailSet(E fromElement, boolean inclusive) { + return new NavigableElementSet(this.multiset().tailMultiset(fromElement, BoundType.forBoolean(inclusive))); + } + } + + static class ElementSet + extends Multisets.ElementSet + implements SortedSet { + private final SortedMultiset multiset; + + ElementSet(SortedMultiset multiset) { + this.multiset = multiset; + } + + @Override + final SortedMultiset multiset() { + return this.multiset; + } + + @Override + public Comparator comparator() { + return this.multiset().comparator(); + } + + @Override + public SortedSet subSet(E fromElement, E toElement) { + return this.multiset().subMultiset(fromElement, BoundType.CLOSED, toElement, BoundType.OPEN).elementSet(); + } + + @Override + public SortedSet headSet(E toElement) { + return this.multiset().headMultiset(toElement, BoundType.OPEN).elementSet(); + } + + @Override + public SortedSet tailSet(E fromElement) { + return this.multiset().tailMultiset(fromElement, BoundType.CLOSED).elementSet(); + } + + @Override + public E first() { + return (E)SortedMultisets.getElementOrThrow(this.multiset().firstEntry()); + } + + @Override + public E last() { + return (E)SortedMultisets.getElementOrThrow(this.multiset().lastEntry()); + } + } +} diff --git a/src/com/google/common/collect/SortedSetMultimap.java b/src/com/google/common/collect/SortedSetMultimap.java new file mode 100644 index 0000000..e6150a8 --- /dev/null +++ b/src/com/google/common/collect/SortedSetMultimap.java @@ -0,0 +1,30 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.collect.SetMultimap; +import java.util.Collection; +import java.util.Comparator; +import java.util.Map; +import java.util.SortedSet; +import javax.annotation.Nullable; + +@GwtCompatible +public interface SortedSetMultimap +extends SetMultimap { + @Override + public SortedSet get(@Nullable K var1); + + @Override + public SortedSet removeAll(@Nullable Object var1); + + @Override + public SortedSet replaceValues(K var1, Iterable var2); + + @Override + public Map> asMap(); + + public Comparator valueComparator(); +} diff --git a/src/com/google/common/collect/SparseImmutableTable.java b/src/com/google/common/collect/SparseImmutableTable.java new file mode 100644 index 0000000..315b160 --- /dev/null +++ b/src/com/google/common/collect/SparseImmutableTable.java @@ -0,0 +1,105 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.collect.ImmutableCollection; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Maps; +import com.google.common.collect.RegularImmutableTable; +import com.google.common.collect.Table; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.Map; +import javax.annotation.concurrent.Immutable; + +@GwtCompatible +@Immutable +final class SparseImmutableTable +extends RegularImmutableTable { + private final ImmutableMap> rowMap; + private final ImmutableMap> columnMap; + private final int[] iterationOrderRow; + private final int[] iterationOrderColumn; + + SparseImmutableTable(ImmutableList> cellList, ImmutableSet rowSpace, ImmutableSet columnSpace) { + HashMap rowIndex = Maps.newHashMap(); + LinkedHashMap rows = Maps.newLinkedHashMap(); + for (Object row : rowSpace) { + rowIndex.put(row, rows.size()); + rows.put(row, new LinkedHashMap()); + } + LinkedHashMap columns = Maps.newLinkedHashMap(); + for (Object col : columnSpace) { + columns.put(col, new LinkedHashMap()); + } + int[] iterationOrderRow = new int[cellList.size()]; + int[] iterationOrderColumn = new int[cellList.size()]; + for (int i = 0; i < cellList.size(); ++i) { + Table.Cell cell = (Table.Cell)cellList.get(i); + Object rowKey = cell.getRowKey(); + Object columnKey = cell.getColumnKey(); + Object value = cell.getValue(); + iterationOrderRow[i] = (Integer)rowIndex.get(rowKey); + Map thisRow = (Map)rows.get(rowKey); + iterationOrderColumn[i] = thisRow.size(); + Object oldValue = thisRow.put(columnKey, value); + if (oldValue != null) { + String string = String.valueOf(String.valueOf(rowKey)); + String string2 = String.valueOf(String.valueOf(columnKey)); + String string3 = String.valueOf(String.valueOf(value)); + String string4 = String.valueOf(String.valueOf(oldValue)); + throw new IllegalArgumentException(new StringBuilder(37 + string.length() + string2.length() + string3.length() + string4.length()).append("Duplicate value for row=").append(string).append(", column=").append(string2).append(": ").append(string3).append(", ").append(string4).toString()); + } + ((Map)columns.get(columnKey)).put(rowKey, value); + } + this.iterationOrderRow = iterationOrderRow; + this.iterationOrderColumn = iterationOrderColumn; + ImmutableMap.Builder rowBuilder = ImmutableMap.builder(); + for (Map.Entry row : rows.entrySet()) { + rowBuilder.put(row.getKey(), ImmutableMap.copyOf((Map)row.getValue())); + } + this.rowMap = rowBuilder.build(); + ImmutableMap.Builder columnBuilder = ImmutableMap.builder(); + for (Map.Entry col : columns.entrySet()) { + columnBuilder.put(col.getKey(), ImmutableMap.copyOf((Map)col.getValue())); + } + this.columnMap = columnBuilder.build(); + } + + @Override + public ImmutableMap> columnMap() { + return this.columnMap; + } + + @Override + public ImmutableMap> rowMap() { + return this.rowMap; + } + + @Override + public int size() { + return this.iterationOrderRow.length; + } + + @Override + Table.Cell getCell(int index) { + int rowIndex = this.iterationOrderRow[index]; + Map.Entry rowEntry = (Map.Entry)((ImmutableCollection)((Object)this.rowMap.entrySet())).asList().get(rowIndex); + ImmutableMap row = (ImmutableMap)rowEntry.getValue(); + int columnIndex = this.iterationOrderColumn[index]; + Map.Entry colEntry = (Map.Entry)((ImmutableCollection)((Object)row.entrySet())).asList().get(columnIndex); + return SparseImmutableTable.cellOf(rowEntry.getKey(), colEntry.getKey(), colEntry.getValue()); + } + + @Override + V getValue(int index) { + int rowIndex = this.iterationOrderRow[index]; + ImmutableMap row = (ImmutableMap)((ImmutableCollection)this.rowMap.values()).asList().get(rowIndex); + int columnIndex = this.iterationOrderColumn[index]; + return (V)((ImmutableCollection)row.values()).asList().get(columnIndex); + } +} diff --git a/src/com/google/common/collect/StandardRowSortedTable.java b/src/com/google/common/collect/StandardRowSortedTable.java new file mode 100644 index 0000000..c6b07ca --- /dev/null +++ b/src/com/google/common/collect/StandardRowSortedTable.java @@ -0,0 +1,97 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Preconditions; +import com.google.common.base.Supplier; +import com.google.common.collect.Maps; +import com.google.common.collect.RowSortedTable; +import com.google.common.collect.StandardTable; +import java.util.Comparator; +import java.util.Map; +import java.util.SortedMap; +import java.util.SortedSet; + +@GwtCompatible +class StandardRowSortedTable +extends StandardTable +implements RowSortedTable { + private static final long serialVersionUID = 0L; + + StandardRowSortedTable(SortedMap> backingMap, Supplier> factory) { + super(backingMap, factory); + } + + private SortedMap> sortedBackingMap() { + return (SortedMap)this.backingMap; + } + + @Override + public SortedSet rowKeySet() { + return (SortedSet)this.rowMap().keySet(); + } + + @Override + public SortedMap> rowMap() { + return (SortedMap)super.rowMap(); + } + + @Override + SortedMap> createRowMap() { + return new RowSortedMap(); + } + + private class RowSortedMap + extends StandardTable.RowMap + implements SortedMap> { + private RowSortedMap() { + super(StandardRowSortedTable.this); + } + + @Override + public SortedSet keySet() { + return (SortedSet)super.keySet(); + } + + @Override + SortedSet createKeySet() { + return new Maps.SortedKeySet(this); + } + + @Override + public Comparator comparator() { + return StandardRowSortedTable.this.sortedBackingMap().comparator(); + } + + @Override + public R firstKey() { + return StandardRowSortedTable.this.sortedBackingMap().firstKey(); + } + + @Override + public R lastKey() { + return StandardRowSortedTable.this.sortedBackingMap().lastKey(); + } + + @Override + public SortedMap> headMap(R toKey) { + Preconditions.checkNotNull(toKey); + return new StandardRowSortedTable(StandardRowSortedTable.this.sortedBackingMap().headMap(toKey), StandardRowSortedTable.this.factory).rowMap(); + } + + @Override + public SortedMap> subMap(R fromKey, R toKey) { + Preconditions.checkNotNull(fromKey); + Preconditions.checkNotNull(toKey); + return new StandardRowSortedTable(StandardRowSortedTable.this.sortedBackingMap().subMap(fromKey, toKey), StandardRowSortedTable.this.factory).rowMap(); + } + + @Override + public SortedMap> tailMap(R fromKey) { + Preconditions.checkNotNull(fromKey); + return new StandardRowSortedTable(StandardRowSortedTable.this.sortedBackingMap().tailMap(fromKey), StandardRowSortedTable.this.factory).rowMap(); + } + } +} diff --git a/src/com/google/common/collect/StandardTable.java b/src/com/google/common/collect/StandardTable.java new file mode 100644 index 0000000..553e84b --- /dev/null +++ b/src/com/google/common/collect/StandardTable.java @@ -0,0 +1,898 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Function; +import com.google.common.base.Preconditions; +import com.google.common.base.Predicate; +import com.google.common.base.Predicates; +import com.google.common.base.Supplier; +import com.google.common.collect.AbstractIterator; +import com.google.common.collect.AbstractMapEntry; +import com.google.common.collect.AbstractTable; +import com.google.common.collect.Collections2; +import com.google.common.collect.ForwardingMapEntry; +import com.google.common.collect.GwtTransient; +import com.google.common.collect.Iterators; +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import com.google.common.collect.Sets; +import com.google.common.collect.Table; +import com.google.common.collect.Tables; +import java.io.Serializable; +import java.util.Collection; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.Set; +import javax.annotation.Nullable; + +@GwtCompatible +class StandardTable +extends AbstractTable +implements Serializable { + @GwtTransient + final Map> backingMap; + @GwtTransient + final Supplier> factory; + private transient Set columnKeySet; + private transient Map> rowMap; + private transient ColumnMap columnMap; + private static final long serialVersionUID = 0L; + + StandardTable(Map> backingMap, Supplier> factory) { + this.backingMap = backingMap; + this.factory = factory; + } + + @Override + public boolean contains(@Nullable Object rowKey, @Nullable Object columnKey) { + return rowKey != null && columnKey != null && super.contains(rowKey, columnKey); + } + + @Override + public boolean containsColumn(@Nullable Object columnKey) { + if (columnKey == null) { + return false; + } + for (Map map : this.backingMap.values()) { + if (!Maps.safeContainsKey(map, columnKey)) continue; + return true; + } + return false; + } + + @Override + public boolean containsRow(@Nullable Object rowKey) { + return rowKey != null && Maps.safeContainsKey(this.backingMap, rowKey); + } + + @Override + public boolean containsValue(@Nullable Object value) { + return value != null && super.containsValue(value); + } + + @Override + public V get(@Nullable Object rowKey, @Nullable Object columnKey) { + return rowKey == null || columnKey == null ? null : (V)super.get(rowKey, columnKey); + } + + @Override + public boolean isEmpty() { + return this.backingMap.isEmpty(); + } + + @Override + public int size() { + int size = 0; + for (Map map : this.backingMap.values()) { + size += map.size(); + } + return size; + } + + @Override + public void clear() { + this.backingMap.clear(); + } + + private Map getOrCreate(R rowKey) { + Map map = this.backingMap.get(rowKey); + if (map == null) { + map = this.factory.get(); + this.backingMap.put(rowKey, map); + } + return map; + } + + @Override + public V put(R rowKey, C columnKey, V value) { + Preconditions.checkNotNull(rowKey); + Preconditions.checkNotNull(columnKey); + Preconditions.checkNotNull(value); + return this.getOrCreate(rowKey).put(columnKey, value); + } + + @Override + public V remove(@Nullable Object rowKey, @Nullable Object columnKey) { + if (rowKey == null || columnKey == null) { + return null; + } + Map map = Maps.safeGet(this.backingMap, rowKey); + if (map == null) { + return null; + } + V value = map.remove(columnKey); + if (map.isEmpty()) { + this.backingMap.remove(rowKey); + } + return value; + } + + private Map removeColumn(Object column) { + LinkedHashMap output = new LinkedHashMap(); + Iterator>> iterator = this.backingMap.entrySet().iterator(); + while (iterator.hasNext()) { + Map.Entry> entry = iterator.next(); + V value = entry.getValue().remove(column); + if (value == null) continue; + output.put(entry.getKey(), value); + if (!entry.getValue().isEmpty()) continue; + iterator.remove(); + } + return output; + } + + private boolean containsMapping(Object rowKey, Object columnKey, Object value) { + return value != null && value.equals(this.get(rowKey, columnKey)); + } + + private boolean removeMapping(Object rowKey, Object columnKey, Object value) { + if (this.containsMapping(rowKey, columnKey, value)) { + this.remove(rowKey, columnKey); + return true; + } + return false; + } + + @Override + public Set> cellSet() { + return super.cellSet(); + } + + @Override + Iterator> cellIterator() { + return new CellIterator(); + } + + @Override + public Map row(R rowKey) { + return new Row(rowKey); + } + + @Override + public Map column(C columnKey) { + return new Column(columnKey); + } + + @Override + public Set rowKeySet() { + return this.rowMap().keySet(); + } + + @Override + public Set columnKeySet() { + ColumnKeySet result = this.columnKeySet; + return result == null ? (this.columnKeySet = new ColumnKeySet()) : result; + } + + Iterator createColumnKeyIterator() { + return new ColumnKeyIterator(); + } + + @Override + public Collection values() { + return super.values(); + } + + @Override + public Map> rowMap() { + Map>> result = this.rowMap; + return result == null ? (this.rowMap = this.createRowMap()) : result; + } + + Map> createRowMap() { + return new RowMap(); + } + + @Override + public Map> columnMap() { + ColumnMap result = this.columnMap; + return result == null ? (this.columnMap = new ColumnMap()) : result; + } + + private class ColumnMap + extends Maps.ImprovedAbstractMap> { + private ColumnMap() { + } + + @Override + public Map get(Object key) { + return StandardTable.this.containsColumn(key) ? StandardTable.this.column(key) : null; + } + + @Override + public boolean containsKey(Object key) { + return StandardTable.this.containsColumn(key); + } + + @Override + public Map remove(Object key) { + return StandardTable.this.containsColumn(key) ? StandardTable.this.removeColumn(key) : null; + } + + @Override + public Set>> createEntrySet() { + return new ColumnMapEntrySet(); + } + + @Override + public Set keySet() { + return StandardTable.this.columnKeySet(); + } + + @Override + Collection> createValues() { + return new ColumnMapValues(); + } + + private class ColumnMapValues + extends Maps.Values> { + ColumnMapValues() { + super(ColumnMap.this); + } + + @Override + public boolean remove(Object obj) { + for (Map.Entry entry : ColumnMap.this.entrySet()) { + if (!((Map)entry.getValue()).equals(obj)) continue; + StandardTable.this.removeColumn(entry.getKey()); + return true; + } + return false; + } + + @Override + public boolean removeAll(Collection c) { + Preconditions.checkNotNull(c); + boolean changed = false; + for (Object columnKey : Lists.newArrayList(StandardTable.this.columnKeySet().iterator())) { + if (!c.contains(StandardTable.this.column(columnKey))) continue; + StandardTable.this.removeColumn(columnKey); + changed = true; + } + return changed; + } + + @Override + public boolean retainAll(Collection c) { + Preconditions.checkNotNull(c); + boolean changed = false; + for (Object columnKey : Lists.newArrayList(StandardTable.this.columnKeySet().iterator())) { + if (c.contains(StandardTable.this.column(columnKey))) continue; + StandardTable.this.removeColumn(columnKey); + changed = true; + } + return changed; + } + } + + class ColumnMapEntrySet + extends TableSet>> { + ColumnMapEntrySet() { + } + + @Override + public Iterator>> iterator() { + return Maps.asMapEntryIterator(StandardTable.this.columnKeySet(), new Function>(){ + + @Override + public Map apply(C columnKey) { + return StandardTable.this.column(columnKey); + } + }); + } + + @Override + public int size() { + return StandardTable.this.columnKeySet().size(); + } + + @Override + public boolean contains(Object obj) { + Map.Entry entry; + if (obj instanceof Map.Entry && StandardTable.this.containsColumn((entry = (Map.Entry)obj).getKey())) { + Object columnKey = entry.getKey(); + return ColumnMap.this.get(columnKey).equals(entry.getValue()); + } + return false; + } + + @Override + public boolean remove(Object obj) { + if (this.contains(obj)) { + Map.Entry entry = (Map.Entry)obj; + StandardTable.this.removeColumn(entry.getKey()); + return true; + } + return false; + } + + @Override + public boolean removeAll(Collection c) { + Preconditions.checkNotNull(c); + return Sets.removeAllImpl(this, c.iterator()); + } + + @Override + public boolean retainAll(Collection c) { + Preconditions.checkNotNull(c); + boolean changed = false; + for (Object columnKey : Lists.newArrayList(StandardTable.this.columnKeySet().iterator())) { + if (c.contains(Maps.immutableEntry(columnKey, StandardTable.this.column(columnKey)))) continue; + StandardTable.this.removeColumn(columnKey); + changed = true; + } + return changed; + } + } + } + + class RowMap + extends Maps.ImprovedAbstractMap> { + RowMap() { + } + + @Override + public boolean containsKey(Object key) { + return StandardTable.this.containsRow(key); + } + + @Override + public Map get(Object key) { + return StandardTable.this.containsRow(key) ? StandardTable.this.row(key) : null; + } + + @Override + public Map remove(Object key) { + return key == null ? null : StandardTable.this.backingMap.remove(key); + } + + @Override + protected Set>> createEntrySet() { + return new EntrySet(); + } + + class EntrySet + extends TableSet>> { + EntrySet() { + } + + @Override + public Iterator>> iterator() { + return Maps.asMapEntryIterator(StandardTable.this.backingMap.keySet(), new Function>(){ + + @Override + public Map apply(R rowKey) { + return StandardTable.this.row(rowKey); + } + }); + } + + @Override + public int size() { + return StandardTable.this.backingMap.size(); + } + + @Override + public boolean contains(Object obj) { + if (obj instanceof Map.Entry) { + Map.Entry entry = (Map.Entry)obj; + return entry.getKey() != null && entry.getValue() instanceof Map && Collections2.safeContains(StandardTable.this.backingMap.entrySet(), entry); + } + return false; + } + + @Override + public boolean remove(Object obj) { + if (obj instanceof Map.Entry) { + Map.Entry entry = (Map.Entry)obj; + return entry.getKey() != null && entry.getValue() instanceof Map && StandardTable.this.backingMap.entrySet().remove(entry); + } + return false; + } + } + } + + private class ColumnKeyIterator + extends AbstractIterator { + final Map seen; + final Iterator> mapIterator; + Iterator> entryIterator; + + private ColumnKeyIterator() { + this.seen = StandardTable.this.factory.get(); + this.mapIterator = StandardTable.this.backingMap.values().iterator(); + this.entryIterator = Iterators.emptyIterator(); + } + + @Override + protected C computeNext() { + while (true) { + if (this.entryIterator.hasNext()) { + Map.Entry entry = this.entryIterator.next(); + if (this.seen.containsKey(entry.getKey())) continue; + this.seen.put(entry.getKey(), entry.getValue()); + return entry.getKey(); + } + if (!this.mapIterator.hasNext()) break; + this.entryIterator = this.mapIterator.next().entrySet().iterator(); + } + return this.endOfData(); + } + } + + private class ColumnKeySet + extends TableSet { + private ColumnKeySet() { + } + + @Override + public Iterator iterator() { + return StandardTable.this.createColumnKeyIterator(); + } + + @Override + public int size() { + return Iterators.size(this.iterator()); + } + + @Override + public boolean remove(Object obj) { + if (obj == null) { + return false; + } + boolean changed = false; + Iterator iterator = StandardTable.this.backingMap.values().iterator(); + while (iterator.hasNext()) { + Map map = iterator.next(); + if (!map.keySet().remove(obj)) continue; + changed = true; + if (!map.isEmpty()) continue; + iterator.remove(); + } + return changed; + } + + @Override + public boolean removeAll(Collection c) { + Preconditions.checkNotNull(c); + boolean changed = false; + Iterator iterator = StandardTable.this.backingMap.values().iterator(); + while (iterator.hasNext()) { + Map map = iterator.next(); + if (!Iterators.removeAll(map.keySet().iterator(), c)) continue; + changed = true; + if (!map.isEmpty()) continue; + iterator.remove(); + } + return changed; + } + + @Override + public boolean retainAll(Collection c) { + Preconditions.checkNotNull(c); + boolean changed = false; + Iterator iterator = StandardTable.this.backingMap.values().iterator(); + while (iterator.hasNext()) { + Map map = iterator.next(); + if (!map.keySet().retainAll(c)) continue; + changed = true; + if (!map.isEmpty()) continue; + iterator.remove(); + } + return changed; + } + + @Override + public boolean contains(Object obj) { + return StandardTable.this.containsColumn(obj); + } + } + + private class Column + extends Maps.ImprovedAbstractMap { + final C columnKey; + + Column(C columnKey) { + this.columnKey = Preconditions.checkNotNull(columnKey); + } + + @Override + public V put(R key, V value) { + return StandardTable.this.put(key, this.columnKey, value); + } + + @Override + public V get(Object key) { + return StandardTable.this.get(key, this.columnKey); + } + + @Override + public boolean containsKey(Object key) { + return StandardTable.this.contains(key, this.columnKey); + } + + @Override + public V remove(Object key) { + return StandardTable.this.remove(key, this.columnKey); + } + + boolean removeFromColumnIf(Predicate> predicate) { + boolean changed = false; + Iterator iterator = StandardTable.this.backingMap.entrySet().iterator(); + while (iterator.hasNext()) { + Map.Entry entry = iterator.next(); + Map map = entry.getValue(); + Object value = map.get(this.columnKey); + if (value == null || !predicate.apply(Maps.immutableEntry(entry.getKey(), value))) continue; + map.remove(this.columnKey); + changed = true; + if (!map.isEmpty()) continue; + iterator.remove(); + } + return changed; + } + + @Override + Set> createEntrySet() { + return new EntrySet(); + } + + @Override + Set createKeySet() { + return new KeySet(); + } + + @Override + Collection createValues() { + return new Values(); + } + + private class Values + extends Maps.Values { + Values() { + super(Column.this); + } + + @Override + public boolean remove(Object obj) { + return obj != null && Column.this.removeFromColumnIf(Maps.valuePredicateOnEntries(Predicates.equalTo(obj))); + } + + @Override + public boolean removeAll(Collection c) { + return Column.this.removeFromColumnIf(Maps.valuePredicateOnEntries(Predicates.in(c))); + } + + @Override + public boolean retainAll(Collection c) { + return Column.this.removeFromColumnIf(Maps.valuePredicateOnEntries(Predicates.not(Predicates.in(c)))); + } + } + + private class KeySet + extends Maps.KeySet { + KeySet() { + super(Column.this); + } + + @Override + public boolean contains(Object obj) { + return StandardTable.this.contains(obj, Column.this.columnKey); + } + + @Override + public boolean remove(Object obj) { + return StandardTable.this.remove(obj, Column.this.columnKey) != null; + } + + @Override + public boolean retainAll(Collection c) { + return Column.this.removeFromColumnIf(Maps.keyPredicateOnEntries(Predicates.not(Predicates.in(c)))); + } + } + + private class EntrySetIterator + extends AbstractIterator> { + final Iterator>> iterator; + + private EntrySetIterator() { + this.iterator = StandardTable.this.backingMap.entrySet().iterator(); + } + + @Override + protected Map.Entry computeNext() { + while (this.iterator.hasNext()) { + final Map.Entry entry = this.iterator.next(); + if (!entry.getValue().containsKey(Column.this.columnKey)) continue; + return new AbstractMapEntry(){ + + @Override + public R getKey() { + return entry.getKey(); + } + + @Override + public V getValue() { + return ((Map)entry.getValue()).get(Column.this.columnKey); + } + + @Override + public V setValue(V value) { + return ((Map)entry.getValue()).put(Column.this.columnKey, Preconditions.checkNotNull(value)); + } + }; + } + return (Map.Entry)this.endOfData(); + } + } + + private class EntrySet + extends Sets.ImprovedAbstractSet> { + private EntrySet() { + } + + @Override + public Iterator> iterator() { + return new EntrySetIterator(); + } + + @Override + public int size() { + int size = 0; + for (Map map : StandardTable.this.backingMap.values()) { + if (!map.containsKey(Column.this.columnKey)) continue; + ++size; + } + return size; + } + + @Override + public boolean isEmpty() { + return !StandardTable.this.containsColumn(Column.this.columnKey); + } + + @Override + public void clear() { + Column.this.removeFromColumnIf(Predicates.alwaysTrue()); + } + + @Override + public boolean contains(Object o) { + if (o instanceof Map.Entry) { + Map.Entry entry = (Map.Entry)o; + return StandardTable.this.containsMapping(entry.getKey(), Column.this.columnKey, entry.getValue()); + } + return false; + } + + @Override + public boolean remove(Object obj) { + if (obj instanceof Map.Entry) { + Map.Entry entry = (Map.Entry)obj; + return StandardTable.this.removeMapping(entry.getKey(), Column.this.columnKey, entry.getValue()); + } + return false; + } + + @Override + public boolean retainAll(Collection c) { + return Column.this.removeFromColumnIf(Predicates.not(Predicates.in(c))); + } + } + } + + class Row + extends Maps.ImprovedAbstractMap { + final R rowKey; + Map backingRowMap; + + Row(R rowKey) { + this.rowKey = Preconditions.checkNotNull(rowKey); + } + + Map backingRowMap() { + Map map; + if (this.backingRowMap == null || this.backingRowMap.isEmpty() && StandardTable.this.backingMap.containsKey(this.rowKey)) { + this.backingRowMap = this.computeBackingRowMap(); + map = this.backingRowMap; + } else { + map = this.backingRowMap; + } + return map; + } + + Map computeBackingRowMap() { + return StandardTable.this.backingMap.get(this.rowKey); + } + + void maintainEmptyInvariant() { + if (this.backingRowMap() != null && this.backingRowMap.isEmpty()) { + StandardTable.this.backingMap.remove(this.rowKey); + this.backingRowMap = null; + } + } + + @Override + public boolean containsKey(Object key) { + Map backingRowMap = this.backingRowMap(); + return key != null && backingRowMap != null && Maps.safeContainsKey(backingRowMap, key); + } + + @Override + public V get(Object key) { + Map backingRowMap = this.backingRowMap(); + return key != null && backingRowMap != null ? (Object)Maps.safeGet(backingRowMap, key) : null; + } + + @Override + public V put(C key, V value) { + Preconditions.checkNotNull(key); + Preconditions.checkNotNull(value); + if (this.backingRowMap != null && !this.backingRowMap.isEmpty()) { + return this.backingRowMap.put(key, value); + } + return StandardTable.this.put(this.rowKey, key, value); + } + + @Override + public V remove(Object key) { + Map backingRowMap = this.backingRowMap(); + if (backingRowMap == null) { + return null; + } + Object result = Maps.safeRemove(backingRowMap, key); + this.maintainEmptyInvariant(); + return result; + } + + @Override + public void clear() { + Map backingRowMap = this.backingRowMap(); + if (backingRowMap != null) { + backingRowMap.clear(); + } + this.maintainEmptyInvariant(); + } + + @Override + protected Set> createEntrySet() { + return new RowEntrySet(); + } + + private final class RowEntrySet + extends Maps.EntrySet { + private RowEntrySet() { + } + + @Override + Map map() { + return Row.this; + } + + @Override + public int size() { + Map map = Row.this.backingRowMap(); + return map == null ? 0 : map.size(); + } + + @Override + public Iterator> iterator() { + Map map = Row.this.backingRowMap(); + if (map == null) { + return Iterators.emptyModifiableIterator(); + } + final Iterator iterator = map.entrySet().iterator(); + return new Iterator>(){ + + @Override + public boolean hasNext() { + return iterator.hasNext(); + } + + @Override + public Map.Entry next() { + final Map.Entry entry = (Map.Entry)iterator.next(); + return new ForwardingMapEntry(){ + + @Override + protected Map.Entry delegate() { + return entry; + } + + @Override + public V setValue(V value) { + return super.setValue(Preconditions.checkNotNull(value)); + } + + @Override + public boolean equals(Object object) { + return this.standardEquals(object); + } + }; + } + + @Override + public void remove() { + iterator.remove(); + Row.this.maintainEmptyInvariant(); + } + }; + } + } + } + + private class CellIterator + implements Iterator> { + final Iterator>> rowIterator; + Map.Entry> rowEntry; + Iterator> columnIterator; + + private CellIterator() { + this.rowIterator = StandardTable.this.backingMap.entrySet().iterator(); + this.columnIterator = Iterators.emptyModifiableIterator(); + } + + @Override + public boolean hasNext() { + return this.rowIterator.hasNext() || this.columnIterator.hasNext(); + } + + @Override + public Table.Cell next() { + if (!this.columnIterator.hasNext()) { + this.rowEntry = this.rowIterator.next(); + this.columnIterator = this.rowEntry.getValue().entrySet().iterator(); + } + Map.Entry columnEntry = this.columnIterator.next(); + return Tables.immutableCell(this.rowEntry.getKey(), columnEntry.getKey(), columnEntry.getValue()); + } + + @Override + public void remove() { + this.columnIterator.remove(); + if (this.rowEntry.getValue().isEmpty()) { + this.rowIterator.remove(); + } + } + } + + private abstract class TableSet + extends Sets.ImprovedAbstractSet { + private TableSet() { + } + + @Override + public boolean isEmpty() { + return StandardTable.this.backingMap.isEmpty(); + } + + @Override + public void clear() { + StandardTable.this.backingMap.clear(); + } + } +} diff --git a/src/com/google/common/collect/Synchronized.java b/src/com/google/common/collect/Synchronized.java new file mode 100644 index 0000000..b801ea4 --- /dev/null +++ b/src/com/google/common/collect/Synchronized.java @@ -0,0 +1,2471 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.Preconditions; +import com.google.common.collect.BiMap; +import com.google.common.collect.Collections2; +import com.google.common.collect.ForwardingIterator; +import com.google.common.collect.ForwardingMapEntry; +import com.google.common.collect.ImmutableBiMap; +import com.google.common.collect.ImmutableListMultimap; +import com.google.common.collect.ImmutableMultimap; +import com.google.common.collect.ImmutableMultiset; +import com.google.common.collect.ImmutableSetMultimap; +import com.google.common.collect.Iterators; +import com.google.common.collect.ListMultimap; +import com.google.common.collect.Maps; +import com.google.common.collect.Multimap; +import com.google.common.collect.Multiset; +import com.google.common.collect.ObjectArrays; +import com.google.common.collect.SetMultimap; +import com.google.common.collect.Sets; +import com.google.common.collect.SortedSetMultimap; +import java.io.IOException; +import java.io.ObjectOutputStream; +import java.io.Serializable; +import java.util.Collection; +import java.util.Comparator; +import java.util.Deque; +import java.util.Iterator; +import java.util.List; +import java.util.ListIterator; +import java.util.Map; +import java.util.NavigableMap; +import java.util.NavigableSet; +import java.util.Queue; +import java.util.RandomAccess; +import java.util.Set; +import java.util.SortedMap; +import java.util.SortedSet; +import javax.annotation.Nullable; + +@GwtCompatible(emulated=true) +final class Synchronized { + private Synchronized() { + } + + private static Collection collection(Collection collection, @Nullable Object mutex) { + return new SynchronizedCollection(collection, mutex); + } + + @VisibleForTesting + static Set set(Set set, @Nullable Object mutex) { + return new SynchronizedSet(set, mutex); + } + + private static SortedSet sortedSet(SortedSet set, @Nullable Object mutex) { + return new SynchronizedSortedSet(set, mutex); + } + + private static List list(List list, @Nullable Object mutex) { + return list instanceof RandomAccess ? new SynchronizedRandomAccessList(list, mutex) : new SynchronizedList(list, mutex); + } + + static Multiset multiset(Multiset multiset, @Nullable Object mutex) { + if (multiset instanceof SynchronizedMultiset || multiset instanceof ImmutableMultiset) { + return multiset; + } + return new SynchronizedMultiset(multiset, mutex); + } + + static Multimap multimap(Multimap multimap, @Nullable Object mutex) { + if (multimap instanceof SynchronizedMultimap || multimap instanceof ImmutableMultimap) { + return multimap; + } + return new SynchronizedMultimap(multimap, mutex); + } + + static ListMultimap listMultimap(ListMultimap multimap, @Nullable Object mutex) { + if (multimap instanceof SynchronizedListMultimap || multimap instanceof ImmutableListMultimap) { + return multimap; + } + return new SynchronizedListMultimap(multimap, mutex); + } + + static SetMultimap setMultimap(SetMultimap multimap, @Nullable Object mutex) { + if (multimap instanceof SynchronizedSetMultimap || multimap instanceof ImmutableSetMultimap) { + return multimap; + } + return new SynchronizedSetMultimap(multimap, mutex); + } + + static SortedSetMultimap sortedSetMultimap(SortedSetMultimap multimap, @Nullable Object mutex) { + if (multimap instanceof SynchronizedSortedSetMultimap) { + return multimap; + } + return new SynchronizedSortedSetMultimap(multimap, mutex); + } + + private static Collection typePreservingCollection(Collection collection, @Nullable Object mutex) { + if (collection instanceof SortedSet) { + return Synchronized.sortedSet((SortedSet)collection, mutex); + } + if (collection instanceof Set) { + return Synchronized.set((Set)collection, mutex); + } + if (collection instanceof List) { + return Synchronized.list((List)collection, mutex); + } + return Synchronized.collection(collection, mutex); + } + + private static Set typePreservingSet(Set set, @Nullable Object mutex) { + if (set instanceof SortedSet) { + return Synchronized.sortedSet((SortedSet)set, mutex); + } + return Synchronized.set(set, mutex); + } + + @VisibleForTesting + static Map map(Map map, @Nullable Object mutex) { + return new SynchronizedMap(map, mutex); + } + + static SortedMap sortedMap(SortedMap sortedMap, @Nullable Object mutex) { + return new SynchronizedSortedMap(sortedMap, mutex); + } + + static BiMap biMap(BiMap bimap, @Nullable Object mutex) { + if (bimap instanceof SynchronizedBiMap || bimap instanceof ImmutableBiMap) { + return bimap; + } + return new SynchronizedBiMap(bimap, mutex, null); + } + + @GwtIncompatible(value="NavigableSet") + static NavigableSet navigableSet(NavigableSet navigableSet, @Nullable Object mutex) { + return new SynchronizedNavigableSet(navigableSet, mutex); + } + + @GwtIncompatible(value="NavigableSet") + static NavigableSet navigableSet(NavigableSet navigableSet) { + return Synchronized.navigableSet(navigableSet, null); + } + + @GwtIncompatible(value="NavigableMap") + static NavigableMap navigableMap(NavigableMap navigableMap) { + return Synchronized.navigableMap(navigableMap, null); + } + + @GwtIncompatible(value="NavigableMap") + static NavigableMap navigableMap(NavigableMap navigableMap, @Nullable Object mutex) { + return new SynchronizedNavigableMap(navigableMap, mutex); + } + + @GwtIncompatible(value="works but is needed only for NavigableMap") + private static Map.Entry nullableSynchronizedEntry(@Nullable Map.Entry entry, @Nullable Object mutex) { + if (entry == null) { + return null; + } + return new SynchronizedEntry(entry, mutex); + } + + static Queue queue(Queue queue, @Nullable Object mutex) { + return queue instanceof SynchronizedQueue ? queue : new SynchronizedQueue(queue, mutex); + } + + @GwtIncompatible(value="Deque") + static Deque deque(Deque deque, @Nullable Object mutex) { + return new SynchronizedDeque(deque, mutex); + } + + @GwtIncompatible(value="Deque") + private static final class SynchronizedDeque + extends SynchronizedQueue + implements Deque { + private static final long serialVersionUID = 0L; + + SynchronizedDeque(Deque delegate, @Nullable Object mutex) { + super(delegate, mutex); + } + + @Override + Deque delegate() { + return (Deque)super.delegate(); + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public void addFirst(E e) { + Object object = this.mutex; + synchronized (object) { + this.delegate().addFirst(e); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public void addLast(E e) { + Object object = this.mutex; + synchronized (object) { + this.delegate().addLast(e); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public boolean offerFirst(E e) { + Object object = this.mutex; + synchronized (object) { + return this.delegate().offerFirst(e); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public boolean offerLast(E e) { + Object object = this.mutex; + synchronized (object) { + return this.delegate().offerLast(e); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public E removeFirst() { + Object object = this.mutex; + synchronized (object) { + return this.delegate().removeFirst(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public E removeLast() { + Object object = this.mutex; + synchronized (object) { + return this.delegate().removeLast(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public E pollFirst() { + Object object = this.mutex; + synchronized (object) { + return this.delegate().pollFirst(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public E pollLast() { + Object object = this.mutex; + synchronized (object) { + return this.delegate().pollLast(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public E getFirst() { + Object object = this.mutex; + synchronized (object) { + return this.delegate().getFirst(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public E getLast() { + Object object = this.mutex; + synchronized (object) { + return this.delegate().getLast(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public E peekFirst() { + Object object = this.mutex; + synchronized (object) { + return this.delegate().peekFirst(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public E peekLast() { + Object object = this.mutex; + synchronized (object) { + return this.delegate().peekLast(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public boolean removeFirstOccurrence(Object o) { + Object object = this.mutex; + synchronized (object) { + return this.delegate().removeFirstOccurrence(o); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public boolean removeLastOccurrence(Object o) { + Object object = this.mutex; + synchronized (object) { + return this.delegate().removeLastOccurrence(o); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public void push(E e) { + Object object = this.mutex; + synchronized (object) { + this.delegate().push(e); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public E pop() { + Object object = this.mutex; + synchronized (object) { + return this.delegate().pop(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public Iterator descendingIterator() { + Object object = this.mutex; + synchronized (object) { + return this.delegate().descendingIterator(); + } + } + } + + private static class SynchronizedQueue + extends SynchronizedCollection + implements Queue { + private static final long serialVersionUID = 0L; + + SynchronizedQueue(Queue delegate, @Nullable Object mutex) { + super(delegate, mutex); + } + + @Override + Queue delegate() { + return (Queue)super.delegate(); + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public E element() { + Object object = this.mutex; + synchronized (object) { + return this.delegate().element(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public boolean offer(E e) { + Object object = this.mutex; + synchronized (object) { + return this.delegate().offer(e); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public E peek() { + Object object = this.mutex; + synchronized (object) { + return this.delegate().peek(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public E poll() { + Object object = this.mutex; + synchronized (object) { + return this.delegate().poll(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public E remove() { + Object object = this.mutex; + synchronized (object) { + return this.delegate().remove(); + } + } + } + + @GwtIncompatible(value="works but is needed only for NavigableMap") + private static class SynchronizedEntry + extends SynchronizedObject + implements Map.Entry { + private static final long serialVersionUID = 0L; + + SynchronizedEntry(Map.Entry delegate, @Nullable Object mutex) { + super(delegate, mutex); + } + + @Override + Map.Entry delegate() { + return (Map.Entry)super.delegate(); + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public boolean equals(Object obj) { + Object object = this.mutex; + synchronized (object) { + return this.delegate().equals(obj); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public int hashCode() { + Object object = this.mutex; + synchronized (object) { + return this.delegate().hashCode(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public K getKey() { + Object object = this.mutex; + synchronized (object) { + return this.delegate().getKey(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public V getValue() { + Object object = this.mutex; + synchronized (object) { + return this.delegate().getValue(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public V setValue(V value) { + Object object = this.mutex; + synchronized (object) { + return this.delegate().setValue(value); + } + } + } + + @GwtIncompatible(value="NavigableMap") + @VisibleForTesting + static class SynchronizedNavigableMap + extends SynchronizedSortedMap + implements NavigableMap { + transient NavigableSet descendingKeySet; + transient NavigableMap descendingMap; + transient NavigableSet navigableKeySet; + private static final long serialVersionUID = 0L; + + SynchronizedNavigableMap(NavigableMap delegate, @Nullable Object mutex) { + super(delegate, mutex); + } + + @Override + NavigableMap delegate() { + return (NavigableMap)super.delegate(); + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public Map.Entry ceilingEntry(K key) { + Object object = this.mutex; + synchronized (object) { + return Synchronized.nullableSynchronizedEntry(this.delegate().ceilingEntry(key), this.mutex); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public K ceilingKey(K key) { + Object object = this.mutex; + synchronized (object) { + return this.delegate().ceilingKey(key); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public NavigableSet descendingKeySet() { + Object object = this.mutex; + synchronized (object) { + if (this.descendingKeySet == null) { + this.descendingKeySet = Synchronized.navigableSet(this.delegate().descendingKeySet(), this.mutex); + return this.descendingKeySet; + } + return this.descendingKeySet; + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public NavigableMap descendingMap() { + Object object = this.mutex; + synchronized (object) { + if (this.descendingMap == null) { + this.descendingMap = Synchronized.navigableMap(this.delegate().descendingMap(), this.mutex); + return this.descendingMap; + } + return this.descendingMap; + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public Map.Entry firstEntry() { + Object object = this.mutex; + synchronized (object) { + return Synchronized.nullableSynchronizedEntry(this.delegate().firstEntry(), this.mutex); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public Map.Entry floorEntry(K key) { + Object object = this.mutex; + synchronized (object) { + return Synchronized.nullableSynchronizedEntry(this.delegate().floorEntry(key), this.mutex); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public K floorKey(K key) { + Object object = this.mutex; + synchronized (object) { + return this.delegate().floorKey(key); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public NavigableMap headMap(K toKey, boolean inclusive) { + Object object = this.mutex; + synchronized (object) { + return Synchronized.navigableMap(this.delegate().headMap(toKey, inclusive), this.mutex); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public Map.Entry higherEntry(K key) { + Object object = this.mutex; + synchronized (object) { + return Synchronized.nullableSynchronizedEntry(this.delegate().higherEntry(key), this.mutex); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public K higherKey(K key) { + Object object = this.mutex; + synchronized (object) { + return this.delegate().higherKey(key); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public Map.Entry lastEntry() { + Object object = this.mutex; + synchronized (object) { + return Synchronized.nullableSynchronizedEntry(this.delegate().lastEntry(), this.mutex); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public Map.Entry lowerEntry(K key) { + Object object = this.mutex; + synchronized (object) { + return Synchronized.nullableSynchronizedEntry(this.delegate().lowerEntry(key), this.mutex); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public K lowerKey(K key) { + Object object = this.mutex; + synchronized (object) { + return this.delegate().lowerKey(key); + } + } + + @Override + public Set keySet() { + return this.navigableKeySet(); + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public NavigableSet navigableKeySet() { + Object object = this.mutex; + synchronized (object) { + if (this.navigableKeySet == null) { + this.navigableKeySet = Synchronized.navigableSet(this.delegate().navigableKeySet(), this.mutex); + return this.navigableKeySet; + } + return this.navigableKeySet; + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public Map.Entry pollFirstEntry() { + Object object = this.mutex; + synchronized (object) { + return Synchronized.nullableSynchronizedEntry(this.delegate().pollFirstEntry(), this.mutex); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public Map.Entry pollLastEntry() { + Object object = this.mutex; + synchronized (object) { + return Synchronized.nullableSynchronizedEntry(this.delegate().pollLastEntry(), this.mutex); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public NavigableMap subMap(K fromKey, boolean fromInclusive, K toKey, boolean toInclusive) { + Object object = this.mutex; + synchronized (object) { + return Synchronized.navigableMap(this.delegate().subMap(fromKey, fromInclusive, toKey, toInclusive), this.mutex); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public NavigableMap tailMap(K fromKey, boolean inclusive) { + Object object = this.mutex; + synchronized (object) { + return Synchronized.navigableMap(this.delegate().tailMap(fromKey, inclusive), this.mutex); + } + } + + @Override + public SortedMap headMap(K toKey) { + return this.headMap(toKey, false); + } + + @Override + public SortedMap subMap(K fromKey, K toKey) { + return this.subMap(fromKey, true, toKey, false); + } + + @Override + public SortedMap tailMap(K fromKey) { + return this.tailMap(fromKey, true); + } + } + + @GwtIncompatible(value="NavigableSet") + @VisibleForTesting + static class SynchronizedNavigableSet + extends SynchronizedSortedSet + implements NavigableSet { + transient NavigableSet descendingSet; + private static final long serialVersionUID = 0L; + + SynchronizedNavigableSet(NavigableSet delegate, @Nullable Object mutex) { + super(delegate, mutex); + } + + @Override + NavigableSet delegate() { + return (NavigableSet)super.delegate(); + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public E ceiling(E e) { + Object object = this.mutex; + synchronized (object) { + return this.delegate().ceiling(e); + } + } + + @Override + public Iterator descendingIterator() { + return this.delegate().descendingIterator(); + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public NavigableSet descendingSet() { + Object object = this.mutex; + synchronized (object) { + if (this.descendingSet == null) { + NavigableSet dS = Synchronized.navigableSet(this.delegate().descendingSet(), this.mutex); + this.descendingSet = dS; + return dS; + } + return this.descendingSet; + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public E floor(E e) { + Object object = this.mutex; + synchronized (object) { + return this.delegate().floor(e); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public NavigableSet headSet(E toElement, boolean inclusive) { + Object object = this.mutex; + synchronized (object) { + return Synchronized.navigableSet(this.delegate().headSet(toElement, inclusive), this.mutex); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public E higher(E e) { + Object object = this.mutex; + synchronized (object) { + return this.delegate().higher(e); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public E lower(E e) { + Object object = this.mutex; + synchronized (object) { + return this.delegate().lower(e); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public E pollFirst() { + Object object = this.mutex; + synchronized (object) { + return this.delegate().pollFirst(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public E pollLast() { + Object object = this.mutex; + synchronized (object) { + return this.delegate().pollLast(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public NavigableSet subSet(E fromElement, boolean fromInclusive, E toElement, boolean toInclusive) { + Object object = this.mutex; + synchronized (object) { + return Synchronized.navigableSet(this.delegate().subSet(fromElement, fromInclusive, toElement, toInclusive), this.mutex); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public NavigableSet tailSet(E fromElement, boolean inclusive) { + Object object = this.mutex; + synchronized (object) { + return Synchronized.navigableSet(this.delegate().tailSet(fromElement, inclusive), this.mutex); + } + } + + @Override + public SortedSet headSet(E toElement) { + return this.headSet(toElement, false); + } + + @Override + public SortedSet subSet(E fromElement, E toElement) { + return this.subSet(fromElement, true, toElement, false); + } + + @Override + public SortedSet tailSet(E fromElement) { + return this.tailSet(fromElement, true); + } + } + + private static class SynchronizedAsMapValues + extends SynchronizedCollection> { + private static final long serialVersionUID = 0L; + + SynchronizedAsMapValues(Collection> delegate, @Nullable Object mutex) { + super(delegate, mutex); + } + + @Override + public Iterator> iterator() { + final Iterator iterator = super.iterator(); + return new ForwardingIterator>(){ + + @Override + protected Iterator> delegate() { + return iterator; + } + + @Override + public Collection next() { + return Synchronized.typePreservingCollection((Collection)super.next(), SynchronizedAsMapValues.this.mutex); + } + }; + } + } + + private static class SynchronizedAsMap + extends SynchronizedMap> { + transient Set>> asMapEntrySet; + transient Collection> asMapValues; + private static final long serialVersionUID = 0L; + + SynchronizedAsMap(Map> delegate, @Nullable Object mutex) { + super(delegate, mutex); + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public Collection get(Object key) { + Object object = this.mutex; + synchronized (object) { + Collection collection = (Collection)super.get(key); + return collection == null ? null : Synchronized.typePreservingCollection(collection, this.mutex); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public Set>> entrySet() { + Object object = this.mutex; + synchronized (object) { + if (this.asMapEntrySet == null) { + this.asMapEntrySet = new SynchronizedAsMapEntries(this.delegate().entrySet(), this.mutex); + } + return this.asMapEntrySet; + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public Collection> values() { + Object object = this.mutex; + synchronized (object) { + if (this.asMapValues == null) { + this.asMapValues = new SynchronizedAsMapValues(this.delegate().values(), this.mutex); + } + return this.asMapValues; + } + } + + @Override + public boolean containsValue(Object o) { + return this.values().contains(o); + } + } + + @VisibleForTesting + static class SynchronizedBiMap + extends SynchronizedMap + implements BiMap, + Serializable { + private transient Set valueSet; + private transient BiMap inverse; + private static final long serialVersionUID = 0L; + + private SynchronizedBiMap(BiMap delegate, @Nullable Object mutex, @Nullable BiMap inverse) { + super(delegate, mutex); + this.inverse = inverse; + } + + @Override + BiMap delegate() { + return (BiMap)super.delegate(); + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public Set values() { + Object object = this.mutex; + synchronized (object) { + if (this.valueSet == null) { + this.valueSet = Synchronized.set(this.delegate().values(), this.mutex); + } + return this.valueSet; + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public V forcePut(K key, V value) { + Object object = this.mutex; + synchronized (object) { + return this.delegate().forcePut(key, value); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public BiMap inverse() { + Object object = this.mutex; + synchronized (object) { + if (this.inverse == null) { + this.inverse = new SynchronizedBiMap(this.delegate().inverse(), this.mutex, this); + } + return this.inverse; + } + } + } + + static class SynchronizedSortedMap + extends SynchronizedMap + implements SortedMap { + private static final long serialVersionUID = 0L; + + SynchronizedSortedMap(SortedMap delegate, @Nullable Object mutex) { + super(delegate, mutex); + } + + @Override + SortedMap delegate() { + return (SortedMap)super.delegate(); + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public Comparator comparator() { + Object object = this.mutex; + synchronized (object) { + return this.delegate().comparator(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public K firstKey() { + Object object = this.mutex; + synchronized (object) { + return this.delegate().firstKey(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public SortedMap headMap(K toKey) { + Object object = this.mutex; + synchronized (object) { + return Synchronized.sortedMap(this.delegate().headMap(toKey), this.mutex); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public K lastKey() { + Object object = this.mutex; + synchronized (object) { + return this.delegate().lastKey(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public SortedMap subMap(K fromKey, K toKey) { + Object object = this.mutex; + synchronized (object) { + return Synchronized.sortedMap(this.delegate().subMap(fromKey, toKey), this.mutex); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public SortedMap tailMap(K fromKey) { + Object object = this.mutex; + synchronized (object) { + return Synchronized.sortedMap(this.delegate().tailMap(fromKey), this.mutex); + } + } + } + + private static class SynchronizedMap + extends SynchronizedObject + implements Map { + transient Set keySet; + transient Collection values; + transient Set> entrySet; + private static final long serialVersionUID = 0L; + + SynchronizedMap(Map delegate, @Nullable Object mutex) { + super(delegate, mutex); + } + + @Override + Map delegate() { + return (Map)super.delegate(); + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public void clear() { + Object object = this.mutex; + synchronized (object) { + this.delegate().clear(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public boolean containsKey(Object key) { + Object object = this.mutex; + synchronized (object) { + return this.delegate().containsKey(key); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public boolean containsValue(Object value) { + Object object = this.mutex; + synchronized (object) { + return this.delegate().containsValue(value); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public Set> entrySet() { + Object object = this.mutex; + synchronized (object) { + if (this.entrySet == null) { + this.entrySet = Synchronized.set(this.delegate().entrySet(), this.mutex); + } + return this.entrySet; + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public V get(Object key) { + Object object = this.mutex; + synchronized (object) { + return this.delegate().get(key); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public boolean isEmpty() { + Object object = this.mutex; + synchronized (object) { + return this.delegate().isEmpty(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public Set keySet() { + Object object = this.mutex; + synchronized (object) { + if (this.keySet == null) { + this.keySet = Synchronized.set(this.delegate().keySet(), this.mutex); + } + return this.keySet; + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public V put(K key, V value) { + Object object = this.mutex; + synchronized (object) { + return this.delegate().put(key, value); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public void putAll(Map map) { + Object object = this.mutex; + synchronized (object) { + this.delegate().putAll(map); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public V remove(Object key) { + Object object = this.mutex; + synchronized (object) { + return this.delegate().remove(key); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public int size() { + Object object = this.mutex; + synchronized (object) { + return this.delegate().size(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public Collection values() { + Object object = this.mutex; + synchronized (object) { + if (this.values == null) { + this.values = Synchronized.collection(this.delegate().values(), this.mutex); + } + return this.values; + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public boolean equals(Object o) { + if (o == this) { + return true; + } + Object object = this.mutex; + synchronized (object) { + return this.delegate().equals(o); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public int hashCode() { + Object object = this.mutex; + synchronized (object) { + return this.delegate().hashCode(); + } + } + } + + private static class SynchronizedAsMapEntries + extends SynchronizedSet>> { + private static final long serialVersionUID = 0L; + + SynchronizedAsMapEntries(Set>> delegate, @Nullable Object mutex) { + super(delegate, mutex); + } + + @Override + public Iterator>> iterator() { + final Iterator iterator = super.iterator(); + return new ForwardingIterator>>(){ + + @Override + protected Iterator>> delegate() { + return iterator; + } + + @Override + public Map.Entry> next() { + final Map.Entry entry = (Map.Entry)super.next(); + return new ForwardingMapEntry>(){ + + @Override + protected Map.Entry> delegate() { + return entry; + } + + @Override + public Collection getValue() { + return Synchronized.typePreservingCollection((Collection)entry.getValue(), SynchronizedAsMapEntries.this.mutex); + } + }; + } + }; + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public Object[] toArray() { + Object object = this.mutex; + synchronized (object) { + return ObjectArrays.toArrayImpl(this.delegate()); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public T[] toArray(T[] array) { + Object object = this.mutex; + synchronized (object) { + return ObjectArrays.toArrayImpl(this.delegate(), array); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public boolean contains(Object o) { + Object object = this.mutex; + synchronized (object) { + return Maps.containsEntryImpl(this.delegate(), o); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public boolean containsAll(Collection c) { + Object object = this.mutex; + synchronized (object) { + return Collections2.containsAllImpl(this.delegate(), c); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public boolean equals(Object o) { + if (o == this) { + return true; + } + Object object = this.mutex; + synchronized (object) { + return Sets.equalsImpl(this.delegate(), o); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public boolean remove(Object o) { + Object object = this.mutex; + synchronized (object) { + return Maps.removeEntryImpl(this.delegate(), o); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public boolean removeAll(Collection c) { + Object object = this.mutex; + synchronized (object) { + return Iterators.removeAll(this.delegate().iterator(), c); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public boolean retainAll(Collection c) { + Object object = this.mutex; + synchronized (object) { + return Iterators.retainAll(this.delegate().iterator(), c); + } + } + } + + private static class SynchronizedSortedSetMultimap + extends SynchronizedSetMultimap + implements SortedSetMultimap { + private static final long serialVersionUID = 0L; + + SynchronizedSortedSetMultimap(SortedSetMultimap delegate, @Nullable Object mutex) { + super(delegate, mutex); + } + + @Override + SortedSetMultimap delegate() { + return (SortedSetMultimap)super.delegate(); + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public SortedSet get(K key) { + Object object = this.mutex; + synchronized (object) { + return Synchronized.sortedSet(this.delegate().get(key), this.mutex); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public SortedSet removeAll(Object key) { + Object object = this.mutex; + synchronized (object) { + return this.delegate().removeAll(key); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public SortedSet replaceValues(K key, Iterable values) { + Object object = this.mutex; + synchronized (object) { + return this.delegate().replaceValues(key, values); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public Comparator valueComparator() { + Object object = this.mutex; + synchronized (object) { + return this.delegate().valueComparator(); + } + } + } + + private static class SynchronizedSetMultimap + extends SynchronizedMultimap + implements SetMultimap { + transient Set> entrySet; + private static final long serialVersionUID = 0L; + + SynchronizedSetMultimap(SetMultimap delegate, @Nullable Object mutex) { + super(delegate, mutex); + } + + @Override + SetMultimap delegate() { + return (SetMultimap)super.delegate(); + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public Set get(K key) { + Object object = this.mutex; + synchronized (object) { + return Synchronized.set(this.delegate().get(key), this.mutex); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public Set removeAll(Object key) { + Object object = this.mutex; + synchronized (object) { + return this.delegate().removeAll(key); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public Set replaceValues(K key, Iterable values) { + Object object = this.mutex; + synchronized (object) { + return this.delegate().replaceValues(key, values); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public Set> entries() { + Object object = this.mutex; + synchronized (object) { + if (this.entrySet == null) { + this.entrySet = Synchronized.set(this.delegate().entries(), this.mutex); + } + return this.entrySet; + } + } + } + + private static class SynchronizedListMultimap + extends SynchronizedMultimap + implements ListMultimap { + private static final long serialVersionUID = 0L; + + SynchronizedListMultimap(ListMultimap delegate, @Nullable Object mutex) { + super(delegate, mutex); + } + + @Override + ListMultimap delegate() { + return (ListMultimap)super.delegate(); + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public List get(K key) { + Object object = this.mutex; + synchronized (object) { + return Synchronized.list(this.delegate().get(key), this.mutex); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public List removeAll(Object key) { + Object object = this.mutex; + synchronized (object) { + return this.delegate().removeAll(key); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public List replaceValues(K key, Iterable values) { + Object object = this.mutex; + synchronized (object) { + return this.delegate().replaceValues(key, values); + } + } + } + + private static class SynchronizedMultimap + extends SynchronizedObject + implements Multimap { + transient Set keySet; + transient Collection valuesCollection; + transient Collection> entries; + transient Map> asMap; + transient Multiset keys; + private static final long serialVersionUID = 0L; + + @Override + Multimap delegate() { + return (Multimap)super.delegate(); + } + + SynchronizedMultimap(Multimap delegate, @Nullable Object mutex) { + super(delegate, mutex); + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public int size() { + Object object = this.mutex; + synchronized (object) { + return this.delegate().size(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public boolean isEmpty() { + Object object = this.mutex; + synchronized (object) { + return this.delegate().isEmpty(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public boolean containsKey(Object key) { + Object object = this.mutex; + synchronized (object) { + return this.delegate().containsKey(key); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public boolean containsValue(Object value) { + Object object = this.mutex; + synchronized (object) { + return this.delegate().containsValue(value); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public boolean containsEntry(Object key, Object value) { + Object object = this.mutex; + synchronized (object) { + return this.delegate().containsEntry(key, value); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public Collection get(K key) { + Object object = this.mutex; + synchronized (object) { + return Synchronized.typePreservingCollection(this.delegate().get(key), this.mutex); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public boolean put(K key, V value) { + Object object = this.mutex; + synchronized (object) { + return this.delegate().put(key, value); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public boolean putAll(K key, Iterable values) { + Object object = this.mutex; + synchronized (object) { + return this.delegate().putAll(key, values); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public boolean putAll(Multimap multimap) { + Object object = this.mutex; + synchronized (object) { + return this.delegate().putAll(multimap); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public Collection replaceValues(K key, Iterable values) { + Object object = this.mutex; + synchronized (object) { + return this.delegate().replaceValues(key, values); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public boolean remove(Object key, Object value) { + Object object = this.mutex; + synchronized (object) { + return this.delegate().remove(key, value); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public Collection removeAll(Object key) { + Object object = this.mutex; + synchronized (object) { + return this.delegate().removeAll(key); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public void clear() { + Object object = this.mutex; + synchronized (object) { + this.delegate().clear(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public Set keySet() { + Object object = this.mutex; + synchronized (object) { + if (this.keySet == null) { + this.keySet = Synchronized.typePreservingSet(this.delegate().keySet(), this.mutex); + } + return this.keySet; + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public Collection values() { + Object object = this.mutex; + synchronized (object) { + if (this.valuesCollection == null) { + this.valuesCollection = Synchronized.collection(this.delegate().values(), this.mutex); + } + return this.valuesCollection; + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public Collection> entries() { + Object object = this.mutex; + synchronized (object) { + if (this.entries == null) { + this.entries = Synchronized.typePreservingCollection(this.delegate().entries(), this.mutex); + } + return this.entries; + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public Map> asMap() { + Object object = this.mutex; + synchronized (object) { + if (this.asMap == null) { + this.asMap = new SynchronizedAsMap(this.delegate().asMap(), this.mutex); + } + return this.asMap; + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public Multiset keys() { + Object object = this.mutex; + synchronized (object) { + if (this.keys == null) { + this.keys = Synchronized.multiset(this.delegate().keys(), this.mutex); + } + return this.keys; + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public boolean equals(Object o) { + if (o == this) { + return true; + } + Object object = this.mutex; + synchronized (object) { + return this.delegate().equals(o); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public int hashCode() { + Object object = this.mutex; + synchronized (object) { + return this.delegate().hashCode(); + } + } + } + + private static class SynchronizedMultiset + extends SynchronizedCollection + implements Multiset { + transient Set elementSet; + transient Set> entrySet; + private static final long serialVersionUID = 0L; + + SynchronizedMultiset(Multiset delegate, @Nullable Object mutex) { + super(delegate, mutex); + } + + @Override + Multiset delegate() { + return (Multiset)super.delegate(); + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public int count(Object o) { + Object object = this.mutex; + synchronized (object) { + return this.delegate().count(o); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public int add(E e, int n) { + Object object = this.mutex; + synchronized (object) { + return this.delegate().add(e, n); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public int remove(Object o, int n) { + Object object = this.mutex; + synchronized (object) { + return this.delegate().remove(o, n); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public int setCount(E element, int count) { + Object object = this.mutex; + synchronized (object) { + return this.delegate().setCount(element, count); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public boolean setCount(E element, int oldCount, int newCount) { + Object object = this.mutex; + synchronized (object) { + return this.delegate().setCount(element, oldCount, newCount); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public Set elementSet() { + Object object = this.mutex; + synchronized (object) { + if (this.elementSet == null) { + this.elementSet = Synchronized.typePreservingSet(this.delegate().elementSet(), this.mutex); + } + return this.elementSet; + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public Set> entrySet() { + Object object = this.mutex; + synchronized (object) { + if (this.entrySet == null) { + this.entrySet = Synchronized.typePreservingSet(this.delegate().entrySet(), this.mutex); + } + return this.entrySet; + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public boolean equals(Object o) { + if (o == this) { + return true; + } + Object object = this.mutex; + synchronized (object) { + return this.delegate().equals(o); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public int hashCode() { + Object object = this.mutex; + synchronized (object) { + return this.delegate().hashCode(); + } + } + } + + private static class SynchronizedRandomAccessList + extends SynchronizedList + implements RandomAccess { + private static final long serialVersionUID = 0L; + + SynchronizedRandomAccessList(List list, @Nullable Object mutex) { + super(list, mutex); + } + } + + private static class SynchronizedList + extends SynchronizedCollection + implements List { + private static final long serialVersionUID = 0L; + + SynchronizedList(List delegate, @Nullable Object mutex) { + super(delegate, mutex); + } + + @Override + List delegate() { + return (List)super.delegate(); + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public void add(int index, E element) { + Object object = this.mutex; + synchronized (object) { + this.delegate().add(index, element); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public boolean addAll(int index, Collection c) { + Object object = this.mutex; + synchronized (object) { + return this.delegate().addAll(index, c); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public E get(int index) { + Object object = this.mutex; + synchronized (object) { + return this.delegate().get(index); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public int indexOf(Object o) { + Object object = this.mutex; + synchronized (object) { + return this.delegate().indexOf(o); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public int lastIndexOf(Object o) { + Object object = this.mutex; + synchronized (object) { + return this.delegate().lastIndexOf(o); + } + } + + @Override + public ListIterator listIterator() { + return this.delegate().listIterator(); + } + + @Override + public ListIterator listIterator(int index) { + return this.delegate().listIterator(index); + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public E remove(int index) { + Object object = this.mutex; + synchronized (object) { + return this.delegate().remove(index); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public E set(int index, E element) { + Object object = this.mutex; + synchronized (object) { + return this.delegate().set(index, element); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public List subList(int fromIndex, int toIndex) { + Object object = this.mutex; + synchronized (object) { + return Synchronized.list(this.delegate().subList(fromIndex, toIndex), this.mutex); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public boolean equals(Object o) { + if (o == this) { + return true; + } + Object object = this.mutex; + synchronized (object) { + return this.delegate().equals(o); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public int hashCode() { + Object object = this.mutex; + synchronized (object) { + return this.delegate().hashCode(); + } + } + } + + static class SynchronizedSortedSet + extends SynchronizedSet + implements SortedSet { + private static final long serialVersionUID = 0L; + + SynchronizedSortedSet(SortedSet delegate, @Nullable Object mutex) { + super(delegate, mutex); + } + + @Override + SortedSet delegate() { + return (SortedSet)super.delegate(); + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public Comparator comparator() { + Object object = this.mutex; + synchronized (object) { + return this.delegate().comparator(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public SortedSet subSet(E fromElement, E toElement) { + Object object = this.mutex; + synchronized (object) { + return Synchronized.sortedSet(this.delegate().subSet(fromElement, toElement), this.mutex); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public SortedSet headSet(E toElement) { + Object object = this.mutex; + synchronized (object) { + return Synchronized.sortedSet(this.delegate().headSet(toElement), this.mutex); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public SortedSet tailSet(E fromElement) { + Object object = this.mutex; + synchronized (object) { + return Synchronized.sortedSet(this.delegate().tailSet(fromElement), this.mutex); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public E first() { + Object object = this.mutex; + synchronized (object) { + return this.delegate().first(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public E last() { + Object object = this.mutex; + synchronized (object) { + return this.delegate().last(); + } + } + } + + static class SynchronizedSet + extends SynchronizedCollection + implements Set { + private static final long serialVersionUID = 0L; + + SynchronizedSet(Set delegate, @Nullable Object mutex) { + super(delegate, mutex); + } + + @Override + Set delegate() { + return (Set)super.delegate(); + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public boolean equals(Object o) { + if (o == this) { + return true; + } + Object object = this.mutex; + synchronized (object) { + return this.delegate().equals(o); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public int hashCode() { + Object object = this.mutex; + synchronized (object) { + return this.delegate().hashCode(); + } + } + } + + @VisibleForTesting + static class SynchronizedCollection + extends SynchronizedObject + implements Collection { + private static final long serialVersionUID = 0L; + + private SynchronizedCollection(Collection delegate, @Nullable Object mutex) { + super(delegate, mutex); + } + + @Override + Collection delegate() { + return (Collection)super.delegate(); + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public boolean add(E e) { + Object object = this.mutex; + synchronized (object) { + return this.delegate().add(e); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public boolean addAll(Collection c) { + Object object = this.mutex; + synchronized (object) { + return this.delegate().addAll(c); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public void clear() { + Object object = this.mutex; + synchronized (object) { + this.delegate().clear(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public boolean contains(Object o) { + Object object = this.mutex; + synchronized (object) { + return this.delegate().contains(o); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public boolean containsAll(Collection c) { + Object object = this.mutex; + synchronized (object) { + return this.delegate().containsAll(c); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public boolean isEmpty() { + Object object = this.mutex; + synchronized (object) { + return this.delegate().isEmpty(); + } + } + + @Override + public Iterator iterator() { + return this.delegate().iterator(); + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public boolean remove(Object o) { + Object object = this.mutex; + synchronized (object) { + return this.delegate().remove(o); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public boolean removeAll(Collection c) { + Object object = this.mutex; + synchronized (object) { + return this.delegate().removeAll(c); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public boolean retainAll(Collection c) { + Object object = this.mutex; + synchronized (object) { + return this.delegate().retainAll(c); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public int size() { + Object object = this.mutex; + synchronized (object) { + return this.delegate().size(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public Object[] toArray() { + Object object = this.mutex; + synchronized (object) { + return this.delegate().toArray(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public T[] toArray(T[] a) { + Object object = this.mutex; + synchronized (object) { + return this.delegate().toArray(a); + } + } + } + + static class SynchronizedObject + implements Serializable { + final Object delegate; + final Object mutex; + @GwtIncompatible(value="not needed in emulated source") + private static final long serialVersionUID = 0L; + + SynchronizedObject(Object delegate, @Nullable Object mutex) { + this.delegate = Preconditions.checkNotNull(delegate); + this.mutex = mutex == null ? this : mutex; + } + + Object delegate() { + return this.delegate; + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + public String toString() { + Object object = this.mutex; + synchronized (object) { + return this.delegate.toString(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @GwtIncompatible(value="java.io.ObjectOutputStream") + private void writeObject(ObjectOutputStream stream) throws IOException { + Object object = this.mutex; + synchronized (object) { + stream.defaultWriteObject(); + } + } + } +} diff --git a/src/com/google/common/collect/Table.java b/src/com/google/common/collect/Table.java new file mode 100644 index 0000000..92f33b0 --- /dev/null +++ b/src/com/google/common/collect/Table.java @@ -0,0 +1,67 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import java.util.Collection; +import java.util.Map; +import java.util.Set; +import javax.annotation.Nullable; + +@GwtCompatible +public interface Table { + public boolean contains(@Nullable Object var1, @Nullable Object var2); + + public boolean containsRow(@Nullable Object var1); + + public boolean containsColumn(@Nullable Object var1); + + public boolean containsValue(@Nullable Object var1); + + public V get(@Nullable Object var1, @Nullable Object var2); + + public boolean isEmpty(); + + public int size(); + + public boolean equals(@Nullable Object var1); + + public int hashCode(); + + public void clear(); + + public V put(R var1, C var2, V var3); + + public void putAll(Table var1); + + public V remove(@Nullable Object var1, @Nullable Object var2); + + public Map row(R var1); + + public Map column(C var1); + + public Set> cellSet(); + + public Set rowKeySet(); + + public Set columnKeySet(); + + public Collection values(); + + public Map> rowMap(); + + public Map> columnMap(); + + public static interface Cell { + public R getRowKey(); + + public C getColumnKey(); + + public V getValue(); + + public boolean equals(@Nullable Object var1); + + public int hashCode(); + } +} diff --git a/src/com/google/common/collect/Tables.java b/src/com/google/common/collect/Tables.java new file mode 100644 index 0000000..e38a45e --- /dev/null +++ b/src/com/google/common/collect/Tables.java @@ -0,0 +1,466 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Function; +import com.google.common.base.Objects; +import com.google.common.base.Preconditions; +import com.google.common.base.Supplier; +import com.google.common.collect.AbstractTable; +import com.google.common.collect.Collections2; +import com.google.common.collect.ForwardingTable; +import com.google.common.collect.Iterators; +import com.google.common.collect.Maps; +import com.google.common.collect.RowSortedTable; +import com.google.common.collect.StandardTable; +import com.google.common.collect.Table; +import java.io.Serializable; +import java.util.Collection; +import java.util.Collections; +import java.util.Iterator; +import java.util.Map; +import java.util.Set; +import java.util.SortedMap; +import java.util.SortedSet; +import javax.annotation.Nullable; + +@GwtCompatible +public final class Tables { + private static final Function, ? extends Map> UNMODIFIABLE_WRAPPER = new Function, Map>(){ + + @Override + public Map apply(Map input) { + return Collections.unmodifiableMap(input); + } + }; + + private Tables() { + } + + public static Table.Cell immutableCell(@Nullable R rowKey, @Nullable C columnKey, @Nullable V value) { + return new ImmutableCell(rowKey, columnKey, value); + } + + public static Table transpose(Table table) { + return table instanceof TransposeTable ? ((TransposeTable)table).original : new TransposeTable(table); + } + + @Beta + public static Table newCustomTable(Map> backingMap, Supplier> factory) { + Preconditions.checkArgument(backingMap.isEmpty()); + Preconditions.checkNotNull(factory); + return new StandardTable(backingMap, factory); + } + + @Beta + public static Table transformValues(Table fromTable, Function function) { + return new TransformedTable(fromTable, function); + } + + public static Table unmodifiableTable(Table table) { + return new UnmodifiableTable(table); + } + + @Beta + public static RowSortedTable unmodifiableRowSortedTable(RowSortedTable table) { + return new UnmodifiableRowSortedMap(table); + } + + private static Function, Map> unmodifiableWrapper() { + return UNMODIFIABLE_WRAPPER; + } + + static boolean equalsImpl(Table table, @Nullable Object obj) { + if (obj == table) { + return true; + } + if (obj instanceof Table) { + Table that = (Table)obj; + return table.cellSet().equals(that.cellSet()); + } + return false; + } + + static final class UnmodifiableRowSortedMap + extends UnmodifiableTable + implements RowSortedTable { + private static final long serialVersionUID = 0L; + + public UnmodifiableRowSortedMap(RowSortedTable delegate) { + super(delegate); + } + + @Override + protected RowSortedTable delegate() { + return (RowSortedTable)super.delegate(); + } + + @Override + public SortedMap> rowMap() { + Function wrapper = Tables.unmodifiableWrapper(); + return Collections.unmodifiableSortedMap(Maps.transformValues(this.delegate().rowMap(), wrapper)); + } + + @Override + public SortedSet rowKeySet() { + return Collections.unmodifiableSortedSet(this.delegate().rowKeySet()); + } + } + + private static class UnmodifiableTable + extends ForwardingTable + implements Serializable { + final Table delegate; + private static final long serialVersionUID = 0L; + + UnmodifiableTable(Table delegate) { + this.delegate = Preconditions.checkNotNull(delegate); + } + + @Override + protected Table delegate() { + return this.delegate; + } + + @Override + public Set> cellSet() { + return Collections.unmodifiableSet(super.cellSet()); + } + + @Override + public void clear() { + throw new UnsupportedOperationException(); + } + + @Override + public Map column(@Nullable C columnKey) { + return Collections.unmodifiableMap(super.column(columnKey)); + } + + @Override + public Set columnKeySet() { + return Collections.unmodifiableSet(super.columnKeySet()); + } + + @Override + public Map> columnMap() { + Function wrapper = Tables.unmodifiableWrapper(); + return Collections.unmodifiableMap(Maps.transformValues(super.columnMap(), wrapper)); + } + + @Override + public V put(@Nullable R rowKey, @Nullable C columnKey, @Nullable V value) { + throw new UnsupportedOperationException(); + } + + @Override + public void putAll(Table table) { + throw new UnsupportedOperationException(); + } + + @Override + public V remove(@Nullable Object rowKey, @Nullable Object columnKey) { + throw new UnsupportedOperationException(); + } + + @Override + public Map row(@Nullable R rowKey) { + return Collections.unmodifiableMap(super.row(rowKey)); + } + + @Override + public Set rowKeySet() { + return Collections.unmodifiableSet(super.rowKeySet()); + } + + @Override + public Map> rowMap() { + Function wrapper = Tables.unmodifiableWrapper(); + return Collections.unmodifiableMap(Maps.transformValues(super.rowMap(), wrapper)); + } + + @Override + public Collection values() { + return Collections.unmodifiableCollection(super.values()); + } + } + + private static class TransformedTable + extends AbstractTable { + final Table fromTable; + final Function function; + + TransformedTable(Table fromTable, Function function) { + this.fromTable = Preconditions.checkNotNull(fromTable); + this.function = Preconditions.checkNotNull(function); + } + + @Override + public boolean contains(Object rowKey, Object columnKey) { + return this.fromTable.contains(rowKey, columnKey); + } + + @Override + public V2 get(Object rowKey, Object columnKey) { + return this.contains(rowKey, columnKey) ? (V2)this.function.apply((V1)this.fromTable.get(rowKey, columnKey)) : null; + } + + @Override + public int size() { + return this.fromTable.size(); + } + + @Override + public void clear() { + this.fromTable.clear(); + } + + @Override + public V2 put(R rowKey, C columnKey, V2 value) { + throw new UnsupportedOperationException(); + } + + @Override + public void putAll(Table table) { + throw new UnsupportedOperationException(); + } + + @Override + public V2 remove(Object rowKey, Object columnKey) { + return this.contains(rowKey, columnKey) ? (V2)this.function.apply((V1)this.fromTable.remove(rowKey, columnKey)) : null; + } + + @Override + public Map row(R rowKey) { + return Maps.transformValues(this.fromTable.row(rowKey), this.function); + } + + @Override + public Map column(C columnKey) { + return Maps.transformValues(this.fromTable.column(columnKey), this.function); + } + + Function, Table.Cell> cellFunction() { + return new Function, Table.Cell>(){ + + @Override + public Table.Cell apply(Table.Cell cell) { + return Tables.immutableCell(cell.getRowKey(), cell.getColumnKey(), TransformedTable.this.function.apply(cell.getValue())); + } + }; + } + + @Override + Iterator> cellIterator() { + return Iterators.transform(this.fromTable.cellSet().iterator(), this.cellFunction()); + } + + @Override + public Set rowKeySet() { + return this.fromTable.rowKeySet(); + } + + @Override + public Set columnKeySet() { + return this.fromTable.columnKeySet(); + } + + @Override + Collection createValues() { + return Collections2.transform(this.fromTable.values(), this.function); + } + + @Override + public Map> rowMap() { + Function rowFunction = new Function, Map>(){ + + @Override + public Map apply(Map row) { + return Maps.transformValues(row, TransformedTable.this.function); + } + }; + return Maps.transformValues(this.fromTable.rowMap(), rowFunction); + } + + @Override + public Map> columnMap() { + Function columnFunction = new Function, Map>(){ + + @Override + public Map apply(Map column) { + return Maps.transformValues(column, TransformedTable.this.function); + } + }; + return Maps.transformValues(this.fromTable.columnMap(), columnFunction); + } + } + + private static class TransposeTable + extends AbstractTable { + final Table original; + private static final Function, Table.Cell> TRANSPOSE_CELL = new Function, Table.Cell>(){ + + @Override + public Table.Cell apply(Table.Cell cell) { + return Tables.immutableCell(cell.getColumnKey(), cell.getRowKey(), cell.getValue()); + } + }; + + TransposeTable(Table original) { + this.original = Preconditions.checkNotNull(original); + } + + @Override + public void clear() { + this.original.clear(); + } + + @Override + public Map column(R columnKey) { + return this.original.row(columnKey); + } + + @Override + public Set columnKeySet() { + return this.original.rowKeySet(); + } + + @Override + public Map> columnMap() { + return this.original.rowMap(); + } + + @Override + public boolean contains(@Nullable Object rowKey, @Nullable Object columnKey) { + return this.original.contains(columnKey, rowKey); + } + + @Override + public boolean containsColumn(@Nullable Object columnKey) { + return this.original.containsRow(columnKey); + } + + @Override + public boolean containsRow(@Nullable Object rowKey) { + return this.original.containsColumn(rowKey); + } + + @Override + public boolean containsValue(@Nullable Object value) { + return this.original.containsValue(value); + } + + @Override + public V get(@Nullable Object rowKey, @Nullable Object columnKey) { + return this.original.get(columnKey, rowKey); + } + + @Override + public V put(C rowKey, R columnKey, V value) { + return this.original.put(columnKey, rowKey, value); + } + + @Override + public void putAll(Table table) { + this.original.putAll(Tables.transpose(table)); + } + + @Override + public V remove(@Nullable Object rowKey, @Nullable Object columnKey) { + return this.original.remove(columnKey, rowKey); + } + + @Override + public Map row(C rowKey) { + return this.original.column(rowKey); + } + + @Override + public Set rowKeySet() { + return this.original.columnKeySet(); + } + + @Override + public Map> rowMap() { + return this.original.columnMap(); + } + + @Override + public int size() { + return this.original.size(); + } + + @Override + public Collection values() { + return this.original.values(); + } + + @Override + Iterator> cellIterator() { + return Iterators.transform(this.original.cellSet().iterator(), TRANSPOSE_CELL); + } + } + + static abstract class AbstractCell + implements Table.Cell { + AbstractCell() { + } + + @Override + public boolean equals(Object obj) { + if (obj == this) { + return true; + } + if (obj instanceof Table.Cell) { + Table.Cell other = (Table.Cell)obj; + return Objects.equal(this.getRowKey(), other.getRowKey()) && Objects.equal(this.getColumnKey(), other.getColumnKey()) && Objects.equal(this.getValue(), other.getValue()); + } + return false; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.getRowKey(), this.getColumnKey(), this.getValue()); + } + + public String toString() { + String string = String.valueOf(String.valueOf(this.getRowKey())); + String string2 = String.valueOf(String.valueOf(this.getColumnKey())); + String string3 = String.valueOf(String.valueOf(this.getValue())); + return new StringBuilder(4 + string.length() + string2.length() + string3.length()).append("(").append(string).append(",").append(string2).append(")=").append(string3).toString(); + } + } + + static final class ImmutableCell + extends AbstractCell + implements Serializable { + private final R rowKey; + private final C columnKey; + private final V value; + private static final long serialVersionUID = 0L; + + ImmutableCell(@Nullable R rowKey, @Nullable C columnKey, @Nullable V value) { + this.rowKey = rowKey; + this.columnKey = columnKey; + this.value = value; + } + + @Override + public R getRowKey() { + return this.rowKey; + } + + @Override + public C getColumnKey() { + return this.columnKey; + } + + @Override + public V getValue() { + return this.value; + } + } +} diff --git a/src/com/google/common/collect/TransformedIterator.java b/src/com/google/common/collect/TransformedIterator.java new file mode 100644 index 0000000..25d4423 --- /dev/null +++ b/src/com/google/common/collect/TransformedIterator.java @@ -0,0 +1,35 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Preconditions; +import java.util.Iterator; + +@GwtCompatible +abstract class TransformedIterator +implements Iterator { + final Iterator backingIterator; + + TransformedIterator(Iterator backingIterator) { + this.backingIterator = Preconditions.checkNotNull(backingIterator); + } + + abstract T transform(F var1); + + @Override + public final boolean hasNext() { + return this.backingIterator.hasNext(); + } + + @Override + public final T next() { + return this.transform(this.backingIterator.next()); + } + + @Override + public final void remove() { + this.backingIterator.remove(); + } +} diff --git a/src/com/google/common/collect/TransformedListIterator.java b/src/com/google/common/collect/TransformedListIterator.java new file mode 100644 index 0000000..026a4db --- /dev/null +++ b/src/com/google/common/collect/TransformedListIterator.java @@ -0,0 +1,52 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.collect.Iterators; +import com.google.common.collect.TransformedIterator; +import java.util.ListIterator; + +@GwtCompatible +abstract class TransformedListIterator +extends TransformedIterator +implements ListIterator { + TransformedListIterator(ListIterator backingIterator) { + super(backingIterator); + } + + private ListIterator backingIterator() { + return Iterators.cast(this.backingIterator); + } + + @Override + public final boolean hasPrevious() { + return this.backingIterator().hasPrevious(); + } + + @Override + public final T previous() { + return this.transform(this.backingIterator().previous()); + } + + @Override + public final int nextIndex() { + return this.backingIterator().nextIndex(); + } + + @Override + public final int previousIndex() { + return this.backingIterator().previousIndex(); + } + + @Override + public void set(T element) { + throw new UnsupportedOperationException(); + } + + @Override + public void add(T element) { + throw new UnsupportedOperationException(); + } +} diff --git a/src/com/google/common/collect/TreeBasedTable.java b/src/com/google/common/collect/TreeBasedTable.java new file mode 100644 index 0000000..9ca4a5d --- /dev/null +++ b/src/com/google/common/collect/TreeBasedTable.java @@ -0,0 +1,245 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Function; +import com.google.common.base.Preconditions; +import com.google.common.base.Supplier; +import com.google.common.collect.AbstractIterator; +import com.google.common.collect.Iterables; +import com.google.common.collect.Iterators; +import com.google.common.collect.Maps; +import com.google.common.collect.Ordering; +import com.google.common.collect.StandardRowSortedTable; +import com.google.common.collect.StandardTable; +import com.google.common.collect.Table; +import com.google.common.collect.UnmodifiableIterator; +import java.io.Serializable; +import java.util.Comparator; +import java.util.Iterator; +import java.util.Map; +import java.util.NoSuchElementException; +import java.util.SortedMap; +import java.util.SortedSet; +import java.util.TreeMap; +import javax.annotation.Nullable; + +@GwtCompatible(serializable=true) +@Beta +public class TreeBasedTable +extends StandardRowSortedTable { + private final Comparator columnComparator; + private static final long serialVersionUID = 0L; + + public static TreeBasedTable create() { + return new TreeBasedTable(Ordering.natural(), Ordering.natural()); + } + + public static TreeBasedTable create(Comparator rowComparator, Comparator columnComparator) { + Preconditions.checkNotNull(rowComparator); + Preconditions.checkNotNull(columnComparator); + return new TreeBasedTable(rowComparator, columnComparator); + } + + public static TreeBasedTable create(TreeBasedTable table) { + TreeBasedTable result = new TreeBasedTable(table.rowComparator(), table.columnComparator()); + result.putAll((Table)table); + return result; + } + + TreeBasedTable(Comparator rowComparator, Comparator columnComparator) { + super(new TreeMap(rowComparator), new Factory(columnComparator)); + this.columnComparator = columnComparator; + } + + public Comparator rowComparator() { + return this.rowKeySet().comparator(); + } + + public Comparator columnComparator() { + return this.columnComparator; + } + + @Override + public SortedMap row(R rowKey) { + return new TreeRow(rowKey); + } + + @Override + public SortedSet rowKeySet() { + return super.rowKeySet(); + } + + @Override + public SortedMap> rowMap() { + return super.rowMap(); + } + + @Override + Iterator createColumnKeyIterator() { + final Comparator comparator = this.columnComparator(); + final UnmodifiableIterator merged = Iterators.mergeSorted(Iterables.transform(this.backingMap.values(), new Function, Iterator>(){ + + @Override + public Iterator apply(Map input) { + return input.keySet().iterator(); + } + }), comparator); + return new AbstractIterator(){ + C lastValue; + + @Override + protected C computeNext() { + while (merged.hasNext()) { + Object next = merged.next(); + boolean duplicate = this.lastValue != null && comparator.compare(next, this.lastValue) == 0; + if (duplicate) continue; + this.lastValue = next; + return this.lastValue; + } + this.lastValue = null; + return this.endOfData(); + } + }; + } + + private class TreeRow + extends StandardTable.Row + implements SortedMap { + @Nullable + final C lowerBound; + @Nullable + final C upperBound; + transient SortedMap wholeRow; + + TreeRow(R rowKey) { + this(rowKey, null, null); + } + + TreeRow(@Nullable R rowKey, @Nullable C lowerBound, C upperBound) { + super(TreeBasedTable.this, rowKey); + this.lowerBound = lowerBound; + this.upperBound = upperBound; + Preconditions.checkArgument(lowerBound == null || upperBound == null || this.compare(lowerBound, upperBound) <= 0); + } + + @Override + public SortedSet keySet() { + return new Maps.SortedKeySet(this); + } + + @Override + public Comparator comparator() { + return TreeBasedTable.this.columnComparator(); + } + + int compare(Object a, Object b) { + Comparator cmp = this.comparator(); + return cmp.compare(a, b); + } + + boolean rangeContains(@Nullable Object o) { + return !(o == null || this.lowerBound != null && this.compare(this.lowerBound, o) > 0 || this.upperBound != null && this.compare(this.upperBound, o) <= 0); + } + + @Override + public SortedMap subMap(C fromKey, C toKey) { + Preconditions.checkArgument(this.rangeContains(Preconditions.checkNotNull(fromKey)) && this.rangeContains(Preconditions.checkNotNull(toKey))); + return new TreeRow(this.rowKey, fromKey, toKey); + } + + @Override + public SortedMap headMap(C toKey) { + Preconditions.checkArgument(this.rangeContains(Preconditions.checkNotNull(toKey))); + return new TreeRow(this.rowKey, this.lowerBound, toKey); + } + + @Override + public SortedMap tailMap(C fromKey) { + Preconditions.checkArgument(this.rangeContains(Preconditions.checkNotNull(fromKey))); + return new TreeRow(this.rowKey, fromKey, this.upperBound); + } + + @Override + public C firstKey() { + Map backing = this.backingRowMap(); + if (backing == null) { + throw new NoSuchElementException(); + } + return this.backingRowMap().firstKey(); + } + + @Override + public C lastKey() { + Map backing = this.backingRowMap(); + if (backing == null) { + throw new NoSuchElementException(); + } + return this.backingRowMap().lastKey(); + } + + SortedMap wholeRow() { + if (this.wholeRow == null || this.wholeRow.isEmpty() && TreeBasedTable.this.backingMap.containsKey(this.rowKey)) { + this.wholeRow = (SortedMap)TreeBasedTable.this.backingMap.get(this.rowKey); + } + return this.wholeRow; + } + + SortedMap backingRowMap() { + return (SortedMap)super.backingRowMap(); + } + + SortedMap computeBackingRowMap() { + SortedMap map = this.wholeRow(); + if (map != null) { + if (this.lowerBound != null) { + map = map.tailMap(this.lowerBound); + } + if (this.upperBound != null) { + map = map.headMap(this.upperBound); + } + return map; + } + return null; + } + + @Override + void maintainEmptyInvariant() { + if (this.wholeRow() != null && this.wholeRow.isEmpty()) { + TreeBasedTable.this.backingMap.remove(this.rowKey); + this.wholeRow = null; + this.backingRowMap = null; + } + } + + @Override + public boolean containsKey(Object key) { + return this.rangeContains(key) && super.containsKey(key); + } + + @Override + public V put(C key, V value) { + Preconditions.checkArgument(this.rangeContains(Preconditions.checkNotNull(key))); + return super.put(key, value); + } + } + + private static class Factory + implements Supplier>, + Serializable { + final Comparator comparator; + private static final long serialVersionUID = 0L; + + Factory(Comparator comparator) { + this.comparator = comparator; + } + + @Override + public TreeMap get() { + return new TreeMap(this.comparator); + } + } +} diff --git a/src/com/google/common/collect/TreeMultimap.java b/src/com/google/common/collect/TreeMultimap.java new file mode 100644 index 0000000..2cac2b0 --- /dev/null +++ b/src/com/google/common/collect/TreeMultimap.java @@ -0,0 +1,144 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.base.Preconditions; +import com.google.common.collect.AbstractMapBasedMultimap; +import com.google.common.collect.AbstractSortedKeySortedSetMultimap; +import com.google.common.collect.Multimap; +import com.google.common.collect.Ordering; +import com.google.common.collect.Serialization; +import com.google.common.collect.Sets; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.util.Collection; +import java.util.Comparator; +import java.util.NavigableMap; +import java.util.NavigableSet; +import java.util.SortedSet; +import java.util.TreeMap; +import java.util.TreeSet; +import javax.annotation.Nullable; + +@GwtCompatible(serializable=true, emulated=true) +public class TreeMultimap +extends AbstractSortedKeySortedSetMultimap { + private transient Comparator keyComparator; + private transient Comparator valueComparator; + @GwtIncompatible(value="not needed in emulated source") + private static final long serialVersionUID = 0L; + + public static TreeMultimap create() { + return new TreeMultimap(Ordering.natural(), Ordering.natural()); + } + + public static TreeMultimap create(Comparator keyComparator, Comparator valueComparator) { + return new TreeMultimap(Preconditions.checkNotNull(keyComparator), Preconditions.checkNotNull(valueComparator)); + } + + public static TreeMultimap create(Multimap multimap) { + return new TreeMultimap(Ordering.natural(), Ordering.natural(), multimap); + } + + TreeMultimap(Comparator keyComparator, Comparator valueComparator) { + super(new TreeMap(keyComparator)); + this.keyComparator = keyComparator; + this.valueComparator = valueComparator; + } + + private TreeMultimap(Comparator keyComparator, Comparator valueComparator, Multimap multimap) { + this(keyComparator, valueComparator); + this.putAll((Multimap)multimap); + } + + @Override + SortedSet createCollection() { + return new TreeSet(this.valueComparator); + } + + @Override + Collection createCollection(@Nullable K key) { + if (key == null) { + this.keyComparator().compare(key, key); + } + return super.createCollection(key); + } + + public Comparator keyComparator() { + return this.keyComparator; + } + + @Override + public Comparator valueComparator() { + return this.valueComparator; + } + + @Override + @GwtIncompatible(value="NavigableMap") + NavigableMap> backingMap() { + return (NavigableMap)super.backingMap(); + } + + @Override + @GwtIncompatible(value="NavigableSet") + public NavigableSet get(@Nullable K key) { + return (NavigableSet)super.get((Object)key); + } + + @Override + @GwtIncompatible(value="NavigableSet") + Collection unmodifiableCollectionSubclass(Collection collection) { + return Sets.unmodifiableNavigableSet((NavigableSet)collection); + } + + @Override + @GwtIncompatible(value="NavigableSet") + Collection wrapCollection(K key, Collection collection) { + return new AbstractMapBasedMultimap.WrappedNavigableSet((AbstractMapBasedMultimap)this, key, (NavigableSet)collection, null); + } + + @Override + @GwtIncompatible(value="NavigableSet") + public NavigableSet keySet() { + return (NavigableSet)super.keySet(); + } + + @Override + @GwtIncompatible(value="NavigableSet") + NavigableSet createKeySet() { + return new AbstractMapBasedMultimap.NavigableKeySet((AbstractMapBasedMultimap)this, this.backingMap()); + } + + @Override + @GwtIncompatible(value="NavigableMap") + public NavigableMap> asMap() { + return (NavigableMap)super.asMap(); + } + + @Override + @GwtIncompatible(value="NavigableMap") + NavigableMap> createAsMap() { + return new AbstractMapBasedMultimap.NavigableAsMap((AbstractMapBasedMultimap)this, this.backingMap()); + } + + @GwtIncompatible(value="java.io.ObjectOutputStream") + private void writeObject(ObjectOutputStream stream) throws IOException { + stream.defaultWriteObject(); + stream.writeObject(this.keyComparator()); + stream.writeObject(this.valueComparator()); + Serialization.writeMultimap(this, stream); + } + + @GwtIncompatible(value="java.io.ObjectInputStream") + private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException { + stream.defaultReadObject(); + this.keyComparator = Preconditions.checkNotNull((Comparator)stream.readObject()); + this.valueComparator = Preconditions.checkNotNull((Comparator)stream.readObject()); + this.setMap(new TreeMap(this.keyComparator)); + Serialization.populateMultimap(this, stream); + } +} diff --git a/src/com/google/common/collect/TreeMultiset.java b/src/com/google/common/collect/TreeMultiset.java new file mode 100644 index 0000000..8693760 --- /dev/null +++ b/src/com/google/common/collect/TreeMultiset.java @@ -0,0 +1,869 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.base.MoreObjects; +import com.google.common.base.Preconditions; +import com.google.common.collect.AbstractSortedMultiset; +import com.google.common.collect.BoundType; +import com.google.common.collect.CollectPreconditions; +import com.google.common.collect.GeneralRange; +import com.google.common.collect.Iterables; +import com.google.common.collect.Multiset; +import com.google.common.collect.Multisets; +import com.google.common.collect.Ordering; +import com.google.common.collect.Serialization; +import com.google.common.collect.SortedMultiset; +import com.google.common.primitives.Ints; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.io.Serializable; +import java.util.Comparator; +import java.util.ConcurrentModificationException; +import java.util.Iterator; +import java.util.NoSuchElementException; +import javax.annotation.Nullable; + +@GwtCompatible(emulated=true) +public final class TreeMultiset +extends AbstractSortedMultiset +implements Serializable { + private final transient Reference> rootReference; + private final transient GeneralRange range; + private final transient AvlNode header; + @GwtIncompatible(value="not needed in emulated source") + private static final long serialVersionUID = 1L; + + public static TreeMultiset create() { + return new TreeMultiset(Ordering.natural()); + } + + public static TreeMultiset create(@Nullable Comparator comparator) { + return comparator == null ? new TreeMultiset(Ordering.natural()) : new TreeMultiset(comparator); + } + + public static TreeMultiset create(Iterable elements) { + TreeMultiset multiset = TreeMultiset.create(); + Iterables.addAll(multiset, elements); + return multiset; + } + + TreeMultiset(Reference> rootReference, GeneralRange range, AvlNode endLink) { + super(range.comparator()); + this.rootReference = rootReference; + this.range = range; + this.header = endLink; + } + + TreeMultiset(Comparator comparator) { + super(comparator); + this.range = GeneralRange.all(comparator); + this.header = new AvlNode(null, 1); + TreeMultiset.successor(this.header, this.header); + this.rootReference = new Reference(); + } + + private long aggregateForEntries(Aggregate aggr) { + AvlNode root = this.rootReference.get(); + long total = aggr.treeAggregate(root); + if (this.range.hasLowerBound()) { + total -= this.aggregateBelowRange(aggr, root); + } + if (this.range.hasUpperBound()) { + total -= this.aggregateAboveRange(aggr, root); + } + return total; + } + + private long aggregateBelowRange(Aggregate aggr, @Nullable AvlNode node) { + if (node == null) { + return 0L; + } + int cmp = this.comparator().compare(this.range.getLowerEndpoint(), ((AvlNode)node).elem); + if (cmp < 0) { + return this.aggregateBelowRange(aggr, ((AvlNode)node).left); + } + if (cmp == 0) { + switch (this.range.getLowerBoundType()) { + case OPEN: { + return (long)aggr.nodeAggregate(node) + aggr.treeAggregate(((AvlNode)node).left); + } + case CLOSED: { + return aggr.treeAggregate(((AvlNode)node).left); + } + } + throw new AssertionError(); + } + return aggr.treeAggregate(((AvlNode)node).left) + (long)aggr.nodeAggregate(node) + this.aggregateBelowRange(aggr, ((AvlNode)node).right); + } + + private long aggregateAboveRange(Aggregate aggr, @Nullable AvlNode node) { + if (node == null) { + return 0L; + } + int cmp = this.comparator().compare(this.range.getUpperEndpoint(), ((AvlNode)node).elem); + if (cmp > 0) { + return this.aggregateAboveRange(aggr, ((AvlNode)node).right); + } + if (cmp == 0) { + switch (this.range.getUpperBoundType()) { + case OPEN: { + return (long)aggr.nodeAggregate(node) + aggr.treeAggregate(((AvlNode)node).right); + } + case CLOSED: { + return aggr.treeAggregate(((AvlNode)node).right); + } + } + throw new AssertionError(); + } + return aggr.treeAggregate(((AvlNode)node).right) + (long)aggr.nodeAggregate(node) + this.aggregateAboveRange(aggr, ((AvlNode)node).left); + } + + @Override + public int size() { + return Ints.saturatedCast(this.aggregateForEntries(Aggregate.SIZE)); + } + + @Override + int distinctElements() { + return Ints.saturatedCast(this.aggregateForEntries(Aggregate.DISTINCT)); + } + + @Override + public int count(@Nullable Object element) { + try { + Object e = element; + AvlNode root = this.rootReference.get(); + if (!this.range.contains(e) || root == null) { + return 0; + } + return root.count(this.comparator(), e); + } + catch (ClassCastException e) { + return 0; + } + catch (NullPointerException e) { + return 0; + } + } + + @Override + public int add(@Nullable E element, int occurrences) { + CollectPreconditions.checkNonnegative(occurrences, "occurrences"); + if (occurrences == 0) { + return this.count(element); + } + Preconditions.checkArgument(this.range.contains(element)); + AvlNode root = this.rootReference.get(); + if (root == null) { + this.comparator().compare(element, element); + AvlNode newRoot = new AvlNode(element, occurrences); + TreeMultiset.successor(this.header, newRoot, this.header); + this.rootReference.checkAndSet(root, newRoot); + return 0; + } + int[] result = new int[1]; + AvlNode newRoot = root.add(this.comparator(), element, occurrences, result); + this.rootReference.checkAndSet(root, newRoot); + return result[0]; + } + + @Override + public int remove(@Nullable Object element, int occurrences) { + AvlNode newRoot; + CollectPreconditions.checkNonnegative(occurrences, "occurrences"); + if (occurrences == 0) { + return this.count(element); + } + AvlNode root = this.rootReference.get(); + int[] result = new int[1]; + try { + Object e = element; + if (!this.range.contains(e) || root == null) { + return 0; + } + newRoot = root.remove(this.comparator(), e, occurrences, result); + } + catch (ClassCastException e) { + return 0; + } + catch (NullPointerException e) { + return 0; + } + this.rootReference.checkAndSet(root, newRoot); + return result[0]; + } + + @Override + public int setCount(@Nullable E element, int count) { + CollectPreconditions.checkNonnegative(count, "count"); + if (!this.range.contains(element)) { + Preconditions.checkArgument(count == 0); + return 0; + } + AvlNode root = this.rootReference.get(); + if (root == null) { + if (count > 0) { + this.add(element, count); + } + return 0; + } + int[] result = new int[1]; + AvlNode newRoot = root.setCount(this.comparator(), element, count, result); + this.rootReference.checkAndSet(root, newRoot); + return result[0]; + } + + @Override + public boolean setCount(@Nullable E element, int oldCount, int newCount) { + CollectPreconditions.checkNonnegative(newCount, "newCount"); + CollectPreconditions.checkNonnegative(oldCount, "oldCount"); + Preconditions.checkArgument(this.range.contains(element)); + AvlNode root = this.rootReference.get(); + if (root == null) { + if (oldCount == 0) { + if (newCount > 0) { + this.add(element, newCount); + } + return true; + } + return false; + } + int[] result = new int[1]; + AvlNode newRoot = root.setCount(this.comparator(), element, oldCount, newCount, result); + this.rootReference.checkAndSet(root, newRoot); + return result[0] == oldCount; + } + + private Multiset.Entry wrapEntry(final AvlNode baseEntry) { + return new Multisets.AbstractEntry(){ + + @Override + public E getElement() { + return baseEntry.getElement(); + } + + @Override + public int getCount() { + int result = baseEntry.getCount(); + if (result == 0) { + return TreeMultiset.this.count(this.getElement()); + } + return result; + } + }; + } + + @Nullable + private AvlNode firstNode() { + AvlNode node; + AvlNode root = this.rootReference.get(); + if (root == null) { + return null; + } + if (this.range.hasLowerBound()) { + E endpoint = this.range.getLowerEndpoint(); + node = ((AvlNode)this.rootReference.get()).ceiling(this.comparator(), endpoint); + if (node == null) { + return null; + } + if (this.range.getLowerBoundType() == BoundType.OPEN && this.comparator().compare(endpoint, node.getElement()) == 0) { + node = node.succ; + } + } else { + node = ((AvlNode)this.header).succ; + } + return node == this.header || !this.range.contains(node.getElement()) ? null : node; + } + + @Nullable + private AvlNode lastNode() { + AvlNode node; + AvlNode root = this.rootReference.get(); + if (root == null) { + return null; + } + if (this.range.hasUpperBound()) { + E endpoint = this.range.getUpperEndpoint(); + node = ((AvlNode)this.rootReference.get()).floor(this.comparator(), endpoint); + if (node == null) { + return null; + } + if (this.range.getUpperBoundType() == BoundType.OPEN && this.comparator().compare(endpoint, node.getElement()) == 0) { + node = node.pred; + } + } else { + node = ((AvlNode)this.header).pred; + } + return node == this.header || !this.range.contains(node.getElement()) ? null : node; + } + + @Override + Iterator> entryIterator() { + return new Iterator>(){ + AvlNode current; + Multiset.Entry prevEntry; + { + this.current = TreeMultiset.this.firstNode(); + } + + @Override + public boolean hasNext() { + if (this.current == null) { + return false; + } + if (TreeMultiset.this.range.tooHigh(this.current.getElement())) { + this.current = null; + return false; + } + return true; + } + + @Override + public Multiset.Entry next() { + Multiset.Entry result; + if (!this.hasNext()) { + throw new NoSuchElementException(); + } + this.prevEntry = result = TreeMultiset.this.wrapEntry(this.current); + this.current = this.current.succ == TreeMultiset.this.header ? null : this.current.succ; + return result; + } + + @Override + public void remove() { + CollectPreconditions.checkRemove(this.prevEntry != null); + TreeMultiset.this.setCount(this.prevEntry.getElement(), 0); + this.prevEntry = null; + } + }; + } + + @Override + Iterator> descendingEntryIterator() { + return new Iterator>(){ + AvlNode current; + Multiset.Entry prevEntry; + { + this.current = TreeMultiset.this.lastNode(); + this.prevEntry = null; + } + + @Override + public boolean hasNext() { + if (this.current == null) { + return false; + } + if (TreeMultiset.this.range.tooLow(this.current.getElement())) { + this.current = null; + return false; + } + return true; + } + + @Override + public Multiset.Entry next() { + Multiset.Entry result; + if (!this.hasNext()) { + throw new NoSuchElementException(); + } + this.prevEntry = result = TreeMultiset.this.wrapEntry(this.current); + this.current = this.current.pred == TreeMultiset.this.header ? null : this.current.pred; + return result; + } + + @Override + public void remove() { + CollectPreconditions.checkRemove(this.prevEntry != null); + TreeMultiset.this.setCount(this.prevEntry.getElement(), 0); + this.prevEntry = null; + } + }; + } + + @Override + public SortedMultiset headMultiset(@Nullable E upperBound, BoundType boundType) { + return new TreeMultiset(this.rootReference, this.range.intersect(GeneralRange.upTo(this.comparator(), upperBound, boundType)), this.header); + } + + @Override + public SortedMultiset tailMultiset(@Nullable E lowerBound, BoundType boundType) { + return new TreeMultiset(this.rootReference, this.range.intersect(GeneralRange.downTo(this.comparator(), lowerBound, boundType)), this.header); + } + + static int distinctElements(@Nullable AvlNode node) { + return node == null ? 0 : ((AvlNode)node).distinctElements; + } + + private static void successor(AvlNode a, AvlNode b) { + ((AvlNode)a).succ = (AvlNode)b; + ((AvlNode)b).pred = (AvlNode)a; + } + + private static void successor(AvlNode a, AvlNode b, AvlNode c) { + TreeMultiset.successor(a, b); + TreeMultiset.successor(b, c); + } + + @GwtIncompatible(value="java.io.ObjectOutputStream") + private void writeObject(ObjectOutputStream stream) throws IOException { + stream.defaultWriteObject(); + stream.writeObject(this.elementSet().comparator()); + Serialization.writeMultiset(this, stream); + } + + @GwtIncompatible(value="java.io.ObjectInputStream") + private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException { + stream.defaultReadObject(); + Comparator comparator = (Comparator)stream.readObject(); + Serialization.getFieldSetter(AbstractSortedMultiset.class, "comparator").set((AbstractSortedMultiset)this, comparator); + Serialization.getFieldSetter(TreeMultiset.class, "range").set(this, GeneralRange.all(comparator)); + Serialization.getFieldSetter(TreeMultiset.class, "rootReference").set(this, new Reference()); + AvlNode header = new AvlNode(null, 1); + Serialization.getFieldSetter(TreeMultiset.class, "header").set(this, header); + TreeMultiset.successor(header, header); + Serialization.populateMultiset(this, stream); + } + + private static final class AvlNode + extends Multisets.AbstractEntry { + @Nullable + private final E elem; + private int elemCount; + private int distinctElements; + private long totalCount; + private int height; + private AvlNode left; + private AvlNode right; + private AvlNode pred; + private AvlNode succ; + + AvlNode(@Nullable E elem, int elemCount) { + Preconditions.checkArgument(elemCount > 0); + this.elem = elem; + this.elemCount = elemCount; + this.totalCount = elemCount; + this.distinctElements = 1; + this.height = 1; + this.left = null; + this.right = null; + } + + public int count(Comparator comparator, E e) { + int cmp = comparator.compare(e, this.elem); + if (cmp < 0) { + return this.left == null ? 0 : this.left.count(comparator, e); + } + if (cmp > 0) { + return this.right == null ? 0 : this.right.count(comparator, e); + } + return this.elemCount; + } + + private AvlNode addRightChild(E e, int count) { + this.right = new AvlNode(e, count); + TreeMultiset.successor(this, this.right, this.succ); + this.height = Math.max(2, this.height); + ++this.distinctElements; + this.totalCount += (long)count; + return this; + } + + private AvlNode addLeftChild(E e, int count) { + this.left = new AvlNode(e, count); + TreeMultiset.successor(this.pred, this.left, this); + this.height = Math.max(2, this.height); + ++this.distinctElements; + this.totalCount += (long)count; + return this; + } + + AvlNode add(Comparator comparator, @Nullable E e, int count, int[] result) { + int cmp = comparator.compare(e, this.elem); + if (cmp < 0) { + AvlNode initLeft = this.left; + if (initLeft == null) { + result[0] = 0; + return this.addLeftChild(e, count); + } + int initHeight = initLeft.height; + this.left = initLeft.add(comparator, e, count, result); + if (result[0] == 0) { + ++this.distinctElements; + } + this.totalCount += (long)count; + return this.left.height == initHeight ? this : this.rebalance(); + } + if (cmp > 0) { + AvlNode initRight = this.right; + if (initRight == null) { + result[0] = 0; + return this.addRightChild(e, count); + } + int initHeight = initRight.height; + this.right = initRight.add(comparator, e, count, result); + if (result[0] == 0) { + ++this.distinctElements; + } + this.totalCount += (long)count; + return this.right.height == initHeight ? this : super.rebalance(); + } + result[0] = this.elemCount; + long resultCount = (long)this.elemCount + (long)count; + Preconditions.checkArgument(resultCount <= Integer.MAX_VALUE); + this.elemCount += count; + this.totalCount += (long)count; + return this; + } + + AvlNode remove(Comparator comparator, @Nullable E e, int count, int[] result) { + int cmp = comparator.compare(e, this.elem); + if (cmp < 0) { + AvlNode initLeft = this.left; + if (initLeft == null) { + result[0] = 0; + return this; + } + this.left = initLeft.remove(comparator, e, count, result); + if (result[0] > 0) { + if (count >= result[0]) { + --this.distinctElements; + this.totalCount -= (long)result[0]; + } else { + this.totalCount -= (long)count; + } + } + return result[0] == 0 ? this : this.rebalance(); + } + if (cmp > 0) { + AvlNode initRight = this.right; + if (initRight == null) { + result[0] = 0; + return this; + } + this.right = initRight.remove(comparator, e, count, result); + if (result[0] > 0) { + if (count >= result[0]) { + --this.distinctElements; + this.totalCount -= (long)result[0]; + } else { + this.totalCount -= (long)count; + } + } + return this.rebalance(); + } + result[0] = this.elemCount; + if (count >= this.elemCount) { + return this.deleteMe(); + } + this.elemCount -= count; + this.totalCount -= (long)count; + return this; + } + + AvlNode setCount(Comparator comparator, @Nullable E e, int count, int[] result) { + int cmp = comparator.compare(e, this.elem); + if (cmp < 0) { + AvlNode initLeft = this.left; + if (initLeft == null) { + result[0] = 0; + return count > 0 ? this.addLeftChild(e, count) : this; + } + this.left = initLeft.setCount(comparator, e, count, result); + if (count == 0 && result[0] != 0) { + --this.distinctElements; + } else if (count > 0 && result[0] == 0) { + ++this.distinctElements; + } + this.totalCount += (long)(count - result[0]); + return super.rebalance(); + } + if (cmp > 0) { + AvlNode initRight = this.right; + if (initRight == null) { + result[0] = 0; + return count > 0 ? super.addRightChild(e, count) : this; + } + this.right = initRight.setCount(comparator, e, count, result); + if (count == 0 && result[0] != 0) { + --this.distinctElements; + } else if (count > 0 && result[0] == 0) { + ++this.distinctElements; + } + this.totalCount += (long)(count - result[0]); + return super.rebalance(); + } + result[0] = this.elemCount; + if (count == 0) { + return this.deleteMe(); + } + this.totalCount += (long)(count - this.elemCount); + this.elemCount = count; + return this; + } + + AvlNode setCount(Comparator comparator, @Nullable E e, int expectedCount, int newCount, int[] result) { + int cmp = comparator.compare(e, this.elem); + if (cmp < 0) { + AvlNode initLeft = this.left; + if (initLeft == null) { + result[0] = 0; + if (expectedCount == 0 && newCount > 0) { + return this.addLeftChild(e, newCount); + } + return this; + } + this.left = initLeft.setCount(comparator, e, expectedCount, newCount, result); + if (result[0] == expectedCount) { + if (newCount == 0 && result[0] != 0) { + --this.distinctElements; + } else if (newCount > 0 && result[0] == 0) { + ++this.distinctElements; + } + this.totalCount += (long)(newCount - result[0]); + } + return this.rebalance(); + } + if (cmp > 0) { + AvlNode initRight = this.right; + if (initRight == null) { + result[0] = 0; + if (expectedCount == 0 && newCount > 0) { + return this.addRightChild(e, newCount); + } + return this; + } + this.right = initRight.setCount(comparator, e, expectedCount, newCount, result); + if (result[0] == expectedCount) { + if (newCount == 0 && result[0] != 0) { + --this.distinctElements; + } else if (newCount > 0 && result[0] == 0) { + ++this.distinctElements; + } + this.totalCount += (long)(newCount - result[0]); + } + return this.rebalance(); + } + result[0] = this.elemCount; + if (expectedCount == this.elemCount) { + if (newCount == 0) { + return this.deleteMe(); + } + this.totalCount += (long)(newCount - this.elemCount); + this.elemCount = newCount; + } + return this; + } + + private AvlNode deleteMe() { + int oldElemCount = this.elemCount; + this.elemCount = 0; + TreeMultiset.successor(this.pred, this.succ); + if (this.left == null) { + return this.right; + } + if (this.right == null) { + return this.left; + } + if (this.left.height >= this.right.height) { + AvlNode newTop = this.pred; + newTop.left = super.removeMax(newTop); + newTop.right = this.right; + newTop.distinctElements = this.distinctElements - 1; + newTop.totalCount = this.totalCount - (long)oldElemCount; + return super.rebalance(); + } + AvlNode newTop = this.succ; + newTop.right = super.removeMin(newTop); + newTop.left = this.left; + newTop.distinctElements = this.distinctElements - 1; + newTop.totalCount = this.totalCount - (long)oldElemCount; + return super.rebalance(); + } + + private AvlNode removeMin(AvlNode node) { + if (this.left == null) { + return this.right; + } + this.left = super.removeMin(node); + --this.distinctElements; + this.totalCount -= (long)node.elemCount; + return this.rebalance(); + } + + private AvlNode removeMax(AvlNode node) { + if (this.right == null) { + return this.left; + } + this.right = super.removeMax(node); + --this.distinctElements; + this.totalCount -= (long)node.elemCount; + return this.rebalance(); + } + + private void recomputeMultiset() { + this.distinctElements = 1 + TreeMultiset.distinctElements(this.left) + TreeMultiset.distinctElements(this.right); + this.totalCount = (long)this.elemCount + AvlNode.totalCount(this.left) + AvlNode.totalCount(this.right); + } + + private void recomputeHeight() { + this.height = 1 + Math.max(AvlNode.height(this.left), AvlNode.height(this.right)); + } + + private void recompute() { + this.recomputeMultiset(); + this.recomputeHeight(); + } + + private AvlNode rebalance() { + switch (this.balanceFactor()) { + case -2: { + if (super.balanceFactor() > 0) { + this.right = super.rotateRight(); + } + return this.rotateLeft(); + } + case 2: { + if (super.balanceFactor() < 0) { + this.left = super.rotateLeft(); + } + return this.rotateRight(); + } + } + this.recomputeHeight(); + return this; + } + + private int balanceFactor() { + return AvlNode.height(this.left) - AvlNode.height(this.right); + } + + private AvlNode rotateLeft() { + Preconditions.checkState(this.right != null); + AvlNode newTop = this.right; + this.right = newTop.left; + newTop.left = this; + newTop.totalCount = this.totalCount; + newTop.distinctElements = this.distinctElements; + this.recompute(); + super.recomputeHeight(); + return newTop; + } + + private AvlNode rotateRight() { + Preconditions.checkState(this.left != null); + AvlNode newTop = this.left; + this.left = newTop.right; + newTop.right = this; + newTop.totalCount = this.totalCount; + newTop.distinctElements = this.distinctElements; + this.recompute(); + super.recomputeHeight(); + return newTop; + } + + private static long totalCount(@Nullable AvlNode node) { + return node == null ? 0L : node.totalCount; + } + + private static int height(@Nullable AvlNode node) { + return node == null ? 0 : node.height; + } + + @Nullable + private AvlNode ceiling(Comparator comparator, E e) { + int cmp = comparator.compare(e, this.elem); + if (cmp < 0) { + return this.left == null ? this : MoreObjects.firstNonNull(super.ceiling(comparator, e), this); + } + if (cmp == 0) { + return this; + } + return this.right == null ? null : super.ceiling(comparator, e); + } + + @Nullable + private AvlNode floor(Comparator comparator, E e) { + int cmp = comparator.compare(e, this.elem); + if (cmp > 0) { + return this.right == null ? this : MoreObjects.firstNonNull(super.floor(comparator, e), this); + } + if (cmp == 0) { + return this; + } + return this.left == null ? null : super.floor(comparator, e); + } + + @Override + public E getElement() { + return this.elem; + } + + @Override + public int getCount() { + return this.elemCount; + } + + @Override + public String toString() { + return Multisets.immutableEntry(this.getElement(), this.getCount()).toString(); + } + } + + private static final class Reference { + @Nullable + private T value; + + private Reference() { + } + + @Nullable + public T get() { + return this.value; + } + + public void checkAndSet(@Nullable T expected, T newValue) { + if (this.value != expected) { + throw new ConcurrentModificationException(); + } + this.value = newValue; + } + } + + private static enum Aggregate { + SIZE{ + + @Override + int nodeAggregate(AvlNode node) { + return ((AvlNode)node).elemCount; + } + + @Override + long treeAggregate(@Nullable AvlNode root) { + return root == null ? 0L : ((AvlNode)root).totalCount; + } + } + , + DISTINCT{ + + @Override + int nodeAggregate(AvlNode node) { + return 1; + } + + @Override + long treeAggregate(@Nullable AvlNode root) { + return root == null ? 0L : (long)((AvlNode)root).distinctElements; + } + }; + + + abstract int nodeAggregate(AvlNode var1); + + abstract long treeAggregate(@Nullable AvlNode var1); + } +} diff --git a/src/com/google/common/collect/TreeRangeMap.java b/src/com/google/common/collect/TreeRangeMap.java new file mode 100644 index 0000000..11780ce --- /dev/null +++ b/src/com/google/common/collect/TreeRangeMap.java @@ -0,0 +1,526 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.base.MoreObjects; +import com.google.common.base.Preconditions; +import com.google.common.base.Predicate; +import com.google.common.base.Predicates; +import com.google.common.collect.AbstractIterator; +import com.google.common.collect.AbstractMapEntry; +import com.google.common.collect.Cut; +import com.google.common.collect.Iterators; +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import com.google.common.collect.Range; +import com.google.common.collect.RangeMap; +import java.util.AbstractMap; +import java.util.AbstractSet; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.Iterator; +import java.util.Map; +import java.util.NavigableMap; +import java.util.NoSuchElementException; +import java.util.Set; +import javax.annotation.Nullable; + +@Beta +@GwtIncompatible(value="NavigableMap") +public final class TreeRangeMap +implements RangeMap { + private final NavigableMap, RangeMapEntry> entriesByLowerBound = Maps.newTreeMap(); + private static final RangeMap EMPTY_SUB_RANGE_MAP = new RangeMap(){ + + @Nullable + public Object get(Comparable key) { + return null; + } + + @Nullable + public Map.Entry getEntry(Comparable key) { + return null; + } + + public Range span() { + throw new NoSuchElementException(); + } + + public void put(Range range, Object value) { + Preconditions.checkNotNull(range); + String string = String.valueOf(String.valueOf(range)); + throw new IllegalArgumentException(new StringBuilder(46 + string.length()).append("Cannot insert range ").append(string).append(" into an empty subRangeMap").toString()); + } + + public void putAll(RangeMap rangeMap) { + if (!rangeMap.asMapOfRanges().isEmpty()) { + throw new IllegalArgumentException("Cannot putAll(nonEmptyRangeMap) into an empty subRangeMap"); + } + } + + @Override + public void clear() { + } + + public void remove(Range range) { + Preconditions.checkNotNull(range); + } + + public Map asMapOfRanges() { + return Collections.emptyMap(); + } + + public RangeMap subRangeMap(Range range) { + Preconditions.checkNotNull(range); + return this; + } + }; + + public static TreeRangeMap create() { + return new TreeRangeMap(); + } + + private TreeRangeMap() { + } + + @Override + @Nullable + public V get(K key) { + Map.Entry, V> entry = this.getEntry(key); + return entry == null ? null : (V)entry.getValue(); + } + + @Override + @Nullable + public Map.Entry, V> getEntry(K key) { + Map.Entry, RangeMapEntry> mapEntry = this.entriesByLowerBound.floorEntry(Cut.belowValue(key)); + if (mapEntry != null && mapEntry.getValue().contains(key)) { + return mapEntry.getValue(); + } + return null; + } + + @Override + public void put(Range range, V value) { + if (!range.isEmpty()) { + Preconditions.checkNotNull(value); + this.remove(range); + this.entriesByLowerBound.put(range.lowerBound, new RangeMapEntry(range, value)); + } + } + + @Override + public void putAll(RangeMap rangeMap) { + for (Map.Entry, V> entry : rangeMap.asMapOfRanges().entrySet()) { + this.put(entry.getKey(), entry.getValue()); + } + } + + @Override + public void clear() { + this.entriesByLowerBound.clear(); + } + + @Override + public Range span() { + Map.Entry, RangeMapEntry> firstEntry = this.entriesByLowerBound.firstEntry(); + Map.Entry, RangeMapEntry> lastEntry = this.entriesByLowerBound.lastEntry(); + if (firstEntry == null) { + throw new NoSuchElementException(); + } + return Range.create(((Range)firstEntry.getValue().getKey()).lowerBound, ((Range)lastEntry.getValue().getKey()).upperBound); + } + + private void putRangeMapEntry(Cut lowerBound, Cut upperBound, V value) { + this.entriesByLowerBound.put(lowerBound, new RangeMapEntry(lowerBound, upperBound, value)); + } + + @Override + public void remove(Range rangeToRemove) { + RangeMapEntry rangeMapEntry; + Map.Entry mapEntryAboveToTruncate; + RangeMapEntry rangeMapEntry2; + if (rangeToRemove.isEmpty()) { + return; + } + Map.Entry mapEntryBelowToTruncate = this.entriesByLowerBound.lowerEntry(rangeToRemove.lowerBound); + if (mapEntryBelowToTruncate != null && (rangeMapEntry2 = mapEntryBelowToTruncate.getValue()).getUpperBound().compareTo(rangeToRemove.lowerBound) > 0) { + if (rangeMapEntry2.getUpperBound().compareTo(rangeToRemove.upperBound) > 0) { + this.putRangeMapEntry(rangeToRemove.upperBound, rangeMapEntry2.getUpperBound(), mapEntryBelowToTruncate.getValue().getValue()); + } + this.putRangeMapEntry(rangeMapEntry2.getLowerBound(), rangeToRemove.lowerBound, mapEntryBelowToTruncate.getValue().getValue()); + } + if ((mapEntryAboveToTruncate = this.entriesByLowerBound.lowerEntry(rangeToRemove.upperBound)) != null && (rangeMapEntry = mapEntryAboveToTruncate.getValue()).getUpperBound().compareTo(rangeToRemove.upperBound) > 0) { + this.putRangeMapEntry(rangeToRemove.upperBound, rangeMapEntry.getUpperBound(), mapEntryAboveToTruncate.getValue().getValue()); + this.entriesByLowerBound.remove(rangeToRemove.lowerBound); + } + this.entriesByLowerBound.subMap(rangeToRemove.lowerBound, rangeToRemove.upperBound).clear(); + } + + @Override + public Map, V> asMapOfRanges() { + return new AsMapOfRanges(); + } + + @Override + public RangeMap subRangeMap(Range subRange) { + if (subRange.equals(Range.all())) { + return this; + } + return new SubRangeMap(subRange); + } + + private RangeMap emptySubRangeMap() { + return EMPTY_SUB_RANGE_MAP; + } + + @Override + public boolean equals(@Nullable Object o) { + if (o instanceof RangeMap) { + RangeMap rangeMap = (RangeMap)o; + return this.asMapOfRanges().equals(rangeMap.asMapOfRanges()); + } + return false; + } + + @Override + public int hashCode() { + return this.asMapOfRanges().hashCode(); + } + + @Override + public String toString() { + return this.entriesByLowerBound.values().toString(); + } + + private class SubRangeMap + implements RangeMap { + private final Range subRange; + + SubRangeMap(Range subRange) { + this.subRange = subRange; + } + + @Override + @Nullable + public V get(K key) { + return this.subRange.contains(key) ? (Object)TreeRangeMap.this.get(key) : null; + } + + @Override + @Nullable + public Map.Entry, V> getEntry(K key) { + Map.Entry entry; + if (this.subRange.contains(key) && (entry = TreeRangeMap.this.getEntry(key)) != null) { + return Maps.immutableEntry(entry.getKey().intersection(this.subRange), entry.getValue()); + } + return null; + } + + @Override + public Range span() { + Cut lowerBound; + Map.Entry lowerEntry = TreeRangeMap.this.entriesByLowerBound.floorEntry(this.subRange.lowerBound); + if (lowerEntry != null && ((RangeMapEntry)lowerEntry.getValue()).getUpperBound().compareTo(this.subRange.lowerBound) > 0) { + lowerBound = this.subRange.lowerBound; + } else { + lowerBound = TreeRangeMap.this.entriesByLowerBound.ceilingKey(this.subRange.lowerBound); + if (lowerBound == null || lowerBound.compareTo(this.subRange.upperBound) >= 0) { + throw new NoSuchElementException(); + } + } + Map.Entry upperEntry = TreeRangeMap.this.entriesByLowerBound.lowerEntry(this.subRange.upperBound); + if (upperEntry == null) { + throw new NoSuchElementException(); + } + Cut upperBound = ((RangeMapEntry)upperEntry.getValue()).getUpperBound().compareTo(this.subRange.upperBound) >= 0 ? this.subRange.upperBound : ((RangeMapEntry)upperEntry.getValue()).getUpperBound(); + return Range.create(lowerBound, upperBound); + } + + @Override + public void put(Range range, V value) { + Preconditions.checkArgument(this.subRange.encloses(range), "Cannot put range %s into a subRangeMap(%s)", range, this.subRange); + TreeRangeMap.this.put(range, value); + } + + @Override + public void putAll(RangeMap rangeMap) { + if (rangeMap.asMapOfRanges().isEmpty()) { + return; + } + Range span = rangeMap.span(); + Preconditions.checkArgument(this.subRange.encloses(span), "Cannot putAll rangeMap with span %s into a subRangeMap(%s)", span, this.subRange); + TreeRangeMap.this.putAll(rangeMap); + } + + @Override + public void clear() { + TreeRangeMap.this.remove(this.subRange); + } + + @Override + public void remove(Range range) { + if (range.isConnected(this.subRange)) { + TreeRangeMap.this.remove(range.intersection(this.subRange)); + } + } + + @Override + public RangeMap subRangeMap(Range range) { + if (!range.isConnected(this.subRange)) { + return TreeRangeMap.this.emptySubRangeMap(); + } + return TreeRangeMap.this.subRangeMap(range.intersection(this.subRange)); + } + + @Override + public Map, V> asMapOfRanges() { + return new SubRangeMapAsMap(); + } + + @Override + public boolean equals(@Nullable Object o) { + if (o instanceof RangeMap) { + RangeMap rangeMap = (RangeMap)o; + return this.asMapOfRanges().equals(rangeMap.asMapOfRanges()); + } + return false; + } + + @Override + public int hashCode() { + return this.asMapOfRanges().hashCode(); + } + + @Override + public String toString() { + return this.asMapOfRanges().toString(); + } + + class SubRangeMapAsMap + extends AbstractMap, V> { + SubRangeMapAsMap() { + } + + @Override + public boolean containsKey(Object key) { + return this.get(key) != null; + } + + @Override + public V get(Object key) { + try { + if (key instanceof Range) { + Range r = (Range)key; + if (!SubRangeMap.this.subRange.encloses(r) || r.isEmpty()) { + return null; + } + RangeMapEntry candidate = null; + if (r.lowerBound.compareTo(((SubRangeMap)SubRangeMap.this).subRange.lowerBound) == 0) { + Map.Entry entry = TreeRangeMap.this.entriesByLowerBound.floorEntry(r.lowerBound); + if (entry != null) { + candidate = (RangeMapEntry)entry.getValue(); + } + } else { + candidate = (RangeMapEntry)TreeRangeMap.this.entriesByLowerBound.get(r.lowerBound); + } + if (candidate != null && ((Range)candidate.getKey()).isConnected(SubRangeMap.this.subRange) && ((Range)candidate.getKey()).intersection(SubRangeMap.this.subRange).equals(r)) { + return candidate.getValue(); + } + } + } + catch (ClassCastException e) { + return null; + } + return null; + } + + @Override + public V remove(Object key) { + Object value = this.get(key); + if (value != null) { + Range range = (Range)key; + TreeRangeMap.this.remove(range); + return value; + } + return null; + } + + @Override + public void clear() { + SubRangeMap.this.clear(); + } + + private boolean removeEntryIf(Predicate, V>> predicate) { + ArrayList toRemove = Lists.newArrayList(); + for (Map.Entry entry : this.entrySet()) { + if (!predicate.apply(entry)) continue; + toRemove.add(entry.getKey()); + } + for (Range range : toRemove) { + TreeRangeMap.this.remove(range); + } + return !toRemove.isEmpty(); + } + + @Override + public Set> keySet() { + return new Maps.KeySet, V>(this){ + + @Override + public boolean remove(@Nullable Object o) { + return SubRangeMapAsMap.this.remove(o) != null; + } + + @Override + public boolean retainAll(Collection c) { + return SubRangeMapAsMap.this.removeEntryIf(Predicates.compose(Predicates.not(Predicates.in(c)), Maps.keyFunction())); + } + }; + } + + @Override + public Set, V>> entrySet() { + return new Maps.EntrySet, V>(){ + + @Override + Map, V> map() { + return SubRangeMapAsMap.this; + } + + @Override + public Iterator, V>> iterator() { + if (SubRangeMap.this.subRange.isEmpty()) { + return Iterators.emptyIterator(); + } + Cut cutToStart = MoreObjects.firstNonNull(TreeRangeMap.this.entriesByLowerBound.floorKey(((SubRangeMap)SubRangeMap.this).subRange.lowerBound), ((SubRangeMap)SubRangeMap.this).subRange.lowerBound); + final Iterator backingItr = TreeRangeMap.this.entriesByLowerBound.tailMap(cutToStart, true).values().iterator(); + return new AbstractIterator, V>>(){ + + @Override + protected Map.Entry, V> computeNext() { + RangeMapEntry entry; + while (backingItr.hasNext() && (entry = (RangeMapEntry)backingItr.next()).getLowerBound().compareTo(((SubRangeMap)SubRangeMap.this).subRange.upperBound) < 0) { + if (entry.getUpperBound().compareTo(((SubRangeMap)SubRangeMap.this).subRange.lowerBound) <= 0) continue; + return Maps.immutableEntry(((Range)entry.getKey()).intersection(SubRangeMap.this.subRange), entry.getValue()); + } + return (Map.Entry)this.endOfData(); + } + }; + } + + @Override + public boolean retainAll(Collection c) { + return SubRangeMapAsMap.this.removeEntryIf(Predicates.not(Predicates.in(c))); + } + + @Override + public int size() { + return Iterators.size(this.iterator()); + } + + @Override + public boolean isEmpty() { + return !this.iterator().hasNext(); + } + }; + } + + @Override + public Collection values() { + return new Maps.Values, V>(this){ + + @Override + public boolean removeAll(Collection c) { + return SubRangeMapAsMap.this.removeEntryIf(Predicates.compose(Predicates.in(c), Maps.valueFunction())); + } + + @Override + public boolean retainAll(Collection c) { + return SubRangeMapAsMap.this.removeEntryIf(Predicates.compose(Predicates.not(Predicates.in(c)), Maps.valueFunction())); + } + }; + } + } + } + + private final class AsMapOfRanges + extends AbstractMap, V> { + private AsMapOfRanges() { + } + + @Override + public boolean containsKey(@Nullable Object key) { + return this.get(key) != null; + } + + @Override + public V get(@Nullable Object key) { + if (key instanceof Range) { + Range range = (Range)key; + RangeMapEntry rangeMapEntry = (RangeMapEntry)TreeRangeMap.this.entriesByLowerBound.get(range.lowerBound); + if (rangeMapEntry != null && ((Range)rangeMapEntry.getKey()).equals(range)) { + return rangeMapEntry.getValue(); + } + } + return null; + } + + @Override + public Set, V>> entrySet() { + return new AbstractSet, V>>(){ + + @Override + public Iterator, V>> iterator() { + return TreeRangeMap.this.entriesByLowerBound.values().iterator(); + } + + @Override + public int size() { + return TreeRangeMap.this.entriesByLowerBound.size(); + } + }; + } + } + + private static final class RangeMapEntry + extends AbstractMapEntry, V> { + private final Range range; + private final V value; + + RangeMapEntry(Cut lowerBound, Cut upperBound, V value) { + this(Range.create(lowerBound, upperBound), value); + } + + RangeMapEntry(Range range, V value) { + this.range = range; + this.value = value; + } + + @Override + public Range getKey() { + return this.range; + } + + @Override + public V getValue() { + return this.value; + } + + public boolean contains(K value) { + return this.range.contains(value); + } + + Cut getLowerBound() { + return this.range.lowerBound; + } + + Cut getUpperBound() { + return this.range.upperBound; + } + } +} diff --git a/src/com/google/common/collect/TreeRangeSet.java b/src/com/google/common/collect/TreeRangeSet.java new file mode 100644 index 0000000..36399d9 --- /dev/null +++ b/src/com/google/common/collect/TreeRangeSet.java @@ -0,0 +1,694 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.MoreObjects; +import com.google.common.base.Preconditions; +import com.google.common.collect.AbstractIterator; +import com.google.common.collect.AbstractNavigableMap; +import com.google.common.collect.AbstractRangeSet; +import com.google.common.collect.BoundType; +import com.google.common.collect.Cut; +import com.google.common.collect.ForwardingCollection; +import com.google.common.collect.ImmutableRangeSet; +import com.google.common.collect.ImmutableSortedMap; +import com.google.common.collect.Iterators; +import com.google.common.collect.Maps; +import com.google.common.collect.Ordering; +import com.google.common.collect.PeekingIterator; +import com.google.common.collect.Range; +import com.google.common.collect.RangeSet; +import com.google.common.collect.Sets; +import java.util.Collection; +import java.util.Comparator; +import java.util.Iterator; +import java.util.Map; +import java.util.NavigableMap; +import java.util.NoSuchElementException; +import java.util.Set; +import java.util.TreeMap; +import javax.annotation.Nullable; + +@Beta +@GwtIncompatible(value="uses NavigableMap") +public class TreeRangeSet> +extends AbstractRangeSet { + @VisibleForTesting + final NavigableMap, Range> rangesByLowerBound; + private transient Set> asRanges; + private transient RangeSet complement; + + public static > TreeRangeSet create() { + return new TreeRangeSet(new TreeMap, Range>()); + } + + public static > TreeRangeSet create(RangeSet rangeSet) { + TreeRangeSet result = TreeRangeSet.create(); + result.addAll((RangeSet)rangeSet); + return result; + } + + private TreeRangeSet(NavigableMap, Range> rangesByLowerCut) { + this.rangesByLowerBound = rangesByLowerCut; + } + + @Override + public Set> asRanges() { + AsRanges result = this.asRanges; + return result == null ? (this.asRanges = new AsRanges()) : result; + } + + @Override + @Nullable + public Range rangeContaining(C value) { + Preconditions.checkNotNull(value); + Map.Entry, Range> floorEntry = this.rangesByLowerBound.floorEntry(Cut.belowValue(value)); + if (floorEntry != null && floorEntry.getValue().contains(value)) { + return floorEntry.getValue(); + } + return null; + } + + @Override + public boolean encloses(Range range) { + Preconditions.checkNotNull(range); + Map.Entry floorEntry = this.rangesByLowerBound.floorEntry(range.lowerBound); + return floorEntry != null && floorEntry.getValue().encloses(range); + } + + @Nullable + private Range rangeEnclosing(Range range) { + Preconditions.checkNotNull(range); + Map.Entry floorEntry = this.rangesByLowerBound.floorEntry(range.lowerBound); + return floorEntry != null && floorEntry.getValue().encloses(range) ? floorEntry.getValue() : null; + } + + @Override + public Range span() { + Map.Entry, Range> firstEntry = this.rangesByLowerBound.firstEntry(); + Map.Entry, Range> lastEntry = this.rangesByLowerBound.lastEntry(); + if (firstEntry == null) { + throw new NoSuchElementException(); + } + return Range.create(firstEntry.getValue().lowerBound, lastEntry.getValue().upperBound); + } + + @Override + public void add(Range rangeToAdd) { + Map.Entry entryBelowUB; + Preconditions.checkNotNull(rangeToAdd); + if (rangeToAdd.isEmpty()) { + return; + } + Cut lbToAdd = rangeToAdd.lowerBound; + Cut ubToAdd = rangeToAdd.upperBound; + Map.Entry entryBelowLB = this.rangesByLowerBound.lowerEntry(lbToAdd); + if (entryBelowLB != null) { + Range rangeBelowLB = entryBelowLB.getValue(); + if (rangeBelowLB.upperBound.compareTo(lbToAdd) >= 0) { + if (rangeBelowLB.upperBound.compareTo(ubToAdd) >= 0) { + ubToAdd = rangeBelowLB.upperBound; + } + lbToAdd = rangeBelowLB.lowerBound; + } + } + if ((entryBelowUB = this.rangesByLowerBound.floorEntry(ubToAdd)) != null) { + Range rangeBelowUB = entryBelowUB.getValue(); + if (rangeBelowUB.upperBound.compareTo(ubToAdd) >= 0) { + ubToAdd = rangeBelowUB.upperBound; + } + } + this.rangesByLowerBound.subMap(lbToAdd, ubToAdd).clear(); + this.replaceRangeWithSameLowerBound(Range.create(lbToAdd, ubToAdd)); + } + + @Override + public void remove(Range rangeToRemove) { + Map.Entry entryBelowUB; + Preconditions.checkNotNull(rangeToRemove); + if (rangeToRemove.isEmpty()) { + return; + } + Map.Entry entryBelowLB = this.rangesByLowerBound.lowerEntry(rangeToRemove.lowerBound); + if (entryBelowLB != null) { + Range rangeBelowLB = entryBelowLB.getValue(); + if (rangeBelowLB.upperBound.compareTo(rangeToRemove.lowerBound) >= 0) { + if (rangeToRemove.hasUpperBound() && rangeBelowLB.upperBound.compareTo(rangeToRemove.upperBound) >= 0) { + this.replaceRangeWithSameLowerBound(Range.create(rangeToRemove.upperBound, rangeBelowLB.upperBound)); + } + this.replaceRangeWithSameLowerBound(Range.create(rangeBelowLB.lowerBound, rangeToRemove.lowerBound)); + } + } + if ((entryBelowUB = this.rangesByLowerBound.floorEntry(rangeToRemove.upperBound)) != null) { + Range rangeBelowUB = entryBelowUB.getValue(); + if (rangeToRemove.hasUpperBound() && rangeBelowUB.upperBound.compareTo(rangeToRemove.upperBound) >= 0) { + this.replaceRangeWithSameLowerBound(Range.create(rangeToRemove.upperBound, rangeBelowUB.upperBound)); + } + } + this.rangesByLowerBound.subMap(rangeToRemove.lowerBound, rangeToRemove.upperBound).clear(); + } + + private void replaceRangeWithSameLowerBound(Range range) { + if (range.isEmpty()) { + this.rangesByLowerBound.remove(range.lowerBound); + } else { + this.rangesByLowerBound.put(range.lowerBound, range); + } + } + + @Override + public RangeSet complement() { + Complement result = this.complement; + return result == null ? (this.complement = new Complement()) : result; + } + + @Override + public RangeSet subRangeSet(Range view) { + return view.equals(Range.all()) ? this : new SubRangeSet(view); + } + + private final class SubRangeSet + extends TreeRangeSet { + private final Range restriction; + + SubRangeSet(Range restriction) { + super(new SubRangeSetRangesByLowerBound(Range.all(), restriction, TreeRangeSet.this.rangesByLowerBound)); + this.restriction = restriction; + } + + @Override + public boolean encloses(Range range) { + if (!this.restriction.isEmpty() && this.restriction.encloses(range)) { + Range enclosing = TreeRangeSet.this.rangeEnclosing(range); + return enclosing != null && !enclosing.intersection(this.restriction).isEmpty(); + } + return false; + } + + @Override + @Nullable + public Range rangeContaining(C value) { + if (!this.restriction.contains(value)) { + return null; + } + Range result = TreeRangeSet.this.rangeContaining(value); + return result == null ? null : result.intersection(this.restriction); + } + + @Override + public void add(Range rangeToAdd) { + Preconditions.checkArgument(this.restriction.encloses(rangeToAdd), "Cannot add range %s to subRangeSet(%s)", rangeToAdd, this.restriction); + super.add(rangeToAdd); + } + + @Override + public void remove(Range rangeToRemove) { + if (rangeToRemove.isConnected(this.restriction)) { + TreeRangeSet.this.remove(rangeToRemove.intersection(this.restriction)); + } + } + + @Override + public boolean contains(C value) { + return this.restriction.contains(value) && TreeRangeSet.this.contains((Comparable)value); + } + + @Override + public void clear() { + TreeRangeSet.this.remove(this.restriction); + } + + @Override + public RangeSet subRangeSet(Range view) { + if (view.encloses(this.restriction)) { + return this; + } + if (view.isConnected(this.restriction)) { + return new SubRangeSet(this.restriction.intersection(view)); + } + return ImmutableRangeSet.of(); + } + } + + private static final class SubRangeSetRangesByLowerBound> + extends AbstractNavigableMap, Range> { + private final Range> lowerBoundWindow; + private final Range restriction; + private final NavigableMap, Range> rangesByLowerBound; + private final NavigableMap, Range> rangesByUpperBound; + + private SubRangeSetRangesByLowerBound(Range> lowerBoundWindow, Range restriction, NavigableMap, Range> rangesByLowerBound) { + this.lowerBoundWindow = Preconditions.checkNotNull(lowerBoundWindow); + this.restriction = Preconditions.checkNotNull(restriction); + this.rangesByLowerBound = Preconditions.checkNotNull(rangesByLowerBound); + this.rangesByUpperBound = new RangesByUpperBound(rangesByLowerBound); + } + + private NavigableMap, Range> subMap(Range> window) { + if (!window.isConnected(this.lowerBoundWindow)) { + return ImmutableSortedMap.of(); + } + return new SubRangeSetRangesByLowerBound(this.lowerBoundWindow.intersection(window), this.restriction, this.rangesByLowerBound); + } + + @Override + public NavigableMap, Range> subMap(Cut fromKey, boolean fromInclusive, Cut toKey, boolean toInclusive) { + return this.subMap(Range.range(fromKey, BoundType.forBoolean(fromInclusive), toKey, BoundType.forBoolean(toInclusive))); + } + + @Override + public NavigableMap, Range> headMap(Cut toKey, boolean inclusive) { + return this.subMap(Range.upTo(toKey, BoundType.forBoolean(inclusive))); + } + + @Override + public NavigableMap, Range> tailMap(Cut fromKey, boolean inclusive) { + return this.subMap(Range.downTo(fromKey, BoundType.forBoolean(inclusive))); + } + + @Override + public Comparator> comparator() { + return Ordering.natural(); + } + + @Override + public boolean containsKey(@Nullable Object key) { + return this.get(key) != null; + } + + @Override + @Nullable + public Range get(@Nullable Object key) { + if (key instanceof Cut) { + try { + Cut cut = (Cut)key; + if (!this.lowerBoundWindow.contains(cut) || cut.compareTo(this.restriction.lowerBound) < 0 || cut.compareTo(this.restriction.upperBound) >= 0) { + return null; + } + if (cut.equals(this.restriction.lowerBound)) { + Range candidate = Maps.valueOrNull(this.rangesByLowerBound.floorEntry(cut)); + if (candidate != null && candidate.upperBound.compareTo(this.restriction.lowerBound) > 0) { + return candidate.intersection(this.restriction); + } + } else { + Range result = (Range)this.rangesByLowerBound.get(cut); + if (result != null) { + return result.intersection(this.restriction); + } + } + } + catch (ClassCastException e) { + return null; + } + } + return null; + } + + @Override + Iterator, Range>> entryIterator() { + if (this.restriction.isEmpty()) { + return Iterators.emptyIterator(); + } + if (this.lowerBoundWindow.upperBound.isLessThan(this.restriction.lowerBound)) { + return Iterators.emptyIterator(); + } + final Iterator completeRangeItr = this.lowerBoundWindow.lowerBound.isLessThan(this.restriction.lowerBound) ? this.rangesByUpperBound.tailMap(this.restriction.lowerBound, false).values().iterator() : this.rangesByLowerBound.tailMap((Cut)this.lowerBoundWindow.lowerBound.endpoint(), this.lowerBoundWindow.lowerBoundType() == BoundType.CLOSED).values().iterator(); + final Cut upperBoundOnLowerBounds = Ordering.natural().min(this.lowerBoundWindow.upperBound, Cut.belowValue(this.restriction.upperBound)); + return new AbstractIterator, Range>>(){ + + @Override + protected Map.Entry, Range> computeNext() { + if (!completeRangeItr.hasNext()) { + return (Map.Entry)this.endOfData(); + } + Range nextRange = (Range)completeRangeItr.next(); + if (upperBoundOnLowerBounds.isLessThan(nextRange.lowerBound)) { + return (Map.Entry)this.endOfData(); + } + nextRange = nextRange.intersection(SubRangeSetRangesByLowerBound.this.restriction); + return Maps.immutableEntry(nextRange.lowerBound, nextRange); + } + }; + } + + @Override + Iterator, Range>> descendingEntryIterator() { + if (this.restriction.isEmpty()) { + return Iterators.emptyIterator(); + } + Cut upperBoundOnLowerBounds = Ordering.natural().min(this.lowerBoundWindow.upperBound, Cut.belowValue(this.restriction.upperBound)); + final Iterator completeRangeItr = this.rangesByLowerBound.headMap(upperBoundOnLowerBounds.endpoint(), upperBoundOnLowerBounds.typeAsUpperBound() == BoundType.CLOSED).descendingMap().values().iterator(); + return new AbstractIterator, Range>>(){ + + @Override + protected Map.Entry, Range> computeNext() { + if (!completeRangeItr.hasNext()) { + return (Map.Entry)this.endOfData(); + } + Range nextRange = (Range)completeRangeItr.next(); + if (((SubRangeSetRangesByLowerBound)SubRangeSetRangesByLowerBound.this).restriction.lowerBound.compareTo(nextRange.upperBound) >= 0) { + return (Map.Entry)this.endOfData(); + } + nextRange = nextRange.intersection(SubRangeSetRangesByLowerBound.this.restriction); + if (SubRangeSetRangesByLowerBound.this.lowerBoundWindow.contains(nextRange.lowerBound)) { + return Maps.immutableEntry(nextRange.lowerBound, nextRange); + } + return (Map.Entry)this.endOfData(); + } + }; + } + + @Override + public int size() { + return Iterators.size(this.entryIterator()); + } + } + + private final class Complement + extends TreeRangeSet { + Complement() { + super(new ComplementRangesByLowerBound(TreeRangeSet.this.rangesByLowerBound)); + } + + @Override + public void add(Range rangeToAdd) { + TreeRangeSet.this.remove(rangeToAdd); + } + + @Override + public void remove(Range rangeToRemove) { + TreeRangeSet.this.add(rangeToRemove); + } + + @Override + public boolean contains(C value) { + return !TreeRangeSet.this.contains((Comparable)value); + } + + @Override + public RangeSet complement() { + return TreeRangeSet.this; + } + } + + private static final class ComplementRangesByLowerBound> + extends AbstractNavigableMap, Range> { + private final NavigableMap, Range> positiveRangesByLowerBound; + private final NavigableMap, Range> positiveRangesByUpperBound; + private final Range> complementLowerBoundWindow; + + ComplementRangesByLowerBound(NavigableMap, Range> positiveRangesByLowerBound) { + this(positiveRangesByLowerBound, Range.all()); + } + + private ComplementRangesByLowerBound(NavigableMap, Range> positiveRangesByLowerBound, Range> window) { + this.positiveRangesByLowerBound = positiveRangesByLowerBound; + this.positiveRangesByUpperBound = new RangesByUpperBound(positiveRangesByLowerBound); + this.complementLowerBoundWindow = window; + } + + private NavigableMap, Range> subMap(Range> subWindow) { + if (!this.complementLowerBoundWindow.isConnected(subWindow)) { + return ImmutableSortedMap.of(); + } + subWindow = subWindow.intersection(this.complementLowerBoundWindow); + return new ComplementRangesByLowerBound(this.positiveRangesByLowerBound, subWindow); + } + + @Override + public NavigableMap, Range> subMap(Cut fromKey, boolean fromInclusive, Cut toKey, boolean toInclusive) { + return this.subMap(Range.range(fromKey, BoundType.forBoolean(fromInclusive), toKey, BoundType.forBoolean(toInclusive))); + } + + @Override + public NavigableMap, Range> headMap(Cut toKey, boolean inclusive) { + return this.subMap(Range.upTo(toKey, BoundType.forBoolean(inclusive))); + } + + @Override + public NavigableMap, Range> tailMap(Cut fromKey, boolean inclusive) { + return this.subMap(Range.downTo(fromKey, BoundType.forBoolean(inclusive))); + } + + @Override + public Comparator> comparator() { + return Ordering.natural(); + } + + @Override + Iterator, Range>> entryIterator() { + Cut firstComplementRangeLowerBound; + Collection positiveRanges = this.complementLowerBoundWindow.hasLowerBound() ? this.positiveRangesByUpperBound.tailMap(this.complementLowerBoundWindow.lowerEndpoint(), this.complementLowerBoundWindow.lowerBoundType() == BoundType.CLOSED).values() : this.positiveRangesByUpperBound.values(); + final PeekingIterator positiveItr = Iterators.peekingIterator(positiveRanges.iterator()); + if (this.complementLowerBoundWindow.contains(Cut.belowAll()) && (!positiveItr.hasNext() || ((Range)positiveItr.peek()).lowerBound != Cut.belowAll())) { + firstComplementRangeLowerBound = Cut.belowAll(); + } else if (positiveItr.hasNext()) { + firstComplementRangeLowerBound = ((Range)positiveItr.next()).upperBound; + } else { + return Iterators.emptyIterator(); + } + return new AbstractIterator, Range>>(){ + Cut nextComplementRangeLowerBound; + { + this.nextComplementRangeLowerBound = firstComplementRangeLowerBound; + } + + @Override + protected Map.Entry, Range> computeNext() { + Range negativeRange; + if (((ComplementRangesByLowerBound)ComplementRangesByLowerBound.this).complementLowerBoundWindow.upperBound.isLessThan(this.nextComplementRangeLowerBound) || this.nextComplementRangeLowerBound == Cut.aboveAll()) { + return (Map.Entry)this.endOfData(); + } + if (positiveItr.hasNext()) { + Range positiveRange = (Range)positiveItr.next(); + negativeRange = Range.create(this.nextComplementRangeLowerBound, positiveRange.lowerBound); + this.nextComplementRangeLowerBound = positiveRange.upperBound; + } else { + negativeRange = Range.create(this.nextComplementRangeLowerBound, Cut.aboveAll()); + this.nextComplementRangeLowerBound = Cut.aboveAll(); + } + return Maps.immutableEntry(negativeRange.lowerBound, negativeRange); + } + }; + } + + @Override + Iterator, Range>> descendingEntryIterator() { + Cut cut; + boolean inclusive; + Cut startingPoint = this.complementLowerBoundWindow.hasUpperBound() ? this.complementLowerBoundWindow.upperEndpoint() : Cut.aboveAll(); + final PeekingIterator positiveItr = Iterators.peekingIterator(this.positiveRangesByUpperBound.headMap(startingPoint, inclusive = this.complementLowerBoundWindow.hasUpperBound() && this.complementLowerBoundWindow.upperBoundType() == BoundType.CLOSED).descendingMap().values().iterator()); + if (positiveItr.hasNext()) { + cut = ((Range)positiveItr.peek()).upperBound == Cut.aboveAll() ? ((Range)positiveItr.next()).lowerBound : this.positiveRangesByLowerBound.higherKey(((Range)positiveItr.peek()).upperBound); + } else { + if (!this.complementLowerBoundWindow.contains(Cut.belowAll()) || this.positiveRangesByLowerBound.containsKey(Cut.belowAll())) { + return Iterators.emptyIterator(); + } + cut = this.positiveRangesByLowerBound.higherKey(Cut.belowAll()); + } + final Cut firstComplementRangeUpperBound = MoreObjects.firstNonNull(cut, Cut.aboveAll()); + return new AbstractIterator, Range>>(){ + Cut nextComplementRangeUpperBound; + { + this.nextComplementRangeUpperBound = firstComplementRangeUpperBound; + } + + @Override + protected Map.Entry, Range> computeNext() { + if (this.nextComplementRangeUpperBound == Cut.belowAll()) { + return (Map.Entry)this.endOfData(); + } + if (positiveItr.hasNext()) { + Range positiveRange = (Range)positiveItr.next(); + Range negativeRange = Range.create(positiveRange.upperBound, this.nextComplementRangeUpperBound); + this.nextComplementRangeUpperBound = positiveRange.lowerBound; + if (((ComplementRangesByLowerBound)ComplementRangesByLowerBound.this).complementLowerBoundWindow.lowerBound.isLessThan(negativeRange.lowerBound)) { + return Maps.immutableEntry(negativeRange.lowerBound, negativeRange); + } + } else if (((ComplementRangesByLowerBound)ComplementRangesByLowerBound.this).complementLowerBoundWindow.lowerBound.isLessThan(Cut.belowAll())) { + Range negativeRange = Range.create(Cut.belowAll(), this.nextComplementRangeUpperBound); + this.nextComplementRangeUpperBound = Cut.belowAll(); + return Maps.immutableEntry(Cut.belowAll(), negativeRange); + } + return (Map.Entry)this.endOfData(); + } + }; + } + + @Override + public int size() { + return Iterators.size(this.entryIterator()); + } + + @Override + @Nullable + public Range get(Object key) { + if (key instanceof Cut) { + try { + Cut cut = (Cut)key; + Map.Entry, Range> firstEntry = this.tailMap(cut, true).firstEntry(); + if (firstEntry != null && firstEntry.getKey().equals(cut)) { + return firstEntry.getValue(); + } + } + catch (ClassCastException e) { + return null; + } + } + return null; + } + + @Override + public boolean containsKey(Object key) { + return this.get(key) != null; + } + } + + @VisibleForTesting + static final class RangesByUpperBound> + extends AbstractNavigableMap, Range> { + private final NavigableMap, Range> rangesByLowerBound; + private final Range> upperBoundWindow; + + RangesByUpperBound(NavigableMap, Range> rangesByLowerBound) { + this.rangesByLowerBound = rangesByLowerBound; + this.upperBoundWindow = Range.all(); + } + + private RangesByUpperBound(NavigableMap, Range> rangesByLowerBound, Range> upperBoundWindow) { + this.rangesByLowerBound = rangesByLowerBound; + this.upperBoundWindow = upperBoundWindow; + } + + private NavigableMap, Range> subMap(Range> window) { + if (window.isConnected(this.upperBoundWindow)) { + return new RangesByUpperBound(this.rangesByLowerBound, window.intersection(this.upperBoundWindow)); + } + return ImmutableSortedMap.of(); + } + + @Override + public NavigableMap, Range> subMap(Cut fromKey, boolean fromInclusive, Cut toKey, boolean toInclusive) { + return this.subMap(Range.range(fromKey, BoundType.forBoolean(fromInclusive), toKey, BoundType.forBoolean(toInclusive))); + } + + @Override + public NavigableMap, Range> headMap(Cut toKey, boolean inclusive) { + return this.subMap(Range.upTo(toKey, BoundType.forBoolean(inclusive))); + } + + @Override + public NavigableMap, Range> tailMap(Cut fromKey, boolean inclusive) { + return this.subMap(Range.downTo(fromKey, BoundType.forBoolean(inclusive))); + } + + @Override + public Comparator> comparator() { + return Ordering.natural(); + } + + @Override + public boolean containsKey(@Nullable Object key) { + return this.get(key) != null; + } + + @Override + public Range get(@Nullable Object key) { + if (key instanceof Cut) { + try { + Cut cut = (Cut)key; + if (!this.upperBoundWindow.contains(cut)) { + return null; + } + Map.Entry> candidate = this.rangesByLowerBound.lowerEntry(cut); + if (candidate != null && candidate.getValue().upperBound.equals(cut)) { + return candidate.getValue(); + } + } + catch (ClassCastException e) { + return null; + } + } + return null; + } + + @Override + Iterator, Range>> entryIterator() { + Map.Entry, Range> lowerEntry; + final Iterator backingItr = !this.upperBoundWindow.hasLowerBound() ? this.rangesByLowerBound.values().iterator() : ((lowerEntry = this.rangesByLowerBound.lowerEntry(this.upperBoundWindow.lowerEndpoint())) == null ? this.rangesByLowerBound.values().iterator() : (this.upperBoundWindow.lowerBound.isLessThan(lowerEntry.getValue().upperBound) ? this.rangesByLowerBound.tailMap(lowerEntry.getKey(), true).values().iterator() : this.rangesByLowerBound.tailMap(this.upperBoundWindow.lowerEndpoint(), true).values().iterator())); + return new AbstractIterator, Range>>(){ + + @Override + protected Map.Entry, Range> computeNext() { + if (!backingItr.hasNext()) { + return (Map.Entry)this.endOfData(); + } + Range range = (Range)backingItr.next(); + if (((RangesByUpperBound)RangesByUpperBound.this).upperBoundWindow.upperBound.isLessThan(range.upperBound)) { + return (Map.Entry)this.endOfData(); + } + return Maps.immutableEntry(range.upperBound, range); + } + }; + } + + @Override + Iterator, Range>> descendingEntryIterator() { + Collection candidates = this.upperBoundWindow.hasUpperBound() ? this.rangesByLowerBound.headMap(this.upperBoundWindow.upperEndpoint(), false).descendingMap().values() : this.rangesByLowerBound.descendingMap().values(); + final PeekingIterator backingItr = Iterators.peekingIterator(candidates.iterator()); + if (backingItr.hasNext() && this.upperBoundWindow.upperBound.isLessThan(((Range)backingItr.peek()).upperBound)) { + backingItr.next(); + } + return new AbstractIterator, Range>>(){ + + @Override + protected Map.Entry, Range> computeNext() { + if (!backingItr.hasNext()) { + return (Map.Entry)this.endOfData(); + } + Range range = (Range)backingItr.next(); + return ((RangesByUpperBound)RangesByUpperBound.this).upperBoundWindow.lowerBound.isLessThan(range.upperBound) ? Maps.immutableEntry(range.upperBound, range) : (Map.Entry)this.endOfData(); + } + }; + } + + @Override + public int size() { + if (this.upperBoundWindow.equals(Range.all())) { + return this.rangesByLowerBound.size(); + } + return Iterators.size(this.entryIterator()); + } + + @Override + public boolean isEmpty() { + return this.upperBoundWindow.equals(Range.all()) ? this.rangesByLowerBound.isEmpty() : !this.entryIterator().hasNext(); + } + } + + final class AsRanges + extends ForwardingCollection> + implements Set> { + AsRanges() { + } + + @Override + protected Collection> delegate() { + return TreeRangeSet.this.rangesByLowerBound.values(); + } + + @Override + public int hashCode() { + return Sets.hashCodeImpl(this); + } + + @Override + public boolean equals(@Nullable Object o) { + return Sets.equalsImpl(this, o); + } + } +} diff --git a/src/com/google/common/collect/TreeTraverser.java b/src/com/google/common/collect/TreeTraverser.java new file mode 100644 index 0000000..9802c55 --- /dev/null +++ b/src/com/google/common/collect/TreeTraverser.java @@ -0,0 +1,158 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Preconditions; +import com.google.common.collect.AbstractIterator; +import com.google.common.collect.FluentIterable; +import com.google.common.collect.Iterables; +import com.google.common.collect.Iterators; +import com.google.common.collect.PeekingIterator; +import com.google.common.collect.UnmodifiableIterator; +import java.util.ArrayDeque; +import java.util.Deque; +import java.util.Iterator; +import java.util.Queue; + +@Beta +@GwtCompatible(emulated=true) +public abstract class TreeTraverser { + public abstract Iterable children(T var1); + + public final FluentIterable preOrderTraversal(final T root) { + Preconditions.checkNotNull(root); + return new FluentIterable(){ + + @Override + public UnmodifiableIterator iterator() { + return TreeTraverser.this.preOrderIterator(root); + } + }; + } + + UnmodifiableIterator preOrderIterator(T root) { + return new PreOrderIterator(root); + } + + public final FluentIterable postOrderTraversal(final T root) { + Preconditions.checkNotNull(root); + return new FluentIterable(){ + + @Override + public UnmodifiableIterator iterator() { + return TreeTraverser.this.postOrderIterator(root); + } + }; + } + + UnmodifiableIterator postOrderIterator(T root) { + return new PostOrderIterator(root); + } + + public final FluentIterable breadthFirstTraversal(final T root) { + Preconditions.checkNotNull(root); + return new FluentIterable(){ + + @Override + public UnmodifiableIterator iterator() { + return new BreadthFirstIterator(root); + } + }; + } + + private final class BreadthFirstIterator + extends UnmodifiableIterator + implements PeekingIterator { + private final Queue queue = new ArrayDeque(); + + BreadthFirstIterator(T root) { + this.queue.add(root); + } + + @Override + public boolean hasNext() { + return !this.queue.isEmpty(); + } + + @Override + public T peek() { + return this.queue.element(); + } + + @Override + public T next() { + Object result = this.queue.remove(); + Iterables.addAll(this.queue, TreeTraverser.this.children(result)); + return result; + } + } + + private final class PostOrderIterator + extends AbstractIterator { + private final ArrayDeque> stack = new ArrayDeque(); + + PostOrderIterator(T root) { + this.stack.addLast(this.expand(root)); + } + + @Override + protected T computeNext() { + while (!this.stack.isEmpty()) { + PostOrderNode top = this.stack.getLast(); + if (top.childIterator.hasNext()) { + Object child = top.childIterator.next(); + this.stack.addLast(this.expand(child)); + continue; + } + this.stack.removeLast(); + return top.root; + } + return this.endOfData(); + } + + private PostOrderNode expand(T t) { + return new PostOrderNode(t, TreeTraverser.this.children(t).iterator()); + } + } + + private static final class PostOrderNode { + final T root; + final Iterator childIterator; + + PostOrderNode(T root, Iterator childIterator) { + this.root = Preconditions.checkNotNull(root); + this.childIterator = Preconditions.checkNotNull(childIterator); + } + } + + private final class PreOrderIterator + extends UnmodifiableIterator { + private final Deque> stack = new ArrayDeque(); + + PreOrderIterator(T root) { + this.stack.addLast(Iterators.singletonIterator(Preconditions.checkNotNull(root))); + } + + @Override + public boolean hasNext() { + return !this.stack.isEmpty(); + } + + @Override + public T next() { + Iterator childItr; + Iterator itr = this.stack.getLast(); + Object result = Preconditions.checkNotNull(itr.next()); + if (!itr.hasNext()) { + this.stack.removeLast(); + } + if ((childItr = TreeTraverser.this.children(result).iterator()).hasNext()) { + this.stack.addLast(childItr); + } + return result; + } + } +} diff --git a/src/com/google/common/collect/UnmodifiableIterator.java b/src/com/google/common/collect/UnmodifiableIterator.java new file mode 100644 index 0000000..44a767a --- /dev/null +++ b/src/com/google/common/collect/UnmodifiableIterator.java @@ -0,0 +1,20 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import java.util.Iterator; + +@GwtCompatible +public abstract class UnmodifiableIterator +implements Iterator { + protected UnmodifiableIterator() { + } + + @Override + @Deprecated + public final void remove() { + throw new UnsupportedOperationException(); + } +} diff --git a/src/com/google/common/collect/UnmodifiableListIterator.java b/src/com/google/common/collect/UnmodifiableListIterator.java new file mode 100644 index 0000000..6c0297a --- /dev/null +++ b/src/com/google/common/collect/UnmodifiableListIterator.java @@ -0,0 +1,28 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.collect.UnmodifiableIterator; +import java.util.ListIterator; + +@GwtCompatible +public abstract class UnmodifiableListIterator +extends UnmodifiableIterator +implements ListIterator { + protected UnmodifiableListIterator() { + } + + @Override + @Deprecated + public final void add(E e) { + throw new UnsupportedOperationException(); + } + + @Override + @Deprecated + public final void set(E e) { + throw new UnsupportedOperationException(); + } +} diff --git a/src/com/google/common/collect/UnmodifiableSortedMultiset.java b/src/com/google/common/collect/UnmodifiableSortedMultiset.java new file mode 100644 index 0000000..6899280 --- /dev/null +++ b/src/com/google/common/collect/UnmodifiableSortedMultiset.java @@ -0,0 +1,92 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.collect.BoundType; +import com.google.common.collect.Multiset; +import com.google.common.collect.Multisets; +import com.google.common.collect.Sets; +import com.google.common.collect.SortedMultiset; +import java.util.Comparator; +import java.util.NavigableSet; + +@GwtCompatible(emulated=true) +final class UnmodifiableSortedMultiset +extends Multisets.UnmodifiableMultiset +implements SortedMultiset { + private transient UnmodifiableSortedMultiset descendingMultiset; + private static final long serialVersionUID = 0L; + + UnmodifiableSortedMultiset(SortedMultiset delegate) { + super(delegate); + } + + @Override + protected SortedMultiset delegate() { + return (SortedMultiset)super.delegate(); + } + + @Override + public Comparator comparator() { + return this.delegate().comparator(); + } + + @Override + NavigableSet createElementSet() { + return Sets.unmodifiableNavigableSet(this.delegate().elementSet()); + } + + @Override + public NavigableSet elementSet() { + return (NavigableSet)super.elementSet(); + } + + @Override + public SortedMultiset descendingMultiset() { + UnmodifiableSortedMultiset result = this.descendingMultiset; + if (result == null) { + result = new UnmodifiableSortedMultiset(this.delegate().descendingMultiset()); + result.descendingMultiset = this; + this.descendingMultiset = result; + return this.descendingMultiset; + } + return result; + } + + @Override + public Multiset.Entry firstEntry() { + return this.delegate().firstEntry(); + } + + @Override + public Multiset.Entry lastEntry() { + return this.delegate().lastEntry(); + } + + @Override + public Multiset.Entry pollFirstEntry() { + throw new UnsupportedOperationException(); + } + + @Override + public Multiset.Entry pollLastEntry() { + throw new UnsupportedOperationException(); + } + + @Override + public SortedMultiset headMultiset(E upperBound, BoundType boundType) { + return Multisets.unmodifiableSortedMultiset(this.delegate().headMultiset(upperBound, boundType)); + } + + @Override + public SortedMultiset subMultiset(E lowerBound, BoundType lowerBoundType, E upperBound, BoundType upperBoundType) { + return Multisets.unmodifiableSortedMultiset(this.delegate().subMultiset(lowerBound, lowerBoundType, upperBound, upperBoundType)); + } + + @Override + public SortedMultiset tailMultiset(E lowerBound, BoundType boundType) { + return Multisets.unmodifiableSortedMultiset(this.delegate().tailMultiset(lowerBound, boundType)); + } +} diff --git a/src/com/google/common/collect/UsingToStringOrdering.java b/src/com/google/common/collect/UsingToStringOrdering.java new file mode 100644 index 0000000..23de6dc --- /dev/null +++ b/src/com/google/common/collect/UsingToStringOrdering.java @@ -0,0 +1,32 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.collect.Ordering; +import java.io.Serializable; + +@GwtCompatible(serializable=true) +final class UsingToStringOrdering +extends Ordering +implements Serializable { + static final UsingToStringOrdering INSTANCE = new UsingToStringOrdering(); + private static final long serialVersionUID = 0L; + + @Override + public int compare(Object left, Object right) { + return left.toString().compareTo(right.toString()); + } + + private Object readResolve() { + return INSTANCE; + } + + public String toString() { + return "Ordering.usingToString()"; + } + + private UsingToStringOrdering() { + } +} diff --git a/src/com/google/common/collect/WellBehavedMap.java b/src/com/google/common/collect/WellBehavedMap.java new file mode 100644 index 0000000..4021c30 --- /dev/null +++ b/src/com/google/common/collect/WellBehavedMap.java @@ -0,0 +1,81 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.collect; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.collect.AbstractMapEntry; +import com.google.common.collect.ForwardingMap; +import com.google.common.collect.Maps; +import com.google.common.collect.TransformedIterator; +import java.util.Iterator; +import java.util.Map; +import java.util.Set; + +@GwtCompatible +final class WellBehavedMap +extends ForwardingMap { + private final Map delegate; + private Set> entrySet; + + private WellBehavedMap(Map delegate) { + this.delegate = delegate; + } + + static WellBehavedMap wrap(Map delegate) { + return new WellBehavedMap(delegate); + } + + @Override + protected Map delegate() { + return this.delegate; + } + + @Override + public Set> entrySet() { + Set> es = this.entrySet; + if (es != null) { + return es; + } + this.entrySet = new EntrySet(); + return this.entrySet; + } + + private final class EntrySet + extends Maps.EntrySet { + private EntrySet() { + } + + @Override + Map map() { + return WellBehavedMap.this; + } + + @Override + public Iterator> iterator() { + return new TransformedIterator>(WellBehavedMap.this.keySet().iterator()){ + + @Override + Map.Entry transform(final K key) { + return new AbstractMapEntry(){ + + @Override + public K getKey() { + return key; + } + + @Override + public V getValue() { + return WellBehavedMap.this.get(key); + } + + @Override + public V setValue(V value) { + return WellBehavedMap.this.put(key, value); + } + }; + } + }; + } + } +} diff --git a/src/com/google/common/collect/package-info.java b/src/com/google/common/collect/package-info.java new file mode 100644 index 0000000..a9887e5 --- /dev/null +++ b/src/com/google/common/collect/package-info.java @@ -0,0 +1,8 @@ +/* + * Decompiled with CFR 0.152. + */ +@ParametersAreNonnullByDefault +package com.google.common.collect; + +import javax.annotation.ParametersAreNonnullByDefault; + diff --git a/src/com/google/common/escape/ArrayBasedCharEscaper.java b/src/com/google/common/escape/ArrayBasedCharEscaper.java new file mode 100644 index 0000000..2764a56 --- /dev/null +++ b/src/com/google/common/escape/ArrayBasedCharEscaper.java @@ -0,0 +1,62 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.escape; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Preconditions; +import com.google.common.escape.ArrayBasedEscaperMap; +import com.google.common.escape.CharEscaper; +import java.util.Map; + +@Beta +@GwtCompatible +public abstract class ArrayBasedCharEscaper +extends CharEscaper { + private final char[][] replacements; + private final int replacementsLength; + private final char safeMin; + private final char safeMax; + + protected ArrayBasedCharEscaper(Map replacementMap, char safeMin, char safeMax) { + this(ArrayBasedEscaperMap.create(replacementMap), safeMin, safeMax); + } + + protected ArrayBasedCharEscaper(ArrayBasedEscaperMap escaperMap, char safeMin, char safeMax) { + Preconditions.checkNotNull(escaperMap); + this.replacements = escaperMap.getReplacementArray(); + this.replacementsLength = this.replacements.length; + if (safeMax < safeMin) { + safeMax = '\u0000'; + safeMin = (char)65535; + } + this.safeMin = safeMin; + this.safeMax = safeMax; + } + + @Override + public final String escape(String s) { + Preconditions.checkNotNull(s); + for (int i = 0; i < s.length(); ++i) { + char c = s.charAt(i); + if ((c >= this.replacementsLength || this.replacements[c] == null) && c <= this.safeMax && c >= this.safeMin) continue; + return this.escapeSlow(s, i); + } + return s; + } + + @Override + protected final char[] escape(char c) { + char[] chars; + if (c < this.replacementsLength && (chars = this.replacements[c]) != null) { + return chars; + } + if (c >= this.safeMin && c <= this.safeMax) { + return null; + } + return this.escapeUnsafe(c); + } + + protected abstract char[] escapeUnsafe(char var1); +} diff --git a/src/com/google/common/escape/ArrayBasedEscaperMap.java b/src/com/google/common/escape/ArrayBasedEscaperMap.java new file mode 100644 index 0000000..5d3766b --- /dev/null +++ b/src/com/google/common/escape/ArrayBasedEscaperMap.java @@ -0,0 +1,44 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.escape; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.Preconditions; +import java.util.Collections; +import java.util.Map; + +@Beta +@GwtCompatible +public final class ArrayBasedEscaperMap { + private final char[][] replacementArray; + private static final char[][] EMPTY_REPLACEMENT_ARRAY = new char[0][0]; + + public static ArrayBasedEscaperMap create(Map replacements) { + return new ArrayBasedEscaperMap(ArrayBasedEscaperMap.createReplacementArray(replacements)); + } + + private ArrayBasedEscaperMap(char[][] replacementArray) { + this.replacementArray = replacementArray; + } + + char[][] getReplacementArray() { + return this.replacementArray; + } + + @VisibleForTesting + static char[][] createReplacementArray(Map map) { + Preconditions.checkNotNull(map); + if (map.isEmpty()) { + return EMPTY_REPLACEMENT_ARRAY; + } + char max = Collections.max(map.keySet()).charValue(); + char[][] replacements = new char[max + '\u0001'][]; + for (char c : map.keySet()) { + replacements[c] = map.get(Character.valueOf(c)).toCharArray(); + } + return replacements; + } +} diff --git a/src/com/google/common/escape/ArrayBasedUnicodeEscaper.java b/src/com/google/common/escape/ArrayBasedUnicodeEscaper.java new file mode 100644 index 0000000..02a2dc4 --- /dev/null +++ b/src/com/google/common/escape/ArrayBasedUnicodeEscaper.java @@ -0,0 +1,81 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.escape; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Preconditions; +import com.google.common.escape.ArrayBasedEscaperMap; +import com.google.common.escape.UnicodeEscaper; +import java.util.Map; +import javax.annotation.Nullable; + +@Beta +@GwtCompatible +public abstract class ArrayBasedUnicodeEscaper +extends UnicodeEscaper { + private final char[][] replacements; + private final int replacementsLength; + private final int safeMin; + private final int safeMax; + private final char safeMinChar; + private final char safeMaxChar; + + protected ArrayBasedUnicodeEscaper(Map replacementMap, int safeMin, int safeMax, @Nullable String unsafeReplacement) { + this(ArrayBasedEscaperMap.create(replacementMap), safeMin, safeMax, unsafeReplacement); + } + + protected ArrayBasedUnicodeEscaper(ArrayBasedEscaperMap escaperMap, int safeMin, int safeMax, @Nullable String unsafeReplacement) { + Preconditions.checkNotNull(escaperMap); + this.replacements = escaperMap.getReplacementArray(); + this.replacementsLength = this.replacements.length; + if (safeMax < safeMin) { + safeMax = -1; + safeMin = Integer.MAX_VALUE; + } + this.safeMin = safeMin; + this.safeMax = safeMax; + if (safeMin >= 55296) { + this.safeMinChar = (char)65535; + this.safeMaxChar = '\u0000'; + } else { + this.safeMinChar = (char)safeMin; + this.safeMaxChar = (char)Math.min(safeMax, 55295); + } + } + + @Override + public final String escape(String s) { + Preconditions.checkNotNull(s); + for (int i = 0; i < s.length(); ++i) { + char c = s.charAt(i); + if ((c >= this.replacementsLength || this.replacements[c] == null) && c <= this.safeMaxChar && c >= this.safeMinChar) continue; + return this.escapeSlow(s, i); + } + return s; + } + + @Override + protected final int nextEscapeIndex(CharSequence csq, int index, int end) { + char c; + while (index < end && ((c = csq.charAt(index)) >= this.replacementsLength || this.replacements[c] == null) && c <= this.safeMaxChar && c >= this.safeMinChar) { + ++index; + } + return index; + } + + @Override + protected final char[] escape(int cp) { + char[] chars; + if (cp < this.replacementsLength && (chars = this.replacements[cp]) != null) { + return chars; + } + if (cp >= this.safeMin && cp <= this.safeMax) { + return null; + } + return this.escapeUnsafe(cp); + } + + protected abstract char[] escapeUnsafe(int var1); +} diff --git a/src/com/google/common/escape/CharEscaper.java b/src/com/google/common/escape/CharEscaper.java new file mode 100644 index 0000000..c5d7aa0 --- /dev/null +++ b/src/com/google/common/escape/CharEscaper.java @@ -0,0 +1,81 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.escape; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Preconditions; +import com.google.common.escape.Escaper; +import com.google.common.escape.Platform; + +@Beta +@GwtCompatible +public abstract class CharEscaper +extends Escaper { + private static final int DEST_PAD_MULTIPLIER = 2; + + protected CharEscaper() { + } + + @Override + public String escape(String string) { + Preconditions.checkNotNull(string); + int length = string.length(); + for (int index = 0; index < length; ++index) { + if (this.escape(string.charAt(index)) == null) continue; + return this.escapeSlow(string, index); + } + return string; + } + + protected final String escapeSlow(String s, int index) { + int slen = s.length(); + char[] dest = Platform.charBufferFromThreadLocal(); + int destSize = dest.length; + int destIndex = 0; + int lastEscape = 0; + while (index < slen) { + char[] r = this.escape(s.charAt(index)); + if (r != null) { + int charsSkipped = index - lastEscape; + int rlen = r.length; + int sizeNeeded = destIndex + charsSkipped + rlen; + if (destSize < sizeNeeded) { + destSize = sizeNeeded + 2 * (slen - index); + dest = CharEscaper.growBuffer(dest, destIndex, destSize); + } + if (charsSkipped > 0) { + s.getChars(lastEscape, index, dest, destIndex); + destIndex += charsSkipped; + } + if (rlen > 0) { + System.arraycopy(r, 0, dest, destIndex, rlen); + destIndex += rlen; + } + lastEscape = index + 1; + } + ++index; + } + int charsLeft = slen - lastEscape; + if (charsLeft > 0) { + int sizeNeeded = destIndex + charsLeft; + if (destSize < sizeNeeded) { + dest = CharEscaper.growBuffer(dest, destIndex, sizeNeeded); + } + s.getChars(lastEscape, slen, dest, destIndex); + destIndex = sizeNeeded; + } + return new String(dest, 0, destIndex); + } + + protected abstract char[] escape(char var1); + + private static char[] growBuffer(char[] dest, int index, int size) { + char[] copy = new char[size]; + if (index > 0) { + System.arraycopy(dest, 0, copy, 0, index); + } + return copy; + } +} diff --git a/src/com/google/common/escape/CharEscaperBuilder.java b/src/com/google/common/escape/CharEscaperBuilder.java new file mode 100644 index 0000000..ff56f14 --- /dev/null +++ b/src/com/google/common/escape/CharEscaperBuilder.java @@ -0,0 +1,74 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.escape; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Preconditions; +import com.google.common.escape.CharEscaper; +import com.google.common.escape.Escaper; +import java.util.HashMap; +import java.util.Map; + +@Beta +@GwtCompatible +public final class CharEscaperBuilder { + private final Map map = new HashMap(); + private int max = -1; + + public CharEscaperBuilder addEscape(char c, String r) { + this.map.put(Character.valueOf(c), Preconditions.checkNotNull(r)); + if (c > this.max) { + this.max = c; + } + return this; + } + + public CharEscaperBuilder addEscapes(char[] cs, String r) { + Preconditions.checkNotNull(r); + for (char c : cs) { + this.addEscape(c, r); + } + return this; + } + + public char[][] toArray() { + char[][] result = new char[this.max + 1][]; + for (Map.Entry entry : this.map.entrySet()) { + result[entry.getKey().charValue()] = entry.getValue().toCharArray(); + } + return result; + } + + public Escaper toEscaper() { + return new CharArrayDecorator(this.toArray()); + } + + private static class CharArrayDecorator + extends CharEscaper { + private final char[][] replacements; + private final int replaceLength; + + CharArrayDecorator(char[][] replacements) { + this.replacements = replacements; + this.replaceLength = replacements.length; + } + + @Override + public String escape(String s) { + int slen = s.length(); + for (int index = 0; index < slen; ++index) { + char c = s.charAt(index); + if (c >= this.replacements.length || this.replacements[c] == null) continue; + return this.escapeSlow(s, index); + } + return s; + } + + @Override + protected char[] escape(char c) { + return c < this.replaceLength ? this.replacements[c] : null; + } + } +} diff --git a/src/com/google/common/escape/Escaper.java b/src/com/google/common/escape/Escaper.java new file mode 100644 index 0000000..73c91ce --- /dev/null +++ b/src/com/google/common/escape/Escaper.java @@ -0,0 +1,29 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.escape; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Function; + +@Beta +@GwtCompatible +public abstract class Escaper { + private final Function asFunction = new Function(){ + + @Override + public String apply(String from) { + return Escaper.this.escape(from); + } + }; + + protected Escaper() { + } + + public abstract String escape(String var1); + + public final Function asFunction() { + return this.asFunction; + } +} diff --git a/src/com/google/common/escape/Escapers.java b/src/com/google/common/escape/Escapers.java new file mode 100644 index 0000000..fbf1b98 --- /dev/null +++ b/src/com/google/common/escape/Escapers.java @@ -0,0 +1,147 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.escape; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Preconditions; +import com.google.common.escape.ArrayBasedCharEscaper; +import com.google.common.escape.CharEscaper; +import com.google.common.escape.Escaper; +import com.google.common.escape.UnicodeEscaper; +import java.util.HashMap; +import java.util.Map; +import javax.annotation.Nullable; + +@Beta +@GwtCompatible +public final class Escapers { + private static final Escaper NULL_ESCAPER = new CharEscaper(){ + + @Override + public String escape(String string) { + return Preconditions.checkNotNull(string); + } + + @Override + protected char[] escape(char c) { + return null; + } + }; + + private Escapers() { + } + + public static Escaper nullEscaper() { + return NULL_ESCAPER; + } + + public static Builder builder() { + return new Builder(); + } + + static UnicodeEscaper asUnicodeEscaper(Escaper escaper) { + Preconditions.checkNotNull(escaper); + if (escaper instanceof UnicodeEscaper) { + return (UnicodeEscaper)escaper; + } + if (escaper instanceof CharEscaper) { + return Escapers.wrap((CharEscaper)escaper); + } + String string = String.valueOf(escaper.getClass().getName()); + throw new IllegalArgumentException(string.length() != 0 ? "Cannot create a UnicodeEscaper from: ".concat(string) : new String("Cannot create a UnicodeEscaper from: ")); + } + + public static String computeReplacement(CharEscaper escaper, char c) { + return Escapers.stringOrNull(escaper.escape(c)); + } + + public static String computeReplacement(UnicodeEscaper escaper, int cp) { + return Escapers.stringOrNull(escaper.escape(cp)); + } + + private static String stringOrNull(char[] in) { + return in == null ? null : new String(in); + } + + private static UnicodeEscaper wrap(final CharEscaper escaper) { + return new UnicodeEscaper(){ + + @Override + protected char[] escape(int cp) { + int n; + if (cp < 65536) { + return escaper.escape((char)cp); + } + char[] surrogateChars = new char[2]; + Character.toChars(cp, surrogateChars, 0); + char[] hiChars = escaper.escape(surrogateChars[0]); + char[] loChars = escaper.escape(surrogateChars[1]); + if (hiChars == null && loChars == null) { + return null; + } + int hiCount = hiChars != null ? hiChars.length : 1; + int loCount = loChars != null ? loChars.length : 1; + char[] output = new char[hiCount + loCount]; + if (hiChars != null) { + for (n = 0; n < hiChars.length; ++n) { + output[n] = hiChars[n]; + } + } else { + output[0] = surrogateChars[0]; + } + if (loChars != null) { + for (n = 0; n < loChars.length; ++n) { + output[hiCount + n] = loChars[n]; + } + } else { + output[hiCount] = surrogateChars[1]; + } + return output; + } + }; + } + + @Beta + public static final class Builder { + private final Map replacementMap = new HashMap(); + private char safeMin = '\u0000'; + private char safeMax = (char)65535; + private String unsafeReplacement = null; + + private Builder() { + } + + public Builder setSafeRange(char safeMin, char safeMax) { + this.safeMin = safeMin; + this.safeMax = safeMax; + return this; + } + + public Builder setUnsafeReplacement(@Nullable String unsafeReplacement) { + this.unsafeReplacement = unsafeReplacement; + return this; + } + + public Builder addEscape(char c, String replacement) { + Preconditions.checkNotNull(replacement); + this.replacementMap.put(Character.valueOf(c), replacement); + return this; + } + + public Escaper build() { + return new ArrayBasedCharEscaper(this.replacementMap, this.safeMin, this.safeMax){ + private final char[] replacementChars; + { + this.replacementChars = Builder.this.unsafeReplacement != null ? Builder.this.unsafeReplacement.toCharArray() : null; + } + + @Override + protected char[] escapeUnsafe(char c) { + return this.replacementChars; + } + }; + } + } +} diff --git a/src/com/google/common/escape/Platform.java b/src/com/google/common/escape/Platform.java new file mode 100644 index 0000000..c669e02 --- /dev/null +++ b/src/com/google/common/escape/Platform.java @@ -0,0 +1,24 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.escape; + +import com.google.common.annotations.GwtCompatible; + +@GwtCompatible(emulated=true) +final class Platform { + private static final ThreadLocal DEST_TL = new ThreadLocal(){ + + @Override + protected char[] initialValue() { + return new char[1024]; + } + }; + + private Platform() { + } + + static char[] charBufferFromThreadLocal() { + return DEST_TL.get(); + } +} diff --git a/src/com/google/common/escape/UnicodeEscaper.java b/src/com/google/common/escape/UnicodeEscaper.java new file mode 100644 index 0000000..179c563 --- /dev/null +++ b/src/com/google/common/escape/UnicodeEscaper.java @@ -0,0 +1,119 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.escape; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Preconditions; +import com.google.common.escape.Escaper; +import com.google.common.escape.Platform; + +@Beta +@GwtCompatible +public abstract class UnicodeEscaper +extends Escaper { + private static final int DEST_PAD = 32; + + protected UnicodeEscaper() { + } + + protected abstract char[] escape(int var1); + + protected int nextEscapeIndex(CharSequence csq, int start, int end) { + int index; + int cp; + for (index = start; index < end && (cp = UnicodeEscaper.codePointAt(csq, index, end)) >= 0 && this.escape(cp) == null; index += Character.isSupplementaryCodePoint(cp) ? 2 : 1) { + } + return index; + } + + @Override + public String escape(String string) { + Preconditions.checkNotNull(string); + int end = string.length(); + int index = this.nextEscapeIndex(string, 0, end); + return index == end ? string : this.escapeSlow(string, index); + } + + protected final String escapeSlow(String s, int index) { + int end = s.length(); + char[] dest = Platform.charBufferFromThreadLocal(); + int destIndex = 0; + int unescapedChunkStart = 0; + while (index < end) { + int cp = UnicodeEscaper.codePointAt(s, index, end); + if (cp < 0) { + throw new IllegalArgumentException("Trailing high surrogate at end of input"); + } + char[] escaped = this.escape(cp); + int nextIndex = index + (Character.isSupplementaryCodePoint(cp) ? 2 : 1); + if (escaped != null) { + int charsSkipped = index - unescapedChunkStart; + int sizeNeeded = destIndex + charsSkipped + escaped.length; + if (dest.length < sizeNeeded) { + int destLength = sizeNeeded + (end - index) + 32; + dest = UnicodeEscaper.growBuffer(dest, destIndex, destLength); + } + if (charsSkipped > 0) { + s.getChars(unescapedChunkStart, index, dest, destIndex); + destIndex += charsSkipped; + } + if (escaped.length > 0) { + System.arraycopy(escaped, 0, dest, destIndex, escaped.length); + destIndex += escaped.length; + } + unescapedChunkStart = nextIndex; + } + index = this.nextEscapeIndex(s, nextIndex, end); + } + int charsSkipped = end - unescapedChunkStart; + if (charsSkipped > 0) { + int endIndex = destIndex + charsSkipped; + if (dest.length < endIndex) { + dest = UnicodeEscaper.growBuffer(dest, destIndex, endIndex); + } + s.getChars(unescapedChunkStart, end, dest, destIndex); + destIndex = endIndex; + } + return new String(dest, 0, destIndex); + } + + protected static int codePointAt(CharSequence seq, int index, int end) { + Preconditions.checkNotNull(seq); + if (index < end) { + char c1; + if ((c1 = seq.charAt(index++)) < '\ud800' || c1 > '\udfff') { + return c1; + } + if (c1 <= '\udbff') { + if (index == end) { + return -c1; + } + char c2 = seq.charAt(index); + if (Character.isLowSurrogate(c2)) { + return Character.toCodePoint(c1, c2); + } + char c = c2; + char c3 = c2; + int n = index; + String string = String.valueOf(String.valueOf(seq)); + throw new IllegalArgumentException(new StringBuilder(89 + string.length()).append("Expected low surrogate but got char '").append(c).append("' with value ").append((int)c3).append(" at index ").append(n).append(" in '").append(string).append("'").toString()); + } + char c = c1; + char c4 = c1; + int n = index - 1; + String string = String.valueOf(String.valueOf(seq)); + throw new IllegalArgumentException(new StringBuilder(88 + string.length()).append("Unexpected low surrogate character '").append(c).append("' with value ").append((int)c4).append(" at index ").append(n).append(" in '").append(string).append("'").toString()); + } + throw new IndexOutOfBoundsException("Index exceeds specified range"); + } + + private static char[] growBuffer(char[] dest, int index, int size) { + char[] copy = new char[size]; + if (index > 0) { + System.arraycopy(dest, 0, copy, 0, index); + } + return copy; + } +} diff --git a/src/com/google/common/escape/package-info.java b/src/com/google/common/escape/package-info.java new file mode 100644 index 0000000..8ebd789 --- /dev/null +++ b/src/com/google/common/escape/package-info.java @@ -0,0 +1,8 @@ +/* + * Decompiled with CFR 0.152. + */ +@ParametersAreNonnullByDefault +package com.google.common.escape; + +import javax.annotation.ParametersAreNonnullByDefault; + diff --git a/src/com/google/common/eventbus/AllowConcurrentEvents.java b/src/com/google/common/eventbus/AllowConcurrentEvents.java new file mode 100644 index 0000000..1978116 --- /dev/null +++ b/src/com/google/common/eventbus/AllowConcurrentEvents.java @@ -0,0 +1,16 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.eventbus; + +import com.google.common.annotations.Beta; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(value=RetentionPolicy.RUNTIME) +@Target(value={ElementType.METHOD}) +@Beta +public @interface AllowConcurrentEvents { +} diff --git a/src/com/google/common/eventbus/AnnotatedSubscriberFinder.java b/src/com/google/common/eventbus/AnnotatedSubscriberFinder.java new file mode 100644 index 0000000..7d83739 --- /dev/null +++ b/src/com/google/common/eventbus/AnnotatedSubscriberFinder.java @@ -0,0 +1,114 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.eventbus; + +import com.google.common.base.Objects; +import com.google.common.base.Throwables; +import com.google.common.cache.CacheBuilder; +import com.google.common.cache.CacheLoader; +import com.google.common.cache.LoadingCache; +import com.google.common.collect.HashMultimap; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.Maps; +import com.google.common.collect.Multimap; +import com.google.common.eventbus.AllowConcurrentEvents; +import com.google.common.eventbus.EventSubscriber; +import com.google.common.eventbus.Subscribe; +import com.google.common.eventbus.SubscriberFindingStrategy; +import com.google.common.eventbus.SynchronizedEventSubscriber; +import com.google.common.reflect.TypeToken; +import com.google.common.util.concurrent.UncheckedExecutionException; +import java.lang.reflect.Method; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Set; +import javax.annotation.Nullable; + +class AnnotatedSubscriberFinder +implements SubscriberFindingStrategy { + private static final LoadingCache, ImmutableList> subscriberMethodsCache = CacheBuilder.newBuilder().weakKeys().build(new CacheLoader, ImmutableList>(){ + + @Override + public ImmutableList load(Class concreteClass) throws Exception { + return AnnotatedSubscriberFinder.getAnnotatedMethodsInternal(concreteClass); + } + }); + + AnnotatedSubscriberFinder() { + } + + @Override + public Multimap, EventSubscriber> findAllSubscribers(Object listener) { + HashMultimap, EventSubscriber> methodsInListener = HashMultimap.create(); + Class clazz = listener.getClass(); + for (Method method : AnnotatedSubscriberFinder.getAnnotatedMethods(clazz)) { + Class[] parameterTypes = method.getParameterTypes(); + Class eventType = parameterTypes[0]; + EventSubscriber subscriber = AnnotatedSubscriberFinder.makeSubscriber(listener, method); + methodsInListener.put(eventType, subscriber); + } + return methodsInListener; + } + + private static ImmutableList getAnnotatedMethods(Class clazz) { + try { + return subscriberMethodsCache.getUnchecked(clazz); + } + catch (UncheckedExecutionException e) { + throw Throwables.propagate(e.getCause()); + } + } + + private static ImmutableList getAnnotatedMethodsInternal(Class clazz) { + Set supers = TypeToken.of(clazz).getTypes().rawTypes(); + HashMap identifiers = Maps.newHashMap(); + for (Class superClazz : supers) { + for (Method superClazzMethod : superClazz.getMethods()) { + if (!superClazzMethod.isAnnotationPresent(Subscribe.class) || superClazzMethod.isBridge()) continue; + Class[] parameterTypes = superClazzMethod.getParameterTypes(); + if (parameterTypes.length != 1) { + String string = String.valueOf(String.valueOf(superClazzMethod)); + int n = parameterTypes.length; + throw new IllegalArgumentException(new StringBuilder(128 + string.length()).append("Method ").append(string).append(" has @Subscribe annotation, but requires ").append(n).append(" arguments. Event subscriber methods must require a single argument.").toString()); + } + MethodIdentifier ident = new MethodIdentifier(superClazzMethod); + if (identifiers.containsKey(ident)) continue; + identifiers.put(ident, superClazzMethod); + } + } + return ImmutableList.copyOf(identifiers.values()); + } + + private static EventSubscriber makeSubscriber(Object listener, Method method) { + EventSubscriber wrapper = AnnotatedSubscriberFinder.methodIsDeclaredThreadSafe(method) ? new EventSubscriber(listener, method) : new SynchronizedEventSubscriber(listener, method); + return wrapper; + } + + private static boolean methodIsDeclaredThreadSafe(Method method) { + return method.getAnnotation(AllowConcurrentEvents.class) != null; + } + + private static final class MethodIdentifier { + private final String name; + private final List> parameterTypes; + + MethodIdentifier(Method method) { + this.name = method.getName(); + this.parameterTypes = Arrays.asList(method.getParameterTypes()); + } + + public int hashCode() { + return Objects.hashCode(this.name, this.parameterTypes); + } + + public boolean equals(@Nullable Object o) { + if (o instanceof MethodIdentifier) { + MethodIdentifier ident = (MethodIdentifier)o; + return this.name.equals(ident.name) && this.parameterTypes.equals(ident.parameterTypes); + } + return false; + } + } +} diff --git a/src/com/google/common/eventbus/AsyncEventBus.java b/src/com/google/common/eventbus/AsyncEventBus.java new file mode 100644 index 0000000..b631093 --- /dev/null +++ b/src/com/google/common/eventbus/AsyncEventBus.java @@ -0,0 +1,60 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.eventbus; + +import com.google.common.annotations.Beta; +import com.google.common.base.Preconditions; +import com.google.common.eventbus.EventBus; +import com.google.common.eventbus.EventSubscriber; +import com.google.common.eventbus.SubscriberExceptionHandler; +import java.util.concurrent.ConcurrentLinkedQueue; +import java.util.concurrent.Executor; + +@Beta +public class AsyncEventBus +extends EventBus { + private final Executor executor; + private final ConcurrentLinkedQueue eventsToDispatch = new ConcurrentLinkedQueue(); + + public AsyncEventBus(String identifier, Executor executor) { + super(identifier); + this.executor = Preconditions.checkNotNull(executor); + } + + public AsyncEventBus(Executor executor, SubscriberExceptionHandler subscriberExceptionHandler) { + super(subscriberExceptionHandler); + this.executor = Preconditions.checkNotNull(executor); + } + + public AsyncEventBus(Executor executor) { + super("default"); + this.executor = Preconditions.checkNotNull(executor); + } + + @Override + void enqueueEvent(Object event, EventSubscriber subscriber) { + this.eventsToDispatch.offer(new EventBus.EventWithSubscriber(event, subscriber)); + } + + @Override + protected void dispatchQueuedEvents() { + EventBus.EventWithSubscriber eventWithSubscriber; + while ((eventWithSubscriber = this.eventsToDispatch.poll()) != null) { + this.dispatch(eventWithSubscriber.event, eventWithSubscriber.subscriber); + } + } + + @Override + void dispatch(final Object event, final EventSubscriber subscriber) { + Preconditions.checkNotNull(event); + Preconditions.checkNotNull(subscriber); + this.executor.execute(new Runnable(){ + + @Override + public void run() { + AsyncEventBus.super.dispatch(event, subscriber); + } + }); + } +} diff --git a/src/com/google/common/eventbus/DeadEvent.java b/src/com/google/common/eventbus/DeadEvent.java new file mode 100644 index 0000000..fe1aa11 --- /dev/null +++ b/src/com/google/common/eventbus/DeadEvent.java @@ -0,0 +1,26 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.eventbus; + +import com.google.common.annotations.Beta; +import com.google.common.base.Preconditions; + +@Beta +public class DeadEvent { + private final Object source; + private final Object event; + + public DeadEvent(Object source, Object event) { + this.source = Preconditions.checkNotNull(source); + this.event = Preconditions.checkNotNull(event); + } + + public Object getSource() { + return this.source; + } + + public Object getEvent() { + return this.event; + } +} diff --git a/src/com/google/common/eventbus/EventBus.java b/src/com/google/common/eventbus/EventBus.java new file mode 100644 index 0000000..442a73f --- /dev/null +++ b/src/com/google/common/eventbus/EventBus.java @@ -0,0 +1,214 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.eventbus; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.Preconditions; +import com.google.common.base.Throwables; +import com.google.common.cache.CacheBuilder; +import com.google.common.cache.CacheLoader; +import com.google.common.cache.LoadingCache; +import com.google.common.collect.HashMultimap; +import com.google.common.collect.Multimap; +import com.google.common.collect.SetMultimap; +import com.google.common.eventbus.AnnotatedSubscriberFinder; +import com.google.common.eventbus.DeadEvent; +import com.google.common.eventbus.EventSubscriber; +import com.google.common.eventbus.SubscriberExceptionContext; +import com.google.common.eventbus.SubscriberExceptionHandler; +import com.google.common.eventbus.SubscriberFindingStrategy; +import com.google.common.reflect.TypeToken; +import com.google.common.util.concurrent.UncheckedExecutionException; +import java.lang.reflect.InvocationTargetException; +import java.util.Collection; +import java.util.LinkedList; +import java.util.Map; +import java.util.Queue; +import java.util.Set; +import java.util.concurrent.locks.ReadWriteLock; +import java.util.concurrent.locks.ReentrantReadWriteLock; +import java.util.logging.Level; +import java.util.logging.Logger; + +@Beta +public class EventBus { + private static final LoadingCache, Set>> flattenHierarchyCache = CacheBuilder.newBuilder().weakKeys().build(new CacheLoader, Set>>(){ + + @Override + public Set> load(Class concreteClass) { + return TypeToken.of(concreteClass).getTypes().rawTypes(); + } + }); + private final SetMultimap, EventSubscriber> subscribersByType = HashMultimap.create(); + private final ReadWriteLock subscribersByTypeLock = new ReentrantReadWriteLock(); + private final SubscriberFindingStrategy finder = new AnnotatedSubscriberFinder(); + private final ThreadLocal> eventsToDispatch = new ThreadLocal>(){ + + @Override + protected Queue initialValue() { + return new LinkedList(); + } + }; + private final ThreadLocal isDispatching = new ThreadLocal(){ + + @Override + protected Boolean initialValue() { + return false; + } + }; + private SubscriberExceptionHandler subscriberExceptionHandler; + + public EventBus() { + this("default"); + } + + public EventBus(String identifier) { + this(new LoggingSubscriberExceptionHandler(identifier)); + } + + public EventBus(SubscriberExceptionHandler subscriberExceptionHandler) { + this.subscriberExceptionHandler = Preconditions.checkNotNull(subscriberExceptionHandler); + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + public void register(Object object) { + Multimap, EventSubscriber> methodsInListener = this.finder.findAllSubscribers(object); + this.subscribersByTypeLock.writeLock().lock(); + try { + this.subscribersByType.putAll(methodsInListener); + } + finally { + this.subscribersByTypeLock.writeLock().unlock(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + public void unregister(Object object) { + Multimap, EventSubscriber> methodsInListener = this.finder.findAllSubscribers(object); + for (Map.Entry, Collection> entry : methodsInListener.asMap().entrySet()) { + Class eventType = entry.getKey(); + Collection eventMethodsInListener = entry.getValue(); + this.subscribersByTypeLock.writeLock().lock(); + try { + Set currentSubscribers = this.subscribersByType.get(eventType); + if (!currentSubscribers.containsAll(eventMethodsInListener)) { + String string = String.valueOf(String.valueOf(object)); + throw new IllegalArgumentException(new StringBuilder(65 + string.length()).append("missing event subscriber for an annotated method. Is ").append(string).append(" registered?").toString()); + } + currentSubscribers.removeAll(eventMethodsInListener); + } + finally { + this.subscribersByTypeLock.writeLock().unlock(); + } + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + public void post(Object event) { + Set> dispatchTypes = this.flattenHierarchy(event.getClass()); + boolean dispatched = false; + for (Class eventType : dispatchTypes) { + this.subscribersByTypeLock.readLock().lock(); + try { + Set wrappers = this.subscribersByType.get(eventType); + if (wrappers.isEmpty()) continue; + dispatched = true; + for (EventSubscriber wrapper : wrappers) { + this.enqueueEvent(event, wrapper); + } + } + finally { + this.subscribersByTypeLock.readLock().unlock(); + } + } + if (!dispatched && !(event instanceof DeadEvent)) { + this.post(new DeadEvent(this, event)); + } + this.dispatchQueuedEvents(); + } + + void enqueueEvent(Object event, EventSubscriber subscriber) { + this.eventsToDispatch.get().offer(new EventWithSubscriber(event, subscriber)); + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + void dispatchQueuedEvents() { + if (this.isDispatching.get().booleanValue()) { + return; + } + this.isDispatching.set(true); + try { + EventWithSubscriber eventWithSubscriber; + Queue events = this.eventsToDispatch.get(); + while ((eventWithSubscriber = events.poll()) != null) { + this.dispatch(eventWithSubscriber.event, eventWithSubscriber.subscriber); + } + } + finally { + this.isDispatching.remove(); + this.eventsToDispatch.remove(); + } + } + + void dispatch(Object event, EventSubscriber wrapper) { + try { + wrapper.handleEvent(event); + } + catch (InvocationTargetException e) { + try { + this.subscriberExceptionHandler.handleException(e.getCause(), new SubscriberExceptionContext(this, event, wrapper.getSubscriber(), wrapper.getMethod())); + } + catch (Throwable t) { + Logger.getLogger(EventBus.class.getName()).log(Level.SEVERE, String.format("Exception %s thrown while handling exception: %s", t, e.getCause()), t); + } + } + } + + @VisibleForTesting + Set> flattenHierarchy(Class concreteClass) { + try { + return flattenHierarchyCache.getUnchecked(concreteClass); + } + catch (UncheckedExecutionException e) { + throw Throwables.propagate(e.getCause()); + } + } + + static class EventWithSubscriber { + final Object event; + final EventSubscriber subscriber; + + public EventWithSubscriber(Object event, EventSubscriber subscriber) { + this.event = Preconditions.checkNotNull(event); + this.subscriber = Preconditions.checkNotNull(subscriber); + } + } + + private static final class LoggingSubscriberExceptionHandler + implements SubscriberExceptionHandler { + private final Logger logger; + + public LoggingSubscriberExceptionHandler(String identifier) { + String string = String.valueOf(String.valueOf(EventBus.class.getName())); + String string2 = String.valueOf(String.valueOf(Preconditions.checkNotNull(identifier))); + this.logger = Logger.getLogger(new StringBuilder(1 + string.length() + string2.length()).append(string).append(".").append(string2).toString()); + } + + @Override + public void handleException(Throwable exception, SubscriberExceptionContext context) { + String string = String.valueOf(String.valueOf(context.getSubscriber())); + String string2 = String.valueOf(String.valueOf(context.getSubscriberMethod())); + this.logger.log(Level.SEVERE, new StringBuilder(30 + string.length() + string2.length()).append("Could not dispatch event: ").append(string).append(" to ").append(string2).toString(), exception.getCause()); + } + } +} diff --git a/src/com/google/common/eventbus/EventSubscriber.java b/src/com/google/common/eventbus/EventSubscriber.java new file mode 100644 index 0000000..ea0fa16 --- /dev/null +++ b/src/com/google/common/eventbus/EventSubscriber.java @@ -0,0 +1,69 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.eventbus; + +import com.google.common.base.Preconditions; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import javax.annotation.Nullable; + +class EventSubscriber { + private final Object target; + private final Method method; + + EventSubscriber(Object target, Method method) { + Preconditions.checkNotNull(target, "EventSubscriber target cannot be null."); + Preconditions.checkNotNull(method, "EventSubscriber method cannot be null."); + this.target = target; + this.method = method; + method.setAccessible(true); + } + + public void handleEvent(Object event) throws InvocationTargetException { + Preconditions.checkNotNull(event); + try { + this.method.invoke(this.target, event); + } + catch (IllegalArgumentException e) { + String string = String.valueOf(String.valueOf(event)); + throw new Error(new StringBuilder(33 + string.length()).append("Method rejected target/argument: ").append(string).toString(), e); + } + catch (IllegalAccessException e) { + String string = String.valueOf(String.valueOf(event)); + throw new Error(new StringBuilder(28 + string.length()).append("Method became inaccessible: ").append(string).toString(), e); + } + catch (InvocationTargetException e) { + if (e.getCause() instanceof Error) { + throw (Error)e.getCause(); + } + throw e; + } + } + + public String toString() { + String string = String.valueOf(String.valueOf(this.method)); + return new StringBuilder(10 + string.length()).append("[wrapper ").append(string).append("]").toString(); + } + + public int hashCode() { + int PRIME = 31; + return (31 + this.method.hashCode()) * 31 + System.identityHashCode(this.target); + } + + public boolean equals(@Nullable Object obj) { + if (obj instanceof EventSubscriber) { + EventSubscriber that = (EventSubscriber)obj; + return this.target == that.target && this.method.equals(that.method); + } + return false; + } + + public Object getSubscriber() { + return this.target; + } + + public Method getMethod() { + return this.method; + } +} diff --git a/src/com/google/common/eventbus/Subscribe.java b/src/com/google/common/eventbus/Subscribe.java new file mode 100644 index 0000000..0035945 --- /dev/null +++ b/src/com/google/common/eventbus/Subscribe.java @@ -0,0 +1,16 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.eventbus; + +import com.google.common.annotations.Beta; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(value=RetentionPolicy.RUNTIME) +@Target(value={ElementType.METHOD}) +@Beta +public @interface Subscribe { +} diff --git a/src/com/google/common/eventbus/SubscriberExceptionContext.java b/src/com/google/common/eventbus/SubscriberExceptionContext.java new file mode 100644 index 0000000..9ebea3e --- /dev/null +++ b/src/com/google/common/eventbus/SubscriberExceptionContext.java @@ -0,0 +1,38 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.eventbus; + +import com.google.common.base.Preconditions; +import com.google.common.eventbus.EventBus; +import java.lang.reflect.Method; + +public class SubscriberExceptionContext { + private final EventBus eventBus; + private final Object event; + private final Object subscriber; + private final Method subscriberMethod; + + SubscriberExceptionContext(EventBus eventBus, Object event, Object subscriber, Method subscriberMethod) { + this.eventBus = Preconditions.checkNotNull(eventBus); + this.event = Preconditions.checkNotNull(event); + this.subscriber = Preconditions.checkNotNull(subscriber); + this.subscriberMethod = Preconditions.checkNotNull(subscriberMethod); + } + + public EventBus getEventBus() { + return this.eventBus; + } + + public Object getEvent() { + return this.event; + } + + public Object getSubscriber() { + return this.subscriber; + } + + public Method getSubscriberMethod() { + return this.subscriberMethod; + } +} diff --git a/src/com/google/common/eventbus/SubscriberExceptionHandler.java b/src/com/google/common/eventbus/SubscriberExceptionHandler.java new file mode 100644 index 0000000..94b155a --- /dev/null +++ b/src/com/google/common/eventbus/SubscriberExceptionHandler.java @@ -0,0 +1,10 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.eventbus; + +import com.google.common.eventbus.SubscriberExceptionContext; + +public interface SubscriberExceptionHandler { + public void handleException(Throwable var1, SubscriberExceptionContext var2); +} diff --git a/src/com/google/common/eventbus/SubscriberFindingStrategy.java b/src/com/google/common/eventbus/SubscriberFindingStrategy.java new file mode 100644 index 0000000..c589010 --- /dev/null +++ b/src/com/google/common/eventbus/SubscriberFindingStrategy.java @@ -0,0 +1,11 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.eventbus; + +import com.google.common.collect.Multimap; +import com.google.common.eventbus.EventSubscriber; + +interface SubscriberFindingStrategy { + public Multimap, EventSubscriber> findAllSubscribers(Object var1); +} diff --git a/src/com/google/common/eventbus/SynchronizedEventSubscriber.java b/src/com/google/common/eventbus/SynchronizedEventSubscriber.java new file mode 100644 index 0000000..3c4d2d8 --- /dev/null +++ b/src/com/google/common/eventbus/SynchronizedEventSubscriber.java @@ -0,0 +1,26 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.eventbus; + +import com.google.common.eventbus.EventSubscriber; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; + +final class SynchronizedEventSubscriber +extends EventSubscriber { + public SynchronizedEventSubscriber(Object target, Method method) { + super(target, method); + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public void handleEvent(Object event) throws InvocationTargetException { + SynchronizedEventSubscriber synchronizedEventSubscriber = this; + synchronized (synchronizedEventSubscriber) { + super.handleEvent(event); + } + } +} diff --git a/src/com/google/common/hash/AbstractByteHasher.java b/src/com/google/common/hash/AbstractByteHasher.java new file mode 100644 index 0000000..4e067b7 --- /dev/null +++ b/src/com/google/common/hash/AbstractByteHasher.java @@ -0,0 +1,94 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.hash; + +import com.google.common.base.Preconditions; +import com.google.common.hash.AbstractHasher; +import com.google.common.hash.Funnel; +import com.google.common.hash.Hasher; +import java.nio.ByteBuffer; +import java.nio.ByteOrder; + +abstract class AbstractByteHasher +extends AbstractHasher { + private final ByteBuffer scratch = ByteBuffer.allocate(8).order(ByteOrder.LITTLE_ENDIAN); + + AbstractByteHasher() { + } + + protected abstract void update(byte var1); + + protected void update(byte[] b) { + this.update(b, 0, b.length); + } + + protected void update(byte[] b, int off, int len) { + for (int i = off; i < off + len; ++i) { + this.update(b[i]); + } + } + + @Override + public Hasher putByte(byte b) { + this.update(b); + return this; + } + + @Override + public Hasher putBytes(byte[] bytes) { + Preconditions.checkNotNull(bytes); + this.update(bytes); + return this; + } + + @Override + public Hasher putBytes(byte[] bytes, int off, int len) { + Preconditions.checkPositionIndexes(off, off + len, bytes.length); + this.update(bytes, off, len); + return this; + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + private Hasher update(int bytes) { + try { + this.update(this.scratch.array(), 0, bytes); + } + finally { + this.scratch.clear(); + } + return this; + } + + @Override + public Hasher putShort(short s) { + this.scratch.putShort(s); + return this.update(2); + } + + @Override + public Hasher putInt(int i) { + this.scratch.putInt(i); + return this.update(4); + } + + @Override + public Hasher putLong(long l) { + this.scratch.putLong(l); + return this.update(8); + } + + @Override + public Hasher putChar(char c) { + this.scratch.putChar(c); + return this.update(2); + } + + @Override + public Hasher putObject(T instance, Funnel funnel) { + funnel.funnel(instance, this); + return this; + } +} diff --git a/src/com/google/common/hash/AbstractCompositeHashFunction.java b/src/com/google/common/hash/AbstractCompositeHashFunction.java new file mode 100644 index 0000000..b2bafd8 --- /dev/null +++ b/src/com/google/common/hash/AbstractCompositeHashFunction.java @@ -0,0 +1,146 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.hash; + +import com.google.common.base.Preconditions; +import com.google.common.hash.AbstractStreamingHashFunction; +import com.google.common.hash.Funnel; +import com.google.common.hash.HashCode; +import com.google.common.hash.HashFunction; +import com.google.common.hash.Hasher; +import java.nio.charset.Charset; + +abstract class AbstractCompositeHashFunction +extends AbstractStreamingHashFunction { + final HashFunction[] functions; + private static final long serialVersionUID = 0L; + + AbstractCompositeHashFunction(HashFunction ... functions) { + for (HashFunction function : functions) { + Preconditions.checkNotNull(function); + } + this.functions = functions; + } + + abstract HashCode makeHash(Hasher[] var1); + + @Override + public Hasher newHasher() { + final Hasher[] hashers = new Hasher[this.functions.length]; + for (int i = 0; i < hashers.length; ++i) { + hashers[i] = this.functions[i].newHasher(); + } + return new Hasher(){ + + @Override + public Hasher putByte(byte b) { + for (Hasher hasher : hashers) { + hasher.putByte(b); + } + return this; + } + + @Override + public Hasher putBytes(byte[] bytes) { + for (Hasher hasher : hashers) { + hasher.putBytes(bytes); + } + return this; + } + + @Override + public Hasher putBytes(byte[] bytes, int off, int len) { + for (Hasher hasher : hashers) { + hasher.putBytes(bytes, off, len); + } + return this; + } + + @Override + public Hasher putShort(short s) { + for (Hasher hasher : hashers) { + hasher.putShort(s); + } + return this; + } + + @Override + public Hasher putInt(int i) { + for (Hasher hasher : hashers) { + hasher.putInt(i); + } + return this; + } + + @Override + public Hasher putLong(long l) { + for (Hasher hasher : hashers) { + hasher.putLong(l); + } + return this; + } + + @Override + public Hasher putFloat(float f) { + for (Hasher hasher : hashers) { + hasher.putFloat(f); + } + return this; + } + + @Override + public Hasher putDouble(double d) { + for (Hasher hasher : hashers) { + hasher.putDouble(d); + } + return this; + } + + @Override + public Hasher putBoolean(boolean b) { + for (Hasher hasher : hashers) { + hasher.putBoolean(b); + } + return this; + } + + @Override + public Hasher putChar(char c) { + for (Hasher hasher : hashers) { + hasher.putChar(c); + } + return this; + } + + @Override + public Hasher putUnencodedChars(CharSequence chars) { + for (Hasher hasher : hashers) { + hasher.putUnencodedChars(chars); + } + return this; + } + + @Override + public Hasher putString(CharSequence chars, Charset charset) { + for (Hasher hasher : hashers) { + hasher.putString(chars, charset); + } + return this; + } + + @Override + public Hasher putObject(T instance, Funnel funnel) { + for (Hasher hasher : hashers) { + hasher.putObject(instance, funnel); + } + return this; + } + + @Override + public HashCode hash() { + return AbstractCompositeHashFunction.this.makeHash(hashers); + } + }; + } +} diff --git a/src/com/google/common/hash/AbstractHasher.java b/src/com/google/common/hash/AbstractHasher.java new file mode 100644 index 0000000..03e642c --- /dev/null +++ b/src/com/google/common/hash/AbstractHasher.java @@ -0,0 +1,42 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.hash; + +import com.google.common.hash.Hasher; +import java.nio.charset.Charset; + +abstract class AbstractHasher +implements Hasher { + AbstractHasher() { + } + + @Override + public final Hasher putBoolean(boolean b) { + return this.putByte(b ? (byte)1 : 0); + } + + @Override + public final Hasher putDouble(double d) { + return this.putLong(Double.doubleToRawLongBits(d)); + } + + @Override + public final Hasher putFloat(float f) { + return this.putInt(Float.floatToRawIntBits(f)); + } + + @Override + public Hasher putUnencodedChars(CharSequence charSequence) { + int len = charSequence.length(); + for (int i = 0; i < len; ++i) { + this.putChar(charSequence.charAt(i)); + } + return this; + } + + @Override + public Hasher putString(CharSequence charSequence, Charset charset) { + return this.putBytes(charSequence.toString().getBytes(charset)); + } +} diff --git a/src/com/google/common/hash/AbstractNonStreamingHashFunction.java b/src/com/google/common/hash/AbstractNonStreamingHashFunction.java new file mode 100644 index 0000000..6e466cb --- /dev/null +++ b/src/com/google/common/hash/AbstractNonStreamingHashFunction.java @@ -0,0 +1,156 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.hash; + +import com.google.common.base.Preconditions; +import com.google.common.hash.AbstractHasher; +import com.google.common.hash.Funnel; +import com.google.common.hash.HashCode; +import com.google.common.hash.HashFunction; +import com.google.common.hash.Hasher; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.nio.charset.Charset; + +abstract class AbstractNonStreamingHashFunction +implements HashFunction { + AbstractNonStreamingHashFunction() { + } + + @Override + public Hasher newHasher() { + return new BufferingHasher(32); + } + + @Override + public Hasher newHasher(int expectedInputSize) { + Preconditions.checkArgument(expectedInputSize >= 0); + return new BufferingHasher(expectedInputSize); + } + + @Override + public HashCode hashObject(T instance, Funnel funnel) { + return this.newHasher().putObject(instance, funnel).hash(); + } + + @Override + public HashCode hashUnencodedChars(CharSequence input) { + int len = input.length(); + Hasher hasher = this.newHasher(len * 2); + for (int i = 0; i < len; ++i) { + hasher.putChar(input.charAt(i)); + } + return hasher.hash(); + } + + @Override + public HashCode hashString(CharSequence input, Charset charset) { + return this.hashBytes(input.toString().getBytes(charset)); + } + + @Override + public HashCode hashInt(int input) { + return this.newHasher(4).putInt(input).hash(); + } + + @Override + public HashCode hashLong(long input) { + return this.newHasher(8).putLong(input).hash(); + } + + @Override + public HashCode hashBytes(byte[] input) { + return this.hashBytes(input, 0, input.length); + } + + private static final class ExposedByteArrayOutputStream + extends ByteArrayOutputStream { + ExposedByteArrayOutputStream(int expectedInputSize) { + super(expectedInputSize); + } + + byte[] byteArray() { + return this.buf; + } + + int length() { + return this.count; + } + } + + private final class BufferingHasher + extends AbstractHasher { + final ExposedByteArrayOutputStream stream; + static final int BOTTOM_BYTE = 255; + + BufferingHasher(int expectedInputSize) { + this.stream = new ExposedByteArrayOutputStream(expectedInputSize); + } + + @Override + public Hasher putByte(byte b) { + this.stream.write(b); + return this; + } + + @Override + public Hasher putBytes(byte[] bytes) { + try { + this.stream.write(bytes); + } + catch (IOException e) { + throw new RuntimeException(e); + } + return this; + } + + @Override + public Hasher putBytes(byte[] bytes, int off, int len) { + this.stream.write(bytes, off, len); + return this; + } + + @Override + public Hasher putShort(short s) { + this.stream.write(s & 0xFF); + this.stream.write(s >>> 8 & 0xFF); + return this; + } + + @Override + public Hasher putInt(int i) { + this.stream.write(i & 0xFF); + this.stream.write(i >>> 8 & 0xFF); + this.stream.write(i >>> 16 & 0xFF); + this.stream.write(i >>> 24 & 0xFF); + return this; + } + + @Override + public Hasher putLong(long l) { + for (int i = 0; i < 64; i += 8) { + this.stream.write((byte)(l >>> i & 0xFFL)); + } + return this; + } + + @Override + public Hasher putChar(char c) { + this.stream.write(c & 0xFF); + this.stream.write(c >>> 8 & 0xFF); + return this; + } + + @Override + public Hasher putObject(T instance, Funnel funnel) { + funnel.funnel(instance, this); + return this; + } + + @Override + public HashCode hash() { + return AbstractNonStreamingHashFunction.this.hashBytes(this.stream.byteArray(), 0, this.stream.length()); + } + } +} diff --git a/src/com/google/common/hash/AbstractStreamingHashFunction.java b/src/com/google/common/hash/AbstractStreamingHashFunction.java new file mode 100644 index 0000000..22f797e --- /dev/null +++ b/src/com/google/common/hash/AbstractStreamingHashFunction.java @@ -0,0 +1,195 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.hash; + +import com.google.common.base.Preconditions; +import com.google.common.hash.AbstractHasher; +import com.google.common.hash.Funnel; +import com.google.common.hash.HashCode; +import com.google.common.hash.HashFunction; +import com.google.common.hash.Hasher; +import java.nio.ByteBuffer; +import java.nio.ByteOrder; +import java.nio.charset.Charset; + +abstract class AbstractStreamingHashFunction +implements HashFunction { + AbstractStreamingHashFunction() { + } + + @Override + public HashCode hashObject(T instance, Funnel funnel) { + return this.newHasher().putObject(instance, funnel).hash(); + } + + @Override + public HashCode hashUnencodedChars(CharSequence input) { + return this.newHasher().putUnencodedChars(input).hash(); + } + + @Override + public HashCode hashString(CharSequence input, Charset charset) { + return this.newHasher().putString(input, charset).hash(); + } + + @Override + public HashCode hashInt(int input) { + return this.newHasher().putInt(input).hash(); + } + + @Override + public HashCode hashLong(long input) { + return this.newHasher().putLong(input).hash(); + } + + @Override + public HashCode hashBytes(byte[] input) { + return this.newHasher().putBytes(input).hash(); + } + + @Override + public HashCode hashBytes(byte[] input, int off, int len) { + return this.newHasher().putBytes(input, off, len).hash(); + } + + @Override + public Hasher newHasher(int expectedInputSize) { + Preconditions.checkArgument(expectedInputSize >= 0); + return this.newHasher(); + } + + protected static abstract class AbstractStreamingHasher + extends AbstractHasher { + private final ByteBuffer buffer; + private final int bufferSize; + private final int chunkSize; + + protected AbstractStreamingHasher(int chunkSize) { + this(chunkSize, chunkSize); + } + + protected AbstractStreamingHasher(int chunkSize, int bufferSize) { + Preconditions.checkArgument(bufferSize % chunkSize == 0); + this.buffer = ByteBuffer.allocate(bufferSize + 7).order(ByteOrder.LITTLE_ENDIAN); + this.bufferSize = bufferSize; + this.chunkSize = chunkSize; + } + + protected abstract void process(ByteBuffer var1); + + protected void processRemaining(ByteBuffer bb) { + bb.position(bb.limit()); + bb.limit(this.chunkSize + 7); + while (bb.position() < this.chunkSize) { + bb.putLong(0L); + } + bb.limit(this.chunkSize); + bb.flip(); + this.process(bb); + } + + @Override + public final Hasher putBytes(byte[] bytes) { + return this.putBytes(bytes, 0, bytes.length); + } + + @Override + public final Hasher putBytes(byte[] bytes, int off, int len) { + return this.putBytes(ByteBuffer.wrap(bytes, off, len).order(ByteOrder.LITTLE_ENDIAN)); + } + + private Hasher putBytes(ByteBuffer readBuffer) { + if (readBuffer.remaining() <= this.buffer.remaining()) { + this.buffer.put(readBuffer); + this.munchIfFull(); + return this; + } + int bytesToCopy = this.bufferSize - this.buffer.position(); + for (int i = 0; i < bytesToCopy; ++i) { + this.buffer.put(readBuffer.get()); + } + this.munch(); + while (readBuffer.remaining() >= this.chunkSize) { + this.process(readBuffer); + } + this.buffer.put(readBuffer); + return this; + } + + @Override + public final Hasher putUnencodedChars(CharSequence charSequence) { + for (int i = 0; i < charSequence.length(); ++i) { + this.putChar(charSequence.charAt(i)); + } + return this; + } + + @Override + public final Hasher putByte(byte b) { + this.buffer.put(b); + this.munchIfFull(); + return this; + } + + @Override + public final Hasher putShort(short s) { + this.buffer.putShort(s); + this.munchIfFull(); + return this; + } + + @Override + public final Hasher putChar(char c) { + this.buffer.putChar(c); + this.munchIfFull(); + return this; + } + + @Override + public final Hasher putInt(int i) { + this.buffer.putInt(i); + this.munchIfFull(); + return this; + } + + @Override + public final Hasher putLong(long l) { + this.buffer.putLong(l); + this.munchIfFull(); + return this; + } + + @Override + public final Hasher putObject(T instance, Funnel funnel) { + funnel.funnel(instance, this); + return this; + } + + @Override + public final HashCode hash() { + this.munch(); + this.buffer.flip(); + if (this.buffer.remaining() > 0) { + this.processRemaining(this.buffer); + } + return this.makeHash(); + } + + abstract HashCode makeHash(); + + private void munchIfFull() { + if (this.buffer.remaining() < 8) { + this.munch(); + } + } + + private void munch() { + this.buffer.flip(); + while (this.buffer.remaining() >= this.chunkSize) { + this.process(this.buffer); + } + this.buffer.compact(); + } + } +} diff --git a/src/com/google/common/hash/BloomFilter.java b/src/com/google/common/hash/BloomFilter.java new file mode 100644 index 0000000..98b6418 --- /dev/null +++ b/src/com/google/common/hash/BloomFilter.java @@ -0,0 +1,213 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.hash; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.Objects; +import com.google.common.base.Preconditions; +import com.google.common.base.Predicate; +import com.google.common.hash.BloomFilterStrategies; +import com.google.common.hash.Funnel; +import com.google.common.primitives.SignedBytes; +import com.google.common.primitives.UnsignedBytes; +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.io.Serializable; +import javax.annotation.Nullable; + +@Beta +public final class BloomFilter +implements Predicate, +Serializable { + private final BloomFilterStrategies.BitArray bits; + private final int numHashFunctions; + private final Funnel funnel; + private final Strategy strategy; + private static final Strategy DEFAULT_STRATEGY = BloomFilterStrategies.MURMUR128_MITZ_64; + + private BloomFilter(BloomFilterStrategies.BitArray bits, int numHashFunctions, Funnel funnel, Strategy strategy) { + Preconditions.checkArgument(numHashFunctions > 0, "numHashFunctions (%s) must be > 0", numHashFunctions); + Preconditions.checkArgument(numHashFunctions <= 255, "numHashFunctions (%s) must be <= 255", numHashFunctions); + this.bits = Preconditions.checkNotNull(bits); + this.numHashFunctions = numHashFunctions; + this.funnel = Preconditions.checkNotNull(funnel); + this.strategy = Preconditions.checkNotNull(strategy); + } + + public BloomFilter copy() { + return new BloomFilter(this.bits.copy(), this.numHashFunctions, this.funnel, this.strategy); + } + + public boolean mightContain(T object) { + return this.strategy.mightContain(object, this.funnel, this.numHashFunctions, this.bits); + } + + @Override + @Deprecated + public boolean apply(T input) { + return this.mightContain(input); + } + + public boolean put(T object) { + return this.strategy.put(object, this.funnel, this.numHashFunctions, this.bits); + } + + public double expectedFpp() { + return Math.pow((double)this.bits.bitCount() / (double)this.bitSize(), this.numHashFunctions); + } + + @VisibleForTesting + long bitSize() { + return this.bits.bitSize(); + } + + public boolean isCompatible(BloomFilter that) { + Preconditions.checkNotNull(that); + return this != that && this.numHashFunctions == that.numHashFunctions && this.bitSize() == that.bitSize() && this.strategy.equals(that.strategy) && this.funnel.equals(that.funnel); + } + + public void putAll(BloomFilter that) { + Preconditions.checkNotNull(that); + Preconditions.checkArgument(this != that, "Cannot combine a BloomFilter with itself."); + Preconditions.checkArgument(this.numHashFunctions == that.numHashFunctions, "BloomFilters must have the same number of hash functions (%s != %s)", this.numHashFunctions, that.numHashFunctions); + Preconditions.checkArgument(this.bitSize() == that.bitSize(), "BloomFilters must have the same size underlying bit arrays (%s != %s)", this.bitSize(), that.bitSize()); + Preconditions.checkArgument(this.strategy.equals(that.strategy), "BloomFilters must have equal strategies (%s != %s)", this.strategy, that.strategy); + Preconditions.checkArgument(this.funnel.equals(that.funnel), "BloomFilters must have equal funnels (%s != %s)", this.funnel, that.funnel); + this.bits.putAll(that.bits); + } + + @Override + public boolean equals(@Nullable Object object) { + if (object == this) { + return true; + } + if (object instanceof BloomFilter) { + BloomFilter that = (BloomFilter)object; + return this.numHashFunctions == that.numHashFunctions && this.funnel.equals(that.funnel) && this.bits.equals(that.bits) && this.strategy.equals(that.strategy); + } + return false; + } + + public int hashCode() { + return Objects.hashCode(this.numHashFunctions, this.funnel, this.strategy, this.bits); + } + + public static BloomFilter create(Funnel funnel, int expectedInsertions, double fpp) { + return BloomFilter.create(funnel, expectedInsertions, fpp, DEFAULT_STRATEGY); + } + + @VisibleForTesting + static BloomFilter create(Funnel funnel, int expectedInsertions, double fpp, Strategy strategy) { + Preconditions.checkNotNull(funnel); + Preconditions.checkArgument(expectedInsertions >= 0, "Expected insertions (%s) must be >= 0", expectedInsertions); + Preconditions.checkArgument(fpp > 0.0, "False positive probability (%s) must be > 0.0", fpp); + Preconditions.checkArgument(fpp < 1.0, "False positive probability (%s) must be < 1.0", fpp); + Preconditions.checkNotNull(strategy); + if (expectedInsertions == 0) { + expectedInsertions = 1; + } + long numBits = BloomFilter.optimalNumOfBits(expectedInsertions, fpp); + int numHashFunctions = BloomFilter.optimalNumOfHashFunctions(expectedInsertions, numBits); + try { + return new BloomFilter(new BloomFilterStrategies.BitArray(numBits), numHashFunctions, funnel, strategy); + } + catch (IllegalArgumentException e) { + long l = numBits; + throw new IllegalArgumentException(new StringBuilder(57).append("Could not create BloomFilter of ").append(l).append(" bits").toString(), e); + } + } + + public static BloomFilter create(Funnel funnel, int expectedInsertions) { + return BloomFilter.create(funnel, expectedInsertions, 0.03); + } + + @VisibleForTesting + static int optimalNumOfHashFunctions(long n, long m) { + return Math.max(1, (int)Math.round((double)m / (double)n * Math.log(2.0))); + } + + @VisibleForTesting + static long optimalNumOfBits(long n, double p) { + if (p == 0.0) { + p = Double.MIN_VALUE; + } + return (long)((double)(-n) * Math.log(p) / (Math.log(2.0) * Math.log(2.0))); + } + + private Object writeReplace() { + return new SerialForm(this); + } + + public void writeTo(OutputStream out) throws IOException { + DataOutputStream dout = new DataOutputStream(out); + dout.writeByte(SignedBytes.checkedCast(this.strategy.ordinal())); + dout.writeByte(UnsignedBytes.checkedCast(this.numHashFunctions)); + dout.writeInt(this.bits.data.length); + for (long value : this.bits.data) { + dout.writeLong(value); + } + } + + public static BloomFilter readFrom(InputStream in, Funnel funnel) throws IOException { + Preconditions.checkNotNull(in, "InputStream"); + Preconditions.checkNotNull(funnel, "Funnel"); + int strategyOrdinal = -1; + int numHashFunctions = -1; + int dataLength = -1; + try { + DataInputStream din = new DataInputStream(in); + strategyOrdinal = din.readByte(); + numHashFunctions = UnsignedBytes.toInt(din.readByte()); + dataLength = din.readInt(); + BloomFilterStrategies strategy = BloomFilterStrategies.values()[strategyOrdinal]; + long[] data = new long[dataLength]; + for (int i = 0; i < data.length; ++i) { + data[i] = din.readLong(); + } + return new BloomFilter(new BloomFilterStrategies.BitArray(data), numHashFunctions, funnel, strategy); + } + catch (RuntimeException e) { + String string = String.valueOf(String.valueOf("Unable to deserialize BloomFilter from InputStream. strategyOrdinal: ")); + int n = strategyOrdinal; + int n2 = numHashFunctions; + int n3 = dataLength; + IOException ioException = new IOException(new StringBuilder(65 + string.length()).append(string).append(n).append(" numHashFunctions: ").append(n2).append(" dataLength: ").append(n3).toString()); + ioException.initCause(e); + throw ioException; + } + } + + private static class SerialForm + implements Serializable { + final long[] data; + final int numHashFunctions; + final Funnel funnel; + final Strategy strategy; + private static final long serialVersionUID = 1L; + + SerialForm(BloomFilter bf) { + this.data = ((BloomFilter)bf).bits.data; + this.numHashFunctions = ((BloomFilter)bf).numHashFunctions; + this.funnel = ((BloomFilter)bf).funnel; + this.strategy = ((BloomFilter)bf).strategy; + } + + Object readResolve() { + return new BloomFilter(new BloomFilterStrategies.BitArray(this.data), this.numHashFunctions, this.funnel, this.strategy); + } + } + + static interface Strategy + extends Serializable { + public boolean put(T var1, Funnel var2, int var3, BloomFilterStrategies.BitArray var4); + + public boolean mightContain(T var1, Funnel var2, int var3, BloomFilterStrategies.BitArray var4); + + public int ordinal(); + } +} diff --git a/src/com/google/common/hash/BloomFilterStrategies.java b/src/com/google/common/hash/BloomFilterStrategies.java new file mode 100644 index 0000000..9fc9805 --- /dev/null +++ b/src/com/google/common/hash/BloomFilterStrategies.java @@ -0,0 +1,164 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.hash; + +import com.google.common.base.Preconditions; +import com.google.common.hash.BloomFilter; +import com.google.common.hash.Funnel; +import com.google.common.hash.Hashing; +import com.google.common.math.LongMath; +import com.google.common.primitives.Ints; +import com.google.common.primitives.Longs; +import java.math.RoundingMode; +import java.util.Arrays; + +enum BloomFilterStrategies implements BloomFilter.Strategy +{ + MURMUR128_MITZ_32{ + + @Override + public boolean put(T object, Funnel funnel, int numHashFunctions, BitArray bits) { + long bitSize = bits.bitSize(); + long hash64 = Hashing.murmur3_128().hashObject(object, funnel).asLong(); + int hash1 = (int)hash64; + int hash2 = (int)(hash64 >>> 32); + boolean bitsChanged = false; + for (int i = 1; i <= numHashFunctions; ++i) { + int combinedHash = hash1 + i * hash2; + if (combinedHash < 0) { + combinedHash ^= 0xFFFFFFFF; + } + bitsChanged |= bits.set((long)combinedHash % bitSize); + } + return bitsChanged; + } + + @Override + public boolean mightContain(T object, Funnel funnel, int numHashFunctions, BitArray bits) { + long bitSize = bits.bitSize(); + long hash64 = Hashing.murmur3_128().hashObject(object, funnel).asLong(); + int hash1 = (int)hash64; + int hash2 = (int)(hash64 >>> 32); + for (int i = 1; i <= numHashFunctions; ++i) { + int combinedHash = hash1 + i * hash2; + if (combinedHash < 0) { + combinedHash ^= 0xFFFFFFFF; + } + if (bits.get((long)combinedHash % bitSize)) continue; + return false; + } + return true; + } + } + , + MURMUR128_MITZ_64{ + + @Override + public boolean put(T object, Funnel funnel, int numHashFunctions, BitArray bits) { + long bitSize = bits.bitSize(); + byte[] bytes = Hashing.murmur3_128().hashObject(object, funnel).getBytesInternal(); + long hash1 = this.lowerEight(bytes); + long hash2 = this.upperEight(bytes); + boolean bitsChanged = false; + long combinedHash = hash1; + for (int i = 0; i < numHashFunctions; ++i) { + bitsChanged |= bits.set((combinedHash & Long.MAX_VALUE) % bitSize); + combinedHash += hash2; + } + return bitsChanged; + } + + @Override + public boolean mightContain(T object, Funnel funnel, int numHashFunctions, BitArray bits) { + long bitSize = bits.bitSize(); + byte[] bytes = Hashing.murmur3_128().hashObject(object, funnel).getBytesInternal(); + long hash1 = this.lowerEight(bytes); + long hash2 = this.upperEight(bytes); + long combinedHash = hash1; + for (int i = 0; i < numHashFunctions; ++i) { + if (!bits.get((combinedHash & Long.MAX_VALUE) % bitSize)) { + return false; + } + combinedHash += hash2; + } + return true; + } + + private long lowerEight(byte[] bytes) { + return Longs.fromBytes(bytes[7], bytes[6], bytes[5], bytes[4], bytes[3], bytes[2], bytes[1], bytes[0]); + } + + private long upperEight(byte[] bytes) { + return Longs.fromBytes(bytes[15], bytes[14], bytes[13], bytes[12], bytes[11], bytes[10], bytes[9], bytes[8]); + } + }; + + + static final class BitArray { + final long[] data; + long bitCount; + + BitArray(long bits) { + this(new long[Ints.checkedCast(LongMath.divide(bits, 64L, RoundingMode.CEILING))]); + } + + BitArray(long[] data) { + Preconditions.checkArgument(data.length > 0, "data length is zero!"); + this.data = data; + long bitCount = 0L; + for (long value : data) { + bitCount += (long)Long.bitCount(value); + } + this.bitCount = bitCount; + } + + boolean set(long index) { + if (!this.get(index)) { + int n = (int)(index >>> 6); + this.data[n] = this.data[n] | 1L << (int)index; + ++this.bitCount; + return true; + } + return false; + } + + boolean get(long index) { + return (this.data[(int)(index >>> 6)] & 1L << (int)index) != 0L; + } + + long bitSize() { + return (long)this.data.length * 64L; + } + + long bitCount() { + return this.bitCount; + } + + BitArray copy() { + return new BitArray((long[])this.data.clone()); + } + + void putAll(BitArray array) { + Preconditions.checkArgument(this.data.length == array.data.length, "BitArrays must be of equal length (%s != %s)", this.data.length, array.data.length); + this.bitCount = 0L; + for (int i = 0; i < this.data.length; ++i) { + int n = i; + this.data[n] = this.data[n] | array.data[i]; + this.bitCount += (long)Long.bitCount(this.data[i]); + } + } + + public boolean equals(Object o) { + if (o instanceof BitArray) { + BitArray bitArray = (BitArray)o; + return Arrays.equals(this.data, bitArray.data); + } + return false; + } + + public int hashCode() { + return Arrays.hashCode(this.data); + } + } +} diff --git a/src/com/google/common/hash/ChecksumHashFunction.java b/src/com/google/common/hash/ChecksumHashFunction.java new file mode 100644 index 0000000..c89fdea --- /dev/null +++ b/src/com/google/common/hash/ChecksumHashFunction.java @@ -0,0 +1,71 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.hash; + +import com.google.common.base.Preconditions; +import com.google.common.base.Supplier; +import com.google.common.hash.AbstractByteHasher; +import com.google.common.hash.AbstractStreamingHashFunction; +import com.google.common.hash.HashCode; +import com.google.common.hash.Hasher; +import java.io.Serializable; +import java.util.zip.Checksum; + +final class ChecksumHashFunction +extends AbstractStreamingHashFunction +implements Serializable { + private final Supplier checksumSupplier; + private final int bits; + private final String toString; + private static final long serialVersionUID = 0L; + + ChecksumHashFunction(Supplier checksumSupplier, int bits, String toString) { + this.checksumSupplier = Preconditions.checkNotNull(checksumSupplier); + Preconditions.checkArgument(bits == 32 || bits == 64, "bits (%s) must be either 32 or 64", bits); + this.bits = bits; + this.toString = Preconditions.checkNotNull(toString); + } + + @Override + public int bits() { + return this.bits; + } + + @Override + public Hasher newHasher() { + return new ChecksumHasher(this.checksumSupplier.get()); + } + + public String toString() { + return this.toString; + } + + private final class ChecksumHasher + extends AbstractByteHasher { + private final Checksum checksum; + + private ChecksumHasher(Checksum checksum) { + this.checksum = Preconditions.checkNotNull(checksum); + } + + @Override + protected void update(byte b) { + this.checksum.update(b); + } + + @Override + protected void update(byte[] bytes, int off, int len) { + this.checksum.update(bytes, off, len); + } + + @Override + public HashCode hash() { + long value = this.checksum.getValue(); + if (ChecksumHashFunction.this.bits == 32) { + return HashCode.fromInt((int)value); + } + return HashCode.fromLong(value); + } + } +} diff --git a/src/com/google/common/hash/Crc32cHashFunction.java b/src/com/google/common/hash/Crc32cHashFunction.java new file mode 100644 index 0000000..62db933 --- /dev/null +++ b/src/com/google/common/hash/Crc32cHashFunction.java @@ -0,0 +1,49 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.hash; + +import com.google.common.hash.AbstractByteHasher; +import com.google.common.hash.AbstractStreamingHashFunction; +import com.google.common.hash.HashCode; +import com.google.common.hash.Hasher; + +final class Crc32cHashFunction +extends AbstractStreamingHashFunction { + Crc32cHashFunction() { + } + + @Override + public int bits() { + return 32; + } + + @Override + public Hasher newHasher() { + return new Crc32cHasher(); + } + + public String toString() { + return "Hashing.crc32c()"; + } + + static final class Crc32cHasher + extends AbstractByteHasher { + static final int[] CRC_TABLE = new int[]{0, -227835133, -516198153, 324072436, -946170081, 904991772, 648144872, -724933397, -1965467441, 2024987596, 1809983544, -1719030981, 1296289744, -1087877933, -1401372889, 1578318884, 274646895, -499825556, -244992104, 51262619, -675000208, 632279923, 922689671, -996891772, -1702387808, 1760304291, 2075979607, -1982370732, 1562183871, -1351185476, -1138329528, 1313733451, 549293790, -757723683, -1048117719, 871202090, -416867903, 357341890, 102525238, -193467851, -1436232175, 1477399826, 1264559846, -1187764763, 1845379342, -1617575411, -1933233671, 2125378298, 820201905, -1031222606, -774358714, 598981189, -143008082, 85089709, 373468761, -467063462, -1170599554, 1213305469, 1526817161, -1452612982, 2107672161, -1882520222, -1667500394, 1861252501, 1098587580, -1290756417, -1606390453, 1378610760, -2032039261, 1955203488, 1742404180, -1783531177, -878557837, 969524848, 714683780, -655182201, 205050476, -28094097, -318528869, 526918040, 1361435347, -1555146288, -1340167644, 1114974503, -1765847604, 1691668175, 2005155131, -2047885768, -604208612, 697762079, 986182379, -928222744, 476452099, -301099520, -44210700, 255256311, 1640403810, -1817374623, -2130844779, 1922457750, -1503918979, 1412925310, 1197962378, -1257441399, -350237779, 427051182, 170179418, -129025959, 746937522, -554770511, -843174843, 1070968646, 1905808397, -2081171698, -1868356358, 1657317369, -1241332974, 1147748369, 1463399397, -1521340186, -79622974, 153784257, 444234805, -401473738, 1021025245, -827320098, -572462294, 797665321, -2097792136, 1889384571, 1674398607, -1851340660, 1164749927, -1224265884, -1537745776, 1446797203, 137323447, -96149324, -384560320, 461344835, -810158936, 1037989803, 781091935, -588970148, -1834419177, 1623424788, 1939049696, -2114449437, 1429367560, -1487280117, -1274471425, 1180866812, 410100952, -367384613, -112536529, 186734380, -538233913, 763408580, 1053836080, -860110797, -1572096602, 1344288421, 1131464017, -1323612590, 1708204729, -1749376582, -2065018290, 1988219213, 680717673, -621187478, -911630946, 1002577565, -284657034, 493091189, 238226049, -61306494, -1307217207, 1082061258, 1395524158, -1589280451, 1972364758, -2015074603, -1800104671, 1725896226, 952904198, -894981883, -638100751, 731699698, -11092711, 222117402, 510512622, -335130899, -1014159676, 837199303, 582374963, -790768336, 68661723, -159632680, -450051796, 390545967, 1230274059, -1153434360, -1469116676, 1510247935, -1899042540, 2091215383, 1878366691, -1650582816, -741088853, 565732008, 854102364, -1065151905, 340358836, -433916489, -177076669, 119113024, 1493875044, -1419691417, -1204696685, 1247431312, -1634718085, 1828433272, 2141937292, -1916740209, -483350502, 291187481, 34330861, -262120466, 615137029, -691946490, -980332558, 939183345, 1776939221, -1685949482, -1999470558, 2058945313, -1368168502, 1545135305, 1330124605, -1121741762, -210866315, 17165430, 307568514, -532767615, 888469610, -962626711, -707819363, 665062302, 2042050490, -1948470087, -1735637171, 1793573966, -1104306011, 1279665062, 1595330642, -1384295599}; + private int crc = 0; + + Crc32cHasher() { + } + + @Override + public void update(byte b) { + this.crc ^= 0xFFFFFFFF; + this.crc = ~(this.crc >>> 8 ^ CRC_TABLE[(this.crc ^ b) & 0xFF]); + } + + @Override + public HashCode hash() { + return HashCode.fromInt(this.crc); + } + } +} diff --git a/src/com/google/common/hash/Funnel.java b/src/com/google/common/hash/Funnel.java new file mode 100644 index 0000000..b7e9380 --- /dev/null +++ b/src/com/google/common/hash/Funnel.java @@ -0,0 +1,14 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.hash; + +import com.google.common.annotations.Beta; +import com.google.common.hash.PrimitiveSink; +import java.io.Serializable; + +@Beta +public interface Funnel +extends Serializable { + public void funnel(T var1, PrimitiveSink var2); +} diff --git a/src/com/google/common/hash/Funnels.java b/src/com/google/common/hash/Funnels.java new file mode 100644 index 0000000..b97a525 --- /dev/null +++ b/src/com/google/common/hash/Funnels.java @@ -0,0 +1,220 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.hash; + +import com.google.common.annotations.Beta; +import com.google.common.base.Preconditions; +import com.google.common.hash.Funnel; +import com.google.common.hash.PrimitiveSink; +import java.io.OutputStream; +import java.io.Serializable; +import java.nio.charset.Charset; +import javax.annotation.Nullable; + +@Beta +public final class Funnels { + private Funnels() { + } + + public static Funnel byteArrayFunnel() { + return ByteArrayFunnel.INSTANCE; + } + + public static Funnel unencodedCharsFunnel() { + return UnencodedCharsFunnel.INSTANCE; + } + + public static Funnel stringFunnel(Charset charset) { + return new StringCharsetFunnel(charset); + } + + public static Funnel integerFunnel() { + return IntegerFunnel.INSTANCE; + } + + public static Funnel> sequentialFunnel(Funnel elementFunnel) { + return new SequentialFunnel(elementFunnel); + } + + public static Funnel longFunnel() { + return LongFunnel.INSTANCE; + } + + public static OutputStream asOutputStream(PrimitiveSink sink) { + return new SinkAsStream(sink); + } + + private static class SinkAsStream + extends OutputStream { + final PrimitiveSink sink; + + SinkAsStream(PrimitiveSink sink) { + this.sink = Preconditions.checkNotNull(sink); + } + + @Override + public void write(int b) { + this.sink.putByte((byte)b); + } + + @Override + public void write(byte[] bytes) { + this.sink.putBytes(bytes); + } + + @Override + public void write(byte[] bytes, int off, int len) { + this.sink.putBytes(bytes, off, len); + } + + public String toString() { + String string = String.valueOf(String.valueOf(this.sink)); + return new StringBuilder(24 + string.length()).append("Funnels.asOutputStream(").append(string).append(")").toString(); + } + } + + private static enum LongFunnel implements Funnel + { + INSTANCE; + + + @Override + public void funnel(Long from, PrimitiveSink into) { + into.putLong(from); + } + + public String toString() { + return "Funnels.longFunnel()"; + } + } + + private static class SequentialFunnel + implements Funnel>, + Serializable { + private final Funnel elementFunnel; + + SequentialFunnel(Funnel elementFunnel) { + this.elementFunnel = Preconditions.checkNotNull(elementFunnel); + } + + @Override + public void funnel(Iterable from, PrimitiveSink into) { + for (E e : from) { + this.elementFunnel.funnel(e, into); + } + } + + public String toString() { + String string = String.valueOf(String.valueOf(this.elementFunnel)); + return new StringBuilder(26 + string.length()).append("Funnels.sequentialFunnel(").append(string).append(")").toString(); + } + + public boolean equals(@Nullable Object o) { + if (o instanceof SequentialFunnel) { + SequentialFunnel funnel = (SequentialFunnel)o; + return this.elementFunnel.equals(funnel.elementFunnel); + } + return false; + } + + public int hashCode() { + return SequentialFunnel.class.hashCode() ^ this.elementFunnel.hashCode(); + } + } + + private static enum IntegerFunnel implements Funnel + { + INSTANCE; + + + @Override + public void funnel(Integer from, PrimitiveSink into) { + into.putInt(from); + } + + public String toString() { + return "Funnels.integerFunnel()"; + } + } + + private static class StringCharsetFunnel + implements Funnel, + Serializable { + private final Charset charset; + + StringCharsetFunnel(Charset charset) { + this.charset = Preconditions.checkNotNull(charset); + } + + @Override + public void funnel(CharSequence from, PrimitiveSink into) { + into.putString(from, this.charset); + } + + public String toString() { + String string = String.valueOf(String.valueOf(this.charset.name())); + return new StringBuilder(22 + string.length()).append("Funnels.stringFunnel(").append(string).append(")").toString(); + } + + public boolean equals(@Nullable Object o) { + if (o instanceof StringCharsetFunnel) { + StringCharsetFunnel funnel = (StringCharsetFunnel)o; + return this.charset.equals(funnel.charset); + } + return false; + } + + public int hashCode() { + return StringCharsetFunnel.class.hashCode() ^ this.charset.hashCode(); + } + + Object writeReplace() { + return new SerializedForm(this.charset); + } + + private static class SerializedForm + implements Serializable { + private final String charsetCanonicalName; + private static final long serialVersionUID = 0L; + + SerializedForm(Charset charset) { + this.charsetCanonicalName = charset.name(); + } + + private Object readResolve() { + return Funnels.stringFunnel(Charset.forName(this.charsetCanonicalName)); + } + } + } + + private static enum UnencodedCharsFunnel implements Funnel + { + INSTANCE; + + + @Override + public void funnel(CharSequence from, PrimitiveSink into) { + into.putUnencodedChars(from); + } + + public String toString() { + return "Funnels.unencodedCharsFunnel()"; + } + } + + private static enum ByteArrayFunnel implements Funnel + { + INSTANCE; + + + @Override + public void funnel(byte[] from, PrimitiveSink into) { + into.putBytes(from); + } + + public String toString() { + return "Funnels.byteArrayFunnel()"; + } + } +} diff --git a/src/com/google/common/hash/HashCode.java b/src/com/google/common/hash/HashCode.java new file mode 100644 index 0000000..58505ab --- /dev/null +++ b/src/com/google/common/hash/HashCode.java @@ -0,0 +1,267 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.hash; + +import com.google.common.annotations.Beta; +import com.google.common.base.Preconditions; +import com.google.common.primitives.Ints; +import com.google.common.primitives.UnsignedInts; +import java.io.Serializable; +import java.security.MessageDigest; +import javax.annotation.Nullable; + +@Beta +public abstract class HashCode { + private static final char[] hexDigits = "0123456789abcdef".toCharArray(); + + HashCode() { + } + + public abstract int bits(); + + public abstract int asInt(); + + public abstract long asLong(); + + public abstract long padToLong(); + + public abstract byte[] asBytes(); + + public int writeBytesTo(byte[] dest, int offset, int maxLength) { + maxLength = Ints.min(maxLength, this.bits() / 8); + Preconditions.checkPositionIndexes(offset, offset + maxLength, dest.length); + this.writeBytesToImpl(dest, offset, maxLength); + return maxLength; + } + + abstract void writeBytesToImpl(byte[] var1, int var2, int var3); + + byte[] getBytesInternal() { + return this.asBytes(); + } + + abstract boolean equalsSameBits(HashCode var1); + + public static HashCode fromInt(int hash) { + return new IntHashCode(hash); + } + + public static HashCode fromLong(long hash) { + return new LongHashCode(hash); + } + + public static HashCode fromBytes(byte[] bytes) { + Preconditions.checkArgument(bytes.length >= 1, "A HashCode must contain at least 1 byte."); + return HashCode.fromBytesNoCopy((byte[])bytes.clone()); + } + + static HashCode fromBytesNoCopy(byte[] bytes) { + return new BytesHashCode(bytes); + } + + public static HashCode fromString(String string) { + Preconditions.checkArgument(string.length() >= 2, "input string (%s) must have at least 2 characters", string); + Preconditions.checkArgument(string.length() % 2 == 0, "input string (%s) must have an even number of characters", string); + byte[] bytes = new byte[string.length() / 2]; + for (int i = 0; i < string.length(); i += 2) { + int ch1 = HashCode.decode(string.charAt(i)) << 4; + int ch2 = HashCode.decode(string.charAt(i + 1)); + bytes[i / 2] = (byte)(ch1 + ch2); + } + return HashCode.fromBytesNoCopy(bytes); + } + + private static int decode(char ch) { + if (ch >= '0' && ch <= '9') { + return ch - 48; + } + if (ch >= 'a' && ch <= 'f') { + return ch - 97 + 10; + } + char c = ch; + throw new IllegalArgumentException(new StringBuilder(32).append("Illegal hexadecimal character: ").append(c).toString()); + } + + public final boolean equals(@Nullable Object object) { + if (object instanceof HashCode) { + HashCode that = (HashCode)object; + return this.bits() == that.bits() && this.equalsSameBits(that); + } + return false; + } + + public final int hashCode() { + if (this.bits() >= 32) { + return this.asInt(); + } + byte[] bytes = this.asBytes(); + int val = bytes[0] & 0xFF; + for (int i = 1; i < bytes.length; ++i) { + val |= (bytes[i] & 0xFF) << i * 8; + } + return val; + } + + public final String toString() { + byte[] bytes = this.asBytes(); + StringBuilder sb = new StringBuilder(2 * bytes.length); + for (byte b : bytes) { + sb.append(hexDigits[b >> 4 & 0xF]).append(hexDigits[b & 0xF]); + } + return sb.toString(); + } + + private static final class BytesHashCode + extends HashCode + implements Serializable { + final byte[] bytes; + private static final long serialVersionUID = 0L; + + BytesHashCode(byte[] bytes) { + this.bytes = Preconditions.checkNotNull(bytes); + } + + @Override + public int bits() { + return this.bytes.length * 8; + } + + @Override + public byte[] asBytes() { + return (byte[])this.bytes.clone(); + } + + @Override + public int asInt() { + Preconditions.checkState(this.bytes.length >= 4, "HashCode#asInt() requires >= 4 bytes (it only has %s bytes).", this.bytes.length); + return this.bytes[0] & 0xFF | (this.bytes[1] & 0xFF) << 8 | (this.bytes[2] & 0xFF) << 16 | (this.bytes[3] & 0xFF) << 24; + } + + @Override + public long asLong() { + Preconditions.checkState(this.bytes.length >= 8, "HashCode#asLong() requires >= 8 bytes (it only has %s bytes).", this.bytes.length); + return this.padToLong(); + } + + @Override + public long padToLong() { + long retVal = this.bytes[0] & 0xFF; + for (int i = 1; i < Math.min(this.bytes.length, 8); ++i) { + retVal |= ((long)this.bytes[i] & 0xFFL) << i * 8; + } + return retVal; + } + + @Override + void writeBytesToImpl(byte[] dest, int offset, int maxLength) { + System.arraycopy(this.bytes, 0, dest, offset, maxLength); + } + + @Override + byte[] getBytesInternal() { + return this.bytes; + } + + @Override + boolean equalsSameBits(HashCode that) { + return MessageDigest.isEqual(this.bytes, that.getBytesInternal()); + } + } + + private static final class LongHashCode + extends HashCode + implements Serializable { + final long hash; + private static final long serialVersionUID = 0L; + + LongHashCode(long hash) { + this.hash = hash; + } + + @Override + public int bits() { + return 64; + } + + @Override + public byte[] asBytes() { + return new byte[]{(byte)this.hash, (byte)(this.hash >> 8), (byte)(this.hash >> 16), (byte)(this.hash >> 24), (byte)(this.hash >> 32), (byte)(this.hash >> 40), (byte)(this.hash >> 48), (byte)(this.hash >> 56)}; + } + + @Override + public int asInt() { + return (int)this.hash; + } + + @Override + public long asLong() { + return this.hash; + } + + @Override + public long padToLong() { + return this.hash; + } + + @Override + void writeBytesToImpl(byte[] dest, int offset, int maxLength) { + for (int i = 0; i < maxLength; ++i) { + dest[offset + i] = (byte)(this.hash >> i * 8); + } + } + + @Override + boolean equalsSameBits(HashCode that) { + return this.hash == that.asLong(); + } + } + + private static final class IntHashCode + extends HashCode + implements Serializable { + final int hash; + private static final long serialVersionUID = 0L; + + IntHashCode(int hash) { + this.hash = hash; + } + + @Override + public int bits() { + return 32; + } + + @Override + public byte[] asBytes() { + return new byte[]{(byte)this.hash, (byte)(this.hash >> 8), (byte)(this.hash >> 16), (byte)(this.hash >> 24)}; + } + + @Override + public int asInt() { + return this.hash; + } + + @Override + public long asLong() { + throw new IllegalStateException("this HashCode only has 32 bits; cannot create a long"); + } + + @Override + public long padToLong() { + return UnsignedInts.toLong(this.hash); + } + + @Override + void writeBytesToImpl(byte[] dest, int offset, int maxLength) { + for (int i = 0; i < maxLength; ++i) { + dest[offset + i] = (byte)(this.hash >> i * 8); + } + } + + @Override + boolean equalsSameBits(HashCode that) { + return this.hash == that.asInt(); + } + } +} diff --git a/src/com/google/common/hash/HashFunction.java b/src/com/google/common/hash/HashFunction.java new file mode 100644 index 0000000..44dee8a --- /dev/null +++ b/src/com/google/common/hash/HashFunction.java @@ -0,0 +1,33 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.hash; + +import com.google.common.annotations.Beta; +import com.google.common.hash.Funnel; +import com.google.common.hash.HashCode; +import com.google.common.hash.Hasher; +import java.nio.charset.Charset; + +@Beta +public interface HashFunction { + public Hasher newHasher(); + + public Hasher newHasher(int var1); + + public HashCode hashInt(int var1); + + public HashCode hashLong(long var1); + + public HashCode hashBytes(byte[] var1); + + public HashCode hashBytes(byte[] var1, int var2, int var3); + + public HashCode hashUnencodedChars(CharSequence var1); + + public HashCode hashString(CharSequence var1, Charset var2); + + public HashCode hashObject(T var1, Funnel var2); + + public int bits(); +} diff --git a/src/com/google/common/hash/Hasher.java b/src/com/google/common/hash/Hasher.java new file mode 100644 index 0000000..3bee8c8 --- /dev/null +++ b/src/com/google/common/hash/Hasher.java @@ -0,0 +1,54 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.hash; + +import com.google.common.annotations.Beta; +import com.google.common.hash.Funnel; +import com.google.common.hash.HashCode; +import com.google.common.hash.PrimitiveSink; +import java.nio.charset.Charset; + +@Beta +public interface Hasher +extends PrimitiveSink { + @Override + public Hasher putByte(byte var1); + + @Override + public Hasher putBytes(byte[] var1); + + @Override + public Hasher putBytes(byte[] var1, int var2, int var3); + + @Override + public Hasher putShort(short var1); + + @Override + public Hasher putInt(int var1); + + @Override + public Hasher putLong(long var1); + + @Override + public Hasher putFloat(float var1); + + @Override + public Hasher putDouble(double var1); + + @Override + public Hasher putBoolean(boolean var1); + + @Override + public Hasher putChar(char var1); + + @Override + public Hasher putUnencodedChars(CharSequence var1); + + @Override + public Hasher putString(CharSequence var1, Charset var2); + + public Hasher putObject(T var1, Funnel var2); + + public HashCode hash(); +} diff --git a/src/com/google/common/hash/Hashing.java b/src/com/google/common/hash/Hashing.java new file mode 100644 index 0000000..b371e1b --- /dev/null +++ b/src/com/google/common/hash/Hashing.java @@ -0,0 +1,331 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.hash; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.Preconditions; +import com.google.common.base.Supplier; +import com.google.common.hash.AbstractCompositeHashFunction; +import com.google.common.hash.ChecksumHashFunction; +import com.google.common.hash.Crc32cHashFunction; +import com.google.common.hash.HashCode; +import com.google.common.hash.HashFunction; +import com.google.common.hash.Hasher; +import com.google.common.hash.MessageDigestHashFunction; +import com.google.common.hash.Murmur3_128HashFunction; +import com.google.common.hash.Murmur3_32HashFunction; +import com.google.common.hash.SipHashFunction; +import java.util.Iterator; +import java.util.zip.Adler32; +import java.util.zip.CRC32; +import java.util.zip.Checksum; +import javax.annotation.Nullable; + +@Beta +public final class Hashing { + private static final int GOOD_FAST_HASH_SEED = (int)System.currentTimeMillis(); + + public static HashFunction goodFastHash(int minimumBits) { + int bits = Hashing.checkPositiveAndMakeMultipleOf32(minimumBits); + if (bits == 32) { + return Murmur3_32Holder.GOOD_FAST_HASH_FUNCTION_32; + } + if (bits <= 128) { + return Murmur3_128Holder.GOOD_FAST_HASH_FUNCTION_128; + } + int hashFunctionsNeeded = (bits + 127) / 128; + HashFunction[] hashFunctions = new HashFunction[hashFunctionsNeeded]; + hashFunctions[0] = Murmur3_128Holder.GOOD_FAST_HASH_FUNCTION_128; + int seed = GOOD_FAST_HASH_SEED; + for (int i = 1; i < hashFunctionsNeeded; ++i) { + hashFunctions[i] = Hashing.murmur3_128(seed += 1500450271); + } + return new ConcatenatedHashFunction(hashFunctions); + } + + public static HashFunction murmur3_32(int seed) { + return new Murmur3_32HashFunction(seed); + } + + public static HashFunction murmur3_32() { + return Murmur3_32Holder.MURMUR3_32; + } + + public static HashFunction murmur3_128(int seed) { + return new Murmur3_128HashFunction(seed); + } + + public static HashFunction murmur3_128() { + return Murmur3_128Holder.MURMUR3_128; + } + + public static HashFunction sipHash24() { + return SipHash24Holder.SIP_HASH_24; + } + + public static HashFunction sipHash24(long k0, long k1) { + return new SipHashFunction(2, 4, k0, k1); + } + + public static HashFunction md5() { + return Md5Holder.MD5; + } + + public static HashFunction sha1() { + return Sha1Holder.SHA_1; + } + + public static HashFunction sha256() { + return Sha256Holder.SHA_256; + } + + public static HashFunction sha512() { + return Sha512Holder.SHA_512; + } + + public static HashFunction crc32c() { + return Crc32cHolder.CRC_32_C; + } + + public static HashFunction crc32() { + return Crc32Holder.CRC_32; + } + + public static HashFunction adler32() { + return Adler32Holder.ADLER_32; + } + + private static HashFunction checksumHashFunction(ChecksumType type, String toString) { + return new ChecksumHashFunction(type, type.bits, toString); + } + + public static int consistentHash(HashCode hashCode, int buckets) { + return Hashing.consistentHash(hashCode.padToLong(), buckets); + } + + public static int consistentHash(long input, int buckets) { + int next; + Preconditions.checkArgument(buckets > 0, "buckets must be positive: %s", buckets); + LinearCongruentialGenerator generator = new LinearCongruentialGenerator(input); + int candidate = 0; + while ((next = (int)((double)(candidate + 1) / generator.nextDouble())) >= 0 && next < buckets) { + candidate = next; + } + return candidate; + } + + public static HashCode combineOrdered(Iterable hashCodes) { + Iterator iterator = hashCodes.iterator(); + Preconditions.checkArgument(iterator.hasNext(), "Must be at least 1 hash code to combine."); + int bits = iterator.next().bits(); + byte[] resultBytes = new byte[bits / 8]; + for (HashCode hashCode : hashCodes) { + byte[] nextBytes = hashCode.asBytes(); + Preconditions.checkArgument(nextBytes.length == resultBytes.length, "All hashcodes must have the same bit length."); + for (int i = 0; i < nextBytes.length; ++i) { + resultBytes[i] = (byte)(resultBytes[i] * 37 ^ nextBytes[i]); + } + } + return HashCode.fromBytesNoCopy(resultBytes); + } + + public static HashCode combineUnordered(Iterable hashCodes) { + Iterator iterator = hashCodes.iterator(); + Preconditions.checkArgument(iterator.hasNext(), "Must be at least 1 hash code to combine."); + byte[] resultBytes = new byte[iterator.next().bits() / 8]; + for (HashCode hashCode : hashCodes) { + byte[] nextBytes = hashCode.asBytes(); + Preconditions.checkArgument(nextBytes.length == resultBytes.length, "All hashcodes must have the same bit length."); + for (int i = 0; i < nextBytes.length; ++i) { + int n = i; + resultBytes[n] = (byte)(resultBytes[n] + nextBytes[i]); + } + } + return HashCode.fromBytesNoCopy(resultBytes); + } + + static int checkPositiveAndMakeMultipleOf32(int bits) { + Preconditions.checkArgument(bits > 0, "Number of bits must be positive"); + return bits + 31 & 0xFFFFFFE0; + } + + private Hashing() { + } + + static /* synthetic */ int access$000() { + return GOOD_FAST_HASH_SEED; + } + + static /* synthetic */ HashFunction access$100(ChecksumType x0, String x1) { + return Hashing.checksumHashFunction(x0, x1); + } + + private static final class LinearCongruentialGenerator { + private long state; + + public LinearCongruentialGenerator(long seed) { + this.state = seed; + } + + public double nextDouble() { + this.state = 2862933555777941757L * this.state + 1L; + return (double)((int)(this.state >>> 33) + 1) / 2.147483648E9; + } + } + + @VisibleForTesting + static final class ConcatenatedHashFunction + extends AbstractCompositeHashFunction { + private final int bits; + + ConcatenatedHashFunction(HashFunction ... functions) { + super(functions); + int bitSum = 0; + for (HashFunction function : functions) { + bitSum += function.bits(); + } + this.bits = bitSum; + } + + @Override + HashCode makeHash(Hasher[] hashers) { + byte[] bytes = new byte[this.bits / 8]; + int i = 0; + for (Hasher hasher : hashers) { + HashCode newHash = hasher.hash(); + i += newHash.writeBytesTo(bytes, i, newHash.bits() / 8); + } + return HashCode.fromBytesNoCopy(bytes); + } + + @Override + public int bits() { + return this.bits; + } + + public boolean equals(@Nullable Object object) { + if (object instanceof ConcatenatedHashFunction) { + ConcatenatedHashFunction other = (ConcatenatedHashFunction)object; + if (this.bits != other.bits || this.functions.length != other.functions.length) { + return false; + } + for (int i = 0; i < this.functions.length; ++i) { + if (this.functions[i].equals(other.functions[i])) continue; + return false; + } + return true; + } + return false; + } + + public int hashCode() { + int hash = this.bits; + for (HashFunction function : this.functions) { + hash ^= function.hashCode(); + } + return hash; + } + } + + static enum ChecksumType implements Supplier + { + CRC_32(32){ + + @Override + public Checksum get() { + return new CRC32(); + } + } + , + ADLER_32(32){ + + @Override + public Checksum get() { + return new Adler32(); + } + }; + + private final int bits; + + private ChecksumType(int bits) { + this.bits = bits; + } + + @Override + public abstract Checksum get(); + } + + private static class Adler32Holder { + static final HashFunction ADLER_32 = Hashing.access$100(ChecksumType.ADLER_32, "Hashing.adler32()"); + + private Adler32Holder() { + } + } + + private static class Crc32Holder { + static final HashFunction CRC_32 = Hashing.access$100(ChecksumType.CRC_32, "Hashing.crc32()"); + + private Crc32Holder() { + } + } + + private static final class Crc32cHolder { + static final HashFunction CRC_32_C = new Crc32cHashFunction(); + + private Crc32cHolder() { + } + } + + private static class Sha512Holder { + static final HashFunction SHA_512 = new MessageDigestHashFunction("SHA-512", "Hashing.sha512()"); + + private Sha512Holder() { + } + } + + private static class Sha256Holder { + static final HashFunction SHA_256 = new MessageDigestHashFunction("SHA-256", "Hashing.sha256()"); + + private Sha256Holder() { + } + } + + private static class Sha1Holder { + static final HashFunction SHA_1 = new MessageDigestHashFunction("SHA-1", "Hashing.sha1()"); + + private Sha1Holder() { + } + } + + private static class Md5Holder { + static final HashFunction MD5 = new MessageDigestHashFunction("MD5", "Hashing.md5()"); + + private Md5Holder() { + } + } + + private static class SipHash24Holder { + static final HashFunction SIP_HASH_24 = new SipHashFunction(2, 4, 506097522914230528L, 1084818905618843912L); + + private SipHash24Holder() { + } + } + + private static class Murmur3_128Holder { + static final HashFunction MURMUR3_128 = new Murmur3_128HashFunction(0); + static final HashFunction GOOD_FAST_HASH_FUNCTION_128 = Hashing.murmur3_128(Hashing.access$000()); + + private Murmur3_128Holder() { + } + } + + private static class Murmur3_32Holder { + static final HashFunction MURMUR3_32 = new Murmur3_32HashFunction(0); + static final HashFunction GOOD_FAST_HASH_FUNCTION_32 = Hashing.murmur3_32(Hashing.access$000()); + + private Murmur3_32Holder() { + } + } +} diff --git a/src/com/google/common/hash/HashingInputStream.java b/src/com/google/common/hash/HashingInputStream.java new file mode 100644 index 0000000..2bf04b3 --- /dev/null +++ b/src/com/google/common/hash/HashingInputStream.java @@ -0,0 +1,60 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.hash; + +import com.google.common.annotations.Beta; +import com.google.common.base.Preconditions; +import com.google.common.hash.HashCode; +import com.google.common.hash.HashFunction; +import com.google.common.hash.Hasher; +import java.io.FilterInputStream; +import java.io.IOException; +import java.io.InputStream; + +@Beta +public final class HashingInputStream +extends FilterInputStream { + private final Hasher hasher; + + public HashingInputStream(HashFunction hashFunction, InputStream in) { + super(Preconditions.checkNotNull(in)); + this.hasher = Preconditions.checkNotNull(hashFunction.newHasher()); + } + + @Override + public int read() throws IOException { + int b = this.in.read(); + if (b != -1) { + this.hasher.putByte((byte)b); + } + return b; + } + + @Override + public int read(byte[] bytes, int off, int len) throws IOException { + int numOfBytesRead = this.in.read(bytes, off, len); + if (numOfBytesRead != -1) { + this.hasher.putBytes(bytes, off, numOfBytesRead); + } + return numOfBytesRead; + } + + @Override + public boolean markSupported() { + return false; + } + + @Override + public void mark(int readlimit) { + } + + @Override + public void reset() throws IOException { + throw new IOException("reset not supported"); + } + + public HashCode hash() { + return this.hasher.hash(); + } +} diff --git a/src/com/google/common/hash/HashingOutputStream.java b/src/com/google/common/hash/HashingOutputStream.java new file mode 100644 index 0000000..b9c56bc --- /dev/null +++ b/src/com/google/common/hash/HashingOutputStream.java @@ -0,0 +1,45 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.hash; + +import com.google.common.annotations.Beta; +import com.google.common.base.Preconditions; +import com.google.common.hash.HashCode; +import com.google.common.hash.HashFunction; +import com.google.common.hash.Hasher; +import java.io.FilterOutputStream; +import java.io.IOException; +import java.io.OutputStream; + +@Beta +public final class HashingOutputStream +extends FilterOutputStream { + private final Hasher hasher; + + public HashingOutputStream(HashFunction hashFunction, OutputStream out) { + super(Preconditions.checkNotNull(out)); + this.hasher = Preconditions.checkNotNull(hashFunction.newHasher()); + } + + @Override + public void write(int b) throws IOException { + this.hasher.putByte((byte)b); + this.out.write(b); + } + + @Override + public void write(byte[] bytes, int off, int len) throws IOException { + this.hasher.putBytes(bytes, off, len); + this.out.write(bytes, off, len); + } + + public HashCode hash() { + return this.hasher.hash(); + } + + @Override + public void close() throws IOException { + this.out.close(); + } +} diff --git a/src/com/google/common/hash/MessageDigestHashFunction.java b/src/com/google/common/hash/MessageDigestHashFunction.java new file mode 100644 index 0000000..2f6526b --- /dev/null +++ b/src/com/google/common/hash/MessageDigestHashFunction.java @@ -0,0 +1,143 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.hash; + +import com.google.common.base.Preconditions; +import com.google.common.hash.AbstractByteHasher; +import com.google.common.hash.AbstractStreamingHashFunction; +import com.google.common.hash.HashCode; +import com.google.common.hash.Hasher; +import java.io.Serializable; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.util.Arrays; + +final class MessageDigestHashFunction +extends AbstractStreamingHashFunction +implements Serializable { + private final MessageDigest prototype; + private final int bytes; + private final boolean supportsClone; + private final String toString; + + MessageDigestHashFunction(String algorithmName, String toString) { + this.prototype = MessageDigestHashFunction.getMessageDigest(algorithmName); + this.bytes = this.prototype.getDigestLength(); + this.toString = Preconditions.checkNotNull(toString); + this.supportsClone = this.supportsClone(); + } + + MessageDigestHashFunction(String algorithmName, int bytes, String toString) { + this.toString = Preconditions.checkNotNull(toString); + this.prototype = MessageDigestHashFunction.getMessageDigest(algorithmName); + int maxLength = this.prototype.getDigestLength(); + Preconditions.checkArgument(bytes >= 4 && bytes <= maxLength, "bytes (%s) must be >= 4 and < %s", bytes, maxLength); + this.bytes = bytes; + this.supportsClone = this.supportsClone(); + } + + private boolean supportsClone() { + try { + this.prototype.clone(); + return true; + } + catch (CloneNotSupportedException e) { + return false; + } + } + + @Override + public int bits() { + return this.bytes * 8; + } + + public String toString() { + return this.toString; + } + + private static MessageDigest getMessageDigest(String algorithmName) { + try { + return MessageDigest.getInstance(algorithmName); + } + catch (NoSuchAlgorithmException e) { + throw new AssertionError((Object)e); + } + } + + @Override + public Hasher newHasher() { + if (this.supportsClone) { + try { + return new MessageDigestHasher((MessageDigest)this.prototype.clone(), this.bytes); + } + catch (CloneNotSupportedException cloneNotSupportedException) { + // empty catch block + } + } + return new MessageDigestHasher(MessageDigestHashFunction.getMessageDigest(this.prototype.getAlgorithm()), this.bytes); + } + + Object writeReplace() { + return new SerializedForm(this.prototype.getAlgorithm(), this.bytes, this.toString); + } + + private static final class MessageDigestHasher + extends AbstractByteHasher { + private final MessageDigest digest; + private final int bytes; + private boolean done; + + private MessageDigestHasher(MessageDigest digest, int bytes) { + this.digest = digest; + this.bytes = bytes; + } + + @Override + protected void update(byte b) { + this.checkNotDone(); + this.digest.update(b); + } + + @Override + protected void update(byte[] b) { + this.checkNotDone(); + this.digest.update(b); + } + + @Override + protected void update(byte[] b, int off, int len) { + this.checkNotDone(); + this.digest.update(b, off, len); + } + + private void checkNotDone() { + Preconditions.checkState(!this.done, "Cannot re-use a Hasher after calling hash() on it"); + } + + @Override + public HashCode hash() { + this.checkNotDone(); + this.done = true; + return this.bytes == this.digest.getDigestLength() ? HashCode.fromBytesNoCopy(this.digest.digest()) : HashCode.fromBytesNoCopy(Arrays.copyOf(this.digest.digest(), this.bytes)); + } + } + + private static final class SerializedForm + implements Serializable { + private final String algorithmName; + private final int bytes; + private final String toString; + private static final long serialVersionUID = 0L; + + private SerializedForm(String algorithmName, int bytes, String toString) { + this.algorithmName = algorithmName; + this.bytes = bytes; + this.toString = toString; + } + + private Object readResolve() { + return new MessageDigestHashFunction(this.algorithmName, this.bytes, this.toString); + } + } +} diff --git a/src/com/google/common/hash/Murmur3_128HashFunction.java b/src/com/google/common/hash/Murmur3_128HashFunction.java new file mode 100644 index 0000000..97a7cb6 --- /dev/null +++ b/src/com/google/common/hash/Murmur3_128HashFunction.java @@ -0,0 +1,182 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.hash; + +import com.google.common.hash.AbstractStreamingHashFunction; +import com.google.common.hash.HashCode; +import com.google.common.hash.Hasher; +import com.google.common.primitives.UnsignedBytes; +import java.io.Serializable; +import java.nio.ByteBuffer; +import java.nio.ByteOrder; +import javax.annotation.Nullable; + +final class Murmur3_128HashFunction +extends AbstractStreamingHashFunction +implements Serializable { + private final int seed; + private static final long serialVersionUID = 0L; + + Murmur3_128HashFunction(int seed) { + this.seed = seed; + } + + @Override + public int bits() { + return 128; + } + + @Override + public Hasher newHasher() { + return new Murmur3_128Hasher(this.seed); + } + + public String toString() { + int n = this.seed; + return new StringBuilder(32).append("Hashing.murmur3_128(").append(n).append(")").toString(); + } + + public boolean equals(@Nullable Object object) { + if (object instanceof Murmur3_128HashFunction) { + Murmur3_128HashFunction other = (Murmur3_128HashFunction)object; + return this.seed == other.seed; + } + return false; + } + + public int hashCode() { + return this.getClass().hashCode() ^ this.seed; + } + + private static final class Murmur3_128Hasher + extends AbstractStreamingHashFunction.AbstractStreamingHasher { + private static final int CHUNK_SIZE = 16; + private static final long C1 = -8663945395140668459L; + private static final long C2 = 5545529020109919103L; + private long h1; + private long h2; + private int length; + + Murmur3_128Hasher(int seed) { + super(16); + this.h1 = seed; + this.h2 = seed; + this.length = 0; + } + + @Override + protected void process(ByteBuffer bb) { + long k1 = bb.getLong(); + long k2 = bb.getLong(); + this.bmix64(k1, k2); + this.length += 16; + } + + private void bmix64(long k1, long k2) { + this.h1 ^= Murmur3_128Hasher.mixK1(k1); + this.h1 = Long.rotateLeft(this.h1, 27); + this.h1 += this.h2; + this.h1 = this.h1 * 5L + 1390208809L; + this.h2 ^= Murmur3_128Hasher.mixK2(k2); + this.h2 = Long.rotateLeft(this.h2, 31); + this.h2 += this.h1; + this.h2 = this.h2 * 5L + 944331445L; + } + + @Override + protected void processRemaining(ByteBuffer bb) { + long k1 = 0L; + long k2 = 0L; + this.length += bb.remaining(); + switch (bb.remaining()) { + case 15: { + k2 ^= (long)UnsignedBytes.toInt(bb.get(14)) << 48; + } + case 14: { + k2 ^= (long)UnsignedBytes.toInt(bb.get(13)) << 40; + } + case 13: { + k2 ^= (long)UnsignedBytes.toInt(bb.get(12)) << 32; + } + case 12: { + k2 ^= (long)UnsignedBytes.toInt(bb.get(11)) << 24; + } + case 11: { + k2 ^= (long)UnsignedBytes.toInt(bb.get(10)) << 16; + } + case 10: { + k2 ^= (long)UnsignedBytes.toInt(bb.get(9)) << 8; + } + case 9: { + k2 ^= (long)UnsignedBytes.toInt(bb.get(8)); + } + case 8: { + k1 ^= bb.getLong(); + break; + } + case 7: { + k1 ^= (long)UnsignedBytes.toInt(bb.get(6)) << 48; + } + case 6: { + k1 ^= (long)UnsignedBytes.toInt(bb.get(5)) << 40; + } + case 5: { + k1 ^= (long)UnsignedBytes.toInt(bb.get(4)) << 32; + } + case 4: { + k1 ^= (long)UnsignedBytes.toInt(bb.get(3)) << 24; + } + case 3: { + k1 ^= (long)UnsignedBytes.toInt(bb.get(2)) << 16; + } + case 2: { + k1 ^= (long)UnsignedBytes.toInt(bb.get(1)) << 8; + } + case 1: { + k1 ^= (long)UnsignedBytes.toInt(bb.get(0)); + break; + } + default: { + throw new AssertionError((Object)"Should never get here."); + } + } + this.h1 ^= Murmur3_128Hasher.mixK1(k1); + this.h2 ^= Murmur3_128Hasher.mixK2(k2); + } + + @Override + public HashCode makeHash() { + this.h1 ^= (long)this.length; + this.h2 ^= (long)this.length; + this.h1 += this.h2; + this.h2 += this.h1; + this.h1 = Murmur3_128Hasher.fmix64(this.h1); + this.h2 = Murmur3_128Hasher.fmix64(this.h2); + this.h1 += this.h2; + this.h2 += this.h1; + return HashCode.fromBytesNoCopy(ByteBuffer.wrap(new byte[16]).order(ByteOrder.LITTLE_ENDIAN).putLong(this.h1).putLong(this.h2).array()); + } + + private static long fmix64(long k) { + k ^= k >>> 33; + k *= -49064778989728563L; + k ^= k >>> 33; + k *= -4265267296055464877L; + k ^= k >>> 33; + return k; + } + + private static long mixK1(long k1) { + k1 *= -8663945395140668459L; + k1 = Long.rotateLeft(k1, 31); + return k1 *= 5545529020109919103L; + } + + private static long mixK2(long k2) { + k2 *= 5545529020109919103L; + k2 = Long.rotateLeft(k2, 33); + return k2 *= -8663945395140668459L; + } + } +} diff --git a/src/com/google/common/hash/Murmur3_32HashFunction.java b/src/com/google/common/hash/Murmur3_32HashFunction.java new file mode 100644 index 0000000..2e5f287 --- /dev/null +++ b/src/com/google/common/hash/Murmur3_32HashFunction.java @@ -0,0 +1,146 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.hash; + +import com.google.common.hash.AbstractStreamingHashFunction; +import com.google.common.hash.HashCode; +import com.google.common.hash.Hasher; +import com.google.common.primitives.UnsignedBytes; +import java.io.Serializable; +import java.nio.ByteBuffer; +import javax.annotation.Nullable; + +final class Murmur3_32HashFunction +extends AbstractStreamingHashFunction +implements Serializable { + private static final int C1 = -862048943; + private static final int C2 = 461845907; + private final int seed; + private static final long serialVersionUID = 0L; + + Murmur3_32HashFunction(int seed) { + this.seed = seed; + } + + @Override + public int bits() { + return 32; + } + + @Override + public Hasher newHasher() { + return new Murmur3_32Hasher(this.seed); + } + + public String toString() { + int n = this.seed; + return new StringBuilder(31).append("Hashing.murmur3_32(").append(n).append(")").toString(); + } + + public boolean equals(@Nullable Object object) { + if (object instanceof Murmur3_32HashFunction) { + Murmur3_32HashFunction other = (Murmur3_32HashFunction)object; + return this.seed == other.seed; + } + return false; + } + + public int hashCode() { + return this.getClass().hashCode() ^ this.seed; + } + + @Override + public HashCode hashInt(int input) { + int k1 = Murmur3_32HashFunction.mixK1(input); + int h1 = Murmur3_32HashFunction.mixH1(this.seed, k1); + return Murmur3_32HashFunction.fmix(h1, 4); + } + + @Override + public HashCode hashLong(long input) { + int low = (int)input; + int high = (int)(input >>> 32); + int k1 = Murmur3_32HashFunction.mixK1(low); + int h1 = Murmur3_32HashFunction.mixH1(this.seed, k1); + k1 = Murmur3_32HashFunction.mixK1(high); + h1 = Murmur3_32HashFunction.mixH1(h1, k1); + return Murmur3_32HashFunction.fmix(h1, 8); + } + + @Override + public HashCode hashUnencodedChars(CharSequence input) { + int h1 = this.seed; + for (int i = 1; i < input.length(); i += 2) { + int k1 = input.charAt(i - 1) | input.charAt(i) << 16; + k1 = Murmur3_32HashFunction.mixK1(k1); + h1 = Murmur3_32HashFunction.mixH1(h1, k1); + } + if ((input.length() & 1) == 1) { + int k1 = input.charAt(input.length() - 1); + k1 = Murmur3_32HashFunction.mixK1(k1); + h1 ^= k1; + } + return Murmur3_32HashFunction.fmix(h1, 2 * input.length()); + } + + private static int mixK1(int k1) { + k1 *= -862048943; + k1 = Integer.rotateLeft(k1, 15); + return k1 *= 461845907; + } + + private static int mixH1(int h1, int k1) { + h1 ^= k1; + h1 = Integer.rotateLeft(h1, 13); + h1 = h1 * 5 + -430675100; + return h1; + } + + private static HashCode fmix(int h1, int length) { + h1 ^= length; + h1 ^= h1 >>> 16; + h1 *= -2048144789; + h1 ^= h1 >>> 13; + h1 *= -1028477387; + h1 ^= h1 >>> 16; + return HashCode.fromInt(h1); + } + + private static final class Murmur3_32Hasher + extends AbstractStreamingHashFunction.AbstractStreamingHasher { + private static final int CHUNK_SIZE = 4; + private int h1; + private int length; + + Murmur3_32Hasher(int seed) { + super(4); + this.h1 = seed; + this.length = 0; + } + + @Override + protected void process(ByteBuffer bb) { + int k1 = Murmur3_32HashFunction.mixK1(bb.getInt()); + this.h1 = Murmur3_32HashFunction.mixH1(this.h1, k1); + this.length += 4; + } + + @Override + protected void processRemaining(ByteBuffer bb) { + this.length += bb.remaining(); + int k1 = 0; + int i = 0; + while (bb.hasRemaining()) { + k1 ^= UnsignedBytes.toInt(bb.get()) << i; + i += 8; + } + this.h1 ^= Murmur3_32HashFunction.mixK1(k1); + } + + @Override + public HashCode makeHash() { + return Murmur3_32HashFunction.fmix(this.h1, this.length); + } + } +} diff --git a/src/com/google/common/hash/PrimitiveSink.java b/src/com/google/common/hash/PrimitiveSink.java new file mode 100644 index 0000000..a96eace --- /dev/null +++ b/src/com/google/common/hash/PrimitiveSink.java @@ -0,0 +1,34 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.hash; + +import com.google.common.annotations.Beta; +import java.nio.charset.Charset; + +@Beta +public interface PrimitiveSink { + public PrimitiveSink putByte(byte var1); + + public PrimitiveSink putBytes(byte[] var1); + + public PrimitiveSink putBytes(byte[] var1, int var2, int var3); + + public PrimitiveSink putShort(short var1); + + public PrimitiveSink putInt(int var1); + + public PrimitiveSink putLong(long var1); + + public PrimitiveSink putFloat(float var1); + + public PrimitiveSink putDouble(double var1); + + public PrimitiveSink putBoolean(boolean var1); + + public PrimitiveSink putChar(char var1); + + public PrimitiveSink putUnencodedChars(CharSequence var1); + + public PrimitiveSink putString(CharSequence var1, Charset var2); +} diff --git a/src/com/google/common/hash/SipHashFunction.java b/src/com/google/common/hash/SipHashFunction.java new file mode 100644 index 0000000..57dba6f --- /dev/null +++ b/src/com/google/common/hash/SipHashFunction.java @@ -0,0 +1,134 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.hash; + +import com.google.common.base.Preconditions; +import com.google.common.hash.AbstractStreamingHashFunction; +import com.google.common.hash.HashCode; +import com.google.common.hash.Hasher; +import java.io.Serializable; +import java.nio.ByteBuffer; +import javax.annotation.Nullable; + +final class SipHashFunction +extends AbstractStreamingHashFunction +implements Serializable { + private final int c; + private final int d; + private final long k0; + private final long k1; + private static final long serialVersionUID = 0L; + + SipHashFunction(int c, int d, long k0, long k1) { + Preconditions.checkArgument(c > 0, "The number of SipRound iterations (c=%s) during Compression must be positive.", c); + Preconditions.checkArgument(d > 0, "The number of SipRound iterations (d=%s) during Finalization must be positive.", d); + this.c = c; + this.d = d; + this.k0 = k0; + this.k1 = k1; + } + + @Override + public int bits() { + return 64; + } + + @Override + public Hasher newHasher() { + return new SipHasher(this.c, this.d, this.k0, this.k1); + } + + public String toString() { + int n = this.c; + int n2 = this.d; + long l = this.k0; + long l2 = this.k1; + return new StringBuilder(81).append("Hashing.sipHash").append(n).append(n2).append("(").append(l).append(", ").append(l2).append(")").toString(); + } + + public boolean equals(@Nullable Object object) { + if (object instanceof SipHashFunction) { + SipHashFunction other = (SipHashFunction)object; + return this.c == other.c && this.d == other.d && this.k0 == other.k0 && this.k1 == other.k1; + } + return false; + } + + public int hashCode() { + return (int)((long)(this.getClass().hashCode() ^ this.c ^ this.d) ^ this.k0 ^ this.k1); + } + + private static final class SipHasher + extends AbstractStreamingHashFunction.AbstractStreamingHasher { + private static final int CHUNK_SIZE = 8; + private final int c; + private final int d; + private long v0 = 8317987319222330741L; + private long v1 = 7237128888997146477L; + private long v2 = 7816392313619706465L; + private long v3 = 8387220255154660723L; + private long b = 0L; + private long finalM = 0L; + + SipHasher(int c, int d, long k0, long k1) { + super(8); + this.c = c; + this.d = d; + this.v0 ^= k0; + this.v1 ^= k1; + this.v2 ^= k0; + this.v3 ^= k1; + } + + @Override + protected void process(ByteBuffer buffer) { + this.b += 8L; + this.processM(buffer.getLong()); + } + + @Override + protected void processRemaining(ByteBuffer buffer) { + this.b += (long)buffer.remaining(); + int i = 0; + while (buffer.hasRemaining()) { + this.finalM ^= ((long)buffer.get() & 0xFFL) << i; + i += 8; + } + } + + @Override + public HashCode makeHash() { + this.finalM ^= this.b << 56; + this.processM(this.finalM); + this.v2 ^= 0xFFL; + this.sipRound(this.d); + return HashCode.fromLong(this.v0 ^ this.v1 ^ this.v2 ^ this.v3); + } + + private void processM(long m) { + this.v3 ^= m; + this.sipRound(this.c); + this.v0 ^= m; + } + + private void sipRound(int iterations) { + for (int i = 0; i < iterations; ++i) { + this.v0 += this.v1; + this.v2 += this.v3; + this.v1 = Long.rotateLeft(this.v1, 13); + this.v3 = Long.rotateLeft(this.v3, 16); + this.v1 ^= this.v0; + this.v3 ^= this.v2; + this.v0 = Long.rotateLeft(this.v0, 32); + this.v2 += this.v1; + this.v0 += this.v3; + this.v1 = Long.rotateLeft(this.v1, 17); + this.v3 = Long.rotateLeft(this.v3, 21); + this.v1 ^= this.v2; + this.v3 ^= this.v0; + this.v2 = Long.rotateLeft(this.v2, 32); + } + } + } +} diff --git a/src/com/google/common/hash/package-info.java b/src/com/google/common/hash/package-info.java new file mode 100644 index 0000000..17c9c18 --- /dev/null +++ b/src/com/google/common/hash/package-info.java @@ -0,0 +1,8 @@ +/* + * Decompiled with CFR 0.152. + */ +@ParametersAreNonnullByDefault +package com.google.common.hash; + +import javax.annotation.ParametersAreNonnullByDefault; + diff --git a/src/com/google/common/html/HtmlEscapers.java b/src/com/google/common/html/HtmlEscapers.java new file mode 100644 index 0000000..cd42e68 --- /dev/null +++ b/src/com/google/common/html/HtmlEscapers.java @@ -0,0 +1,22 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.html; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.escape.Escaper; +import com.google.common.escape.Escapers; + +@Beta +@GwtCompatible +public final class HtmlEscapers { + private static final Escaper HTML_ESCAPER = Escapers.builder().addEscape('\"', """).addEscape('\'', "'").addEscape('&', "&").addEscape('<', "<").addEscape('>', ">").build(); + + public static Escaper htmlEscaper() { + return HTML_ESCAPER; + } + + private HtmlEscapers() { + } +} diff --git a/src/com/google/common/html/package-info.java b/src/com/google/common/html/package-info.java new file mode 100644 index 0000000..a719584 --- /dev/null +++ b/src/com/google/common/html/package-info.java @@ -0,0 +1,8 @@ +/* + * Decompiled with CFR 0.152. + */ +@ParametersAreNonnullByDefault +package com.google.common.html; + +import javax.annotation.ParametersAreNonnullByDefault; + diff --git a/src/com/google/common/io/AppendableWriter.java b/src/com/google/common/io/AppendableWriter.java new file mode 100644 index 0000000..b3a8783 --- /dev/null +++ b/src/com/google/common/io/AppendableWriter.java @@ -0,0 +1,88 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.io; + +import com.google.common.base.Preconditions; +import java.io.Closeable; +import java.io.Flushable; +import java.io.IOException; +import java.io.Writer; +import javax.annotation.Nullable; + +class AppendableWriter +extends Writer { + private final Appendable target; + private boolean closed; + + AppendableWriter(Appendable target) { + this.target = Preconditions.checkNotNull(target); + } + + @Override + public void write(char[] cbuf, int off, int len) throws IOException { + this.checkNotClosed(); + this.target.append(new String(cbuf, off, len)); + } + + @Override + public void flush() throws IOException { + this.checkNotClosed(); + if (this.target instanceof Flushable) { + ((Flushable)((Object)this.target)).flush(); + } + } + + @Override + public void close() throws IOException { + this.closed = true; + if (this.target instanceof Closeable) { + ((Closeable)((Object)this.target)).close(); + } + } + + @Override + public void write(int c) throws IOException { + this.checkNotClosed(); + this.target.append((char)c); + } + + @Override + public void write(@Nullable String str) throws IOException { + this.checkNotClosed(); + this.target.append(str); + } + + @Override + public void write(@Nullable String str, int off, int len) throws IOException { + this.checkNotClosed(); + this.target.append(str, off, off + len); + } + + @Override + public Writer append(char c) throws IOException { + this.checkNotClosed(); + this.target.append(c); + return this; + } + + @Override + public Writer append(@Nullable CharSequence charSeq) throws IOException { + this.checkNotClosed(); + this.target.append(charSeq); + return this; + } + + @Override + public Writer append(@Nullable CharSequence charSeq, int start, int end) throws IOException { + this.checkNotClosed(); + this.target.append(charSeq, start, end); + return this; + } + + private void checkNotClosed() throws IOException { + if (this.closed) { + throw new IOException("Cannot write to a closed writer."); + } + } +} diff --git a/src/com/google/common/io/BaseEncoding.java b/src/com/google/common/io/BaseEncoding.java new file mode 100644 index 0000000..7b8ec1c --- /dev/null +++ b/src/com/google/common/io/BaseEncoding.java @@ -0,0 +1,610 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.io; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.base.Ascii; +import com.google.common.base.CharMatcher; +import com.google.common.base.Preconditions; +import com.google.common.io.ByteSink; +import com.google.common.io.ByteSource; +import com.google.common.io.CharSink; +import com.google.common.io.CharSource; +import com.google.common.io.GwtWorkarounds; +import com.google.common.math.IntMath; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.io.Reader; +import java.io.Writer; +import java.math.RoundingMode; +import java.util.Arrays; +import javax.annotation.CheckReturnValue; +import javax.annotation.Nullable; + +@Beta +@GwtCompatible(emulated=true) +public abstract class BaseEncoding { + private static final BaseEncoding BASE64 = new StandardBaseEncoding("base64()", "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", Character.valueOf('=')); + private static final BaseEncoding BASE64_URL = new StandardBaseEncoding("base64Url()", "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_", Character.valueOf('=')); + private static final BaseEncoding BASE32 = new StandardBaseEncoding("base32()", "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567", Character.valueOf('=')); + private static final BaseEncoding BASE32_HEX = new StandardBaseEncoding("base32Hex()", "0123456789ABCDEFGHIJKLMNOPQRSTUV", Character.valueOf('=')); + private static final BaseEncoding BASE16 = new StandardBaseEncoding("base16()", "0123456789ABCDEF", null); + + BaseEncoding() { + } + + public String encode(byte[] bytes) { + return this.encode(Preconditions.checkNotNull(bytes), 0, bytes.length); + } + + public final String encode(byte[] bytes, int off, int len) { + Preconditions.checkNotNull(bytes); + Preconditions.checkPositionIndexes(off, off + len, bytes.length); + GwtWorkarounds.CharOutput result = GwtWorkarounds.stringBuilderOutput(this.maxEncodedSize(len)); + GwtWorkarounds.ByteOutput byteOutput = this.encodingStream(result); + try { + for (int i = 0; i < len; ++i) { + byteOutput.write(bytes[off + i]); + } + byteOutput.close(); + } + catch (IOException impossible) { + throw new AssertionError((Object)"impossible"); + } + return result.toString(); + } + + @GwtIncompatible(value="Writer,OutputStream") + public final OutputStream encodingStream(Writer writer) { + return GwtWorkarounds.asOutputStream(this.encodingStream(GwtWorkarounds.asCharOutput(writer))); + } + + @GwtIncompatible(value="ByteSink,CharSink") + public final ByteSink encodingSink(final CharSink encodedSink) { + Preconditions.checkNotNull(encodedSink); + return new ByteSink(){ + + @Override + public OutputStream openStream() throws IOException { + return BaseEncoding.this.encodingStream(encodedSink.openStream()); + } + }; + } + + private static byte[] extract(byte[] result, int length) { + if (length == result.length) { + return result; + } + byte[] trunc = new byte[length]; + System.arraycopy(result, 0, trunc, 0, length); + return trunc; + } + + public final byte[] decode(CharSequence chars) { + try { + return this.decodeChecked(chars); + } + catch (DecodingException badInput) { + throw new IllegalArgumentException(badInput); + } + } + + final byte[] decodeChecked(CharSequence chars) throws DecodingException { + chars = this.padding().trimTrailingFrom(chars); + GwtWorkarounds.ByteInput decodedInput = this.decodingStream(GwtWorkarounds.asCharInput(chars)); + byte[] tmp = new byte[this.maxDecodedSize(chars.length())]; + int index = 0; + try { + int i = decodedInput.read(); + while (i != -1) { + tmp[index++] = (byte)i; + i = decodedInput.read(); + } + } + catch (DecodingException badInput) { + throw badInput; + } + catch (IOException impossible) { + throw new AssertionError((Object)impossible); + } + return BaseEncoding.extract(tmp, index); + } + + @GwtIncompatible(value="Reader,InputStream") + public final InputStream decodingStream(Reader reader) { + return GwtWorkarounds.asInputStream(this.decodingStream(GwtWorkarounds.asCharInput(reader))); + } + + @GwtIncompatible(value="ByteSource,CharSource") + public final ByteSource decodingSource(final CharSource encodedSource) { + Preconditions.checkNotNull(encodedSource); + return new ByteSource(){ + + @Override + public InputStream openStream() throws IOException { + return BaseEncoding.this.decodingStream(encodedSource.openStream()); + } + }; + } + + abstract int maxEncodedSize(int var1); + + abstract GwtWorkarounds.ByteOutput encodingStream(GwtWorkarounds.CharOutput var1); + + abstract int maxDecodedSize(int var1); + + abstract GwtWorkarounds.ByteInput decodingStream(GwtWorkarounds.CharInput var1); + + abstract CharMatcher padding(); + + @CheckReturnValue + public abstract BaseEncoding omitPadding(); + + @CheckReturnValue + public abstract BaseEncoding withPadChar(char var1); + + @CheckReturnValue + public abstract BaseEncoding withSeparator(String var1, int var2); + + @CheckReturnValue + public abstract BaseEncoding upperCase(); + + @CheckReturnValue + public abstract BaseEncoding lowerCase(); + + public static BaseEncoding base64() { + return BASE64; + } + + public static BaseEncoding base64Url() { + return BASE64_URL; + } + + public static BaseEncoding base32() { + return BASE32; + } + + public static BaseEncoding base32Hex() { + return BASE32_HEX; + } + + public static BaseEncoding base16() { + return BASE16; + } + + static GwtWorkarounds.CharInput ignoringInput(final GwtWorkarounds.CharInput delegate, final CharMatcher toIgnore) { + Preconditions.checkNotNull(delegate); + Preconditions.checkNotNull(toIgnore); + return new GwtWorkarounds.CharInput(){ + + @Override + public int read() throws IOException { + int readChar; + while ((readChar = delegate.read()) != -1 && toIgnore.matches((char)readChar)) { + } + return readChar; + } + + @Override + public void close() throws IOException { + delegate.close(); + } + }; + } + + static GwtWorkarounds.CharOutput separatingOutput(final GwtWorkarounds.CharOutput delegate, final String separator, final int afterEveryChars) { + Preconditions.checkNotNull(delegate); + Preconditions.checkNotNull(separator); + Preconditions.checkArgument(afterEveryChars > 0); + return new GwtWorkarounds.CharOutput(){ + int charsUntilSeparator; + { + this.charsUntilSeparator = afterEveryChars; + } + + @Override + public void write(char c) throws IOException { + if (this.charsUntilSeparator == 0) { + for (int i = 0; i < separator.length(); ++i) { + delegate.write(separator.charAt(i)); + } + this.charsUntilSeparator = afterEveryChars; + } + delegate.write(c); + --this.charsUntilSeparator; + } + + @Override + public void flush() throws IOException { + delegate.flush(); + } + + @Override + public void close() throws IOException { + delegate.close(); + } + }; + } + + static final class SeparatedBaseEncoding + extends BaseEncoding { + private final BaseEncoding delegate; + private final String separator; + private final int afterEveryChars; + private final CharMatcher separatorChars; + + SeparatedBaseEncoding(BaseEncoding delegate, String separator, int afterEveryChars) { + this.delegate = Preconditions.checkNotNull(delegate); + this.separator = Preconditions.checkNotNull(separator); + this.afterEveryChars = afterEveryChars; + Preconditions.checkArgument(afterEveryChars > 0, "Cannot add a separator after every %s chars", afterEveryChars); + this.separatorChars = CharMatcher.anyOf(separator).precomputed(); + } + + @Override + CharMatcher padding() { + return this.delegate.padding(); + } + + @Override + int maxEncodedSize(int bytes) { + int unseparatedSize = this.delegate.maxEncodedSize(bytes); + return unseparatedSize + this.separator.length() * IntMath.divide(Math.max(0, unseparatedSize - 1), this.afterEveryChars, RoundingMode.FLOOR); + } + + @Override + GwtWorkarounds.ByteOutput encodingStream(GwtWorkarounds.CharOutput output) { + return this.delegate.encodingStream(SeparatedBaseEncoding.separatingOutput(output, this.separator, this.afterEveryChars)); + } + + @Override + int maxDecodedSize(int chars) { + return this.delegate.maxDecodedSize(chars); + } + + @Override + GwtWorkarounds.ByteInput decodingStream(GwtWorkarounds.CharInput input) { + return this.delegate.decodingStream(SeparatedBaseEncoding.ignoringInput(input, this.separatorChars)); + } + + @Override + public BaseEncoding omitPadding() { + return this.delegate.omitPadding().withSeparator(this.separator, this.afterEveryChars); + } + + @Override + public BaseEncoding withPadChar(char padChar) { + return this.delegate.withPadChar(padChar).withSeparator(this.separator, this.afterEveryChars); + } + + @Override + public BaseEncoding withSeparator(String separator, int afterEveryChars) { + throw new UnsupportedOperationException("Already have a separator"); + } + + @Override + public BaseEncoding upperCase() { + return this.delegate.upperCase().withSeparator(this.separator, this.afterEveryChars); + } + + @Override + public BaseEncoding lowerCase() { + return this.delegate.lowerCase().withSeparator(this.separator, this.afterEveryChars); + } + + public String toString() { + String string = String.valueOf(String.valueOf(this.delegate.toString())); + String string2 = String.valueOf(String.valueOf(this.separator)); + int n = this.afterEveryChars; + return new StringBuilder(31 + string.length() + string2.length()).append(string).append(".withSeparator(\"").append(string2).append("\", ").append(n).append(")").toString(); + } + } + + static final class StandardBaseEncoding + extends BaseEncoding { + private final Alphabet alphabet; + @Nullable + private final Character paddingChar; + private transient BaseEncoding upperCase; + private transient BaseEncoding lowerCase; + + StandardBaseEncoding(String name, String alphabetChars, @Nullable Character paddingChar) { + this(new Alphabet(name, alphabetChars.toCharArray()), paddingChar); + } + + StandardBaseEncoding(Alphabet alphabet, @Nullable Character paddingChar) { + this.alphabet = Preconditions.checkNotNull(alphabet); + Preconditions.checkArgument(paddingChar == null || !alphabet.matches(paddingChar.charValue()), "Padding character %s was already in alphabet", paddingChar); + this.paddingChar = paddingChar; + } + + @Override + CharMatcher padding() { + return this.paddingChar == null ? CharMatcher.NONE : CharMatcher.is(this.paddingChar.charValue()); + } + + @Override + int maxEncodedSize(int bytes) { + return this.alphabet.charsPerChunk * IntMath.divide(bytes, this.alphabet.bytesPerChunk, RoundingMode.CEILING); + } + + @Override + GwtWorkarounds.ByteOutput encodingStream(final GwtWorkarounds.CharOutput out) { + Preconditions.checkNotNull(out); + return new GwtWorkarounds.ByteOutput(){ + int bitBuffer = 0; + int bitBufferLength = 0; + int writtenChars = 0; + + @Override + public void write(byte b) throws IOException { + this.bitBuffer <<= 8; + this.bitBuffer |= b & 0xFF; + this.bitBufferLength += 8; + while (this.bitBufferLength >= ((StandardBaseEncoding)StandardBaseEncoding.this).alphabet.bitsPerChar) { + int charIndex = this.bitBuffer >> this.bitBufferLength - ((StandardBaseEncoding)StandardBaseEncoding.this).alphabet.bitsPerChar & ((StandardBaseEncoding)StandardBaseEncoding.this).alphabet.mask; + out.write(StandardBaseEncoding.this.alphabet.encode(charIndex)); + ++this.writtenChars; + this.bitBufferLength -= ((StandardBaseEncoding)StandardBaseEncoding.this).alphabet.bitsPerChar; + } + } + + @Override + public void flush() throws IOException { + out.flush(); + } + + @Override + public void close() throws IOException { + if (this.bitBufferLength > 0) { + int charIndex = this.bitBuffer << ((StandardBaseEncoding)StandardBaseEncoding.this).alphabet.bitsPerChar - this.bitBufferLength & ((StandardBaseEncoding)StandardBaseEncoding.this).alphabet.mask; + out.write(StandardBaseEncoding.this.alphabet.encode(charIndex)); + ++this.writtenChars; + if (StandardBaseEncoding.this.paddingChar != null) { + while (this.writtenChars % ((StandardBaseEncoding)StandardBaseEncoding.this).alphabet.charsPerChunk != 0) { + out.write(StandardBaseEncoding.this.paddingChar.charValue()); + ++this.writtenChars; + } + } + } + out.close(); + } + }; + } + + @Override + int maxDecodedSize(int chars) { + return (int)(((long)this.alphabet.bitsPerChar * (long)chars + 7L) / 8L); + } + + @Override + GwtWorkarounds.ByteInput decodingStream(final GwtWorkarounds.CharInput reader) { + Preconditions.checkNotNull(reader); + return new GwtWorkarounds.ByteInput(){ + int bitBuffer = 0; + int bitBufferLength = 0; + int readChars = 0; + boolean hitPadding = false; + final CharMatcher paddingMatcher = StandardBaseEncoding.this.padding(); + + @Override + public int read() throws IOException { + while (true) { + int readChar; + if ((readChar = reader.read()) == -1) { + if (!this.hitPadding && !StandardBaseEncoding.this.alphabet.isValidPaddingStartPosition(this.readChars)) { + int n = this.readChars; + throw new DecodingException(new StringBuilder(32).append("Invalid input length ").append(n).toString()); + } + return -1; + } + ++this.readChars; + char ch = (char)readChar; + if (this.paddingMatcher.matches(ch)) { + if (!(this.hitPadding || this.readChars != 1 && StandardBaseEncoding.this.alphabet.isValidPaddingStartPosition(this.readChars - 1))) { + int n = this.readChars; + throw new DecodingException(new StringBuilder(41).append("Padding cannot start at index ").append(n).toString()); + } + this.hitPadding = true; + continue; + } + if (this.hitPadding) { + char c = ch; + int n = this.readChars; + throw new DecodingException(new StringBuilder(61).append("Expected padding character but found '").append(c).append("' at index ").append(n).toString()); + } + this.bitBuffer <<= ((StandardBaseEncoding)StandardBaseEncoding.this).alphabet.bitsPerChar; + this.bitBuffer |= StandardBaseEncoding.this.alphabet.decode(ch); + this.bitBufferLength += ((StandardBaseEncoding)StandardBaseEncoding.this).alphabet.bitsPerChar; + if (this.bitBufferLength >= 8) break; + } + this.bitBufferLength -= 8; + return this.bitBuffer >> this.bitBufferLength & 0xFF; + } + + @Override + public void close() throws IOException { + reader.close(); + } + }; + } + + @Override + public BaseEncoding omitPadding() { + return this.paddingChar == null ? this : new StandardBaseEncoding(this.alphabet, null); + } + + @Override + public BaseEncoding withPadChar(char padChar) { + if (8 % this.alphabet.bitsPerChar == 0 || this.paddingChar != null && this.paddingChar.charValue() == padChar) { + return this; + } + return new StandardBaseEncoding(this.alphabet, Character.valueOf(padChar)); + } + + @Override + public BaseEncoding withSeparator(String separator, int afterEveryChars) { + Preconditions.checkNotNull(separator); + Preconditions.checkArgument(this.padding().or(this.alphabet).matchesNoneOf(separator), "Separator cannot contain alphabet or padding characters"); + return new SeparatedBaseEncoding(this, separator, afterEveryChars); + } + + @Override + public BaseEncoding upperCase() { + BaseEncoding result = this.upperCase; + if (result == null) { + Alphabet upper = this.alphabet.upperCase(); + this.upperCase = upper == this.alphabet ? this : new StandardBaseEncoding(upper, this.paddingChar); + result = this.upperCase; + } + return result; + } + + @Override + public BaseEncoding lowerCase() { + BaseEncoding result = this.lowerCase; + if (result == null) { + Alphabet lower = this.alphabet.lowerCase(); + this.lowerCase = lower == this.alphabet ? this : new StandardBaseEncoding(lower, this.paddingChar); + result = this.lowerCase; + } + return result; + } + + public String toString() { + StringBuilder builder = new StringBuilder("BaseEncoding."); + builder.append(this.alphabet.toString()); + if (8 % this.alphabet.bitsPerChar != 0) { + if (this.paddingChar == null) { + builder.append(".omitPadding()"); + } else { + builder.append(".withPadChar(").append(this.paddingChar).append(')'); + } + } + return builder.toString(); + } + } + + private static final class Alphabet + extends CharMatcher { + private final String name; + private final char[] chars; + final int mask; + final int bitsPerChar; + final int charsPerChunk; + final int bytesPerChunk; + private final byte[] decodabet; + private final boolean[] validPadding; + + Alphabet(String name, char[] chars) { + this.name = Preconditions.checkNotNull(name); + this.chars = Preconditions.checkNotNull(chars); + try { + this.bitsPerChar = IntMath.log2(chars.length, RoundingMode.UNNECESSARY); + } + catch (ArithmeticException e) { + int n = chars.length; + throw new IllegalArgumentException(new StringBuilder(35).append("Illegal alphabet length ").append(n).toString(), e); + } + int gcd = Math.min(8, Integer.lowestOneBit(this.bitsPerChar)); + this.charsPerChunk = 8 / gcd; + this.bytesPerChunk = this.bitsPerChar / gcd; + this.mask = chars.length - 1; + byte[] decodabet = new byte[128]; + Arrays.fill(decodabet, (byte)-1); + for (int i = 0; i < chars.length; ++i) { + char c = chars[i]; + Preconditions.checkArgument(CharMatcher.ASCII.matches(c), "Non-ASCII character: %s", Character.valueOf(c)); + Preconditions.checkArgument(decodabet[c] == -1, "Duplicate character: %s", Character.valueOf(c)); + decodabet[c] = (byte)i; + } + this.decodabet = decodabet; + boolean[] validPadding = new boolean[this.charsPerChunk]; + for (int i = 0; i < this.bytesPerChunk; ++i) { + validPadding[IntMath.divide((int)(i * 8), (int)this.bitsPerChar, (RoundingMode)RoundingMode.CEILING)] = true; + } + this.validPadding = validPadding; + } + + char encode(int bits) { + return this.chars[bits]; + } + + boolean isValidPaddingStartPosition(int index) { + return this.validPadding[index % this.charsPerChunk]; + } + + int decode(char ch) throws IOException { + if (ch > '\u007f' || this.decodabet[ch] == -1) { + char c = ch; + throw new DecodingException(new StringBuilder(25).append("Unrecognized character: ").append(c).toString()); + } + return this.decodabet[ch]; + } + + private boolean hasLowerCase() { + for (char c : this.chars) { + if (!Ascii.isLowerCase(c)) continue; + return true; + } + return false; + } + + private boolean hasUpperCase() { + for (char c : this.chars) { + if (!Ascii.isUpperCase(c)) continue; + return true; + } + return false; + } + + Alphabet upperCase() { + if (!this.hasLowerCase()) { + return this; + } + Preconditions.checkState(!this.hasUpperCase(), "Cannot call upperCase() on a mixed-case alphabet"); + char[] upperCased = new char[this.chars.length]; + for (int i = 0; i < this.chars.length; ++i) { + upperCased[i] = Ascii.toUpperCase(this.chars[i]); + } + return new Alphabet(String.valueOf(this.name).concat(".upperCase()"), upperCased); + } + + Alphabet lowerCase() { + if (!this.hasUpperCase()) { + return this; + } + Preconditions.checkState(!this.hasLowerCase(), "Cannot call lowerCase() on a mixed-case alphabet"); + char[] lowerCased = new char[this.chars.length]; + for (int i = 0; i < this.chars.length; ++i) { + lowerCased[i] = Ascii.toLowerCase(this.chars[i]); + } + return new Alphabet(String.valueOf(this.name).concat(".lowerCase()"), lowerCased); + } + + @Override + public boolean matches(char c) { + return CharMatcher.ASCII.matches(c) && this.decodabet[c] != -1; + } + + @Override + public String toString() { + return this.name; + } + } + + public static final class DecodingException + extends IOException { + DecodingException(String message) { + super(message); + } + + DecodingException(Throwable cause) { + super(cause); + } + } +} diff --git a/src/com/google/common/io/ByteArrayDataInput.java b/src/com/google/common/io/ByteArrayDataInput.java new file mode 100644 index 0000000..3ffcd63 --- /dev/null +++ b/src/com/google/common/io/ByteArrayDataInput.java @@ -0,0 +1,54 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.io; + +import java.io.DataInput; + +public interface ByteArrayDataInput +extends DataInput { + @Override + public void readFully(byte[] var1); + + @Override + public void readFully(byte[] var1, int var2, int var3); + + @Override + public int skipBytes(int var1); + + @Override + public boolean readBoolean(); + + @Override + public byte readByte(); + + @Override + public int readUnsignedByte(); + + @Override + public short readShort(); + + @Override + public int readUnsignedShort(); + + @Override + public char readChar(); + + @Override + public int readInt(); + + @Override + public long readLong(); + + @Override + public float readFloat(); + + @Override + public double readDouble(); + + @Override + public String readLine(); + + @Override + public String readUTF(); +} diff --git a/src/com/google/common/io/ByteArrayDataOutput.java b/src/com/google/common/io/ByteArrayDataOutput.java new file mode 100644 index 0000000..08f2684 --- /dev/null +++ b/src/com/google/common/io/ByteArrayDataOutput.java @@ -0,0 +1,54 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.io; + +import java.io.DataOutput; + +public interface ByteArrayDataOutput +extends DataOutput { + @Override + public void write(int var1); + + @Override + public void write(byte[] var1); + + @Override + public void write(byte[] var1, int var2, int var3); + + @Override + public void writeBoolean(boolean var1); + + @Override + public void writeByte(int var1); + + @Override + public void writeShort(int var1); + + @Override + public void writeChar(int var1); + + @Override + public void writeInt(int var1); + + @Override + public void writeLong(long var1); + + @Override + public void writeFloat(float var1); + + @Override + public void writeDouble(double var1); + + @Override + public void writeChars(String var1); + + @Override + public void writeUTF(String var1); + + @Override + @Deprecated + public void writeBytes(String var1); + + public byte[] toByteArray(); +} diff --git a/src/com/google/common/io/ByteProcessor.java b/src/com/google/common/io/ByteProcessor.java new file mode 100644 index 0000000..66b9a12 --- /dev/null +++ b/src/com/google/common/io/ByteProcessor.java @@ -0,0 +1,14 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.io; + +import com.google.common.annotations.Beta; +import java.io.IOException; + +@Beta +public interface ByteProcessor { + public boolean processBytes(byte[] var1, int var2, int var3) throws IOException; + + public T getResult(); +} diff --git a/src/com/google/common/io/ByteSink.java b/src/com/google/common/io/ByteSink.java new file mode 100644 index 0000000..69a3b0b --- /dev/null +++ b/src/com/google/common/io/ByteSink.java @@ -0,0 +1,86 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.io; + +import com.google.common.base.Preconditions; +import com.google.common.io.ByteStreams; +import com.google.common.io.CharSink; +import com.google.common.io.Closer; +import java.io.BufferedOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.io.OutputStreamWriter; +import java.io.Writer; +import java.nio.charset.Charset; + +public abstract class ByteSink { + protected ByteSink() { + } + + public CharSink asCharSink(Charset charset) { + return new AsCharSink(charset); + } + + public abstract OutputStream openStream() throws IOException; + + public OutputStream openBufferedStream() throws IOException { + OutputStream out = this.openStream(); + return out instanceof BufferedOutputStream ? (BufferedOutputStream)out : new BufferedOutputStream(out); + } + + public void write(byte[] bytes) throws IOException { + Preconditions.checkNotNull(bytes); + Closer closer = Closer.create(); + try { + OutputStream out = closer.register(this.openStream()); + out.write(bytes); + out.flush(); + } + catch (Throwable e) { + throw closer.rethrow(e); + } + finally { + closer.close(); + } + } + + public long writeFrom(InputStream input) throws IOException { + Preconditions.checkNotNull(input); + Closer closer = Closer.create(); + try { + OutputStream out = closer.register(this.openStream()); + long written = ByteStreams.copy(input, out); + out.flush(); + long l = written; + return l; + } + catch (Throwable e) { + throw closer.rethrow(e); + } + finally { + closer.close(); + } + } + + private final class AsCharSink + extends CharSink { + private final Charset charset; + + private AsCharSink(Charset charset) { + this.charset = Preconditions.checkNotNull(charset); + } + + @Override + public Writer openStream() throws IOException { + return new OutputStreamWriter(ByteSink.this.openStream(), this.charset); + } + + public String toString() { + String string = String.valueOf(String.valueOf(ByteSink.this.toString())); + String string2 = String.valueOf(String.valueOf(this.charset)); + return new StringBuilder(13 + string.length() + string2.length()).append(string).append(".asCharSink(").append(string2).append(")").toString(); + } + } +} diff --git a/src/com/google/common/io/ByteSource.java b/src/com/google/common/io/ByteSource.java new file mode 100644 index 0000000..50e7049 --- /dev/null +++ b/src/com/google/common/io/ByteSource.java @@ -0,0 +1,452 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.io; + +import com.google.common.annotations.Beta; +import com.google.common.base.Ascii; +import com.google.common.base.Preconditions; +import com.google.common.collect.ImmutableList; +import com.google.common.hash.Funnels; +import com.google.common.hash.HashCode; +import com.google.common.hash.HashFunction; +import com.google.common.hash.Hasher; +import com.google.common.io.BaseEncoding; +import com.google.common.io.ByteProcessor; +import com.google.common.io.ByteSink; +import com.google.common.io.ByteStreams; +import com.google.common.io.CharSource; +import com.google.common.io.Closer; +import com.google.common.io.MultiInputStream; +import java.io.BufferedInputStream; +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.io.Reader; +import java.nio.charset.Charset; +import java.util.Arrays; +import java.util.Iterator; + +public abstract class ByteSource { + private static final int BUF_SIZE = 4096; + private static final byte[] countBuffer = new byte[4096]; + + protected ByteSource() { + } + + public CharSource asCharSource(Charset charset) { + return new AsCharSource(charset); + } + + public abstract InputStream openStream() throws IOException; + + public InputStream openBufferedStream() throws IOException { + InputStream in = this.openStream(); + return in instanceof BufferedInputStream ? (BufferedInputStream)in : new BufferedInputStream(in); + } + + public ByteSource slice(long offset, long length) { + return new SlicedByteSource(offset, length); + } + + public boolean isEmpty() throws IOException { + Closer closer = Closer.create(); + try { + InputStream in = closer.register(this.openStream()); + boolean bl = in.read() == -1; + return bl; + } + catch (Throwable e) { + throw closer.rethrow(e); + } + finally { + closer.close(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + public long size() throws IOException { + Closer closer = Closer.create(); + try { + InputStream in = closer.register(this.openStream()); + long l = this.countBySkipping(in); + return l; + } + catch (IOException e) { + } + finally { + closer.close(); + } + closer = Closer.create(); + try { + InputStream in = closer.register(this.openStream()); + long l = this.countByReading(in); + return l; + } + catch (Throwable e) { + throw closer.rethrow(e); + } + finally { + closer.close(); + } + } + + private long countBySkipping(InputStream in) throws IOException { + long count = 0L; + while (true) { + long skipped; + if ((skipped = in.skip(Math.min(in.available(), Integer.MAX_VALUE))) <= 0L) { + if (in.read() == -1) { + return count; + } + if (count == 0L && in.available() == 0) { + throw new IOException(); + } + ++count; + continue; + } + count += skipped; + } + } + + private long countByReading(InputStream in) throws IOException { + long read; + long count = 0L; + while ((read = (long)in.read(countBuffer)) != -1L) { + count += read; + } + return count; + } + + public long copyTo(OutputStream output) throws IOException { + Preconditions.checkNotNull(output); + Closer closer = Closer.create(); + try { + InputStream in = closer.register(this.openStream()); + long l = ByteStreams.copy(in, output); + return l; + } + catch (Throwable e) { + throw closer.rethrow(e); + } + finally { + closer.close(); + } + } + + public long copyTo(ByteSink sink) throws IOException { + Preconditions.checkNotNull(sink); + Closer closer = Closer.create(); + try { + InputStream in = closer.register(this.openStream()); + OutputStream out = closer.register(sink.openStream()); + long l = ByteStreams.copy(in, out); + return l; + } + catch (Throwable e) { + throw closer.rethrow(e); + } + finally { + closer.close(); + } + } + + public byte[] read() throws IOException { + Closer closer = Closer.create(); + try { + InputStream in = closer.register(this.openStream()); + byte[] byArray = ByteStreams.toByteArray(in); + return byArray; + } + catch (Throwable e) { + throw closer.rethrow(e); + } + finally { + closer.close(); + } + } + + @Beta + public T read(ByteProcessor processor) throws IOException { + Preconditions.checkNotNull(processor); + Closer closer = Closer.create(); + try { + InputStream in = closer.register(this.openStream()); + T t = ByteStreams.readBytes(in, processor); + return t; + } + catch (Throwable e) { + throw closer.rethrow(e); + } + finally { + closer.close(); + } + } + + public HashCode hash(HashFunction hashFunction) throws IOException { + Hasher hasher = hashFunction.newHasher(); + this.copyTo(Funnels.asOutputStream(hasher)); + return hasher.hash(); + } + + /* + * Enabled aggressive block sorting + * Enabled unnecessary exception pruning + * Enabled aggressive exception aggregation + */ + public boolean contentEquals(ByteSource other) throws IOException { + Preconditions.checkNotNull(other); + byte[] buf1 = new byte[4096]; + byte[] buf2 = new byte[4096]; + Closer closer = Closer.create(); + try { + InputStream in1 = closer.register(this.openStream()); + InputStream in2 = closer.register(other.openStream()); + while (true) { + int read2; + int read1; + if ((read1 = ByteStreams.read(in1, buf1, 0, 4096)) != (read2 = ByteStreams.read(in2, buf2, 0, 4096)) || !Arrays.equals(buf1, buf2)) { + boolean bl = false; + return bl; + } + if (read1 != 4096) { + boolean bl = true; + return bl; + } + continue; + break; + } + } + catch (Throwable e) { + throw closer.rethrow(e); + } + finally { + closer.close(); + } + } + + public static ByteSource concat(Iterable sources) { + return new ConcatenatedByteSource(sources); + } + + public static ByteSource concat(Iterator sources) { + return ByteSource.concat(ImmutableList.copyOf(sources)); + } + + public static ByteSource concat(ByteSource ... sources) { + return ByteSource.concat(ImmutableList.copyOf(sources)); + } + + public static ByteSource wrap(byte[] b) { + return new ByteArrayByteSource(b); + } + + public static ByteSource empty() { + return EmptyByteSource.INSTANCE; + } + + private static final class ConcatenatedByteSource + extends ByteSource { + private final Iterable sources; + + ConcatenatedByteSource(Iterable sources) { + this.sources = Preconditions.checkNotNull(sources); + } + + @Override + public InputStream openStream() throws IOException { + return new MultiInputStream(this.sources.iterator()); + } + + @Override + public boolean isEmpty() throws IOException { + for (ByteSource byteSource : this.sources) { + if (byteSource.isEmpty()) continue; + return false; + } + return true; + } + + @Override + public long size() throws IOException { + long result = 0L; + for (ByteSource byteSource : this.sources) { + result += byteSource.size(); + } + return result; + } + + public String toString() { + String string = String.valueOf(String.valueOf(this.sources)); + return new StringBuilder(19 + string.length()).append("ByteSource.concat(").append(string).append(")").toString(); + } + } + + private static final class EmptyByteSource + extends ByteArrayByteSource { + private static final EmptyByteSource INSTANCE = new EmptyByteSource(); + + private EmptyByteSource() { + super(new byte[0]); + } + + @Override + public CharSource asCharSource(Charset charset) { + Preconditions.checkNotNull(charset); + return CharSource.empty(); + } + + @Override + public byte[] read() { + return this.bytes; + } + + @Override + public String toString() { + return "ByteSource.empty()"; + } + } + + private static class ByteArrayByteSource + extends ByteSource { + protected final byte[] bytes; + + protected ByteArrayByteSource(byte[] bytes) { + this.bytes = Preconditions.checkNotNull(bytes); + } + + @Override + public InputStream openStream() { + return new ByteArrayInputStream(this.bytes); + } + + @Override + public InputStream openBufferedStream() throws IOException { + return this.openStream(); + } + + @Override + public boolean isEmpty() { + return this.bytes.length == 0; + } + + @Override + public long size() { + return this.bytes.length; + } + + @Override + public byte[] read() { + return (byte[])this.bytes.clone(); + } + + @Override + public long copyTo(OutputStream output) throws IOException { + output.write(this.bytes); + return this.bytes.length; + } + + @Override + public T read(ByteProcessor processor) throws IOException { + processor.processBytes(this.bytes, 0, this.bytes.length); + return processor.getResult(); + } + + @Override + public HashCode hash(HashFunction hashFunction) throws IOException { + return hashFunction.hashBytes(this.bytes); + } + + public String toString() { + String string = String.valueOf(String.valueOf(Ascii.truncate(BaseEncoding.base16().encode(this.bytes), 30, "..."))); + return new StringBuilder(17 + string.length()).append("ByteSource.wrap(").append(string).append(")").toString(); + } + } + + private final class SlicedByteSource + extends ByteSource { + private final long offset; + private final long length; + + private SlicedByteSource(long offset, long length) { + Preconditions.checkArgument(offset >= 0L, "offset (%s) may not be negative", offset); + Preconditions.checkArgument(length >= 0L, "length (%s) may not be negative", length); + this.offset = offset; + this.length = length; + } + + @Override + public InputStream openStream() throws IOException { + return this.sliceStream(ByteSource.this.openStream()); + } + + @Override + public InputStream openBufferedStream() throws IOException { + return this.sliceStream(ByteSource.this.openBufferedStream()); + } + + private InputStream sliceStream(InputStream in) throws IOException { + if (this.offset > 0L) { + try { + ByteStreams.skipFully(in, this.offset); + } + catch (Throwable e) { + Closer closer = Closer.create(); + closer.register(in); + try { + throw closer.rethrow(e); + } + catch (Throwable throwable) { + closer.close(); + throw throwable; + } + } + } + return ByteStreams.limit(in, this.length); + } + + @Override + public ByteSource slice(long offset, long length) { + Preconditions.checkArgument(offset >= 0L, "offset (%s) may not be negative", offset); + Preconditions.checkArgument(length >= 0L, "length (%s) may not be negative", length); + long maxLength = this.length - offset; + return ByteSource.this.slice(this.offset + offset, Math.min(length, maxLength)); + } + + @Override + public boolean isEmpty() throws IOException { + return this.length == 0L || super.isEmpty(); + } + + public String toString() { + String string = String.valueOf(String.valueOf(ByteSource.this.toString())); + long l = this.offset; + long l2 = this.length; + return new StringBuilder(50 + string.length()).append(string).append(".slice(").append(l).append(", ").append(l2).append(")").toString(); + } + } + + private final class AsCharSource + extends CharSource { + private final Charset charset; + + private AsCharSource(Charset charset) { + this.charset = Preconditions.checkNotNull(charset); + } + + @Override + public Reader openStream() throws IOException { + return new InputStreamReader(ByteSource.this.openStream(), this.charset); + } + + public String toString() { + String string = String.valueOf(String.valueOf(ByteSource.this.toString())); + String string2 = String.valueOf(String.valueOf(this.charset)); + return new StringBuilder(15 + string.length() + string2.length()).append(string).append(".asCharSource(").append(string2).append(")").toString(); + } + } +} diff --git a/src/com/google/common/io/ByteStreams.java b/src/com/google/common/io/ByteStreams.java new file mode 100644 index 0000000..48624bc --- /dev/null +++ b/src/com/google/common/io/ByteStreams.java @@ -0,0 +1,593 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.io; + +import com.google.common.annotations.Beta; +import com.google.common.base.Preconditions; +import com.google.common.io.ByteArrayDataInput; +import com.google.common.io.ByteArrayDataOutput; +import com.google.common.io.ByteProcessor; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.DataInput; +import java.io.DataInputStream; +import java.io.DataOutput; +import java.io.DataOutputStream; +import java.io.EOFException; +import java.io.FilterInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.nio.ByteBuffer; +import java.nio.channels.ReadableByteChannel; +import java.nio.channels.WritableByteChannel; +import java.util.Arrays; + +@Beta +public final class ByteStreams { + private static final int BUF_SIZE = 4096; + private static final OutputStream NULL_OUTPUT_STREAM = new OutputStream(){ + + @Override + public void write(int b) { + } + + @Override + public void write(byte[] b) { + Preconditions.checkNotNull(b); + } + + @Override + public void write(byte[] b, int off, int len) { + Preconditions.checkNotNull(b); + } + + public String toString() { + return "ByteStreams.nullOutputStream()"; + } + }; + + private ByteStreams() { + } + + public static long copy(InputStream from, OutputStream to) throws IOException { + int r; + Preconditions.checkNotNull(from); + Preconditions.checkNotNull(to); + byte[] buf = new byte[4096]; + long total = 0L; + while ((r = from.read(buf)) != -1) { + to.write(buf, 0, r); + total += (long)r; + } + return total; + } + + public static long copy(ReadableByteChannel from, WritableByteChannel to) throws IOException { + Preconditions.checkNotNull(from); + Preconditions.checkNotNull(to); + ByteBuffer buf = ByteBuffer.allocate(4096); + long total = 0L; + while (from.read(buf) != -1) { + buf.flip(); + while (buf.hasRemaining()) { + total += (long)to.write(buf); + } + buf.clear(); + } + return total; + } + + public static byte[] toByteArray(InputStream in) throws IOException { + ByteArrayOutputStream out = new ByteArrayOutputStream(); + ByteStreams.copy(in, out); + return out.toByteArray(); + } + + static byte[] toByteArray(InputStream in, int expectedSize) throws IOException { + int read; + byte[] bytes = new byte[expectedSize]; + for (int remaining = expectedSize; remaining > 0; remaining -= read) { + int off = expectedSize - remaining; + read = in.read(bytes, off, remaining); + if (read != -1) continue; + return Arrays.copyOf(bytes, off); + } + int b = in.read(); + if (b == -1) { + return bytes; + } + FastByteArrayOutputStream out = new FastByteArrayOutputStream(); + out.write(b); + ByteStreams.copy(in, out); + byte[] result = new byte[bytes.length + out.size()]; + System.arraycopy(bytes, 0, result, 0, bytes.length); + out.writeTo(result, bytes.length); + return result; + } + + public static ByteArrayDataInput newDataInput(byte[] bytes) { + return ByteStreams.newDataInput(new ByteArrayInputStream(bytes)); + } + + public static ByteArrayDataInput newDataInput(byte[] bytes, int start) { + Preconditions.checkPositionIndex(start, bytes.length); + return ByteStreams.newDataInput(new ByteArrayInputStream(bytes, start, bytes.length - start)); + } + + public static ByteArrayDataInput newDataInput(ByteArrayInputStream byteArrayInputStream) { + return new ByteArrayDataInputStream(Preconditions.checkNotNull(byteArrayInputStream)); + } + + public static ByteArrayDataOutput newDataOutput() { + return ByteStreams.newDataOutput(new ByteArrayOutputStream()); + } + + public static ByteArrayDataOutput newDataOutput(int size) { + Preconditions.checkArgument(size >= 0, "Invalid size: %s", size); + return ByteStreams.newDataOutput(new ByteArrayOutputStream(size)); + } + + public static ByteArrayDataOutput newDataOutput(ByteArrayOutputStream byteArrayOutputSteam) { + return new ByteArrayDataOutputStream(Preconditions.checkNotNull(byteArrayOutputSteam)); + } + + public static OutputStream nullOutputStream() { + return NULL_OUTPUT_STREAM; + } + + public static InputStream limit(InputStream in, long limit) { + return new LimitedInputStream(in, limit); + } + + public static void readFully(InputStream in, byte[] b) throws IOException { + ByteStreams.readFully(in, b, 0, b.length); + } + + public static void readFully(InputStream in, byte[] b, int off, int len) throws IOException { + int read = ByteStreams.read(in, b, off, len); + if (read != len) { + int n = read; + int n2 = len; + throw new EOFException(new StringBuilder(81).append("reached end of stream after reading ").append(n).append(" bytes; ").append(n2).append(" bytes expected").toString()); + } + } + + public static void skipFully(InputStream in, long n) throws IOException { + long toSkip = n; + while (n > 0L) { + long amt = in.skip(n); + if (amt == 0L) { + if (in.read() == -1) { + long skipped; + long l = skipped = toSkip - n; + long l2 = toSkip; + throw new EOFException(new StringBuilder(100).append("reached end of stream after skipping ").append(l).append(" bytes; ").append(l2).append(" bytes expected").toString()); + } + --n; + continue; + } + n -= amt; + } + } + + public static T readBytes(InputStream input, ByteProcessor processor) throws IOException { + int read; + Preconditions.checkNotNull(input); + Preconditions.checkNotNull(processor); + byte[] buf = new byte[4096]; + while ((read = input.read(buf)) != -1 && processor.processBytes(buf, 0, read)) { + } + return processor.getResult(); + } + + public static int read(InputStream in, byte[] b, int off, int len) throws IOException { + int total; + int result; + Preconditions.checkNotNull(in); + Preconditions.checkNotNull(b); + if (len < 0) { + throw new IndexOutOfBoundsException("len is negative"); + } + for (total = 0; total < len && (result = in.read(b, off + total, len - total)) != -1; total += result) { + } + return total; + } + + private static final class LimitedInputStream + extends FilterInputStream { + private long left; + private long mark = -1L; + + LimitedInputStream(InputStream in, long limit) { + super(in); + Preconditions.checkNotNull(in); + Preconditions.checkArgument(limit >= 0L, "limit must be non-negative"); + this.left = limit; + } + + @Override + public int available() throws IOException { + return (int)Math.min((long)this.in.available(), this.left); + } + + @Override + public synchronized void mark(int readLimit) { + this.in.mark(readLimit); + this.mark = this.left; + } + + @Override + public int read() throws IOException { + if (this.left == 0L) { + return -1; + } + int result = this.in.read(); + if (result != -1) { + --this.left; + } + return result; + } + + @Override + public int read(byte[] b, int off, int len) throws IOException { + if (this.left == 0L) { + return -1; + } + int result = this.in.read(b, off, len = (int)Math.min((long)len, this.left)); + if (result != -1) { + this.left -= (long)result; + } + return result; + } + + @Override + public synchronized void reset() throws IOException { + if (!this.in.markSupported()) { + throw new IOException("Mark not supported"); + } + if (this.mark == -1L) { + throw new IOException("Mark not set"); + } + this.in.reset(); + this.left = this.mark; + } + + @Override + public long skip(long n) throws IOException { + n = Math.min(n, this.left); + long skipped = this.in.skip(n); + this.left -= skipped; + return skipped; + } + } + + private static class ByteArrayDataOutputStream + implements ByteArrayDataOutput { + final DataOutput output; + final ByteArrayOutputStream byteArrayOutputSteam; + + ByteArrayDataOutputStream(ByteArrayOutputStream byteArrayOutputSteam) { + this.byteArrayOutputSteam = byteArrayOutputSteam; + this.output = new DataOutputStream(byteArrayOutputSteam); + } + + @Override + public void write(int b) { + try { + this.output.write(b); + } + catch (IOException impossible) { + throw new AssertionError((Object)impossible); + } + } + + @Override + public void write(byte[] b) { + try { + this.output.write(b); + } + catch (IOException impossible) { + throw new AssertionError((Object)impossible); + } + } + + @Override + public void write(byte[] b, int off, int len) { + try { + this.output.write(b, off, len); + } + catch (IOException impossible) { + throw new AssertionError((Object)impossible); + } + } + + @Override + public void writeBoolean(boolean v) { + try { + this.output.writeBoolean(v); + } + catch (IOException impossible) { + throw new AssertionError((Object)impossible); + } + } + + @Override + public void writeByte(int v) { + try { + this.output.writeByte(v); + } + catch (IOException impossible) { + throw new AssertionError((Object)impossible); + } + } + + @Override + public void writeBytes(String s) { + try { + this.output.writeBytes(s); + } + catch (IOException impossible) { + throw new AssertionError((Object)impossible); + } + } + + @Override + public void writeChar(int v) { + try { + this.output.writeChar(v); + } + catch (IOException impossible) { + throw new AssertionError((Object)impossible); + } + } + + @Override + public void writeChars(String s) { + try { + this.output.writeChars(s); + } + catch (IOException impossible) { + throw new AssertionError((Object)impossible); + } + } + + @Override + public void writeDouble(double v) { + try { + this.output.writeDouble(v); + } + catch (IOException impossible) { + throw new AssertionError((Object)impossible); + } + } + + @Override + public void writeFloat(float v) { + try { + this.output.writeFloat(v); + } + catch (IOException impossible) { + throw new AssertionError((Object)impossible); + } + } + + @Override + public void writeInt(int v) { + try { + this.output.writeInt(v); + } + catch (IOException impossible) { + throw new AssertionError((Object)impossible); + } + } + + @Override + public void writeLong(long v) { + try { + this.output.writeLong(v); + } + catch (IOException impossible) { + throw new AssertionError((Object)impossible); + } + } + + @Override + public void writeShort(int v) { + try { + this.output.writeShort(v); + } + catch (IOException impossible) { + throw new AssertionError((Object)impossible); + } + } + + @Override + public void writeUTF(String s) { + try { + this.output.writeUTF(s); + } + catch (IOException impossible) { + throw new AssertionError((Object)impossible); + } + } + + @Override + public byte[] toByteArray() { + return this.byteArrayOutputSteam.toByteArray(); + } + } + + private static class ByteArrayDataInputStream + implements ByteArrayDataInput { + final DataInput input; + + ByteArrayDataInputStream(ByteArrayInputStream byteArrayInputStream) { + this.input = new DataInputStream(byteArrayInputStream); + } + + @Override + public void readFully(byte[] b) { + try { + this.input.readFully(b); + } + catch (IOException e) { + throw new IllegalStateException(e); + } + } + + @Override + public void readFully(byte[] b, int off, int len) { + try { + this.input.readFully(b, off, len); + } + catch (IOException e) { + throw new IllegalStateException(e); + } + } + + @Override + public int skipBytes(int n) { + try { + return this.input.skipBytes(n); + } + catch (IOException e) { + throw new IllegalStateException(e); + } + } + + @Override + public boolean readBoolean() { + try { + return this.input.readBoolean(); + } + catch (IOException e) { + throw new IllegalStateException(e); + } + } + + @Override + public byte readByte() { + try { + return this.input.readByte(); + } + catch (EOFException e) { + throw new IllegalStateException(e); + } + catch (IOException impossible) { + throw new AssertionError((Object)impossible); + } + } + + @Override + public int readUnsignedByte() { + try { + return this.input.readUnsignedByte(); + } + catch (IOException e) { + throw new IllegalStateException(e); + } + } + + @Override + public short readShort() { + try { + return this.input.readShort(); + } + catch (IOException e) { + throw new IllegalStateException(e); + } + } + + @Override + public int readUnsignedShort() { + try { + return this.input.readUnsignedShort(); + } + catch (IOException e) { + throw new IllegalStateException(e); + } + } + + @Override + public char readChar() { + try { + return this.input.readChar(); + } + catch (IOException e) { + throw new IllegalStateException(e); + } + } + + @Override + public int readInt() { + try { + return this.input.readInt(); + } + catch (IOException e) { + throw new IllegalStateException(e); + } + } + + @Override + public long readLong() { + try { + return this.input.readLong(); + } + catch (IOException e) { + throw new IllegalStateException(e); + } + } + + @Override + public float readFloat() { + try { + return this.input.readFloat(); + } + catch (IOException e) { + throw new IllegalStateException(e); + } + } + + @Override + public double readDouble() { + try { + return this.input.readDouble(); + } + catch (IOException e) { + throw new IllegalStateException(e); + } + } + + @Override + public String readLine() { + try { + return this.input.readLine(); + } + catch (IOException e) { + throw new IllegalStateException(e); + } + } + + @Override + public String readUTF() { + try { + return this.input.readUTF(); + } + catch (IOException e) { + throw new IllegalStateException(e); + } + } + } + + private static final class FastByteArrayOutputStream + extends ByteArrayOutputStream { + private FastByteArrayOutputStream() { + } + + void writeTo(byte[] b, int off) { + System.arraycopy(this.buf, 0, b, off, this.count); + } + } +} diff --git a/src/com/google/common/io/CharSequenceReader.java b/src/com/google/common/io/CharSequenceReader.java new file mode 100644 index 0000000..345de65 --- /dev/null +++ b/src/com/google/common/io/CharSequenceReader.java @@ -0,0 +1,106 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.io; + +import com.google.common.base.Preconditions; +import java.io.IOException; +import java.io.Reader; +import java.nio.CharBuffer; + +final class CharSequenceReader +extends Reader { + private CharSequence seq; + private int pos; + private int mark; + + public CharSequenceReader(CharSequence seq) { + this.seq = Preconditions.checkNotNull(seq); + } + + private void checkOpen() throws IOException { + if (this.seq == null) { + throw new IOException("reader closed"); + } + } + + private boolean hasRemaining() { + return this.remaining() > 0; + } + + private int remaining() { + return this.seq.length() - this.pos; + } + + @Override + public synchronized int read(CharBuffer target) throws IOException { + Preconditions.checkNotNull(target); + this.checkOpen(); + if (!this.hasRemaining()) { + return -1; + } + int charsToRead = Math.min(target.remaining(), this.remaining()); + for (int i = 0; i < charsToRead; ++i) { + target.put(this.seq.charAt(this.pos++)); + } + return charsToRead; + } + + @Override + public synchronized int read() throws IOException { + this.checkOpen(); + return this.hasRemaining() ? (int)this.seq.charAt(this.pos++) : -1; + } + + @Override + public synchronized int read(char[] cbuf, int off, int len) throws IOException { + Preconditions.checkPositionIndexes(off, off + len, cbuf.length); + this.checkOpen(); + if (!this.hasRemaining()) { + return -1; + } + int charsToRead = Math.min(len, this.remaining()); + for (int i = 0; i < charsToRead; ++i) { + cbuf[off + i] = this.seq.charAt(this.pos++); + } + return charsToRead; + } + + @Override + public synchronized long skip(long n) throws IOException { + Preconditions.checkArgument(n >= 0L, "n (%s) may not be negative", n); + this.checkOpen(); + int charsToSkip = (int)Math.min((long)this.remaining(), n); + this.pos += charsToSkip; + return charsToSkip; + } + + @Override + public synchronized boolean ready() throws IOException { + this.checkOpen(); + return true; + } + + @Override + public boolean markSupported() { + return true; + } + + @Override + public synchronized void mark(int readAheadLimit) throws IOException { + Preconditions.checkArgument(readAheadLimit >= 0, "readAheadLimit (%s) may not be negative", readAheadLimit); + this.checkOpen(); + this.mark = this.pos; + } + + @Override + public synchronized void reset() throws IOException { + this.checkOpen(); + this.pos = this.mark; + } + + @Override + public synchronized void close() throws IOException { + this.seq = null; + } +} diff --git a/src/com/google/common/io/CharSink.java b/src/com/google/common/io/CharSink.java new file mode 100644 index 0000000..c8818cc --- /dev/null +++ b/src/com/google/common/io/CharSink.java @@ -0,0 +1,80 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.io; + +import com.google.common.base.Preconditions; +import com.google.common.io.CharStreams; +import com.google.common.io.Closer; +import java.io.BufferedWriter; +import java.io.IOException; +import java.io.Writer; + +public abstract class CharSink { + protected CharSink() { + } + + public abstract Writer openStream() throws IOException; + + public Writer openBufferedStream() throws IOException { + Writer writer = this.openStream(); + return writer instanceof BufferedWriter ? (BufferedWriter)writer : new BufferedWriter(writer); + } + + public void write(CharSequence charSequence) throws IOException { + Preconditions.checkNotNull(charSequence); + Closer closer = Closer.create(); + try { + Writer out = closer.register(this.openStream()); + out.append(charSequence); + out.flush(); + } + catch (Throwable e) { + throw closer.rethrow(e); + } + finally { + closer.close(); + } + } + + public void writeLines(Iterable lines) throws IOException { + this.writeLines(lines, System.getProperty("line.separator")); + } + + public void writeLines(Iterable lines, String lineSeparator) throws IOException { + Preconditions.checkNotNull(lines); + Preconditions.checkNotNull(lineSeparator); + Closer closer = Closer.create(); + try { + Writer out = closer.register(this.openBufferedStream()); + for (CharSequence charSequence : lines) { + out.append(charSequence).append(lineSeparator); + } + out.flush(); + } + catch (Throwable e) { + throw closer.rethrow(e); + } + finally { + closer.close(); + } + } + + public long writeFrom(Readable readable) throws IOException { + Preconditions.checkNotNull(readable); + Closer closer = Closer.create(); + try { + Writer out = closer.register(this.openStream()); + long written = CharStreams.copy(readable, out); + out.flush(); + long l = written; + return l; + } + catch (Throwable e) { + throw closer.rethrow(e); + } + finally { + closer.close(); + } + } +} diff --git a/src/com/google/common/io/CharSource.java b/src/com/google/common/io/CharSource.java new file mode 100644 index 0000000..6f9a67e --- /dev/null +++ b/src/com/google/common/io/CharSource.java @@ -0,0 +1,291 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.io; + +import com.google.common.annotations.Beta; +import com.google.common.base.Ascii; +import com.google.common.base.Preconditions; +import com.google.common.base.Splitter; +import com.google.common.collect.AbstractIterator; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.Lists; +import com.google.common.io.CharSequenceReader; +import com.google.common.io.CharSink; +import com.google.common.io.CharStreams; +import com.google.common.io.Closer; +import com.google.common.io.LineProcessor; +import com.google.common.io.MultiReader; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.Reader; +import java.io.Writer; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.regex.Pattern; +import javax.annotation.Nullable; + +public abstract class CharSource { + protected CharSource() { + } + + public abstract Reader openStream() throws IOException; + + public BufferedReader openBufferedStream() throws IOException { + Reader reader = this.openStream(); + return reader instanceof BufferedReader ? (BufferedReader)reader : new BufferedReader(reader); + } + + public long copyTo(Appendable appendable) throws IOException { + Preconditions.checkNotNull(appendable); + Closer closer = Closer.create(); + try { + Reader reader = closer.register(this.openStream()); + long l = CharStreams.copy(reader, appendable); + return l; + } + catch (Throwable e) { + throw closer.rethrow(e); + } + finally { + closer.close(); + } + } + + public long copyTo(CharSink sink) throws IOException { + Preconditions.checkNotNull(sink); + Closer closer = Closer.create(); + try { + Reader reader = closer.register(this.openStream()); + Writer writer = closer.register(sink.openStream()); + long l = CharStreams.copy(reader, writer); + return l; + } + catch (Throwable e) { + throw closer.rethrow(e); + } + finally { + closer.close(); + } + } + + public String read() throws IOException { + Closer closer = Closer.create(); + try { + Reader reader = closer.register(this.openStream()); + String string = CharStreams.toString(reader); + return string; + } + catch (Throwable e) { + throw closer.rethrow(e); + } + finally { + closer.close(); + } + } + + @Nullable + public String readFirstLine() throws IOException { + Closer closer = Closer.create(); + try { + BufferedReader reader = closer.register(this.openBufferedStream()); + String string = reader.readLine(); + return string; + } + catch (Throwable e) { + throw closer.rethrow(e); + } + finally { + closer.close(); + } + } + + public ImmutableList readLines() throws IOException { + Closer closer = Closer.create(); + try { + String line; + BufferedReader reader = closer.register(this.openBufferedStream()); + ArrayList result = Lists.newArrayList(); + while ((line = reader.readLine()) != null) { + result.add(line); + } + ImmutableList immutableList = ImmutableList.copyOf(result); + return immutableList; + } + catch (Throwable e) { + throw closer.rethrow(e); + } + finally { + closer.close(); + } + } + + @Beta + public T readLines(LineProcessor processor) throws IOException { + Preconditions.checkNotNull(processor); + Closer closer = Closer.create(); + try { + Reader reader = closer.register(this.openStream()); + T t = CharStreams.readLines(reader, processor); + return t; + } + catch (Throwable e) { + throw closer.rethrow(e); + } + finally { + closer.close(); + } + } + + public boolean isEmpty() throws IOException { + Closer closer = Closer.create(); + try { + Reader reader = closer.register(this.openStream()); + boolean bl = reader.read() == -1; + return bl; + } + catch (Throwable e) { + throw closer.rethrow(e); + } + finally { + closer.close(); + } + } + + public static CharSource concat(Iterable sources) { + return new ConcatenatedCharSource(sources); + } + + public static CharSource concat(Iterator sources) { + return CharSource.concat(ImmutableList.copyOf(sources)); + } + + public static CharSource concat(CharSource ... sources) { + return CharSource.concat(ImmutableList.copyOf(sources)); + } + + public static CharSource wrap(CharSequence charSequence) { + return new CharSequenceCharSource(charSequence); + } + + public static CharSource empty() { + return EmptyCharSource.INSTANCE; + } + + private static final class ConcatenatedCharSource + extends CharSource { + private final Iterable sources; + + ConcatenatedCharSource(Iterable sources) { + this.sources = Preconditions.checkNotNull(sources); + } + + @Override + public Reader openStream() throws IOException { + return new MultiReader(this.sources.iterator()); + } + + @Override + public boolean isEmpty() throws IOException { + for (CharSource charSource : this.sources) { + if (charSource.isEmpty()) continue; + return false; + } + return true; + } + + public String toString() { + String string = String.valueOf(String.valueOf(this.sources)); + return new StringBuilder(19 + string.length()).append("CharSource.concat(").append(string).append(")").toString(); + } + } + + private static final class EmptyCharSource + extends CharSequenceCharSource { + private static final EmptyCharSource INSTANCE = new EmptyCharSource(); + + private EmptyCharSource() { + super(""); + } + + @Override + public String toString() { + return "CharSource.empty()"; + } + } + + private static class CharSequenceCharSource + extends CharSource { + private static final Splitter LINE_SPLITTER = Splitter.on(Pattern.compile("\r\n|\n|\r")); + private final CharSequence seq; + + protected CharSequenceCharSource(CharSequence seq) { + this.seq = Preconditions.checkNotNull(seq); + } + + @Override + public Reader openStream() { + return new CharSequenceReader(this.seq); + } + + @Override + public String read() { + return this.seq.toString(); + } + + @Override + public boolean isEmpty() { + return this.seq.length() == 0; + } + + private Iterable lines() { + return new Iterable(){ + + @Override + public Iterator iterator() { + return new AbstractIterator(){ + Iterator lines; + { + this.lines = LINE_SPLITTER.split(CharSequenceCharSource.this.seq).iterator(); + } + + @Override + protected String computeNext() { + if (this.lines.hasNext()) { + String next = this.lines.next(); + if (this.lines.hasNext() || !next.isEmpty()) { + return next; + } + } + return (String)this.endOfData(); + } + }; + } + }; + } + + @Override + public String readFirstLine() { + Iterator lines = this.lines().iterator(); + return lines.hasNext() ? lines.next() : null; + } + + @Override + public ImmutableList readLines() { + return ImmutableList.copyOf(this.lines()); + } + + @Override + public T readLines(LineProcessor processor) throws IOException { + for (String line : this.lines()) { + if (!processor.processLine(line)) break; + } + return processor.getResult(); + } + + public String toString() { + String string = String.valueOf(String.valueOf(Ascii.truncate(this.seq, 30, "..."))); + return new StringBuilder(17 + string.length()).append("CharSource.wrap(").append(string).append(")").toString(); + } + } +} diff --git a/src/com/google/common/io/CharStreams.java b/src/com/google/common/io/CharStreams.java new file mode 100644 index 0000000..1877ffa --- /dev/null +++ b/src/com/google/common/io/CharStreams.java @@ -0,0 +1,183 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.io; + +import com.google.common.annotations.Beta; +import com.google.common.base.Preconditions; +import com.google.common.io.AppendableWriter; +import com.google.common.io.LineProcessor; +import com.google.common.io.LineReader; +import java.io.Closeable; +import java.io.EOFException; +import java.io.IOException; +import java.io.Reader; +import java.io.Writer; +import java.nio.CharBuffer; +import java.util.ArrayList; +import java.util.List; + +@Beta +public final class CharStreams { + private static final int BUF_SIZE = 2048; + + private CharStreams() { + } + + public static long copy(Readable from, Appendable to) throws IOException { + Preconditions.checkNotNull(from); + Preconditions.checkNotNull(to); + CharBuffer buf = CharBuffer.allocate(2048); + long total = 0L; + while (from.read(buf) != -1) { + buf.flip(); + to.append(buf); + total += (long)buf.remaining(); + buf.clear(); + } + return total; + } + + public static String toString(Readable r) throws IOException { + return CharStreams.toStringBuilder(r).toString(); + } + + private static StringBuilder toStringBuilder(Readable r) throws IOException { + StringBuilder sb = new StringBuilder(); + CharStreams.copy(r, sb); + return sb; + } + + public static List readLines(Readable r) throws IOException { + String line; + ArrayList result = new ArrayList(); + LineReader lineReader = new LineReader(r); + while ((line = lineReader.readLine()) != null) { + result.add(line); + } + return result; + } + + public static T readLines(Readable readable, LineProcessor processor) throws IOException { + String line; + Preconditions.checkNotNull(readable); + Preconditions.checkNotNull(processor); + LineReader lineReader = new LineReader(readable); + while ((line = lineReader.readLine()) != null && processor.processLine(line)) { + } + return processor.getResult(); + } + + public static void skipFully(Reader reader, long n) throws IOException { + Preconditions.checkNotNull(reader); + while (n > 0L) { + long amt = reader.skip(n); + if (amt == 0L) { + if (reader.read() == -1) { + throw new EOFException(); + } + --n; + continue; + } + n -= amt; + } + } + + public static Writer nullWriter() { + return NullWriter.INSTANCE; + } + + public static Writer asWriter(Appendable target) { + if (target instanceof Writer) { + return (Writer)target; + } + return new AppendableWriter(target); + } + + static Reader asReader(final Readable readable) { + Preconditions.checkNotNull(readable); + if (readable instanceof Reader) { + return (Reader)readable; + } + return new Reader(){ + + @Override + public int read(char[] cbuf, int off, int len) throws IOException { + return this.read(CharBuffer.wrap(cbuf, off, len)); + } + + @Override + public int read(CharBuffer target) throws IOException { + return readable.read(target); + } + + @Override + public void close() throws IOException { + if (readable instanceof Closeable) { + ((Closeable)((Object)readable)).close(); + } + } + }; + } + + private static final class NullWriter + extends Writer { + private static final NullWriter INSTANCE = new NullWriter(); + + private NullWriter() { + } + + @Override + public void write(int c) { + } + + @Override + public void write(char[] cbuf) { + Preconditions.checkNotNull(cbuf); + } + + @Override + public void write(char[] cbuf, int off, int len) { + Preconditions.checkPositionIndexes(off, off + len, cbuf.length); + } + + @Override + public void write(String str) { + Preconditions.checkNotNull(str); + } + + @Override + public void write(String str, int off, int len) { + Preconditions.checkPositionIndexes(off, off + len, str.length()); + } + + @Override + public Writer append(CharSequence csq) { + Preconditions.checkNotNull(csq); + return this; + } + + @Override + public Writer append(CharSequence csq, int start, int end) { + Preconditions.checkPositionIndexes(start, end, csq.length()); + return this; + } + + @Override + public Writer append(char c) { + return this; + } + + @Override + public void flush() { + } + + @Override + public void close() { + } + + public String toString() { + return "CharStreams.nullWriter()"; + } + } +} diff --git a/src/com/google/common/io/Closeables.java b/src/com/google/common/io/Closeables.java new file mode 100644 index 0000000..b9f863a --- /dev/null +++ b/src/com/google/common/io/Closeables.java @@ -0,0 +1,56 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.io; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.VisibleForTesting; +import java.io.Closeable; +import java.io.IOException; +import java.io.InputStream; +import java.io.Reader; +import java.util.logging.Level; +import java.util.logging.Logger; +import javax.annotation.Nullable; + +@Beta +public final class Closeables { + @VisibleForTesting + static final Logger logger = Logger.getLogger(Closeables.class.getName()); + + private Closeables() { + } + + public static void close(@Nullable Closeable closeable, boolean swallowIOException) throws IOException { + if (closeable == null) { + return; + } + try { + closeable.close(); + } + catch (IOException e) { + if (swallowIOException) { + logger.log(Level.WARNING, "IOException thrown while closing Closeable.", e); + } + throw e; + } + } + + public static void closeQuietly(@Nullable InputStream inputStream) { + try { + Closeables.close(inputStream, true); + } + catch (IOException impossible) { + throw new AssertionError((Object)impossible); + } + } + + public static void closeQuietly(@Nullable Reader reader) { + try { + Closeables.close(reader, true); + } + catch (IOException impossible) { + throw new AssertionError((Object)impossible); + } + } +} diff --git a/src/com/google/common/io/Closer.java b/src/com/google/common/io/Closer.java new file mode 100644 index 0000000..834fc6d --- /dev/null +++ b/src/com/google/common/io/Closer.java @@ -0,0 +1,144 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.io; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.Preconditions; +import com.google.common.base.Throwables; +import com.google.common.io.Closeables; +import java.io.Closeable; +import java.io.IOException; +import java.lang.reflect.Method; +import java.util.ArrayDeque; +import java.util.Deque; +import java.util.logging.Level; +import javax.annotation.Nullable; + +@Beta +public final class Closer +implements Closeable { + private static final Suppressor SUPPRESSOR = SuppressingSuppressor.isAvailable() ? SuppressingSuppressor.INSTANCE : LoggingSuppressor.INSTANCE; + @VisibleForTesting + final Suppressor suppressor; + private final Deque stack = new ArrayDeque(4); + private Throwable thrown; + + public static Closer create() { + return new Closer(SUPPRESSOR); + } + + @VisibleForTesting + Closer(Suppressor suppressor) { + this.suppressor = Preconditions.checkNotNull(suppressor); + } + + public C register(@Nullable C closeable) { + if (closeable != null) { + this.stack.addFirst(closeable); + } + return closeable; + } + + public RuntimeException rethrow(Throwable e) throws IOException { + Preconditions.checkNotNull(e); + this.thrown = e; + Throwables.propagateIfPossible(e, IOException.class); + throw new RuntimeException(e); + } + + public RuntimeException rethrow(Throwable e, Class declaredType) throws IOException, X { + Preconditions.checkNotNull(e); + this.thrown = e; + Throwables.propagateIfPossible(e, IOException.class); + Throwables.propagateIfPossible(e, declaredType); + throw new RuntimeException(e); + } + + public RuntimeException rethrow(Throwable e, Class declaredType1, Class declaredType2) throws IOException, X1, X2 { + Preconditions.checkNotNull(e); + this.thrown = e; + Throwables.propagateIfPossible(e, IOException.class); + Throwables.propagateIfPossible(e, declaredType1, declaredType2); + throw new RuntimeException(e); + } + + @Override + public void close() throws IOException { + Throwable throwable = this.thrown; + while (!this.stack.isEmpty()) { + Closeable closeable = this.stack.removeFirst(); + try { + closeable.close(); + } + catch (Throwable e) { + if (throwable == null) { + throwable = e; + continue; + } + this.suppressor.suppress(closeable, throwable, e); + } + } + if (this.thrown == null && throwable != null) { + Throwables.propagateIfPossible(throwable, IOException.class); + throw new AssertionError((Object)throwable); + } + } + + @VisibleForTesting + static final class SuppressingSuppressor + implements Suppressor { + static final SuppressingSuppressor INSTANCE = new SuppressingSuppressor(); + static final Method addSuppressed = SuppressingSuppressor.getAddSuppressed(); + + SuppressingSuppressor() { + } + + static boolean isAvailable() { + return addSuppressed != null; + } + + private static Method getAddSuppressed() { + try { + return Throwable.class.getMethod("addSuppressed", Throwable.class); + } + catch (Throwable e) { + return null; + } + } + + @Override + public void suppress(Closeable closeable, Throwable thrown, Throwable suppressed) { + if (thrown == suppressed) { + return; + } + try { + addSuppressed.invoke(thrown, suppressed); + } + catch (Throwable e) { + LoggingSuppressor.INSTANCE.suppress(closeable, thrown, suppressed); + } + } + } + + @VisibleForTesting + static final class LoggingSuppressor + implements Suppressor { + static final LoggingSuppressor INSTANCE = new LoggingSuppressor(); + + LoggingSuppressor() { + } + + @Override + public void suppress(Closeable closeable, Throwable thrown, Throwable suppressed) { + String string = String.valueOf(String.valueOf(closeable)); + Closeables.logger.log(Level.WARNING, new StringBuilder(42 + string.length()).append("Suppressing exception thrown when closing ").append(string).toString(), suppressed); + } + } + + @VisibleForTesting + static interface Suppressor { + public void suppress(Closeable var1, Throwable var2, Throwable var3); + } +} diff --git a/src/com/google/common/io/CountingInputStream.java b/src/com/google/common/io/CountingInputStream.java new file mode 100644 index 0000000..9326c37 --- /dev/null +++ b/src/com/google/common/io/CountingInputStream.java @@ -0,0 +1,68 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.io; + +import com.google.common.annotations.Beta; +import java.io.FilterInputStream; +import java.io.IOException; +import java.io.InputStream; +import javax.annotation.Nullable; + +@Beta +public final class CountingInputStream +extends FilterInputStream { + private long count; + private long mark = -1L; + + public CountingInputStream(@Nullable InputStream in) { + super(in); + } + + public long getCount() { + return this.count; + } + + @Override + public int read() throws IOException { + int result = this.in.read(); + if (result != -1) { + ++this.count; + } + return result; + } + + @Override + public int read(byte[] b, int off, int len) throws IOException { + int result = this.in.read(b, off, len); + if (result != -1) { + this.count += (long)result; + } + return result; + } + + @Override + public long skip(long n) throws IOException { + long result = this.in.skip(n); + this.count += result; + return result; + } + + @Override + public synchronized void mark(int readlimit) { + this.in.mark(readlimit); + this.mark = this.count; + } + + @Override + public synchronized void reset() throws IOException { + if (!this.in.markSupported()) { + throw new IOException("Mark not supported"); + } + if (this.mark == -1L) { + throw new IOException("Mark not set"); + } + this.in.reset(); + this.count = this.mark; + } +} diff --git a/src/com/google/common/io/CountingOutputStream.java b/src/com/google/common/io/CountingOutputStream.java new file mode 100644 index 0000000..4e4d3da --- /dev/null +++ b/src/com/google/common/io/CountingOutputStream.java @@ -0,0 +1,41 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.io; + +import com.google.common.annotations.Beta; +import java.io.FilterOutputStream; +import java.io.IOException; +import java.io.OutputStream; +import javax.annotation.Nullable; + +@Beta +public final class CountingOutputStream +extends FilterOutputStream { + private long count; + + public CountingOutputStream(@Nullable OutputStream out) { + super(out); + } + + public long getCount() { + return this.count; + } + + @Override + public void write(byte[] b, int off, int len) throws IOException { + this.out.write(b, off, len); + this.count += (long)len; + } + + @Override + public void write(int b) throws IOException { + this.out.write(b); + ++this.count; + } + + @Override + public void close() throws IOException { + this.out.close(); + } +} diff --git a/src/com/google/common/io/FileBackedOutputStream.java b/src/com/google/common/io/FileBackedOutputStream.java new file mode 100644 index 0000000..1b51a26 --- /dev/null +++ b/src/com/google/common/io/FileBackedOutputStream.java @@ -0,0 +1,157 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.io; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.VisibleForTesting; +import com.google.common.io.ByteSource; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; + +@Beta +public final class FileBackedOutputStream +extends OutputStream { + private final int fileThreshold; + private final boolean resetOnFinalize; + private final ByteSource source; + private OutputStream out; + private MemoryOutput memory; + private File file; + + @VisibleForTesting + synchronized File getFile() { + return this.file; + } + + public FileBackedOutputStream(int fileThreshold) { + this(fileThreshold, false); + } + + public FileBackedOutputStream(int fileThreshold, boolean resetOnFinalize) { + this.fileThreshold = fileThreshold; + this.resetOnFinalize = resetOnFinalize; + this.memory = new MemoryOutput(); + this.out = this.memory; + this.source = resetOnFinalize ? new ByteSource(){ + + @Override + public InputStream openStream() throws IOException { + return FileBackedOutputStream.this.openInputStream(); + } + + protected void finalize() { + try { + FileBackedOutputStream.this.reset(); + } + catch (Throwable t) { + t.printStackTrace(System.err); + } + } + } : new ByteSource(){ + + @Override + public InputStream openStream() throws IOException { + return FileBackedOutputStream.this.openInputStream(); + } + }; + } + + public ByteSource asByteSource() { + return this.source; + } + + private synchronized InputStream openInputStream() throws IOException { + if (this.file != null) { + return new FileInputStream(this.file); + } + return new ByteArrayInputStream(this.memory.getBuffer(), 0, this.memory.getCount()); + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + public synchronized void reset() throws IOException { + try { + this.close(); + } + finally { + if (this.memory == null) { + this.memory = new MemoryOutput(); + } else { + this.memory.reset(); + } + this.out = this.memory; + if (this.file != null) { + File deleteMe = this.file; + this.file = null; + if (!deleteMe.delete()) { + String string = String.valueOf(String.valueOf(deleteMe)); + throw new IOException(new StringBuilder(18 + string.length()).append("Could not delete: ").append(string).toString()); + } + } + } + } + + @Override + public synchronized void write(int b) throws IOException { + this.update(1); + this.out.write(b); + } + + @Override + public synchronized void write(byte[] b) throws IOException { + this.write(b, 0, b.length); + } + + @Override + public synchronized void write(byte[] b, int off, int len) throws IOException { + this.update(len); + this.out.write(b, off, len); + } + + @Override + public synchronized void close() throws IOException { + this.out.close(); + } + + @Override + public synchronized void flush() throws IOException { + this.out.flush(); + } + + private void update(int len) throws IOException { + if (this.file == null && this.memory.getCount() + len > this.fileThreshold) { + File temp = File.createTempFile("FileBackedOutputStream", null); + if (this.resetOnFinalize) { + temp.deleteOnExit(); + } + FileOutputStream transfer = new FileOutputStream(temp); + transfer.write(this.memory.getBuffer(), 0, this.memory.getCount()); + transfer.flush(); + this.out = transfer; + this.file = temp; + this.memory = null; + } + } + + private static class MemoryOutput + extends ByteArrayOutputStream { + private MemoryOutput() { + } + + byte[] getBuffer() { + return this.buf; + } + + int getCount() { + return this.count; + } + } +} diff --git a/src/com/google/common/io/FileWriteMode.java b/src/com/google/common/io/FileWriteMode.java new file mode 100644 index 0000000..92f39e2 --- /dev/null +++ b/src/com/google/common/io/FileWriteMode.java @@ -0,0 +1,9 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.io; + +public enum FileWriteMode { + APPEND; + +} diff --git a/src/com/google/common/io/Files.java b/src/com/google/common/io/Files.java new file mode 100644 index 0000000..39d6748 --- /dev/null +++ b/src/com/google/common/io/Files.java @@ -0,0 +1,457 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.io; + +import com.google.common.annotations.Beta; +import com.google.common.base.Joiner; +import com.google.common.base.Preconditions; +import com.google.common.base.Predicate; +import com.google.common.base.Splitter; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Lists; +import com.google.common.collect.TreeTraverser; +import com.google.common.hash.HashCode; +import com.google.common.hash.HashFunction; +import com.google.common.io.ByteProcessor; +import com.google.common.io.ByteSink; +import com.google.common.io.ByteSource; +import com.google.common.io.ByteStreams; +import com.google.common.io.CharSink; +import com.google.common.io.CharSource; +import com.google.common.io.Closer; +import com.google.common.io.FileWriteMode; +import com.google.common.io.LineProcessor; +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.io.OutputStreamWriter; +import java.io.RandomAccessFile; +import java.nio.MappedByteBuffer; +import java.nio.channels.FileChannel; +import java.nio.charset.Charset; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +@Beta +public final class Files { + private static final int TEMP_DIR_ATTEMPTS = 10000; + private static final TreeTraverser FILE_TREE_TRAVERSER = new TreeTraverser(){ + + @Override + public Iterable children(File file) { + File[] files; + if (file.isDirectory() && (files = file.listFiles()) != null) { + return Collections.unmodifiableList(Arrays.asList(files)); + } + return Collections.emptyList(); + } + + public String toString() { + return "Files.fileTreeTraverser()"; + } + }; + + private Files() { + } + + public static BufferedReader newReader(File file, Charset charset) throws FileNotFoundException { + Preconditions.checkNotNull(file); + Preconditions.checkNotNull(charset); + return new BufferedReader(new InputStreamReader((InputStream)new FileInputStream(file), charset)); + } + + public static BufferedWriter newWriter(File file, Charset charset) throws FileNotFoundException { + Preconditions.checkNotNull(file); + Preconditions.checkNotNull(charset); + return new BufferedWriter(new OutputStreamWriter((OutputStream)new FileOutputStream(file), charset)); + } + + public static ByteSource asByteSource(File file) { + return new FileByteSource(file); + } + + static byte[] readFile(InputStream in, long expectedSize) throws IOException { + if (expectedSize > Integer.MAX_VALUE) { + long l = expectedSize; + throw new OutOfMemoryError(new StringBuilder(68).append("file is too large to fit in a byte array: ").append(l).append(" bytes").toString()); + } + return expectedSize == 0L ? ByteStreams.toByteArray(in) : ByteStreams.toByteArray(in, (int)expectedSize); + } + + public static ByteSink asByteSink(File file, FileWriteMode ... modes) { + return new FileByteSink(file, modes); + } + + public static CharSource asCharSource(File file, Charset charset) { + return Files.asByteSource(file).asCharSource(charset); + } + + public static CharSink asCharSink(File file, Charset charset, FileWriteMode ... modes) { + return Files.asByteSink(file, modes).asCharSink(charset); + } + + private static FileWriteMode[] modes(boolean append) { + FileWriteMode[] fileWriteModeArray; + if (append) { + FileWriteMode[] fileWriteModeArray2 = new FileWriteMode[1]; + fileWriteModeArray = fileWriteModeArray2; + fileWriteModeArray2[0] = FileWriteMode.APPEND; + } else { + fileWriteModeArray = new FileWriteMode[]{}; + } + return fileWriteModeArray; + } + + public static byte[] toByteArray(File file) throws IOException { + return Files.asByteSource(file).read(); + } + + public static String toString(File file, Charset charset) throws IOException { + return Files.asCharSource(file, charset).read(); + } + + public static void write(byte[] from, File to) throws IOException { + Files.asByteSink(to, new FileWriteMode[0]).write(from); + } + + public static void copy(File from, OutputStream to) throws IOException { + Files.asByteSource(from).copyTo(to); + } + + public static void copy(File from, File to) throws IOException { + Preconditions.checkArgument(!from.equals(to), "Source %s and destination %s must be different", from, to); + Files.asByteSource(from).copyTo(Files.asByteSink(to, new FileWriteMode[0])); + } + + public static void write(CharSequence from, File to, Charset charset) throws IOException { + Files.asCharSink(to, charset, new FileWriteMode[0]).write(from); + } + + public static void append(CharSequence from, File to, Charset charset) throws IOException { + Files.write(from, to, charset, true); + } + + private static void write(CharSequence from, File to, Charset charset, boolean append) throws IOException { + Files.asCharSink(to, charset, Files.modes(append)).write(from); + } + + public static void copy(File from, Charset charset, Appendable to) throws IOException { + Files.asCharSource(from, charset).copyTo(to); + } + + public static boolean equal(File file1, File file2) throws IOException { + Preconditions.checkNotNull(file1); + Preconditions.checkNotNull(file2); + if (file1 == file2 || file1.equals(file2)) { + return true; + } + long len1 = file1.length(); + long len2 = file2.length(); + if (len1 != 0L && len2 != 0L && len1 != len2) { + return false; + } + return Files.asByteSource(file1).contentEquals(Files.asByteSource(file2)); + } + + public static File createTempDir() { + int n; + String string; + File baseDir = new File(System.getProperty("java.io.tmpdir")); + long l = System.currentTimeMillis(); + String baseName = new StringBuilder(21).append(l).append("-").toString(); + int counter = 0; + while (counter < 10000) { + string = String.valueOf(String.valueOf(baseName)); + n = counter++; + File tempDir = new File(baseDir, new StringBuilder(11 + string.length()).append(string).append(n).toString()); + if (!tempDir.mkdir()) continue; + return tempDir; + } + String string2 = String.valueOf(String.valueOf("Failed to create directory within 10000 attempts (tried ")); + String string3 = String.valueOf(String.valueOf(baseName)); + string = String.valueOf(String.valueOf(baseName)); + n = 9999; + throw new IllegalStateException(new StringBuilder(17 + string2.length() + string3.length() + string.length()).append(string2).append(string3).append("0 to ").append(string).append(n).append(")").toString()); + } + + public static void touch(File file) throws IOException { + Preconditions.checkNotNull(file); + if (!file.createNewFile() && !file.setLastModified(System.currentTimeMillis())) { + String string = String.valueOf(String.valueOf(file)); + throw new IOException(new StringBuilder(38 + string.length()).append("Unable to update modification time of ").append(string).toString()); + } + } + + public static void createParentDirs(File file) throws IOException { + Preconditions.checkNotNull(file); + File parent = file.getCanonicalFile().getParentFile(); + if (parent == null) { + return; + } + parent.mkdirs(); + if (!parent.isDirectory()) { + String string = String.valueOf(String.valueOf(file)); + throw new IOException(new StringBuilder(39 + string.length()).append("Unable to create parent directories of ").append(string).toString()); + } + } + + public static void move(File from, File to) throws IOException { + Preconditions.checkNotNull(from); + Preconditions.checkNotNull(to); + Preconditions.checkArgument(!from.equals(to), "Source %s and destination %s must be different", from, to); + if (!from.renameTo(to)) { + Files.copy(from, to); + if (!from.delete()) { + if (!to.delete()) { + String string = String.valueOf(String.valueOf(to)); + throw new IOException(new StringBuilder(17 + string.length()).append("Unable to delete ").append(string).toString()); + } + String string = String.valueOf(String.valueOf(from)); + throw new IOException(new StringBuilder(17 + string.length()).append("Unable to delete ").append(string).toString()); + } + } + } + + public static String readFirstLine(File file, Charset charset) throws IOException { + return Files.asCharSource(file, charset).readFirstLine(); + } + + public static List readLines(File file, Charset charset) throws IOException { + return Files.readLines(file, charset, new LineProcessor>(){ + final List result = Lists.newArrayList(); + + @Override + public boolean processLine(String line) { + this.result.add(line); + return true; + } + + @Override + public List getResult() { + return this.result; + } + }); + } + + public static T readLines(File file, Charset charset, LineProcessor callback) throws IOException { + return Files.asCharSource(file, charset).readLines(callback); + } + + public static T readBytes(File file, ByteProcessor processor) throws IOException { + return Files.asByteSource(file).read(processor); + } + + public static HashCode hash(File file, HashFunction hashFunction) throws IOException { + return Files.asByteSource(file).hash(hashFunction); + } + + public static MappedByteBuffer map(File file) throws IOException { + Preconditions.checkNotNull(file); + return Files.map(file, FileChannel.MapMode.READ_ONLY); + } + + public static MappedByteBuffer map(File file, FileChannel.MapMode mode) throws IOException { + Preconditions.checkNotNull(file); + Preconditions.checkNotNull(mode); + if (!file.exists()) { + throw new FileNotFoundException(file.toString()); + } + return Files.map(file, mode, file.length()); + } + + public static MappedByteBuffer map(File file, FileChannel.MapMode mode, long size) throws FileNotFoundException, IOException { + Preconditions.checkNotNull(file); + Preconditions.checkNotNull(mode); + Closer closer = Closer.create(); + try { + RandomAccessFile raf = closer.register(new RandomAccessFile(file, mode == FileChannel.MapMode.READ_ONLY ? "r" : "rw")); + MappedByteBuffer mappedByteBuffer = Files.map(raf, mode, size); + return mappedByteBuffer; + } + catch (Throwable e) { + throw closer.rethrow(e); + } + finally { + closer.close(); + } + } + + private static MappedByteBuffer map(RandomAccessFile raf, FileChannel.MapMode mode, long size) throws IOException { + Closer closer = Closer.create(); + try { + FileChannel channel = closer.register(raf.getChannel()); + MappedByteBuffer mappedByteBuffer = channel.map(mode, 0L, size); + return mappedByteBuffer; + } + catch (Throwable e) { + throw closer.rethrow(e); + } + finally { + closer.close(); + } + } + + public static String simplifyPath(String pathname) { + Preconditions.checkNotNull(pathname); + if (pathname.length() == 0) { + return "."; + } + Iterable components = Splitter.on('/').omitEmptyStrings().split(pathname); + ArrayList path = new ArrayList(); + for (String component : components) { + if (component.equals(".")) continue; + if (component.equals("..")) { + if (path.size() > 0 && !((String)path.get(path.size() - 1)).equals("..")) { + path.remove(path.size() - 1); + continue; + } + path.add(".."); + continue; + } + path.add(component); + } + String result = Joiner.on('/').join(path); + if (pathname.charAt(0) == '/') { + String string = String.valueOf(result); + String string2 = result = string.length() != 0 ? "/".concat(string) : new String("/"); + } + while (result.startsWith("/../")) { + result = result.substring(3); + } + if (result.equals("/..")) { + result = "/"; + } else if ("".equals(result)) { + result = "."; + } + return result; + } + + public static String getFileExtension(String fullName) { + Preconditions.checkNotNull(fullName); + String fileName = new File(fullName).getName(); + int dotIndex = fileName.lastIndexOf(46); + return dotIndex == -1 ? "" : fileName.substring(dotIndex + 1); + } + + public static String getNameWithoutExtension(String file) { + Preconditions.checkNotNull(file); + String fileName = new File(file).getName(); + int dotIndex = fileName.lastIndexOf(46); + return dotIndex == -1 ? fileName : fileName.substring(0, dotIndex); + } + + public static TreeTraverser fileTreeTraverser() { + return FILE_TREE_TRAVERSER; + } + + public static Predicate isDirectory() { + return FilePredicate.IS_DIRECTORY; + } + + public static Predicate isFile() { + return FilePredicate.IS_FILE; + } + + private static enum FilePredicate implements Predicate + { + IS_DIRECTORY{ + + @Override + public boolean apply(File file) { + return file.isDirectory(); + } + + public String toString() { + return "Files.isDirectory()"; + } + } + , + IS_FILE{ + + @Override + public boolean apply(File file) { + return file.isFile(); + } + + public String toString() { + return "Files.isFile()"; + } + }; + + } + + private static final class FileByteSink + extends ByteSink { + private final File file; + private final ImmutableSet modes; + + private FileByteSink(File file, FileWriteMode ... modes) { + this.file = Preconditions.checkNotNull(file); + this.modes = ImmutableSet.copyOf(modes); + } + + @Override + public FileOutputStream openStream() throws IOException { + return new FileOutputStream(this.file, this.modes.contains((Object)FileWriteMode.APPEND)); + } + + public String toString() { + String string = String.valueOf(String.valueOf(this.file)); + String string2 = String.valueOf(String.valueOf(this.modes)); + return new StringBuilder(20 + string.length() + string2.length()).append("Files.asByteSink(").append(string).append(", ").append(string2).append(")").toString(); + } + } + + private static final class FileByteSource + extends ByteSource { + private final File file; + + private FileByteSource(File file) { + this.file = Preconditions.checkNotNull(file); + } + + @Override + public FileInputStream openStream() throws IOException { + return new FileInputStream(this.file); + } + + @Override + public long size() throws IOException { + if (!this.file.isFile()) { + throw new FileNotFoundException(this.file.toString()); + } + return this.file.length(); + } + + @Override + public byte[] read() throws IOException { + Closer closer = Closer.create(); + try { + FileInputStream in = closer.register(this.openStream()); + byte[] byArray = Files.readFile(in, in.getChannel().size()); + return byArray; + } + catch (Throwable e) { + throw closer.rethrow(e); + } + finally { + closer.close(); + } + } + + public String toString() { + String string = String.valueOf(String.valueOf(this.file)); + return new StringBuilder(20 + string.length()).append("Files.asByteSource(").append(string).append(")").toString(); + } + } +} diff --git a/src/com/google/common/io/Flushables.java b/src/com/google/common/io/Flushables.java new file mode 100644 index 0000000..fc322cb --- /dev/null +++ b/src/com/google/common/io/Flushables.java @@ -0,0 +1,39 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.io; + +import com.google.common.annotations.Beta; +import java.io.Flushable; +import java.io.IOException; +import java.util.logging.Level; +import java.util.logging.Logger; + +@Beta +public final class Flushables { + private static final Logger logger = Logger.getLogger(Flushables.class.getName()); + + private Flushables() { + } + + public static void flush(Flushable flushable, boolean swallowIOException) throws IOException { + try { + flushable.flush(); + } + catch (IOException e) { + if (swallowIOException) { + logger.log(Level.WARNING, "IOException thrown while flushing Flushable.", e); + } + throw e; + } + } + + public static void flushQuietly(Flushable flushable) { + try { + Flushables.flush(flushable, true); + } + catch (IOException e) { + logger.log(Level.SEVERE, "IOException should not have been thrown.", e); + } + } +} diff --git a/src/com/google/common/io/GwtWorkarounds.java b/src/com/google/common/io/GwtWorkarounds.java new file mode 100644 index 0000000..39580f5 --- /dev/null +++ b/src/com/google/common/io/GwtWorkarounds.java @@ -0,0 +1,190 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.io; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.base.Preconditions; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.io.Reader; +import java.io.Writer; + +@GwtCompatible(emulated=true) +final class GwtWorkarounds { + private GwtWorkarounds() { + } + + @GwtIncompatible(value="Reader") + static CharInput asCharInput(final Reader reader) { + Preconditions.checkNotNull(reader); + return new CharInput(){ + + @Override + public int read() throws IOException { + return reader.read(); + } + + @Override + public void close() throws IOException { + reader.close(); + } + }; + } + + static CharInput asCharInput(final CharSequence chars) { + Preconditions.checkNotNull(chars); + return new CharInput(){ + int index = 0; + + @Override + public int read() { + if (this.index < chars.length()) { + return chars.charAt(this.index++); + } + return -1; + } + + @Override + public void close() { + this.index = chars.length(); + } + }; + } + + @GwtIncompatible(value="InputStream") + static InputStream asInputStream(final ByteInput input) { + Preconditions.checkNotNull(input); + return new InputStream(){ + + @Override + public int read() throws IOException { + return input.read(); + } + + @Override + public int read(byte[] b, int off, int len) throws IOException { + Preconditions.checkNotNull(b); + Preconditions.checkPositionIndexes(off, off + len, b.length); + if (len == 0) { + return 0; + } + int firstByte = this.read(); + if (firstByte == -1) { + return -1; + } + b[off] = (byte)firstByte; + for (int dst = 1; dst < len; ++dst) { + int readByte = this.read(); + if (readByte == -1) { + return dst; + } + b[off + dst] = (byte)readByte; + } + return len; + } + + @Override + public void close() throws IOException { + input.close(); + } + }; + } + + @GwtIncompatible(value="OutputStream") + static OutputStream asOutputStream(final ByteOutput output) { + Preconditions.checkNotNull(output); + return new OutputStream(){ + + @Override + public void write(int b) throws IOException { + output.write((byte)b); + } + + @Override + public void flush() throws IOException { + output.flush(); + } + + @Override + public void close() throws IOException { + output.close(); + } + }; + } + + @GwtIncompatible(value="Writer") + static CharOutput asCharOutput(final Writer writer) { + Preconditions.checkNotNull(writer); + return new CharOutput(){ + + @Override + public void write(char c) throws IOException { + writer.append(c); + } + + @Override + public void flush() throws IOException { + writer.flush(); + } + + @Override + public void close() throws IOException { + writer.close(); + } + }; + } + + static CharOutput stringBuilderOutput(int initialSize) { + final StringBuilder builder = new StringBuilder(initialSize); + return new CharOutput(){ + + @Override + public void write(char c) { + builder.append(c); + } + + @Override + public void flush() { + } + + @Override + public void close() { + } + + public String toString() { + return builder.toString(); + } + }; + } + + static interface CharOutput { + public void write(char var1) throws IOException; + + public void flush() throws IOException; + + public void close() throws IOException; + } + + static interface ByteOutput { + public void write(byte var1) throws IOException; + + public void flush() throws IOException; + + public void close() throws IOException; + } + + static interface ByteInput { + public int read() throws IOException; + + public void close() throws IOException; + } + + static interface CharInput { + public int read() throws IOException; + + public void close() throws IOException; + } +} diff --git a/src/com/google/common/io/InputSupplier.java b/src/com/google/common/io/InputSupplier.java new file mode 100644 index 0000000..d359b68 --- /dev/null +++ b/src/com/google/common/io/InputSupplier.java @@ -0,0 +1,11 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.io; + +import java.io.IOException; + +@Deprecated +public interface InputSupplier { + public T getInput() throws IOException; +} diff --git a/src/com/google/common/io/LineBuffer.java b/src/com/google/common/io/LineBuffer.java new file mode 100644 index 0000000..b205bca --- /dev/null +++ b/src/com/google/common/io/LineBuffer.java @@ -0,0 +1,59 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.io; + +import java.io.IOException; + +abstract class LineBuffer { + private StringBuilder line = new StringBuilder(); + private boolean sawReturn; + + LineBuffer() { + } + + protected void add(char[] cbuf, int off, int len) throws IOException { + int pos = off; + if (this.sawReturn && len > 0 && this.finishLine(cbuf[pos] == '\n')) { + ++pos; + } + int start = pos; + int end = off + len; + while (pos < end) { + switch (cbuf[pos]) { + case '\r': { + this.line.append(cbuf, start, pos - start); + this.sawReturn = true; + if (pos + 1 < end && this.finishLine(cbuf[pos + 1] == '\n')) { + ++pos; + } + start = pos + 1; + break; + } + case '\n': { + this.line.append(cbuf, start, pos - start); + this.finishLine(true); + start = pos + 1; + break; + } + } + ++pos; + } + this.line.append(cbuf, start, off + len - start); + } + + private boolean finishLine(boolean sawNewline) throws IOException { + this.handleLine(this.line.toString(), this.sawReturn ? (sawNewline ? "\r\n" : "\r") : (sawNewline ? "\n" : "")); + this.line = new StringBuilder(); + this.sawReturn = false; + return sawNewline; + } + + protected void finish() throws IOException { + if (this.sawReturn || this.line.length() > 0) { + this.finishLine(false); + } + } + + protected abstract void handleLine(String var1, String var2) throws IOException; +} diff --git a/src/com/google/common/io/LineProcessor.java b/src/com/google/common/io/LineProcessor.java new file mode 100644 index 0000000..add9ba7 --- /dev/null +++ b/src/com/google/common/io/LineProcessor.java @@ -0,0 +1,14 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.io; + +import com.google.common.annotations.Beta; +import java.io.IOException; + +@Beta +public interface LineProcessor { + public boolean processLine(String var1) throws IOException; + + public T getResult(); +} diff --git a/src/com/google/common/io/LineReader.java b/src/com/google/common/io/LineReader.java new file mode 100644 index 0000000..91a09d0 --- /dev/null +++ b/src/com/google/common/io/LineReader.java @@ -0,0 +1,48 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.io; + +import com.google.common.annotations.Beta; +import com.google.common.base.Preconditions; +import com.google.common.io.LineBuffer; +import java.io.IOException; +import java.io.Reader; +import java.nio.CharBuffer; +import java.util.LinkedList; +import java.util.Queue; + +@Beta +public final class LineReader { + private final Readable readable; + private final Reader reader; + private final char[] buf = new char[4096]; + private final CharBuffer cbuf = CharBuffer.wrap(this.buf); + private final Queue lines = new LinkedList(); + private final LineBuffer lineBuf = new LineBuffer(){ + + @Override + protected void handleLine(String line, String end) { + LineReader.this.lines.add(line); + } + }; + + public LineReader(Readable readable) { + this.readable = Preconditions.checkNotNull(readable); + this.reader = readable instanceof Reader ? (Reader)readable : null; + } + + public String readLine() throws IOException { + while (this.lines.peek() == null) { + int read; + this.cbuf.clear(); + int n = read = this.reader != null ? this.reader.read(this.buf, 0, this.buf.length) : this.readable.read(this.cbuf); + if (read == -1) { + this.lineBuf.finish(); + break; + } + this.lineBuf.add(this.buf, 0, read); + } + return this.lines.poll(); + } +} diff --git a/src/com/google/common/io/LittleEndianDataInputStream.java b/src/com/google/common/io/LittleEndianDataInputStream.java new file mode 100644 index 0000000..75dca09 --- /dev/null +++ b/src/com/google/common/io/LittleEndianDataInputStream.java @@ -0,0 +1,126 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.io; + +import com.google.common.annotations.Beta; +import com.google.common.base.Preconditions; +import com.google.common.io.ByteStreams; +import com.google.common.primitives.Ints; +import com.google.common.primitives.Longs; +import java.io.DataInput; +import java.io.DataInputStream; +import java.io.EOFException; +import java.io.FilterInputStream; +import java.io.IOException; +import java.io.InputStream; + +@Beta +public final class LittleEndianDataInputStream +extends FilterInputStream +implements DataInput { + public LittleEndianDataInputStream(InputStream in) { + super(Preconditions.checkNotNull(in)); + } + + @Override + public String readLine() { + throw new UnsupportedOperationException("readLine is not supported"); + } + + @Override + public void readFully(byte[] b) throws IOException { + ByteStreams.readFully(this, b); + } + + @Override + public void readFully(byte[] b, int off, int len) throws IOException { + ByteStreams.readFully(this, b, off, len); + } + + @Override + public int skipBytes(int n) throws IOException { + return (int)this.in.skip(n); + } + + @Override + public int readUnsignedByte() throws IOException { + int b1 = this.in.read(); + if (0 > b1) { + throw new EOFException(); + } + return b1; + } + + @Override + public int readUnsignedShort() throws IOException { + byte b1 = this.readAndCheckByte(); + byte b2 = this.readAndCheckByte(); + return Ints.fromBytes((byte)0, (byte)0, b2, b1); + } + + @Override + public int readInt() throws IOException { + byte b1 = this.readAndCheckByte(); + byte b2 = this.readAndCheckByte(); + byte b3 = this.readAndCheckByte(); + byte b4 = this.readAndCheckByte(); + return Ints.fromBytes(b4, b3, b2, b1); + } + + @Override + public long readLong() throws IOException { + byte b1 = this.readAndCheckByte(); + byte b2 = this.readAndCheckByte(); + byte b3 = this.readAndCheckByte(); + byte b4 = this.readAndCheckByte(); + byte b5 = this.readAndCheckByte(); + byte b6 = this.readAndCheckByte(); + byte b7 = this.readAndCheckByte(); + byte b8 = this.readAndCheckByte(); + return Longs.fromBytes(b8, b7, b6, b5, b4, b3, b2, b1); + } + + @Override + public float readFloat() throws IOException { + return Float.intBitsToFloat(this.readInt()); + } + + @Override + public double readDouble() throws IOException { + return Double.longBitsToDouble(this.readLong()); + } + + @Override + public String readUTF() throws IOException { + return new DataInputStream(this.in).readUTF(); + } + + @Override + public short readShort() throws IOException { + return (short)this.readUnsignedShort(); + } + + @Override + public char readChar() throws IOException { + return (char)this.readUnsignedShort(); + } + + @Override + public byte readByte() throws IOException { + return (byte)this.readUnsignedByte(); + } + + @Override + public boolean readBoolean() throws IOException { + return this.readUnsignedByte() != 0; + } + + private byte readAndCheckByte() throws IOException, EOFException { + int b1 = this.in.read(); + if (-1 == b1) { + throw new EOFException(); + } + return (byte)b1; + } +} diff --git a/src/com/google/common/io/LittleEndianDataOutputStream.java b/src/com/google/common/io/LittleEndianDataOutputStream.java new file mode 100644 index 0000000..3ab8785 --- /dev/null +++ b/src/com/google/common/io/LittleEndianDataOutputStream.java @@ -0,0 +1,95 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.io; + +import com.google.common.annotations.Beta; +import com.google.common.base.Preconditions; +import com.google.common.primitives.Longs; +import java.io.DataOutput; +import java.io.DataOutputStream; +import java.io.FilterOutputStream; +import java.io.IOException; +import java.io.OutputStream; + +@Beta +public class LittleEndianDataOutputStream +extends FilterOutputStream +implements DataOutput { + public LittleEndianDataOutputStream(OutputStream out) { + super(new DataOutputStream(Preconditions.checkNotNull(out))); + } + + @Override + public void write(byte[] b, int off, int len) throws IOException { + this.out.write(b, off, len); + } + + @Override + public void writeBoolean(boolean v) throws IOException { + ((DataOutputStream)this.out).writeBoolean(v); + } + + @Override + public void writeByte(int v) throws IOException { + ((DataOutputStream)this.out).writeByte(v); + } + + @Override + @Deprecated + public void writeBytes(String s) throws IOException { + ((DataOutputStream)this.out).writeBytes(s); + } + + @Override + public void writeChar(int v) throws IOException { + this.writeShort(v); + } + + @Override + public void writeChars(String s) throws IOException { + for (int i = 0; i < s.length(); ++i) { + this.writeChar(s.charAt(i)); + } + } + + @Override + public void writeDouble(double v) throws IOException { + this.writeLong(Double.doubleToLongBits(v)); + } + + @Override + public void writeFloat(float v) throws IOException { + this.writeInt(Float.floatToIntBits(v)); + } + + @Override + public void writeInt(int v) throws IOException { + this.out.write(0xFF & v); + this.out.write(0xFF & v >> 8); + this.out.write(0xFF & v >> 16); + this.out.write(0xFF & v >> 24); + } + + @Override + public void writeLong(long v) throws IOException { + byte[] bytes = Longs.toByteArray(Long.reverseBytes(v)); + this.write(bytes, 0, bytes.length); + } + + @Override + public void writeShort(int v) throws IOException { + this.out.write(0xFF & v); + this.out.write(0xFF & v >> 8); + } + + @Override + public void writeUTF(String str) throws IOException { + ((DataOutputStream)this.out).writeUTF(str); + } + + @Override + public void close() throws IOException { + this.out.close(); + } +} diff --git a/src/com/google/common/io/MultiInputStream.java b/src/com/google/common/io/MultiInputStream.java new file mode 100644 index 0000000..eab1ca1 --- /dev/null +++ b/src/com/google/common/io/MultiInputStream.java @@ -0,0 +1,98 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.io; + +import com.google.common.base.Preconditions; +import com.google.common.io.ByteSource; +import java.io.IOException; +import java.io.InputStream; +import java.util.Iterator; +import javax.annotation.Nullable; + +final class MultiInputStream +extends InputStream { + private Iterator it; + private InputStream in; + + public MultiInputStream(Iterator it) throws IOException { + this.it = Preconditions.checkNotNull(it); + this.advance(); + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public void close() throws IOException { + if (this.in != null) { + try { + this.in.close(); + } + finally { + this.in = null; + } + } + } + + private void advance() throws IOException { + this.close(); + if (this.it.hasNext()) { + this.in = this.it.next().openStream(); + } + } + + @Override + public int available() throws IOException { + if (this.in == null) { + return 0; + } + return this.in.available(); + } + + @Override + public boolean markSupported() { + return false; + } + + @Override + public int read() throws IOException { + if (this.in == null) { + return -1; + } + int result = this.in.read(); + if (result == -1) { + this.advance(); + return this.read(); + } + return result; + } + + @Override + public int read(@Nullable byte[] b, int off, int len) throws IOException { + if (this.in == null) { + return -1; + } + int result = this.in.read(b, off, len); + if (result == -1) { + this.advance(); + return this.read(b, off, len); + } + return result; + } + + @Override + public long skip(long n) throws IOException { + if (this.in == null || n <= 0L) { + return 0L; + } + long result = this.in.skip(n); + if (result != 0L) { + return result; + } + if (this.read() == -1) { + return 0L; + } + return 1L + this.in.skip(n - 1L); + } +} diff --git a/src/com/google/common/io/MultiReader.java b/src/com/google/common/io/MultiReader.java new file mode 100644 index 0000000..acabf57 --- /dev/null +++ b/src/com/google/common/io/MultiReader.java @@ -0,0 +1,77 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.io; + +import com.google.common.base.Preconditions; +import com.google.common.io.CharSource; +import java.io.IOException; +import java.io.Reader; +import java.util.Iterator; +import javax.annotation.Nullable; + +class MultiReader +extends Reader { + private final Iterator it; + private Reader current; + + MultiReader(Iterator readers) throws IOException { + this.it = readers; + this.advance(); + } + + private void advance() throws IOException { + this.close(); + if (this.it.hasNext()) { + this.current = this.it.next().openStream(); + } + } + + @Override + public int read(@Nullable char[] cbuf, int off, int len) throws IOException { + if (this.current == null) { + return -1; + } + int result = this.current.read(cbuf, off, len); + if (result == -1) { + this.advance(); + return this.read(cbuf, off, len); + } + return result; + } + + @Override + public long skip(long n) throws IOException { + Preconditions.checkArgument(n >= 0L, "n is negative"); + if (n > 0L) { + while (this.current != null) { + long result = this.current.skip(n); + if (result > 0L) { + return result; + } + this.advance(); + } + } + return 0L; + } + + @Override + public boolean ready() throws IOException { + return this.current != null && this.current.ready(); + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public void close() throws IOException { + if (this.current != null) { + try { + this.current.close(); + } + finally { + this.current = null; + } + } + } +} diff --git a/src/com/google/common/io/OutputSupplier.java b/src/com/google/common/io/OutputSupplier.java new file mode 100644 index 0000000..ab11ba1 --- /dev/null +++ b/src/com/google/common/io/OutputSupplier.java @@ -0,0 +1,11 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.io; + +import java.io.IOException; + +@Deprecated +public interface OutputSupplier { + public T getOutput() throws IOException; +} diff --git a/src/com/google/common/io/PatternFilenameFilter.java b/src/com/google/common/io/PatternFilenameFilter.java new file mode 100644 index 0000000..4e0483c --- /dev/null +++ b/src/com/google/common/io/PatternFilenameFilter.java @@ -0,0 +1,30 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.io; + +import com.google.common.annotations.Beta; +import com.google.common.base.Preconditions; +import java.io.File; +import java.io.FilenameFilter; +import java.util.regex.Pattern; +import javax.annotation.Nullable; + +@Beta +public final class PatternFilenameFilter +implements FilenameFilter { + private final Pattern pattern; + + public PatternFilenameFilter(String patternStr) { + this(Pattern.compile(patternStr)); + } + + public PatternFilenameFilter(Pattern pattern) { + this.pattern = Preconditions.checkNotNull(pattern); + } + + @Override + public boolean accept(@Nullable File dir, String fileName) { + return this.pattern.matcher(fileName).matches(); + } +} diff --git a/src/com/google/common/io/Resources.java b/src/com/google/common/io/Resources.java new file mode 100644 index 0000000..2c72bee --- /dev/null +++ b/src/com/google/common/io/Resources.java @@ -0,0 +1,97 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.io; + +import com.google.common.annotations.Beta; +import com.google.common.base.MoreObjects; +import com.google.common.base.Preconditions; +import com.google.common.collect.Lists; +import com.google.common.io.ByteSource; +import com.google.common.io.CharSource; +import com.google.common.io.LineProcessor; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.URL; +import java.nio.charset.Charset; +import java.util.List; + +@Beta +public final class Resources { + private Resources() { + } + + public static ByteSource asByteSource(URL url) { + return new UrlByteSource(url); + } + + public static CharSource asCharSource(URL url, Charset charset) { + return Resources.asByteSource(url).asCharSource(charset); + } + + public static byte[] toByteArray(URL url) throws IOException { + return Resources.asByteSource(url).read(); + } + + public static String toString(URL url, Charset charset) throws IOException { + return Resources.asCharSource(url, charset).read(); + } + + public static T readLines(URL url, Charset charset, LineProcessor callback) throws IOException { + return Resources.asCharSource(url, charset).readLines(callback); + } + + public static List readLines(URL url, Charset charset) throws IOException { + return Resources.readLines(url, charset, new LineProcessor>(){ + final List result = Lists.newArrayList(); + + @Override + public boolean processLine(String line) { + this.result.add(line); + return true; + } + + @Override + public List getResult() { + return this.result; + } + }); + } + + public static void copy(URL from, OutputStream to) throws IOException { + Resources.asByteSource(from).copyTo(to); + } + + public static URL getResource(String resourceName) { + ClassLoader loader = MoreObjects.firstNonNull(Thread.currentThread().getContextClassLoader(), Resources.class.getClassLoader()); + URL url = loader.getResource(resourceName); + Preconditions.checkArgument(url != null, "resource %s not found.", resourceName); + return url; + } + + public static URL getResource(Class contextClass, String resourceName) { + URL url = contextClass.getResource(resourceName); + Preconditions.checkArgument(url != null, "resource %s relative to %s not found.", resourceName, contextClass.getName()); + return url; + } + + private static final class UrlByteSource + extends ByteSource { + private final URL url; + + private UrlByteSource(URL url) { + this.url = Preconditions.checkNotNull(url); + } + + @Override + public InputStream openStream() throws IOException { + return this.url.openStream(); + } + + public String toString() { + String string = String.valueOf(String.valueOf(this.url)); + return new StringBuilder(24 + string.length()).append("Resources.asByteSource(").append(string).append(")").toString(); + } + } +} diff --git a/src/com/google/common/io/package-info.java b/src/com/google/common/io/package-info.java new file mode 100644 index 0000000..99aa0be --- /dev/null +++ b/src/com/google/common/io/package-info.java @@ -0,0 +1,8 @@ +/* + * Decompiled with CFR 0.152. + */ +@ParametersAreNonnullByDefault +package com.google.common.io; + +import javax.annotation.ParametersAreNonnullByDefault; + diff --git a/src/com/google/common/math/BigIntegerMath.java b/src/com/google/common/math/BigIntegerMath.java new file mode 100644 index 0000000..896c9e5 --- /dev/null +++ b/src/com/google/common/math/BigIntegerMath.java @@ -0,0 +1,277 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.math; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.Preconditions; +import com.google.common.math.DoubleMath; +import com.google.common.math.DoubleUtils; +import com.google.common.math.IntMath; +import com.google.common.math.LongMath; +import com.google.common.math.MathPreconditions; +import java.math.BigDecimal; +import java.math.BigInteger; +import java.math.RoundingMode; +import java.util.ArrayList; +import java.util.List; + +@GwtCompatible(emulated=true) +public final class BigIntegerMath { + @VisibleForTesting + static final int SQRT2_PRECOMPUTE_THRESHOLD = 256; + @VisibleForTesting + static final BigInteger SQRT2_PRECOMPUTED_BITS = new BigInteger("16a09e667f3bcc908b2fb1366ea957d3e3adec17512775099da2f590b0667322a", 16); + private static final double LN_10 = Math.log(10.0); + private static final double LN_2 = Math.log(2.0); + + public static boolean isPowerOfTwo(BigInteger x) { + Preconditions.checkNotNull(x); + return x.signum() > 0 && x.getLowestSetBit() == x.bitLength() - 1; + } + + public static int log2(BigInteger x, RoundingMode mode) { + MathPreconditions.checkPositive("x", Preconditions.checkNotNull(x)); + int logFloor = x.bitLength() - 1; + switch (mode) { + case UNNECESSARY: { + MathPreconditions.checkRoundingUnnecessary(BigIntegerMath.isPowerOfTwo(x)); + } + case DOWN: + case FLOOR: { + return logFloor; + } + case UP: + case CEILING: { + return BigIntegerMath.isPowerOfTwo(x) ? logFloor : logFloor + 1; + } + case HALF_DOWN: + case HALF_UP: + case HALF_EVEN: { + if (logFloor < 256) { + BigInteger halfPower = SQRT2_PRECOMPUTED_BITS.shiftRight(256 - logFloor); + if (x.compareTo(halfPower) <= 0) { + return logFloor; + } + return logFloor + 1; + } + BigInteger x2 = x.pow(2); + int logX2Floor = x2.bitLength() - 1; + return logX2Floor < 2 * logFloor + 1 ? logFloor : logFloor + 1; + } + } + throw new AssertionError(); + } + + @GwtIncompatible(value="TODO") + public static int log10(BigInteger x, RoundingMode mode) { + MathPreconditions.checkPositive("x", x); + if (BigIntegerMath.fitsInLong(x)) { + return LongMath.log10(x.longValue(), mode); + } + int approxLog10 = (int)((double)BigIntegerMath.log2(x, RoundingMode.FLOOR) * LN_2 / LN_10); + BigInteger approxPow = BigInteger.TEN.pow(approxLog10); + int approxCmp = approxPow.compareTo(x); + if (approxCmp > 0) { + do { + --approxLog10; + } while ((approxCmp = (approxPow = approxPow.divide(BigInteger.TEN)).compareTo(x)) > 0); + } else { + BigInteger nextPow = BigInteger.TEN.multiply(approxPow); + int nextCmp = nextPow.compareTo(x); + while (nextCmp <= 0) { + ++approxLog10; + approxPow = nextPow; + approxCmp = nextCmp; + nextPow = BigInteger.TEN.multiply(approxPow); + nextCmp = nextPow.compareTo(x); + } + } + int floorLog = approxLog10; + BigInteger floorPow = approxPow; + int floorCmp = approxCmp; + switch (mode) { + case UNNECESSARY: { + MathPreconditions.checkRoundingUnnecessary(floorCmp == 0); + } + case DOWN: + case FLOOR: { + return floorLog; + } + case UP: + case CEILING: { + return floorPow.equals(x) ? floorLog : floorLog + 1; + } + case HALF_DOWN: + case HALF_UP: + case HALF_EVEN: { + BigInteger x2 = x.pow(2); + BigInteger halfPowerSquared = floorPow.pow(2).multiply(BigInteger.TEN); + return x2.compareTo(halfPowerSquared) <= 0 ? floorLog : floorLog + 1; + } + } + throw new AssertionError(); + } + + @GwtIncompatible(value="TODO") + public static BigInteger sqrt(BigInteger x, RoundingMode mode) { + MathPreconditions.checkNonNegative("x", x); + if (BigIntegerMath.fitsInLong(x)) { + return BigInteger.valueOf(LongMath.sqrt(x.longValue(), mode)); + } + BigInteger sqrtFloor = BigIntegerMath.sqrtFloor(x); + switch (mode) { + case UNNECESSARY: { + MathPreconditions.checkRoundingUnnecessary(sqrtFloor.pow(2).equals(x)); + } + case DOWN: + case FLOOR: { + return sqrtFloor; + } + case UP: + case CEILING: { + int sqrtFloorInt = sqrtFloor.intValue(); + boolean sqrtFloorIsExact = sqrtFloorInt * sqrtFloorInt == x.intValue() && sqrtFloor.pow(2).equals(x); + return sqrtFloorIsExact ? sqrtFloor : sqrtFloor.add(BigInteger.ONE); + } + case HALF_DOWN: + case HALF_UP: + case HALF_EVEN: { + BigInteger halfSquare = sqrtFloor.pow(2).add(sqrtFloor); + return halfSquare.compareTo(x) >= 0 ? sqrtFloor : sqrtFloor.add(BigInteger.ONE); + } + } + throw new AssertionError(); + } + + @GwtIncompatible(value="TODO") + private static BigInteger sqrtFloor(BigInteger x) { + BigInteger sqrt0; + int log2 = BigIntegerMath.log2(x, RoundingMode.FLOOR); + if (log2 < 1023) { + sqrt0 = BigIntegerMath.sqrtApproxWithDoubles(x); + } else { + int shift = log2 - 52 & 0xFFFFFFFE; + sqrt0 = BigIntegerMath.sqrtApproxWithDoubles(x.shiftRight(shift)).shiftLeft(shift >> 1); + } + BigInteger sqrt1 = sqrt0.add(x.divide(sqrt0)).shiftRight(1); + if (sqrt0.equals(sqrt1)) { + return sqrt0; + } + while ((sqrt1 = (sqrt0 = sqrt1).add(x.divide(sqrt0)).shiftRight(1)).compareTo(sqrt0) < 0) { + } + return sqrt0; + } + + @GwtIncompatible(value="TODO") + private static BigInteger sqrtApproxWithDoubles(BigInteger x) { + return DoubleMath.roundToBigInteger(Math.sqrt(DoubleUtils.bigToDouble(x)), RoundingMode.HALF_EVEN); + } + + @GwtIncompatible(value="TODO") + public static BigInteger divide(BigInteger p, BigInteger q, RoundingMode mode) { + BigDecimal pDec = new BigDecimal(p); + BigDecimal qDec = new BigDecimal(q); + return pDec.divide(qDec, 0, mode).toBigIntegerExact(); + } + + public static BigInteger factorial(int n) { + MathPreconditions.checkNonNegative("n", n); + if (n < LongMath.factorials.length) { + return BigInteger.valueOf(LongMath.factorials[n]); + } + int approxSize = IntMath.divide(n * IntMath.log2(n, RoundingMode.CEILING), 64, RoundingMode.CEILING); + ArrayList bignums = new ArrayList(approxSize); + int startingNumber = LongMath.factorials.length; + long product = LongMath.factorials[startingNumber - 1]; + int shift = Long.numberOfTrailingZeros(product); + int productBits = LongMath.log2(product >>= shift, RoundingMode.FLOOR) + 1; + int bits = LongMath.log2(startingNumber, RoundingMode.FLOOR) + 1; + int nextPowerOfTwo = 1 << bits - 1; + for (long num = (long)startingNumber; num <= (long)n; ++num) { + if ((num & (long)nextPowerOfTwo) != 0L) { + nextPowerOfTwo <<= 1; + ++bits; + } + int tz = Long.numberOfTrailingZeros(num); + long normalizedNum = num >> tz; + shift += tz; + int normalizedBits = bits - tz; + if (normalizedBits + productBits >= 64) { + bignums.add(BigInteger.valueOf(product)); + product = 1L; + productBits = 0; + } + productBits = LongMath.log2(product *= normalizedNum, RoundingMode.FLOOR) + 1; + } + if (product > 1L) { + bignums.add(BigInteger.valueOf(product)); + } + return BigIntegerMath.listProduct(bignums).shiftLeft(shift); + } + + static BigInteger listProduct(List nums) { + return BigIntegerMath.listProduct(nums, 0, nums.size()); + } + + static BigInteger listProduct(List nums, int start, int end) { + switch (end - start) { + case 0: { + return BigInteger.ONE; + } + case 1: { + return nums.get(start); + } + case 2: { + return nums.get(start).multiply(nums.get(start + 1)); + } + case 3: { + return nums.get(start).multiply(nums.get(start + 1)).multiply(nums.get(start + 2)); + } + } + int m = end + start >>> 1; + return BigIntegerMath.listProduct(nums, start, m).multiply(BigIntegerMath.listProduct(nums, m, end)); + } + + public static BigInteger binomial(int n, int k) { + int bits; + MathPreconditions.checkNonNegative("n", n); + MathPreconditions.checkNonNegative("k", k); + Preconditions.checkArgument(k <= n, "k (%s) > n (%s)", k, n); + if (k > n >> 1) { + k = n - k; + } + if (k < LongMath.biggestBinomials.length && n <= LongMath.biggestBinomials[k]) { + return BigInteger.valueOf(LongMath.binomial(n, k)); + } + BigInteger accum = BigInteger.ONE; + long numeratorAccum = n; + long denominatorAccum = 1L; + int numeratorBits = bits = LongMath.log2(n, RoundingMode.CEILING); + for (int i = 1; i < k; ++i) { + int p = n - i; + int q = i + 1; + if (numeratorBits + bits >= 63) { + accum = accum.multiply(BigInteger.valueOf(numeratorAccum)).divide(BigInteger.valueOf(denominatorAccum)); + numeratorAccum = p; + denominatorAccum = q; + numeratorBits = bits; + continue; + } + numeratorAccum *= (long)p; + denominatorAccum *= (long)q; + numeratorBits += bits; + } + return accum.multiply(BigInteger.valueOf(numeratorAccum)).divide(BigInteger.valueOf(denominatorAccum)); + } + + @GwtIncompatible(value="TODO") + static boolean fitsInLong(BigInteger x) { + return x.bitLength() <= 63; + } + + private BigIntegerMath() { + } +} diff --git a/src/com/google/common/math/DoubleMath.java b/src/com/google/common/math/DoubleMath.java new file mode 100644 index 0000000..7429718 --- /dev/null +++ b/src/com/google/common/math/DoubleMath.java @@ -0,0 +1,260 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.math; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.Preconditions; +import com.google.common.math.DoubleUtils; +import com.google.common.math.LongMath; +import com.google.common.math.MathPreconditions; +import com.google.common.primitives.Booleans; +import java.math.BigInteger; +import java.math.RoundingMode; +import java.util.Iterator; + +@GwtCompatible(emulated=true) +public final class DoubleMath { + private static final double MIN_INT_AS_DOUBLE = -2.147483648E9; + private static final double MAX_INT_AS_DOUBLE = 2.147483647E9; + private static final double MIN_LONG_AS_DOUBLE = -9.223372036854776E18; + private static final double MAX_LONG_AS_DOUBLE_PLUS_ONE = 9.223372036854776E18; + private static final double LN_2 = Math.log(2.0); + @VisibleForTesting + static final int MAX_FACTORIAL = 170; + @VisibleForTesting + static final double[] everySixteenthFactorial = new double[]{1.0, 2.0922789888E13, 2.631308369336935E35, 1.2413915592536073E61, 1.2688693218588417E89, 7.156945704626381E118, 9.916779348709496E149, 1.974506857221074E182, 3.856204823625804E215, 5.5502938327393044E249, 4.7147236359920616E284}; + + @GwtIncompatible(value="#isMathematicalInteger, com.google.common.math.DoubleUtils") + static double roundIntermediate(double x, RoundingMode mode) { + if (!DoubleUtils.isFinite(x)) { + throw new ArithmeticException("input is infinite or NaN"); + } + switch (mode) { + case UNNECESSARY: { + MathPreconditions.checkRoundingUnnecessary(DoubleMath.isMathematicalInteger(x)); + return x; + } + case FLOOR: { + if (x >= 0.0 || DoubleMath.isMathematicalInteger(x)) { + return x; + } + return x - 1.0; + } + case CEILING: { + if (x <= 0.0 || DoubleMath.isMathematicalInteger(x)) { + return x; + } + return x + 1.0; + } + case DOWN: { + return x; + } + case UP: { + if (DoubleMath.isMathematicalInteger(x)) { + return x; + } + return x + Math.copySign(1.0, x); + } + case HALF_EVEN: { + return Math.rint(x); + } + case HALF_UP: { + double z = Math.rint(x); + if (Math.abs(x - z) == 0.5) { + return x + Math.copySign(0.5, x); + } + return z; + } + case HALF_DOWN: { + double z = Math.rint(x); + if (Math.abs(x - z) == 0.5) { + return x; + } + return z; + } + } + throw new AssertionError(); + } + + @GwtIncompatible(value="#roundIntermediate") + public static int roundToInt(double x, RoundingMode mode) { + double z = DoubleMath.roundIntermediate(x, mode); + MathPreconditions.checkInRange(z > -2.147483649E9 & z < 2.147483648E9); + return (int)z; + } + + @GwtIncompatible(value="#roundIntermediate") + public static long roundToLong(double x, RoundingMode mode) { + double z = DoubleMath.roundIntermediate(x, mode); + MathPreconditions.checkInRange(-9.223372036854776E18 - z < 1.0 & z < 9.223372036854776E18); + return (long)z; + } + + @GwtIncompatible(value="#roundIntermediate, java.lang.Math.getExponent, com.google.common.math.DoubleUtils") + public static BigInteger roundToBigInteger(double x, RoundingMode mode) { + if (-9.223372036854776E18 - (x = DoubleMath.roundIntermediate(x, mode)) < 1.0 & x < 9.223372036854776E18) { + return BigInteger.valueOf((long)x); + } + int exponent = Math.getExponent(x); + long significand = DoubleUtils.getSignificand(x); + BigInteger result = BigInteger.valueOf(significand).shiftLeft(exponent - 52); + return x < 0.0 ? result.negate() : result; + } + + @GwtIncompatible(value="com.google.common.math.DoubleUtils") + public static boolean isPowerOfTwo(double x) { + return x > 0.0 && DoubleUtils.isFinite(x) && LongMath.isPowerOfTwo(DoubleUtils.getSignificand(x)); + } + + public static double log2(double x) { + return Math.log(x) / LN_2; + } + + @GwtIncompatible(value="java.lang.Math.getExponent, com.google.common.math.DoubleUtils") + public static int log2(double x, RoundingMode mode) { + boolean increment; + Preconditions.checkArgument(x > 0.0 && DoubleUtils.isFinite(x), "x must be positive and finite"); + int exponent = Math.getExponent(x); + if (!DoubleUtils.isNormal(x)) { + return DoubleMath.log2(x * 4.503599627370496E15, mode) - 52; + } + switch (mode) { + case UNNECESSARY: { + MathPreconditions.checkRoundingUnnecessary(DoubleMath.isPowerOfTwo(x)); + } + case FLOOR: { + increment = false; + break; + } + case CEILING: { + increment = !DoubleMath.isPowerOfTwo(x); + break; + } + case DOWN: { + increment = exponent < 0 & !DoubleMath.isPowerOfTwo(x); + break; + } + case UP: { + increment = exponent >= 0 & !DoubleMath.isPowerOfTwo(x); + break; + } + case HALF_EVEN: + case HALF_UP: + case HALF_DOWN: { + double xScaled = DoubleUtils.scaleNormalize(x); + increment = xScaled * xScaled > 2.0; + break; + } + default: { + throw new AssertionError(); + } + } + return increment ? exponent + 1 : exponent; + } + + @GwtIncompatible(value="java.lang.Math.getExponent, com.google.common.math.DoubleUtils") + public static boolean isMathematicalInteger(double x) { + return DoubleUtils.isFinite(x) && (x == 0.0 || 52 - Long.numberOfTrailingZeros(DoubleUtils.getSignificand(x)) <= Math.getExponent(x)); + } + + public static double factorial(int n) { + MathPreconditions.checkNonNegative("n", n); + if (n > 170) { + return Double.POSITIVE_INFINITY; + } + double accum = 1.0; + for (int i = 1 + (n & 0xFFFFFFF0); i <= n; ++i) { + accum *= (double)i; + } + return accum * everySixteenthFactorial[n >> 4]; + } + + public static boolean fuzzyEquals(double a, double b, double tolerance) { + MathPreconditions.checkNonNegative("tolerance", tolerance); + return Math.copySign(a - b, 1.0) <= tolerance || a == b || Double.isNaN(a) && Double.isNaN(b); + } + + public static int fuzzyCompare(double a, double b, double tolerance) { + if (DoubleMath.fuzzyEquals(a, b, tolerance)) { + return 0; + } + if (a < b) { + return -1; + } + if (a > b) { + return 1; + } + return Booleans.compare(Double.isNaN(a), Double.isNaN(b)); + } + + @GwtIncompatible(value="MeanAccumulator") + public static double mean(double ... values) { + MeanAccumulator accumulator = new MeanAccumulator(); + for (double value : values) { + accumulator.add(value); + } + return accumulator.mean(); + } + + @GwtIncompatible(value="MeanAccumulator") + public static double mean(int ... values) { + MeanAccumulator accumulator = new MeanAccumulator(); + for (int value : values) { + accumulator.add(value); + } + return accumulator.mean(); + } + + @GwtIncompatible(value="MeanAccumulator") + public static double mean(long ... values) { + MeanAccumulator accumulator = new MeanAccumulator(); + for (long value : values) { + accumulator.add(value); + } + return accumulator.mean(); + } + + @GwtIncompatible(value="MeanAccumulator") + public static double mean(Iterable values) { + MeanAccumulator accumulator = new MeanAccumulator(); + for (Number number : values) { + accumulator.add(number.doubleValue()); + } + return accumulator.mean(); + } + + @GwtIncompatible(value="MeanAccumulator") + public static double mean(Iterator values) { + MeanAccumulator accumulator = new MeanAccumulator(); + while (values.hasNext()) { + accumulator.add(values.next().doubleValue()); + } + return accumulator.mean(); + } + + private DoubleMath() { + } + + @GwtIncompatible(value="com.google.common.math.DoubleUtils") + private static final class MeanAccumulator { + private long count = 0L; + private double mean = 0.0; + + private MeanAccumulator() { + } + + void add(double value) { + Preconditions.checkArgument(DoubleUtils.isFinite(value)); + ++this.count; + this.mean += (value - this.mean) / (double)this.count; + } + + double mean() { + Preconditions.checkArgument(this.count > 0L, "Cannot take mean of 0 values"); + return this.mean; + } + } +} diff --git a/src/com/google/common/math/DoubleUtils.java b/src/com/google/common/math/DoubleUtils.java new file mode 100644 index 0000000..1d9fe58 --- /dev/null +++ b/src/com/google/common/math/DoubleUtils.java @@ -0,0 +1,71 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.math; + +import com.google.common.base.Preconditions; +import java.math.BigInteger; + +final class DoubleUtils { + static final long SIGNIFICAND_MASK = 0xFFFFFFFFFFFFFL; + static final long EXPONENT_MASK = 0x7FF0000000000000L; + static final long SIGN_MASK = Long.MIN_VALUE; + static final int SIGNIFICAND_BITS = 52; + static final int EXPONENT_BIAS = 1023; + static final long IMPLICIT_BIT = 0x10000000000000L; + private static final long ONE_BITS = Double.doubleToRawLongBits(1.0); + + private DoubleUtils() { + } + + static double nextDown(double d) { + return -Math.nextUp(-d); + } + + static long getSignificand(double d) { + Preconditions.checkArgument(DoubleUtils.isFinite(d), "not a normal value"); + int exponent = Math.getExponent(d); + long bits = Double.doubleToRawLongBits(d); + return exponent == -1023 ? bits << 1 : (bits &= 0xFFFFFFFFFFFFFL) | 0x10000000000000L; + } + + static boolean isFinite(double d) { + return Math.getExponent(d) <= 1023; + } + + static boolean isNormal(double d) { + return Math.getExponent(d) >= -1022; + } + + static double scaleNormalize(double x) { + long significand = Double.doubleToRawLongBits(x) & 0xFFFFFFFFFFFFFL; + return Double.longBitsToDouble(significand | ONE_BITS); + } + + static double bigToDouble(BigInteger x) { + BigInteger absX = x.abs(); + int exponent = absX.bitLength() - 1; + if (exponent < 63) { + return x.longValue(); + } + if (exponent > 1023) { + return (double)x.signum() * Double.POSITIVE_INFINITY; + } + int shift = exponent - 52 - 1; + long twiceSignifFloor = absX.shiftRight(shift).longValue(); + long signifFloor = twiceSignifFloor >> 1; + boolean increment = (twiceSignifFloor & 1L) != 0L && (((signifFloor &= 0xFFFFFFFFFFFFFL) & 1L) != 0L || absX.getLowestSetBit() < shift); + long signifRounded = increment ? signifFloor + 1L : signifFloor; + long bits = (long)(exponent + 1023) << 52; + bits += signifRounded; + return Double.longBitsToDouble(bits |= (long)x.signum() & Long.MIN_VALUE); + } + + static double ensureNonNegative(double value) { + Preconditions.checkArgument(!Double.isNaN(value)); + if (value > 0.0) { + return value; + } + return 0.0; + } +} diff --git a/src/com/google/common/math/IntMath.java b/src/com/google/common/math/IntMath.java new file mode 100644 index 0000000..5de4228 --- /dev/null +++ b/src/com/google/common/math/IntMath.java @@ -0,0 +1,343 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.math; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.Preconditions; +import com.google.common.math.MathPreconditions; +import java.math.RoundingMode; + +@GwtCompatible(emulated=true) +public final class IntMath { + @VisibleForTesting + static final int MAX_POWER_OF_SQRT2_UNSIGNED = -1257966797; + @VisibleForTesting + static final byte[] maxLog10ForLeadingZeros = new byte[]{9, 9, 9, 8, 8, 8, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 4, 4, 4, 3, 3, 3, 3, 2, 2, 2, 1, 1, 1, 0, 0, 0, 0}; + @VisibleForTesting + static final int[] powersOf10 = new int[]{1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000}; + @VisibleForTesting + static final int[] halfPowersOf10 = new int[]{3, 31, 316, 3162, 31622, 316227, 3162277, 31622776, 316227766, Integer.MAX_VALUE}; + @VisibleForTesting + static final int FLOOR_SQRT_MAX_INT = 46340; + private static final int[] factorials = new int[]{1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880, 3628800, 39916800, 479001600}; + @VisibleForTesting + static int[] biggestBinomials = new int[]{Integer.MAX_VALUE, Integer.MAX_VALUE, 65536, 2345, 477, 193, 110, 75, 58, 49, 43, 39, 37, 35, 34, 34, 33}; + + public static boolean isPowerOfTwo(int x) { + return x > 0 & (x & x - 1) == 0; + } + + @VisibleForTesting + static int lessThanBranchFree(int x, int y) { + return ~(~(x - y)) >>> 31; + } + + public static int log2(int x, RoundingMode mode) { + MathPreconditions.checkPositive("x", x); + switch (mode) { + case UNNECESSARY: { + MathPreconditions.checkRoundingUnnecessary(IntMath.isPowerOfTwo(x)); + } + case DOWN: + case FLOOR: { + return 31 - Integer.numberOfLeadingZeros(x); + } + case UP: + case CEILING: { + return 32 - Integer.numberOfLeadingZeros(x - 1); + } + case HALF_DOWN: + case HALF_UP: + case HALF_EVEN: { + int leadingZeros = Integer.numberOfLeadingZeros(x); + int cmp = -1257966797 >>> leadingZeros; + int logFloor = 31 - leadingZeros; + return logFloor + IntMath.lessThanBranchFree(cmp, x); + } + } + throw new AssertionError(); + } + + @GwtIncompatible(value="need BigIntegerMath to adequately test") + public static int log10(int x, RoundingMode mode) { + MathPreconditions.checkPositive("x", x); + int logFloor = IntMath.log10Floor(x); + int floorPow = powersOf10[logFloor]; + switch (mode) { + case UNNECESSARY: { + MathPreconditions.checkRoundingUnnecessary(x == floorPow); + } + case DOWN: + case FLOOR: { + return logFloor; + } + case UP: + case CEILING: { + return logFloor + IntMath.lessThanBranchFree(floorPow, x); + } + case HALF_DOWN: + case HALF_UP: + case HALF_EVEN: { + return logFloor + IntMath.lessThanBranchFree(halfPowersOf10[logFloor], x); + } + } + throw new AssertionError(); + } + + private static int log10Floor(int x) { + byte y = maxLog10ForLeadingZeros[Integer.numberOfLeadingZeros(x)]; + return y - IntMath.lessThanBranchFree(x, powersOf10[y]); + } + + @GwtIncompatible(value="failing tests") + public static int pow(int b, int k) { + MathPreconditions.checkNonNegative("exponent", k); + switch (b) { + case 0: { + return k == 0 ? 1 : 0; + } + case 1: { + return 1; + } + case -1: { + return (k & 1) == 0 ? 1 : -1; + } + case 2: { + return k < 32 ? 1 << k : 0; + } + case -2: { + if (k < 32) { + return (k & 1) == 0 ? 1 << k : -(1 << k); + } + return 0; + } + } + int accum = 1; + while (true) { + switch (k) { + case 0: { + return accum; + } + case 1: { + return b * accum; + } + } + accum *= (k & 1) == 0 ? 1 : b; + b *= b; + k >>= 1; + } + } + + @GwtIncompatible(value="need BigIntegerMath to adequately test") + public static int sqrt(int x, RoundingMode mode) { + MathPreconditions.checkNonNegative("x", x); + int sqrtFloor = IntMath.sqrtFloor(x); + switch (mode) { + case UNNECESSARY: { + MathPreconditions.checkRoundingUnnecessary(sqrtFloor * sqrtFloor == x); + } + case DOWN: + case FLOOR: { + return sqrtFloor; + } + case UP: + case CEILING: { + return sqrtFloor + IntMath.lessThanBranchFree(sqrtFloor * sqrtFloor, x); + } + case HALF_DOWN: + case HALF_UP: + case HALF_EVEN: { + int halfSquare = sqrtFloor * sqrtFloor + sqrtFloor; + return sqrtFloor + IntMath.lessThanBranchFree(halfSquare, x); + } + } + throw new AssertionError(); + } + + private static int sqrtFloor(int x) { + return (int)Math.sqrt(x); + } + + public static int divide(int p, int q, RoundingMode mode) { + boolean increment; + Preconditions.checkNotNull(mode); + if (q == 0) { + throw new ArithmeticException("/ by zero"); + } + int div = p / q; + int rem = p - q * div; + if (rem == 0) { + return div; + } + int signum = 1 | (p ^ q) >> 31; + switch (mode) { + case UNNECESSARY: { + MathPreconditions.checkRoundingUnnecessary(rem == 0); + } + case DOWN: { + increment = false; + break; + } + case UP: { + increment = true; + break; + } + case CEILING: { + increment = signum > 0; + break; + } + case FLOOR: { + increment = signum < 0; + break; + } + case HALF_DOWN: + case HALF_UP: + case HALF_EVEN: { + int absRem = Math.abs(rem); + int cmpRemToHalfDivisor = absRem - (Math.abs(q) - absRem); + if (cmpRemToHalfDivisor == 0) { + increment = mode == RoundingMode.HALF_UP || mode == RoundingMode.HALF_EVEN & (div & 1) != 0; + break; + } + increment = cmpRemToHalfDivisor > 0; + break; + } + default: { + throw new AssertionError(); + } + } + return increment ? div + signum : div; + } + + public static int mod(int x, int m) { + if (m <= 0) { + int n = m; + throw new ArithmeticException(new StringBuilder(31).append("Modulus ").append(n).append(" must be > 0").toString()); + } + int result = x % m; + return result >= 0 ? result : result + m; + } + + public static int gcd(int a, int b) { + MathPreconditions.checkNonNegative("a", a); + MathPreconditions.checkNonNegative("b", b); + if (a == 0) { + return b; + } + if (b == 0) { + return a; + } + int aTwos = Integer.numberOfTrailingZeros(a); + a >>= aTwos; + int bTwos = Integer.numberOfTrailingZeros(b); + b >>= bTwos; + while (a != b) { + int delta = a - b; + int minDeltaOrZero = delta & delta >> 31; + a = delta - minDeltaOrZero - minDeltaOrZero; + b += minDeltaOrZero; + a >>= Integer.numberOfTrailingZeros(a); + } + return a << Math.min(aTwos, bTwos); + } + + public static int checkedAdd(int a, int b) { + long result = (long)a + (long)b; + MathPreconditions.checkNoOverflow(result == (long)((int)result)); + return (int)result; + } + + public static int checkedSubtract(int a, int b) { + long result = (long)a - (long)b; + MathPreconditions.checkNoOverflow(result == (long)((int)result)); + return (int)result; + } + + public static int checkedMultiply(int a, int b) { + long result = (long)a * (long)b; + MathPreconditions.checkNoOverflow(result == (long)((int)result)); + return (int)result; + } + + public static int checkedPow(int b, int k) { + MathPreconditions.checkNonNegative("exponent", k); + switch (b) { + case 0: { + return k == 0 ? 1 : 0; + } + case 1: { + return 1; + } + case -1: { + return (k & 1) == 0 ? 1 : -1; + } + case 2: { + MathPreconditions.checkNoOverflow(k < 31); + return 1 << k; + } + case -2: { + MathPreconditions.checkNoOverflow(k < 32); + return (k & 1) == 0 ? 1 << k : -1 << k; + } + } + int accum = 1; + while (true) { + switch (k) { + case 0: { + return accum; + } + case 1: { + return IntMath.checkedMultiply(accum, b); + } + } + if ((k & 1) != 0) { + accum = IntMath.checkedMultiply(accum, b); + } + if ((k >>= 1) <= 0) continue; + MathPreconditions.checkNoOverflow(-46340 <= b & b <= 46340); + b *= b; + } + } + + public static int factorial(int n) { + MathPreconditions.checkNonNegative("n", n); + return n < factorials.length ? factorials[n] : Integer.MAX_VALUE; + } + + @GwtIncompatible(value="need BigIntegerMath to adequately test") + public static int binomial(int n, int k) { + MathPreconditions.checkNonNegative("n", n); + MathPreconditions.checkNonNegative("k", k); + Preconditions.checkArgument(k <= n, "k (%s) > n (%s)", k, n); + if (k > n >> 1) { + k = n - k; + } + if (k >= biggestBinomials.length || n > biggestBinomials[k]) { + return Integer.MAX_VALUE; + } + switch (k) { + case 0: { + return 1; + } + case 1: { + return n; + } + } + long result = 1L; + for (int i = 0; i < k; ++i) { + result *= (long)(n - i); + result /= (long)(i + 1); + } + return (int)result; + } + + public static int mean(int x, int y) { + return (x & y) + ((x ^ y) >> 1); + } + + private IntMath() { + } +} diff --git a/src/com/google/common/math/LongMath.java b/src/com/google/common/math/LongMath.java new file mode 100644 index 0000000..325d7bd --- /dev/null +++ b/src/com/google/common/math/LongMath.java @@ -0,0 +1,414 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.math; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.Preconditions; +import com.google.common.math.IntMath; +import com.google.common.math.MathPreconditions; +import java.math.RoundingMode; + +@GwtCompatible(emulated=true) +public final class LongMath { + @VisibleForTesting + static final long MAX_POWER_OF_SQRT2_UNSIGNED = -5402926248376769404L; + @VisibleForTesting + static final byte[] maxLog10ForLeadingZeros = new byte[]{19, 18, 18, 18, 18, 17, 17, 17, 16, 16, 16, 15, 15, 15, 15, 14, 14, 14, 13, 13, 13, 12, 12, 12, 12, 11, 11, 11, 10, 10, 10, 9, 9, 9, 9, 8, 8, 8, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 4, 4, 4, 3, 3, 3, 3, 2, 2, 2, 1, 1, 1, 0, 0, 0}; + @GwtIncompatible(value="TODO") + @VisibleForTesting + static final long[] powersOf10 = new long[]{1L, 10L, 100L, 1000L, 10000L, 100000L, 1000000L, 10000000L, 100000000L, 1000000000L, 10000000000L, 100000000000L, 1000000000000L, 10000000000000L, 100000000000000L, 1000000000000000L, 10000000000000000L, 100000000000000000L, 1000000000000000000L}; + @GwtIncompatible(value="TODO") + @VisibleForTesting + static final long[] halfPowersOf10 = new long[]{3L, 31L, 316L, 3162L, 31622L, 316227L, 3162277L, 31622776L, 316227766L, 3162277660L, 31622776601L, 316227766016L, 3162277660168L, 31622776601683L, 316227766016837L, 3162277660168379L, 31622776601683793L, 316227766016837933L, 3162277660168379331L}; + @VisibleForTesting + static final long FLOOR_SQRT_MAX_LONG = 3037000499L; + static final long[] factorials = new long[]{1L, 1L, 2L, 6L, 24L, 120L, 720L, 5040L, 40320L, 362880L, 3628800L, 39916800L, 479001600L, 6227020800L, 87178291200L, 1307674368000L, 20922789888000L, 355687428096000L, 6402373705728000L, 121645100408832000L, 2432902008176640000L}; + static final int[] biggestBinomials = new int[]{Integer.MAX_VALUE, Integer.MAX_VALUE, Integer.MAX_VALUE, 3810779, 121977, 16175, 4337, 1733, 887, 534, 361, 265, 206, 169, 143, 125, 111, 101, 94, 88, 83, 79, 76, 74, 72, 70, 69, 68, 67, 67, 66, 66, 66, 66}; + @VisibleForTesting + static final int[] biggestSimpleBinomials = new int[]{Integer.MAX_VALUE, Integer.MAX_VALUE, Integer.MAX_VALUE, 2642246, 86251, 11724, 3218, 1313, 684, 419, 287, 214, 169, 139, 119, 105, 95, 87, 81, 76, 73, 70, 68, 66, 64, 63, 62, 62, 61, 61, 61}; + + public static boolean isPowerOfTwo(long x) { + return x > 0L & (x & x - 1L) == 0L; + } + + @VisibleForTesting + static int lessThanBranchFree(long x, long y) { + return (int)((x - y ^ 0xFFFFFFFFFFFFFFFFL ^ 0xFFFFFFFFFFFFFFFFL) >>> 63); + } + + public static int log2(long x, RoundingMode mode) { + MathPreconditions.checkPositive("x", x); + switch (mode) { + case UNNECESSARY: { + MathPreconditions.checkRoundingUnnecessary(LongMath.isPowerOfTwo(x)); + } + case DOWN: + case FLOOR: { + return 63 - Long.numberOfLeadingZeros(x); + } + case UP: + case CEILING: { + return 64 - Long.numberOfLeadingZeros(x - 1L); + } + case HALF_DOWN: + case HALF_UP: + case HALF_EVEN: { + int leadingZeros = Long.numberOfLeadingZeros(x); + long cmp = -5402926248376769404L >>> leadingZeros; + int logFloor = 63 - leadingZeros; + return logFloor + LongMath.lessThanBranchFree(cmp, x); + } + } + throw new AssertionError((Object)"impossible"); + } + + @GwtIncompatible(value="TODO") + public static int log10(long x, RoundingMode mode) { + MathPreconditions.checkPositive("x", x); + int logFloor = LongMath.log10Floor(x); + long floorPow = powersOf10[logFloor]; + switch (mode) { + case UNNECESSARY: { + MathPreconditions.checkRoundingUnnecessary(x == floorPow); + } + case DOWN: + case FLOOR: { + return logFloor; + } + case UP: + case CEILING: { + return logFloor + LongMath.lessThanBranchFree(floorPow, x); + } + case HALF_DOWN: + case HALF_UP: + case HALF_EVEN: { + return logFloor + LongMath.lessThanBranchFree(halfPowersOf10[logFloor], x); + } + } + throw new AssertionError(); + } + + @GwtIncompatible(value="TODO") + static int log10Floor(long x) { + byte y = maxLog10ForLeadingZeros[Long.numberOfLeadingZeros(x)]; + return y - LongMath.lessThanBranchFree(x, powersOf10[y]); + } + + @GwtIncompatible(value="TODO") + public static long pow(long b, int k) { + MathPreconditions.checkNonNegative("exponent", k); + if (-2L <= b && b <= 2L) { + switch ((int)b) { + case 0: { + return k == 0 ? 1L : 0L; + } + case 1: { + return 1L; + } + case -1: { + return (k & 1) == 0 ? 1L : -1L; + } + case 2: { + return k < 64 ? 1L << k : 0L; + } + case -2: { + if (k < 64) { + return (k & 1) == 0 ? 1L << k : -(1L << k); + } + return 0L; + } + } + throw new AssertionError(); + } + long accum = 1L; + while (true) { + switch (k) { + case 0: { + return accum; + } + case 1: { + return accum * b; + } + } + accum *= (k & 1) == 0 ? 1L : b; + b *= b; + k >>= 1; + } + } + + @GwtIncompatible(value="TODO") + public static long sqrt(long x, RoundingMode mode) { + MathPreconditions.checkNonNegative("x", x); + if (LongMath.fitsInInt(x)) { + return IntMath.sqrt((int)x, mode); + } + long guess = (long)Math.sqrt(x); + long guessSquared = guess * guess; + switch (mode) { + case UNNECESSARY: { + MathPreconditions.checkRoundingUnnecessary(guessSquared == x); + return guess; + } + case DOWN: + case FLOOR: { + if (x < guessSquared) { + return guess - 1L; + } + return guess; + } + case UP: + case CEILING: { + if (x > guessSquared) { + return guess + 1L; + } + return guess; + } + case HALF_DOWN: + case HALF_UP: + case HALF_EVEN: { + long sqrtFloor = guess - (long)(x < guessSquared ? 1 : 0); + long halfSquare = sqrtFloor * sqrtFloor + sqrtFloor; + return sqrtFloor + (long)LongMath.lessThanBranchFree(halfSquare, x); + } + } + throw new AssertionError(); + } + + @GwtIncompatible(value="TODO") + public static long divide(long p, long q, RoundingMode mode) { + boolean increment; + Preconditions.checkNotNull(mode); + long div = p / q; + long rem = p - q * div; + if (rem == 0L) { + return div; + } + int signum = 1 | (int)((p ^ q) >> 63); + switch (mode) { + case UNNECESSARY: { + MathPreconditions.checkRoundingUnnecessary(rem == 0L); + } + case DOWN: { + increment = false; + break; + } + case UP: { + increment = true; + break; + } + case CEILING: { + increment = signum > 0; + break; + } + case FLOOR: { + increment = signum < 0; + break; + } + case HALF_DOWN: + case HALF_UP: + case HALF_EVEN: { + long absRem = Math.abs(rem); + long cmpRemToHalfDivisor = absRem - (Math.abs(q) - absRem); + if (cmpRemToHalfDivisor == 0L) { + increment = mode == RoundingMode.HALF_UP | mode == RoundingMode.HALF_EVEN & (div & 1L) != 0L; + break; + } + increment = cmpRemToHalfDivisor > 0L; + break; + } + default: { + throw new AssertionError(); + } + } + return increment ? div + (long)signum : div; + } + + @GwtIncompatible(value="TODO") + public static int mod(long x, int m) { + return (int)LongMath.mod(x, (long)m); + } + + @GwtIncompatible(value="TODO") + public static long mod(long x, long m) { + if (m <= 0L) { + throw new ArithmeticException("Modulus must be positive"); + } + long result = x % m; + return result >= 0L ? result : result + m; + } + + public static long gcd(long a, long b) { + MathPreconditions.checkNonNegative("a", a); + MathPreconditions.checkNonNegative("b", b); + if (a == 0L) { + return b; + } + if (b == 0L) { + return a; + } + int aTwos = Long.numberOfTrailingZeros(a); + a >>= aTwos; + int bTwos = Long.numberOfTrailingZeros(b); + b >>= bTwos; + while (a != b) { + long delta = a - b; + long minDeltaOrZero = delta & delta >> 63; + a = delta - minDeltaOrZero - minDeltaOrZero; + b += minDeltaOrZero; + a >>= Long.numberOfTrailingZeros(a); + } + return a << Math.min(aTwos, bTwos); + } + + @GwtIncompatible(value="TODO") + public static long checkedAdd(long a, long b) { + long result = a + b; + MathPreconditions.checkNoOverflow((a ^ b) < 0L | (a ^ result) >= 0L); + return result; + } + + @GwtIncompatible(value="TODO") + public static long checkedSubtract(long a, long b) { + long result = a - b; + MathPreconditions.checkNoOverflow((a ^ b) >= 0L | (a ^ result) >= 0L); + return result; + } + + @GwtIncompatible(value="TODO") + public static long checkedMultiply(long a, long b) { + int leadingZeros = Long.numberOfLeadingZeros(a) + Long.numberOfLeadingZeros(a ^ 0xFFFFFFFFFFFFFFFFL) + Long.numberOfLeadingZeros(b) + Long.numberOfLeadingZeros(b ^ 0xFFFFFFFFFFFFFFFFL); + if (leadingZeros > 65) { + return a * b; + } + MathPreconditions.checkNoOverflow(leadingZeros >= 64); + MathPreconditions.checkNoOverflow(a >= 0L | b != Long.MIN_VALUE); + long result = a * b; + MathPreconditions.checkNoOverflow(a == 0L || result / a == b); + return result; + } + + @GwtIncompatible(value="TODO") + public static long checkedPow(long b, int k) { + MathPreconditions.checkNonNegative("exponent", k); + if (b >= -2L & b <= 2L) { + switch ((int)b) { + case 0: { + return k == 0 ? 1L : 0L; + } + case 1: { + return 1L; + } + case -1: { + return (k & 1) == 0 ? 1L : -1L; + } + case 2: { + MathPreconditions.checkNoOverflow(k < 63); + return 1L << k; + } + case -2: { + MathPreconditions.checkNoOverflow(k < 64); + return (k & 1) == 0 ? 1L << k : -1L << k; + } + } + throw new AssertionError(); + } + long accum = 1L; + while (true) { + switch (k) { + case 0: { + return accum; + } + case 1: { + return LongMath.checkedMultiply(accum, b); + } + } + if ((k & 1) != 0) { + accum = LongMath.checkedMultiply(accum, b); + } + if ((k >>= 1) <= 0) continue; + MathPreconditions.checkNoOverflow(b <= 3037000499L); + b *= b; + } + } + + @GwtIncompatible(value="TODO") + public static long factorial(int n) { + MathPreconditions.checkNonNegative("n", n); + return n < factorials.length ? factorials[n] : Long.MAX_VALUE; + } + + public static long binomial(int n, int k) { + MathPreconditions.checkNonNegative("n", n); + MathPreconditions.checkNonNegative("k", k); + Preconditions.checkArgument(k <= n, "k (%s) > n (%s)", k, n); + if (k > n >> 1) { + k = n - k; + } + switch (k) { + case 0: { + return 1L; + } + case 1: { + return n; + } + } + if (n < factorials.length) { + return factorials[n] / (factorials[k] * factorials[n - k]); + } + if (k >= biggestBinomials.length || n > biggestBinomials[k]) { + return Long.MAX_VALUE; + } + if (k < biggestSimpleBinomials.length && n <= biggestSimpleBinomials[k]) { + long result = n--; + for (int i = 2; i <= k; ++i) { + result *= (long)n; + result /= (long)i; + --n; + } + return result; + } + int nBits = LongMath.log2(n, RoundingMode.CEILING); + long result = 1L; + long numerator = n--; + long denominator = 1L; + int numeratorBits = nBits; + int i = 2; + while (i <= k) { + if (numeratorBits + nBits < 63) { + numerator *= (long)n; + denominator *= (long)i; + numeratorBits += nBits; + } else { + result = LongMath.multiplyFraction(result, numerator, denominator); + numerator = n; + denominator = i; + numeratorBits = nBits; + } + ++i; + --n; + } + return LongMath.multiplyFraction(result, numerator, denominator); + } + + static long multiplyFraction(long x, long numerator, long denominator) { + if (x == 1L) { + return numerator / denominator; + } + long commonDivisor = LongMath.gcd(x, denominator); + return (x /= commonDivisor) * (numerator / (denominator /= commonDivisor)); + } + + static boolean fitsInInt(long x) { + return (long)((int)x) == x; + } + + public static long mean(long x, long y) { + return (x & y) + ((x ^ y) >> 1); + } + + private LongMath() { + } +} diff --git a/src/com/google/common/math/MathPreconditions.java b/src/com/google/common/math/MathPreconditions.java new file mode 100644 index 0000000..fd98314 --- /dev/null +++ b/src/com/google/common/math/MathPreconditions.java @@ -0,0 +1,95 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.math; + +import com.google.common.annotations.GwtCompatible; +import java.math.BigInteger; +import javax.annotation.Nullable; + +@GwtCompatible +final class MathPreconditions { + static int checkPositive(@Nullable String role, int x) { + if (x <= 0) { + String string = String.valueOf(String.valueOf(role)); + int n = x; + throw new IllegalArgumentException(new StringBuilder(26 + string.length()).append(string).append(" (").append(n).append(") must be > 0").toString()); + } + return x; + } + + static long checkPositive(@Nullable String role, long x) { + if (x <= 0L) { + String string = String.valueOf(String.valueOf(role)); + long l = x; + throw new IllegalArgumentException(new StringBuilder(35 + string.length()).append(string).append(" (").append(l).append(") must be > 0").toString()); + } + return x; + } + + static BigInteger checkPositive(@Nullable String role, BigInteger x) { + if (x.signum() <= 0) { + String string = String.valueOf(String.valueOf(role)); + String string2 = String.valueOf(String.valueOf(x)); + throw new IllegalArgumentException(new StringBuilder(15 + string.length() + string2.length()).append(string).append(" (").append(string2).append(") must be > 0").toString()); + } + return x; + } + + static int checkNonNegative(@Nullable String role, int x) { + if (x < 0) { + String string = String.valueOf(String.valueOf(role)); + int n = x; + throw new IllegalArgumentException(new StringBuilder(27 + string.length()).append(string).append(" (").append(n).append(") must be >= 0").toString()); + } + return x; + } + + static long checkNonNegative(@Nullable String role, long x) { + if (x < 0L) { + String string = String.valueOf(String.valueOf(role)); + long l = x; + throw new IllegalArgumentException(new StringBuilder(36 + string.length()).append(string).append(" (").append(l).append(") must be >= 0").toString()); + } + return x; + } + + static BigInteger checkNonNegative(@Nullable String role, BigInteger x) { + if (x.signum() < 0) { + String string = String.valueOf(String.valueOf(role)); + String string2 = String.valueOf(String.valueOf(x)); + throw new IllegalArgumentException(new StringBuilder(16 + string.length() + string2.length()).append(string).append(" (").append(string2).append(") must be >= 0").toString()); + } + return x; + } + + static double checkNonNegative(@Nullable String role, double x) { + if (!(x >= 0.0)) { + String string = String.valueOf(String.valueOf(role)); + double d = x; + throw new IllegalArgumentException(new StringBuilder(40 + string.length()).append(string).append(" (").append(d).append(") must be >= 0").toString()); + } + return x; + } + + static void checkRoundingUnnecessary(boolean condition) { + if (!condition) { + throw new ArithmeticException("mode was UNNECESSARY, but rounding was necessary"); + } + } + + static void checkInRange(boolean condition) { + if (!condition) { + throw new ArithmeticException("not in range"); + } + } + + static void checkNoOverflow(boolean condition) { + if (!condition) { + throw new ArithmeticException("overflow"); + } + } + + private MathPreconditions() { + } +} diff --git a/src/com/google/common/math/package-info.java b/src/com/google/common/math/package-info.java new file mode 100644 index 0000000..f28b532 --- /dev/null +++ b/src/com/google/common/math/package-info.java @@ -0,0 +1,8 @@ +/* + * Decompiled with CFR 0.152. + */ +@ParametersAreNonnullByDefault +package com.google.common.math; + +import javax.annotation.ParametersAreNonnullByDefault; + diff --git a/src/com/google/common/net/HostAndPort.java b/src/com/google/common/net/HostAndPort.java new file mode 100644 index 0000000..5f9b747 --- /dev/null +++ b/src/com/google/common/net/HostAndPort.java @@ -0,0 +1,158 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.net; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Objects; +import com.google.common.base.Preconditions; +import com.google.common.base.Strings; +import java.io.Serializable; +import javax.annotation.Nullable; +import javax.annotation.concurrent.Immutable; + +@Beta +@Immutable +@GwtCompatible +public final class HostAndPort +implements Serializable { + private static final int NO_PORT = -1; + private final String host; + private final int port; + private final boolean hasBracketlessColons; + private static final long serialVersionUID = 0L; + + private HostAndPort(String host, int port, boolean hasBracketlessColons) { + this.host = host; + this.port = port; + this.hasBracketlessColons = hasBracketlessColons; + } + + public String getHostText() { + return this.host; + } + + public boolean hasPort() { + return this.port >= 0; + } + + public int getPort() { + Preconditions.checkState(this.hasPort()); + return this.port; + } + + public int getPortOrDefault(int defaultPort) { + return this.hasPort() ? this.port : defaultPort; + } + + public static HostAndPort fromParts(String host, int port) { + Preconditions.checkArgument(HostAndPort.isValidPort(port), "Port out of range: %s", port); + HostAndPort parsedHost = HostAndPort.fromString(host); + Preconditions.checkArgument(!parsedHost.hasPort(), "Host has a port: %s", host); + return new HostAndPort(parsedHost.host, port, parsedHost.hasBracketlessColons); + } + + public static HostAndPort fromHost(String host) { + HostAndPort parsedHost = HostAndPort.fromString(host); + Preconditions.checkArgument(!parsedHost.hasPort(), "Host has a port: %s", host); + return parsedHost; + } + + public static HostAndPort fromString(String hostPortString) { + String host; + Preconditions.checkNotNull(hostPortString); + String portString = null; + boolean hasBracketlessColons = false; + if (hostPortString.startsWith("[")) { + String[] hostAndPort = HostAndPort.getHostAndPortFromBracketedHost(hostPortString); + host = hostAndPort[0]; + portString = hostAndPort[1]; + } else { + int colonPos = hostPortString.indexOf(58); + if (colonPos >= 0 && hostPortString.indexOf(58, colonPos + 1) == -1) { + host = hostPortString.substring(0, colonPos); + portString = hostPortString.substring(colonPos + 1); + } else { + host = hostPortString; + hasBracketlessColons = colonPos >= 0; + } + } + int port = -1; + if (!Strings.isNullOrEmpty(portString)) { + Preconditions.checkArgument(!portString.startsWith("+"), "Unparseable port number: %s", hostPortString); + try { + port = Integer.parseInt(portString); + } + catch (NumberFormatException e) { + String string = String.valueOf(hostPortString); + throw new IllegalArgumentException(string.length() != 0 ? "Unparseable port number: ".concat(string) : new String("Unparseable port number: ")); + } + Preconditions.checkArgument(HostAndPort.isValidPort(port), "Port number out of range: %s", hostPortString); + } + return new HostAndPort(host, port, hasBracketlessColons); + } + + private static String[] getHostAndPortFromBracketedHost(String hostPortString) { + int colonIndex = 0; + int closeBracketIndex = 0; + Preconditions.checkArgument(hostPortString.charAt(0) == '[', "Bracketed host-port string must start with a bracket: %s", hostPortString); + colonIndex = hostPortString.indexOf(58); + closeBracketIndex = hostPortString.lastIndexOf(93); + Preconditions.checkArgument(colonIndex > -1 && closeBracketIndex > colonIndex, "Invalid bracketed host/port: %s", hostPortString); + String host = hostPortString.substring(1, closeBracketIndex); + if (closeBracketIndex + 1 == hostPortString.length()) { + return new String[]{host, ""}; + } + Preconditions.checkArgument(hostPortString.charAt(closeBracketIndex + 1) == ':', "Only a colon may follow a close bracket: %s", hostPortString); + for (int i = closeBracketIndex + 2; i < hostPortString.length(); ++i) { + Preconditions.checkArgument(Character.isDigit(hostPortString.charAt(i)), "Port must be numeric: %s", hostPortString); + } + return new String[]{host, hostPortString.substring(closeBracketIndex + 2)}; + } + + public HostAndPort withDefaultPort(int defaultPort) { + Preconditions.checkArgument(HostAndPort.isValidPort(defaultPort)); + if (this.hasPort() || this.port == defaultPort) { + return this; + } + return new HostAndPort(this.host, defaultPort, this.hasBracketlessColons); + } + + public HostAndPort requireBracketsForIPv6() { + Preconditions.checkArgument(!this.hasBracketlessColons, "Possible bracketless IPv6 literal: %s", this.host); + return this; + } + + public boolean equals(@Nullable Object other) { + if (this == other) { + return true; + } + if (other instanceof HostAndPort) { + HostAndPort that = (HostAndPort)other; + return Objects.equal(this.host, that.host) && this.port == that.port && this.hasBracketlessColons == that.hasBracketlessColons; + } + return false; + } + + public int hashCode() { + return Objects.hashCode(this.host, this.port, this.hasBracketlessColons); + } + + public String toString() { + StringBuilder builder = new StringBuilder(this.host.length() + 8); + if (this.host.indexOf(58) >= 0) { + builder.append('[').append(this.host).append(']'); + } else { + builder.append(this.host); + } + if (this.hasPort()) { + builder.append(':').append(this.port); + } + return builder.toString(); + } + + private static boolean isValidPort(int port) { + return port >= 0 && port <= 65535; + } +} diff --git a/src/com/google/common/net/HostSpecifier.java b/src/com/google/common/net/HostSpecifier.java new file mode 100644 index 0000000..7ca3e4b --- /dev/null +++ b/src/com/google/common/net/HostSpecifier.java @@ -0,0 +1,85 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.net; + +import com.google.common.annotations.Beta; +import com.google.common.base.Preconditions; +import com.google.common.net.HostAndPort; +import com.google.common.net.InetAddresses; +import com.google.common.net.InternetDomainName; +import java.net.InetAddress; +import java.text.ParseException; +import javax.annotation.Nullable; + +@Beta +public final class HostSpecifier { + private final String canonicalForm; + + private HostSpecifier(String canonicalForm) { + this.canonicalForm = canonicalForm; + } + + public static HostSpecifier fromValid(String specifier) { + HostAndPort parsedHost = HostAndPort.fromString(specifier); + Preconditions.checkArgument(!parsedHost.hasPort()); + String host = parsedHost.getHostText(); + InetAddress addr = null; + try { + addr = InetAddresses.forString(host); + } + catch (IllegalArgumentException e) { + // empty catch block + } + if (addr != null) { + return new HostSpecifier(InetAddresses.toUriString(addr)); + } + InternetDomainName domain = InternetDomainName.from(host); + if (domain.hasPublicSuffix()) { + return new HostSpecifier(domain.toString()); + } + String string = String.valueOf(host); + throw new IllegalArgumentException(string.length() != 0 ? "Domain name does not have a recognized public suffix: ".concat(string) : new String("Domain name does not have a recognized public suffix: ")); + } + + public static HostSpecifier from(String specifier) throws ParseException { + try { + return HostSpecifier.fromValid(specifier); + } + catch (IllegalArgumentException e) { + String string = String.valueOf(specifier); + ParseException parseException = new ParseException(string.length() != 0 ? "Invalid host specifier: ".concat(string) : new String("Invalid host specifier: "), 0); + parseException.initCause(e); + throw parseException; + } + } + + public static boolean isValid(String specifier) { + try { + HostSpecifier.fromValid(specifier); + return true; + } + catch (IllegalArgumentException e) { + return false; + } + } + + public boolean equals(@Nullable Object other) { + if (this == other) { + return true; + } + if (other instanceof HostSpecifier) { + HostSpecifier that = (HostSpecifier)other; + return this.canonicalForm.equals(that.canonicalForm); + } + return false; + } + + public int hashCode() { + return this.canonicalForm.hashCode(); + } + + public String toString() { + return this.canonicalForm; + } +} diff --git a/src/com/google/common/net/HttpHeaders.java b/src/com/google/common/net/HttpHeaders.java new file mode 100644 index 0000000..23d7c12 --- /dev/null +++ b/src/com/google/common/net/HttpHeaders.java @@ -0,0 +1,98 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.net; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; + +@GwtCompatible +public final class HttpHeaders { + public static final String CACHE_CONTROL = "Cache-Control"; + public static final String CONTENT_LENGTH = "Content-Length"; + public static final String CONTENT_TYPE = "Content-Type"; + public static final String DATE = "Date"; + public static final String PRAGMA = "Pragma"; + public static final String VIA = "Via"; + public static final String WARNING = "Warning"; + public static final String ACCEPT = "Accept"; + public static final String ACCEPT_CHARSET = "Accept-Charset"; + public static final String ACCEPT_ENCODING = "Accept-Encoding"; + public static final String ACCEPT_LANGUAGE = "Accept-Language"; + public static final String ACCESS_CONTROL_REQUEST_HEADERS = "Access-Control-Request-Headers"; + public static final String ACCESS_CONTROL_REQUEST_METHOD = "Access-Control-Request-Method"; + public static final String AUTHORIZATION = "Authorization"; + public static final String CONNECTION = "Connection"; + public static final String COOKIE = "Cookie"; + public static final String EXPECT = "Expect"; + public static final String FROM = "From"; + @Beta + public static final String FOLLOW_ONLY_WHEN_PRERENDER_SHOWN = "Follow-Only-When-Prerender-Shown"; + public static final String HOST = "Host"; + public static final String IF_MATCH = "If-Match"; + public static final String IF_MODIFIED_SINCE = "If-Modified-Since"; + public static final String IF_NONE_MATCH = "If-None-Match"; + public static final String IF_RANGE = "If-Range"; + public static final String IF_UNMODIFIED_SINCE = "If-Unmodified-Since"; + public static final String LAST_EVENT_ID = "Last-Event-ID"; + public static final String MAX_FORWARDS = "Max-Forwards"; + public static final String ORIGIN = "Origin"; + public static final String PROXY_AUTHORIZATION = "Proxy-Authorization"; + public static final String RANGE = "Range"; + public static final String REFERER = "Referer"; + public static final String TE = "TE"; + public static final String UPGRADE = "Upgrade"; + public static final String USER_AGENT = "User-Agent"; + public static final String ACCEPT_RANGES = "Accept-Ranges"; + public static final String ACCESS_CONTROL_ALLOW_HEADERS = "Access-Control-Allow-Headers"; + public static final String ACCESS_CONTROL_ALLOW_METHODS = "Access-Control-Allow-Methods"; + public static final String ACCESS_CONTROL_ALLOW_ORIGIN = "Access-Control-Allow-Origin"; + public static final String ACCESS_CONTROL_ALLOW_CREDENTIALS = "Access-Control-Allow-Credentials"; + public static final String ACCESS_CONTROL_EXPOSE_HEADERS = "Access-Control-Expose-Headers"; + public static final String ACCESS_CONTROL_MAX_AGE = "Access-Control-Max-Age"; + public static final String AGE = "Age"; + public static final String ALLOW = "Allow"; + public static final String CONTENT_DISPOSITION = "Content-Disposition"; + public static final String CONTENT_ENCODING = "Content-Encoding"; + public static final String CONTENT_LANGUAGE = "Content-Language"; + public static final String CONTENT_LOCATION = "Content-Location"; + public static final String CONTENT_MD5 = "Content-MD5"; + public static final String CONTENT_RANGE = "Content-Range"; + public static final String CONTENT_SECURITY_POLICY = "Content-Security-Policy"; + public static final String CONTENT_SECURITY_POLICY_REPORT_ONLY = "Content-Security-Policy-Report-Only"; + public static final String ETAG = "ETag"; + public static final String EXPIRES = "Expires"; + public static final String LAST_MODIFIED = "Last-Modified"; + public static final String LINK = "Link"; + public static final String LOCATION = "Location"; + public static final String P3P = "P3P"; + public static final String PROXY_AUTHENTICATE = "Proxy-Authenticate"; + public static final String REFRESH = "Refresh"; + public static final String RETRY_AFTER = "Retry-After"; + public static final String SERVER = "Server"; + public static final String SET_COOKIE = "Set-Cookie"; + public static final String SET_COOKIE2 = "Set-Cookie2"; + public static final String STRICT_TRANSPORT_SECURITY = "Strict-Transport-Security"; + public static final String TIMING_ALLOW_ORIGIN = "Timing-Allow-Origin"; + public static final String TRAILER = "Trailer"; + public static final String TRANSFER_ENCODING = "Transfer-Encoding"; + public static final String VARY = "Vary"; + public static final String WWW_AUTHENTICATE = "WWW-Authenticate"; + public static final String DNT = "DNT"; + public static final String X_CONTENT_TYPE_OPTIONS = "X-Content-Type-Options"; + public static final String X_DO_NOT_TRACK = "X-Do-Not-Track"; + public static final String X_FORWARDED_FOR = "X-Forwarded-For"; + public static final String X_FORWARDED_PROTO = "X-Forwarded-Proto"; + public static final String X_FRAME_OPTIONS = "X-Frame-Options"; + public static final String X_POWERED_BY = "X-Powered-By"; + @Beta + public static final String PUBLIC_KEY_PINS = "Public-Key-Pins"; + @Beta + public static final String PUBLIC_KEY_PINS_REPORT_ONLY = "Public-Key-Pins-Report-Only"; + public static final String X_REQUESTED_WITH = "X-Requested-With"; + public static final String X_USER_IP = "X-User-IP"; + public static final String X_XSS_PROTECTION = "X-XSS-Protection"; + + private HttpHeaders() { + } +} diff --git a/src/com/google/common/net/InetAddresses.java b/src/com/google/common/net/InetAddresses.java new file mode 100644 index 0000000..cf0ddbc --- /dev/null +++ b/src/com/google/common/net/InetAddresses.java @@ -0,0 +1,480 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.net; + +import com.google.common.annotations.Beta; +import com.google.common.base.MoreObjects; +import com.google.common.base.Preconditions; +import com.google.common.hash.Hashing; +import com.google.common.io.ByteStreams; +import com.google.common.primitives.Ints; +import java.net.Inet4Address; +import java.net.Inet6Address; +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.nio.ByteBuffer; +import java.util.Arrays; +import javax.annotation.Nullable; + +@Beta +public final class InetAddresses { + private static final int IPV4_PART_COUNT = 4; + private static final int IPV6_PART_COUNT = 8; + private static final Inet4Address LOOPBACK4 = (Inet4Address)InetAddresses.forString("127.0.0.1"); + private static final Inet4Address ANY4 = (Inet4Address)InetAddresses.forString("0.0.0.0"); + + private InetAddresses() { + } + + private static Inet4Address getInet4Address(byte[] bytes) { + Preconditions.checkArgument(bytes.length == 4, "Byte array has invalid length for an IPv4 address: %s != 4.", bytes.length); + return (Inet4Address)InetAddresses.bytesToInetAddress(bytes); + } + + public static InetAddress forString(String ipString) { + byte[] addr = InetAddresses.ipStringToBytes(ipString); + if (addr == null) { + throw new IllegalArgumentException(String.format("'%s' is not an IP string literal.", ipString)); + } + return InetAddresses.bytesToInetAddress(addr); + } + + public static boolean isInetAddress(String ipString) { + return InetAddresses.ipStringToBytes(ipString) != null; + } + + private static byte[] ipStringToBytes(String ipString) { + boolean hasColon = false; + boolean hasDot = false; + for (int i = 0; i < ipString.length(); ++i) { + char c = ipString.charAt(i); + if (c == '.') { + hasDot = true; + continue; + } + if (c == ':') { + if (hasDot) { + return null; + } + hasColon = true; + continue; + } + if (Character.digit(c, 16) != -1) continue; + return null; + } + if (hasColon) { + if (hasDot && (ipString = InetAddresses.convertDottedQuadToHex(ipString)) == null) { + return null; + } + return InetAddresses.textToNumericFormatV6(ipString); + } + if (hasDot) { + return InetAddresses.textToNumericFormatV4(ipString); + } + return null; + } + + private static byte[] textToNumericFormatV4(String ipString) { + String[] address = ipString.split("\\.", 5); + if (address.length != 4) { + return null; + } + byte[] bytes = new byte[4]; + try { + for (int i = 0; i < bytes.length; ++i) { + bytes[i] = InetAddresses.parseOctet(address[i]); + } + } + catch (NumberFormatException ex) { + return null; + } + return bytes; + } + + private static byte[] textToNumericFormatV6(String ipString) { + int partsLo; + int partsHi; + String[] parts = ipString.split(":", 10); + if (parts.length < 3 || parts.length > 9) { + return null; + } + int skipIndex = -1; + for (int i = 1; i < parts.length - 1; ++i) { + if (parts[i].length() != 0) continue; + if (skipIndex >= 0) { + return null; + } + skipIndex = i; + } + if (skipIndex >= 0) { + partsHi = skipIndex; + partsLo = parts.length - skipIndex - 1; + if (parts[0].length() == 0 && --partsHi != 0) { + return null; + } + if (parts[parts.length - 1].length() == 0 && --partsLo != 0) { + return null; + } + } else { + partsHi = parts.length; + partsLo = 0; + } + int partsSkipped = 8 - (partsHi + partsLo); + if (!(skipIndex < 0 ? partsSkipped == 0 : partsSkipped >= 1)) { + return null; + } + ByteBuffer rawBytes = ByteBuffer.allocate(16); + try { + int i; + for (i = 0; i < partsHi; ++i) { + rawBytes.putShort(InetAddresses.parseHextet(parts[i])); + } + for (i = 0; i < partsSkipped; ++i) { + rawBytes.putShort((short)0); + } + for (i = partsLo; i > 0; --i) { + rawBytes.putShort(InetAddresses.parseHextet(parts[parts.length - i])); + } + } + catch (NumberFormatException ex) { + return null; + } + return rawBytes.array(); + } + + private static String convertDottedQuadToHex(String ipString) { + int lastColon = ipString.lastIndexOf(58); + String initialPart = ipString.substring(0, lastColon + 1); + String dottedQuad = ipString.substring(lastColon + 1); + byte[] quad = InetAddresses.textToNumericFormatV4(dottedQuad); + if (quad == null) { + return null; + } + String penultimate = Integer.toHexString((quad[0] & 0xFF) << 8 | quad[1] & 0xFF); + String ultimate = Integer.toHexString((quad[2] & 0xFF) << 8 | quad[3] & 0xFF); + String string = String.valueOf(String.valueOf(initialPart)); + String string2 = String.valueOf(String.valueOf(penultimate)); + String string3 = String.valueOf(String.valueOf(ultimate)); + return new StringBuilder(1 + string.length() + string2.length() + string3.length()).append(string).append(string2).append(":").append(string3).toString(); + } + + private static byte parseOctet(String ipPart) { + int octet = Integer.parseInt(ipPart); + if (octet > 255 || ipPart.startsWith("0") && ipPart.length() > 1) { + throw new NumberFormatException(); + } + return (byte)octet; + } + + private static short parseHextet(String ipPart) { + int hextet = Integer.parseInt(ipPart, 16); + if (hextet > 65535) { + throw new NumberFormatException(); + } + return (short)hextet; + } + + private static InetAddress bytesToInetAddress(byte[] addr) { + try { + return InetAddress.getByAddress(addr); + } + catch (UnknownHostException e) { + throw new AssertionError((Object)e); + } + } + + public static String toAddrString(InetAddress ip) { + Preconditions.checkNotNull(ip); + if (ip instanceof Inet4Address) { + return ip.getHostAddress(); + } + Preconditions.checkArgument(ip instanceof Inet6Address); + byte[] bytes = ip.getAddress(); + int[] hextets = new int[8]; + for (int i = 0; i < hextets.length; ++i) { + hextets[i] = Ints.fromBytes((byte)0, (byte)0, bytes[2 * i], bytes[2 * i + 1]); + } + InetAddresses.compressLongestRunOfZeroes(hextets); + return InetAddresses.hextetsToIPv6String(hextets); + } + + private static void compressLongestRunOfZeroes(int[] hextets) { + int bestRunStart = -1; + int bestRunLength = -1; + int runStart = -1; + for (int i = 0; i < hextets.length + 1; ++i) { + if (i < hextets.length && hextets[i] == 0) { + if (runStart >= 0) continue; + runStart = i; + continue; + } + if (runStart < 0) continue; + int runLength = i - runStart; + if (runLength > bestRunLength) { + bestRunStart = runStart; + bestRunLength = runLength; + } + runStart = -1; + } + if (bestRunLength >= 2) { + Arrays.fill(hextets, bestRunStart, bestRunStart + bestRunLength, -1); + } + } + + private static String hextetsToIPv6String(int[] hextets) { + StringBuilder buf = new StringBuilder(39); + boolean lastWasNumber = false; + for (int i = 0; i < hextets.length; ++i) { + boolean thisIsNumber; + boolean bl = thisIsNumber = hextets[i] >= 0; + if (thisIsNumber) { + if (lastWasNumber) { + buf.append(':'); + } + buf.append(Integer.toHexString(hextets[i])); + } else if (i == 0 || lastWasNumber) { + buf.append("::"); + } + lastWasNumber = thisIsNumber; + } + return buf.toString(); + } + + public static String toUriString(InetAddress ip) { + if (ip instanceof Inet6Address) { + String string = String.valueOf(String.valueOf(InetAddresses.toAddrString(ip))); + return new StringBuilder(2 + string.length()).append("[").append(string).append("]").toString(); + } + return InetAddresses.toAddrString(ip); + } + + public static InetAddress forUriString(String hostAddr) { + int expectBytes; + String ipString; + Preconditions.checkNotNull(hostAddr); + if (hostAddr.startsWith("[") && hostAddr.endsWith("]")) { + ipString = hostAddr.substring(1, hostAddr.length() - 1); + expectBytes = 16; + } else { + ipString = hostAddr; + expectBytes = 4; + } + byte[] addr = InetAddresses.ipStringToBytes(ipString); + if (addr == null || addr.length != expectBytes) { + throw new IllegalArgumentException(String.format("Not a valid URI IP literal: '%s'", hostAddr)); + } + return InetAddresses.bytesToInetAddress(addr); + } + + public static boolean isUriInetAddress(String ipString) { + try { + InetAddresses.forUriString(ipString); + return true; + } + catch (IllegalArgumentException e) { + return false; + } + } + + public static boolean isCompatIPv4Address(Inet6Address ip) { + if (!ip.isIPv4CompatibleAddress()) { + return false; + } + byte[] bytes = ip.getAddress(); + return bytes[12] != 0 || bytes[13] != 0 || bytes[14] != 0 || bytes[15] != 0 && bytes[15] != 1; + } + + public static Inet4Address getCompatIPv4Address(Inet6Address ip) { + Preconditions.checkArgument(InetAddresses.isCompatIPv4Address(ip), "Address '%s' is not IPv4-compatible.", InetAddresses.toAddrString(ip)); + return InetAddresses.getInet4Address(Arrays.copyOfRange(ip.getAddress(), 12, 16)); + } + + public static boolean is6to4Address(Inet6Address ip) { + byte[] bytes = ip.getAddress(); + return bytes[0] == 32 && bytes[1] == 2; + } + + public static Inet4Address get6to4IPv4Address(Inet6Address ip) { + Preconditions.checkArgument(InetAddresses.is6to4Address(ip), "Address '%s' is not a 6to4 address.", InetAddresses.toAddrString(ip)); + return InetAddresses.getInet4Address(Arrays.copyOfRange(ip.getAddress(), 2, 6)); + } + + public static boolean isTeredoAddress(Inet6Address ip) { + byte[] bytes = ip.getAddress(); + return bytes[0] == 32 && bytes[1] == 1 && bytes[2] == 0 && bytes[3] == 0; + } + + public static TeredoInfo getTeredoInfo(Inet6Address ip) { + Preconditions.checkArgument(InetAddresses.isTeredoAddress(ip), "Address '%s' is not a Teredo address.", InetAddresses.toAddrString(ip)); + byte[] bytes = ip.getAddress(); + Inet4Address server = InetAddresses.getInet4Address(Arrays.copyOfRange(bytes, 4, 8)); + int flags = ByteStreams.newDataInput(bytes, 8).readShort() & 0xFFFF; + int port = ~ByteStreams.newDataInput(bytes, 10).readShort() & 0xFFFF; + byte[] clientBytes = Arrays.copyOfRange(bytes, 12, 16); + for (int i = 0; i < clientBytes.length; ++i) { + clientBytes[i] = ~clientBytes[i]; + } + Inet4Address client = InetAddresses.getInet4Address(clientBytes); + return new TeredoInfo(server, client, port, flags); + } + + public static boolean isIsatapAddress(Inet6Address ip) { + if (InetAddresses.isTeredoAddress(ip)) { + return false; + } + byte[] bytes = ip.getAddress(); + if ((bytes[8] | 3) != 3) { + return false; + } + return bytes[9] == 0 && bytes[10] == 94 && bytes[11] == -2; + } + + public static Inet4Address getIsatapIPv4Address(Inet6Address ip) { + Preconditions.checkArgument(InetAddresses.isIsatapAddress(ip), "Address '%s' is not an ISATAP address.", InetAddresses.toAddrString(ip)); + return InetAddresses.getInet4Address(Arrays.copyOfRange(ip.getAddress(), 12, 16)); + } + + public static boolean hasEmbeddedIPv4ClientAddress(Inet6Address ip) { + return InetAddresses.isCompatIPv4Address(ip) || InetAddresses.is6to4Address(ip) || InetAddresses.isTeredoAddress(ip); + } + + public static Inet4Address getEmbeddedIPv4ClientAddress(Inet6Address ip) { + if (InetAddresses.isCompatIPv4Address(ip)) { + return InetAddresses.getCompatIPv4Address(ip); + } + if (InetAddresses.is6to4Address(ip)) { + return InetAddresses.get6to4IPv4Address(ip); + } + if (InetAddresses.isTeredoAddress(ip)) { + return InetAddresses.getTeredoInfo(ip).getClient(); + } + throw new IllegalArgumentException(String.format("'%s' has no embedded IPv4 address.", InetAddresses.toAddrString(ip))); + } + + public static boolean isMappedIPv4Address(String ipString) { + byte[] bytes = InetAddresses.ipStringToBytes(ipString); + if (bytes != null && bytes.length == 16) { + int i; + for (i = 0; i < 10; ++i) { + if (bytes[i] == 0) continue; + return false; + } + for (i = 10; i < 12; ++i) { + if (bytes[i] == -1) continue; + return false; + } + return true; + } + return false; + } + + public static Inet4Address getCoercedIPv4Address(InetAddress ip) { + if (ip instanceof Inet4Address) { + return (Inet4Address)ip; + } + byte[] bytes = ip.getAddress(); + boolean leadingBytesOfZero = true; + for (int i = 0; i < 15; ++i) { + if (bytes[i] == 0) continue; + leadingBytesOfZero = false; + break; + } + if (leadingBytesOfZero && bytes[15] == 1) { + return LOOPBACK4; + } + if (leadingBytesOfZero && bytes[15] == 0) { + return ANY4; + } + Inet6Address ip6 = (Inet6Address)ip; + long addressAsLong = 0L; + addressAsLong = InetAddresses.hasEmbeddedIPv4ClientAddress(ip6) ? (long)InetAddresses.getEmbeddedIPv4ClientAddress(ip6).hashCode() : ByteBuffer.wrap(ip6.getAddress(), 0, 8).getLong(); + int coercedHash = Hashing.murmur3_32().hashLong(addressAsLong).asInt(); + if ((coercedHash |= 0xE0000000) == -1) { + coercedHash = -2; + } + return InetAddresses.getInet4Address(Ints.toByteArray(coercedHash)); + } + + public static int coerceToInteger(InetAddress ip) { + return ByteStreams.newDataInput(InetAddresses.getCoercedIPv4Address(ip).getAddress()).readInt(); + } + + public static Inet4Address fromInteger(int address) { + return InetAddresses.getInet4Address(Ints.toByteArray(address)); + } + + public static InetAddress fromLittleEndianByteArray(byte[] addr) throws UnknownHostException { + byte[] reversed = new byte[addr.length]; + for (int i = 0; i < addr.length; ++i) { + reversed[i] = addr[addr.length - i - 1]; + } + return InetAddress.getByAddress(reversed); + } + + public static InetAddress decrement(InetAddress address) { + int i; + byte[] addr = address.getAddress(); + for (i = addr.length - 1; i >= 0 && addr[i] == 0; --i) { + addr[i] = -1; + } + Preconditions.checkArgument(i >= 0, "Decrementing %s would wrap.", address); + int n = i; + addr[n] = (byte)(addr[n] - 1); + return InetAddresses.bytesToInetAddress(addr); + } + + public static InetAddress increment(InetAddress address) { + int i; + byte[] addr = address.getAddress(); + for (i = addr.length - 1; i >= 0 && addr[i] == -1; --i) { + addr[i] = 0; + } + Preconditions.checkArgument(i >= 0, "Incrementing %s would wrap.", address); + int n = i; + addr[n] = (byte)(addr[n] + 1); + return InetAddresses.bytesToInetAddress(addr); + } + + public static boolean isMaximum(InetAddress address) { + byte[] addr = address.getAddress(); + for (int i = 0; i < addr.length; ++i) { + if (addr[i] == -1) continue; + return false; + } + return true; + } + + @Beta + public static final class TeredoInfo { + private final Inet4Address server; + private final Inet4Address client; + private final int port; + private final int flags; + + public TeredoInfo(@Nullable Inet4Address server, @Nullable Inet4Address client, int port, int flags) { + Preconditions.checkArgument(port >= 0 && port <= 65535, "port '%s' is out of range (0 <= port <= 0xffff)", port); + Preconditions.checkArgument(flags >= 0 && flags <= 65535, "flags '%s' is out of range (0 <= flags <= 0xffff)", flags); + this.server = MoreObjects.firstNonNull(server, ANY4); + this.client = MoreObjects.firstNonNull(client, ANY4); + this.port = port; + this.flags = flags; + } + + public Inet4Address getServer() { + return this.server; + } + + public Inet4Address getClient() { + return this.client; + } + + public int getPort() { + return this.port; + } + + public int getFlags() { + return this.flags; + } + } +} diff --git a/src/com/google/common/net/InternetDomainName.java b/src/com/google/common/net/InternetDomainName.java new file mode 100644 index 0000000..1f8cd28 --- /dev/null +++ b/src/com/google/common/net/InternetDomainName.java @@ -0,0 +1,179 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.net; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Ascii; +import com.google.common.base.CharMatcher; +import com.google.common.base.Joiner; +import com.google.common.base.Preconditions; +import com.google.common.base.Splitter; +import com.google.common.collect.ImmutableList; +import com.google.thirdparty.publicsuffix.PublicSuffixPatterns; +import java.util.List; +import javax.annotation.Nullable; + +@Beta +@GwtCompatible +public final class InternetDomainName { + private static final CharMatcher DOTS_MATCHER = CharMatcher.anyOf(".\u3002\uff0e\uff61"); + private static final Splitter DOT_SPLITTER = Splitter.on('.'); + private static final Joiner DOT_JOINER = Joiner.on('.'); + private static final int NO_PUBLIC_SUFFIX_FOUND = -1; + private static final String DOT_REGEX = "\\."; + private static final int MAX_PARTS = 127; + private static final int MAX_LENGTH = 253; + private static final int MAX_DOMAIN_PART_LENGTH = 63; + private final String name; + private final ImmutableList parts; + private final int publicSuffixIndex; + private static final CharMatcher DASH_MATCHER = CharMatcher.anyOf("-_"); + private static final CharMatcher PART_CHAR_MATCHER = CharMatcher.JAVA_LETTER_OR_DIGIT.or(DASH_MATCHER); + + InternetDomainName(String name) { + name = Ascii.toLowerCase(DOTS_MATCHER.replaceFrom((CharSequence)name, '.')); + if (name.endsWith(".")) { + name = name.substring(0, name.length() - 1); + } + Preconditions.checkArgument(name.length() <= 253, "Domain name too long: '%s':", name); + this.name = name; + this.parts = ImmutableList.copyOf(DOT_SPLITTER.split(name)); + Preconditions.checkArgument(this.parts.size() <= 127, "Domain has too many parts: '%s'", name); + Preconditions.checkArgument(InternetDomainName.validateSyntax(this.parts), "Not a valid domain name: '%s'", name); + this.publicSuffixIndex = this.findPublicSuffix(); + } + + private int findPublicSuffix() { + int partsSize = this.parts.size(); + for (int i = 0; i < partsSize; ++i) { + String ancestorName = DOT_JOINER.join(this.parts.subList(i, partsSize)); + if (PublicSuffixPatterns.EXACT.containsKey(ancestorName)) { + return i; + } + if (PublicSuffixPatterns.EXCLUDED.containsKey(ancestorName)) { + return i + 1; + } + if (!InternetDomainName.matchesWildcardPublicSuffix(ancestorName)) continue; + return i; + } + return -1; + } + + public static InternetDomainName from(String domain) { + return new InternetDomainName(Preconditions.checkNotNull(domain)); + } + + private static boolean validateSyntax(List parts) { + int lastIndex = parts.size() - 1; + if (!InternetDomainName.validatePart(parts.get(lastIndex), true)) { + return false; + } + for (int i = 0; i < lastIndex; ++i) { + String part = parts.get(i); + if (InternetDomainName.validatePart(part, false)) continue; + return false; + } + return true; + } + + private static boolean validatePart(String part, boolean isFinalPart) { + if (part.length() < 1 || part.length() > 63) { + return false; + } + String asciiChars = CharMatcher.ASCII.retainFrom(part); + if (!PART_CHAR_MATCHER.matchesAllOf(asciiChars)) { + return false; + } + if (DASH_MATCHER.matches(part.charAt(0)) || DASH_MATCHER.matches(part.charAt(part.length() - 1))) { + return false; + } + return !isFinalPart || !CharMatcher.DIGIT.matches(part.charAt(0)); + } + + public ImmutableList parts() { + return this.parts; + } + + public boolean isPublicSuffix() { + return this.publicSuffixIndex == 0; + } + + public boolean hasPublicSuffix() { + return this.publicSuffixIndex != -1; + } + + public InternetDomainName publicSuffix() { + return this.hasPublicSuffix() ? this.ancestor(this.publicSuffixIndex) : null; + } + + public boolean isUnderPublicSuffix() { + return this.publicSuffixIndex > 0; + } + + public boolean isTopPrivateDomain() { + return this.publicSuffixIndex == 1; + } + + public InternetDomainName topPrivateDomain() { + if (this.isTopPrivateDomain()) { + return this; + } + Preconditions.checkState(this.isUnderPublicSuffix(), "Not under a public suffix: %s", this.name); + return this.ancestor(this.publicSuffixIndex - 1); + } + + public boolean hasParent() { + return this.parts.size() > 1; + } + + public InternetDomainName parent() { + Preconditions.checkState(this.hasParent(), "Domain '%s' has no parent", this.name); + return this.ancestor(1); + } + + private InternetDomainName ancestor(int levels) { + return InternetDomainName.from(DOT_JOINER.join(this.parts.subList(levels, this.parts.size()))); + } + + public InternetDomainName child(String leftParts) { + String string = String.valueOf(String.valueOf(Preconditions.checkNotNull(leftParts))); + String string2 = String.valueOf(String.valueOf(this.name)); + return InternetDomainName.from(new StringBuilder(1 + string.length() + string2.length()).append(string).append(".").append(string2).toString()); + } + + public static boolean isValid(String name) { + try { + InternetDomainName.from(name); + return true; + } + catch (IllegalArgumentException e) { + return false; + } + } + + private static boolean matchesWildcardPublicSuffix(String domain) { + String[] pieces = domain.split(DOT_REGEX, 2); + return pieces.length == 2 && PublicSuffixPatterns.UNDER.containsKey(pieces[1]); + } + + public String toString() { + return this.name; + } + + public boolean equals(@Nullable Object object) { + if (object == this) { + return true; + } + if (object instanceof InternetDomainName) { + InternetDomainName that = (InternetDomainName)object; + return this.name.equals(that.name); + } + return false; + } + + public int hashCode() { + return this.name.hashCode(); + } +} diff --git a/src/com/google/common/net/MediaType.java b/src/com/google/common/net/MediaType.java new file mode 100644 index 0000000..d010234 --- /dev/null +++ b/src/com/google/common/net/MediaType.java @@ -0,0 +1,398 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.net; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Ascii; +import com.google.common.base.CharMatcher; +import com.google.common.base.Charsets; +import com.google.common.base.Function; +import com.google.common.base.Joiner; +import com.google.common.base.MoreObjects; +import com.google.common.base.Objects; +import com.google.common.base.Optional; +import com.google.common.base.Preconditions; +import com.google.common.collect.ImmutableListMultimap; +import com.google.common.collect.ImmutableMultiset; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Iterables; +import com.google.common.collect.ListMultimap; +import com.google.common.collect.Maps; +import com.google.common.collect.Multimap; +import com.google.common.collect.Multimaps; +import java.nio.charset.Charset; +import java.util.AbstractCollection; +import java.util.Collection; +import java.util.Map; +import javax.annotation.Nullable; +import javax.annotation.concurrent.Immutable; + +@Beta +@GwtCompatible +@Immutable +public final class MediaType { + private static final String CHARSET_ATTRIBUTE = "charset"; + private static final ImmutableListMultimap UTF_8_CONSTANT_PARAMETERS = ImmutableListMultimap.of("charset", Ascii.toLowerCase(Charsets.UTF_8.name())); + private static final CharMatcher TOKEN_MATCHER = CharMatcher.ASCII.and(CharMatcher.JAVA_ISO_CONTROL.negate()).and(CharMatcher.isNot(' ')).and(CharMatcher.noneOf("()<>@,;:\\\"/[]?=")); + private static final CharMatcher QUOTED_TEXT_MATCHER = CharMatcher.ASCII.and(CharMatcher.noneOf("\"\\\r")); + private static final CharMatcher LINEAR_WHITE_SPACE = CharMatcher.anyOf(" \t\r\n"); + private static final String APPLICATION_TYPE = "application"; + private static final String AUDIO_TYPE = "audio"; + private static final String IMAGE_TYPE = "image"; + private static final String TEXT_TYPE = "text"; + private static final String VIDEO_TYPE = "video"; + private static final String WILDCARD = "*"; + private static final Map KNOWN_TYPES = Maps.newHashMap(); + public static final MediaType ANY_TYPE = MediaType.createConstant("*", "*"); + public static final MediaType ANY_TEXT_TYPE = MediaType.createConstant("text", "*"); + public static final MediaType ANY_IMAGE_TYPE = MediaType.createConstant("image", "*"); + public static final MediaType ANY_AUDIO_TYPE = MediaType.createConstant("audio", "*"); + public static final MediaType ANY_VIDEO_TYPE = MediaType.createConstant("video", "*"); + public static final MediaType ANY_APPLICATION_TYPE = MediaType.createConstant("application", "*"); + public static final MediaType CACHE_MANIFEST_UTF_8 = MediaType.createConstantUtf8("text", "cache-manifest"); + public static final MediaType CSS_UTF_8 = MediaType.createConstantUtf8("text", "css"); + public static final MediaType CSV_UTF_8 = MediaType.createConstantUtf8("text", "csv"); + public static final MediaType HTML_UTF_8 = MediaType.createConstantUtf8("text", "html"); + public static final MediaType I_CALENDAR_UTF_8 = MediaType.createConstantUtf8("text", "calendar"); + public static final MediaType PLAIN_TEXT_UTF_8 = MediaType.createConstantUtf8("text", "plain"); + public static final MediaType TEXT_JAVASCRIPT_UTF_8 = MediaType.createConstantUtf8("text", "javascript"); + public static final MediaType TSV_UTF_8 = MediaType.createConstantUtf8("text", "tab-separated-values"); + public static final MediaType VCARD_UTF_8 = MediaType.createConstantUtf8("text", "vcard"); + public static final MediaType WML_UTF_8 = MediaType.createConstantUtf8("text", "vnd.wap.wml"); + public static final MediaType XML_UTF_8 = MediaType.createConstantUtf8("text", "xml"); + public static final MediaType BMP = MediaType.createConstant("image", "bmp"); + public static final MediaType CRW = MediaType.createConstant("image", "x-canon-crw"); + public static final MediaType GIF = MediaType.createConstant("image", "gif"); + public static final MediaType ICO = MediaType.createConstant("image", "vnd.microsoft.icon"); + public static final MediaType JPEG = MediaType.createConstant("image", "jpeg"); + public static final MediaType PNG = MediaType.createConstant("image", "png"); + public static final MediaType PSD = MediaType.createConstant("image", "vnd.adobe.photoshop"); + public static final MediaType SVG_UTF_8 = MediaType.createConstantUtf8("image", "svg+xml"); + public static final MediaType TIFF = MediaType.createConstant("image", "tiff"); + public static final MediaType WEBP = MediaType.createConstant("image", "webp"); + public static final MediaType MP4_AUDIO = MediaType.createConstant("audio", "mp4"); + public static final MediaType MPEG_AUDIO = MediaType.createConstant("audio", "mpeg"); + public static final MediaType OGG_AUDIO = MediaType.createConstant("audio", "ogg"); + public static final MediaType WEBM_AUDIO = MediaType.createConstant("audio", "webm"); + public static final MediaType MP4_VIDEO = MediaType.createConstant("video", "mp4"); + public static final MediaType MPEG_VIDEO = MediaType.createConstant("video", "mpeg"); + public static final MediaType OGG_VIDEO = MediaType.createConstant("video", "ogg"); + public static final MediaType QUICKTIME = MediaType.createConstant("video", "quicktime"); + public static final MediaType WEBM_VIDEO = MediaType.createConstant("video", "webm"); + public static final MediaType WMV = MediaType.createConstant("video", "x-ms-wmv"); + public static final MediaType APPLICATION_XML_UTF_8 = MediaType.createConstantUtf8("application", "xml"); + public static final MediaType ATOM_UTF_8 = MediaType.createConstantUtf8("application", "atom+xml"); + public static final MediaType BZIP2 = MediaType.createConstant("application", "x-bzip2"); + public static final MediaType EOT = MediaType.createConstant("application", "vnd.ms-fontobject"); + public static final MediaType EPUB = MediaType.createConstant("application", "epub+zip"); + public static final MediaType FORM_DATA = MediaType.createConstant("application", "x-www-form-urlencoded"); + public static final MediaType KEY_ARCHIVE = MediaType.createConstant("application", "pkcs12"); + public static final MediaType APPLICATION_BINARY = MediaType.createConstant("application", "binary"); + public static final MediaType GZIP = MediaType.createConstant("application", "x-gzip"); + public static final MediaType JAVASCRIPT_UTF_8 = MediaType.createConstantUtf8("application", "javascript"); + public static final MediaType JSON_UTF_8 = MediaType.createConstantUtf8("application", "json"); + public static final MediaType KML = MediaType.createConstant("application", "vnd.google-earth.kml+xml"); + public static final MediaType KMZ = MediaType.createConstant("application", "vnd.google-earth.kmz"); + public static final MediaType MBOX = MediaType.createConstant("application", "mbox"); + public static final MediaType APPLE_MOBILE_CONFIG = MediaType.createConstant("application", "x-apple-aspen-config"); + public static final MediaType MICROSOFT_EXCEL = MediaType.createConstant("application", "vnd.ms-excel"); + public static final MediaType MICROSOFT_POWERPOINT = MediaType.createConstant("application", "vnd.ms-powerpoint"); + public static final MediaType MICROSOFT_WORD = MediaType.createConstant("application", "msword"); + public static final MediaType OCTET_STREAM = MediaType.createConstant("application", "octet-stream"); + public static final MediaType OGG_CONTAINER = MediaType.createConstant("application", "ogg"); + public static final MediaType OOXML_DOCUMENT = MediaType.createConstant("application", "vnd.openxmlformats-officedocument.wordprocessingml.document"); + public static final MediaType OOXML_PRESENTATION = MediaType.createConstant("application", "vnd.openxmlformats-officedocument.presentationml.presentation"); + public static final MediaType OOXML_SHEET = MediaType.createConstant("application", "vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + public static final MediaType OPENDOCUMENT_GRAPHICS = MediaType.createConstant("application", "vnd.oasis.opendocument.graphics"); + public static final MediaType OPENDOCUMENT_PRESENTATION = MediaType.createConstant("application", "vnd.oasis.opendocument.presentation"); + public static final MediaType OPENDOCUMENT_SPREADSHEET = MediaType.createConstant("application", "vnd.oasis.opendocument.spreadsheet"); + public static final MediaType OPENDOCUMENT_TEXT = MediaType.createConstant("application", "vnd.oasis.opendocument.text"); + public static final MediaType PDF = MediaType.createConstant("application", "pdf"); + public static final MediaType POSTSCRIPT = MediaType.createConstant("application", "postscript"); + public static final MediaType PROTOBUF = MediaType.createConstant("application", "protobuf"); + public static final MediaType RDF_XML_UTF_8 = MediaType.createConstantUtf8("application", "rdf+xml"); + public static final MediaType RTF_UTF_8 = MediaType.createConstantUtf8("application", "rtf"); + public static final MediaType SFNT = MediaType.createConstant("application", "font-sfnt"); + public static final MediaType SHOCKWAVE_FLASH = MediaType.createConstant("application", "x-shockwave-flash"); + public static final MediaType SKETCHUP = MediaType.createConstant("application", "vnd.sketchup.skp"); + public static final MediaType TAR = MediaType.createConstant("application", "x-tar"); + public static final MediaType WOFF = MediaType.createConstant("application", "font-woff"); + public static final MediaType XHTML_UTF_8 = MediaType.createConstantUtf8("application", "xhtml+xml"); + public static final MediaType XRD_UTF_8 = MediaType.createConstantUtf8("application", "xrd+xml"); + public static final MediaType ZIP = MediaType.createConstant("application", "zip"); + private final String type; + private final String subtype; + private final ImmutableListMultimap parameters; + private static final Joiner.MapJoiner PARAMETER_JOINER = Joiner.on("; ").withKeyValueSeparator("="); + + private static MediaType createConstant(String type, String subtype) { + return MediaType.addKnownType(new MediaType(type, subtype, ImmutableListMultimap.of())); + } + + private static MediaType createConstantUtf8(String type, String subtype) { + return MediaType.addKnownType(new MediaType(type, subtype, UTF_8_CONSTANT_PARAMETERS)); + } + + private static MediaType addKnownType(MediaType mediaType) { + KNOWN_TYPES.put(mediaType, mediaType); + return mediaType; + } + + private MediaType(String type, String subtype, ImmutableListMultimap parameters) { + this.type = type; + this.subtype = subtype; + this.parameters = parameters; + } + + public String type() { + return this.type; + } + + public String subtype() { + return this.subtype; + } + + public ImmutableListMultimap parameters() { + return this.parameters; + } + + private Map> parametersAsMap() { + return Maps.transformValues(this.parameters.asMap(), new Function, ImmutableMultiset>(){ + + @Override + public ImmutableMultiset apply(Collection input) { + return ImmutableMultiset.copyOf(input); + } + }); + } + + public Optional charset() { + ImmutableSet charsetValues = ImmutableSet.copyOf(this.parameters.get((Object)CHARSET_ATTRIBUTE)); + switch (charsetValues.size()) { + case 0: { + return Optional.absent(); + } + case 1: { + return Optional.of(Charset.forName((String)Iterables.getOnlyElement(charsetValues))); + } + } + String string = String.valueOf(String.valueOf(charsetValues)); + throw new IllegalStateException(new StringBuilder(33 + string.length()).append("Multiple charset values defined: ").append(string).toString()); + } + + public MediaType withoutParameters() { + return this.parameters.isEmpty() ? this : MediaType.create(this.type, this.subtype); + } + + public MediaType withParameters(Multimap parameters) { + return MediaType.create(this.type, this.subtype, parameters); + } + + public MediaType withParameter(String attribute, String value) { + Preconditions.checkNotNull(attribute); + Preconditions.checkNotNull(value); + String normalizedAttribute = MediaType.normalizeToken(attribute); + ImmutableListMultimap.Builder builder = ImmutableListMultimap.builder(); + for (Map.Entry entry : this.parameters.entries()) { + String key = (String)entry.getKey(); + if (normalizedAttribute.equals(key)) continue; + builder.put(key, entry.getValue()); + } + builder.put(normalizedAttribute, MediaType.normalizeParameterValue(normalizedAttribute, value)); + MediaType mediaType = new MediaType(this.type, this.subtype, (ImmutableListMultimap)builder.build()); + return MoreObjects.firstNonNull(KNOWN_TYPES.get(mediaType), mediaType); + } + + public MediaType withCharset(Charset charset) { + Preconditions.checkNotNull(charset); + return this.withParameter(CHARSET_ATTRIBUTE, charset.name()); + } + + public boolean hasWildcard() { + return WILDCARD.equals(this.type) || WILDCARD.equals(this.subtype); + } + + public boolean is(MediaType mediaTypeRange) { + return !(!mediaTypeRange.type.equals(WILDCARD) && !mediaTypeRange.type.equals(this.type) || !mediaTypeRange.subtype.equals(WILDCARD) && !mediaTypeRange.subtype.equals(this.subtype) || !((AbstractCollection)this.parameters.entries()).containsAll(mediaTypeRange.parameters.entries())); + } + + public static MediaType create(String type, String subtype) { + return MediaType.create(type, subtype, ImmutableListMultimap.of()); + } + + static MediaType createApplicationType(String subtype) { + return MediaType.create(APPLICATION_TYPE, subtype); + } + + static MediaType createAudioType(String subtype) { + return MediaType.create(AUDIO_TYPE, subtype); + } + + static MediaType createImageType(String subtype) { + return MediaType.create(IMAGE_TYPE, subtype); + } + + static MediaType createTextType(String subtype) { + return MediaType.create(TEXT_TYPE, subtype); + } + + static MediaType createVideoType(String subtype) { + return MediaType.create(VIDEO_TYPE, subtype); + } + + private static MediaType create(String type, String subtype, Multimap parameters) { + Preconditions.checkNotNull(type); + Preconditions.checkNotNull(subtype); + Preconditions.checkNotNull(parameters); + String normalizedType = MediaType.normalizeToken(type); + String normalizedSubtype = MediaType.normalizeToken(subtype); + Preconditions.checkArgument(!WILDCARD.equals(normalizedType) || WILDCARD.equals(normalizedSubtype), "A wildcard type cannot be used with a non-wildcard subtype"); + ImmutableListMultimap.Builder builder = ImmutableListMultimap.builder(); + for (Map.Entry entry : parameters.entries()) { + String attribute = MediaType.normalizeToken(entry.getKey()); + builder.put(attribute, MediaType.normalizeParameterValue(attribute, entry.getValue())); + } + MediaType mediaType = new MediaType(normalizedType, normalizedSubtype, (ImmutableListMultimap)builder.build()); + return MoreObjects.firstNonNull(KNOWN_TYPES.get(mediaType), mediaType); + } + + private static String normalizeToken(String token) { + Preconditions.checkArgument(TOKEN_MATCHER.matchesAllOf(token)); + return Ascii.toLowerCase(token); + } + + private static String normalizeParameterValue(String attribute, String value) { + return CHARSET_ATTRIBUTE.equals(attribute) ? Ascii.toLowerCase(value) : value; + } + + public static MediaType parse(String input) { + Preconditions.checkNotNull(input); + Tokenizer tokenizer = new Tokenizer(input); + try { + String type = tokenizer.consumeToken(TOKEN_MATCHER); + tokenizer.consumeCharacter('/'); + String subtype = tokenizer.consumeToken(TOKEN_MATCHER); + ImmutableListMultimap.Builder parameters = ImmutableListMultimap.builder(); + while (tokenizer.hasMore()) { + String value; + tokenizer.consumeCharacter(';'); + tokenizer.consumeTokenIfPresent(LINEAR_WHITE_SPACE); + String attribute = tokenizer.consumeToken(TOKEN_MATCHER); + tokenizer.consumeCharacter('='); + if ('\"' == tokenizer.previewChar()) { + tokenizer.consumeCharacter('\"'); + StringBuilder valueBuilder = new StringBuilder(); + while ('\"' != tokenizer.previewChar()) { + if ('\\' == tokenizer.previewChar()) { + tokenizer.consumeCharacter('\\'); + valueBuilder.append(tokenizer.consumeCharacter(CharMatcher.ASCII)); + continue; + } + valueBuilder.append(tokenizer.consumeToken(QUOTED_TEXT_MATCHER)); + } + value = valueBuilder.toString(); + tokenizer.consumeCharacter('\"'); + } else { + value = tokenizer.consumeToken(TOKEN_MATCHER); + } + parameters.put(attribute, value); + } + return MediaType.create(type, subtype, parameters.build()); + } + catch (IllegalStateException e) { + String string = String.valueOf(String.valueOf(input)); + throw new IllegalArgumentException(new StringBuilder(18 + string.length()).append("Could not parse '").append(string).append("'").toString(), e); + } + } + + public boolean equals(@Nullable Object obj) { + if (obj == this) { + return true; + } + if (obj instanceof MediaType) { + MediaType that = (MediaType)obj; + return this.type.equals(that.type) && this.subtype.equals(that.subtype) && this.parametersAsMap().equals(that.parametersAsMap()); + } + return false; + } + + public int hashCode() { + return Objects.hashCode(this.type, this.subtype, this.parametersAsMap()); + } + + public String toString() { + StringBuilder builder = new StringBuilder().append(this.type).append('/').append(this.subtype); + if (!this.parameters.isEmpty()) { + builder.append("; "); + ListMultimap quotedParameters = Multimaps.transformValues(this.parameters, new Function(){ + + @Override + public String apply(String value) { + return TOKEN_MATCHER.matchesAllOf(value) ? value : MediaType.escapeAndQuote(value); + } + }); + PARAMETER_JOINER.appendTo(builder, (Iterable>)quotedParameters.entries()); + } + return builder.toString(); + } + + private static String escapeAndQuote(String value) { + StringBuilder escaped = new StringBuilder(value.length() + 16).append('\"'); + for (char ch : value.toCharArray()) { + if (ch == '\r' || ch == '\\' || ch == '\"') { + escaped.append('\\'); + } + escaped.append(ch); + } + return escaped.append('\"').toString(); + } + + private static final class Tokenizer { + final String input; + int position = 0; + + Tokenizer(String input) { + this.input = input; + } + + String consumeTokenIfPresent(CharMatcher matcher) { + Preconditions.checkState(this.hasMore()); + int startPosition = this.position; + this.position = matcher.negate().indexIn(this.input, startPosition); + return this.hasMore() ? this.input.substring(startPosition, this.position) : this.input.substring(startPosition); + } + + String consumeToken(CharMatcher matcher) { + int startPosition = this.position; + String token = this.consumeTokenIfPresent(matcher); + Preconditions.checkState(this.position != startPosition); + return token; + } + + char consumeCharacter(CharMatcher matcher) { + Preconditions.checkState(this.hasMore()); + char c = this.previewChar(); + Preconditions.checkState(matcher.matches(c)); + ++this.position; + return c; + } + + char consumeCharacter(char c) { + Preconditions.checkState(this.hasMore()); + Preconditions.checkState(this.previewChar() == c); + ++this.position; + return c; + } + + char previewChar() { + Preconditions.checkState(this.hasMore()); + return this.input.charAt(this.position); + } + + boolean hasMore() { + return this.position >= 0 && this.position < this.input.length(); + } + } +} diff --git a/src/com/google/common/net/PercentEscaper.java b/src/com/google/common/net/PercentEscaper.java new file mode 100644 index 0000000..8cbb3df --- /dev/null +++ b/src/com/google/common/net/PercentEscaper.java @@ -0,0 +1,125 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.net; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Preconditions; +import com.google.common.escape.UnicodeEscaper; + +@Beta +@GwtCompatible +public final class PercentEscaper +extends UnicodeEscaper { + private static final char[] PLUS_SIGN = new char[]{'+'}; + private static final char[] UPPER_HEX_DIGITS = "0123456789ABCDEF".toCharArray(); + private final boolean plusForSpace; + private final boolean[] safeOctets; + + public PercentEscaper(String safeChars, boolean plusForSpace) { + Preconditions.checkNotNull(safeChars); + if (safeChars.matches(".*[0-9A-Za-z].*")) { + throw new IllegalArgumentException("Alphanumeric characters are always 'safe' and should not be explicitly specified"); + } + safeChars = String.valueOf(safeChars).concat("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"); + if (plusForSpace && safeChars.contains(" ")) { + throw new IllegalArgumentException("plusForSpace cannot be specified when space is a 'safe' character"); + } + this.plusForSpace = plusForSpace; + this.safeOctets = PercentEscaper.createSafeOctets(safeChars); + } + + private static boolean[] createSafeOctets(String safeChars) { + char[] safeCharArray; + int maxChar = -1; + for (char c : safeCharArray = safeChars.toCharArray()) { + maxChar = Math.max(c, maxChar); + } + boolean[] octets = new boolean[maxChar + 1]; + for (char c : safeCharArray) { + octets[c] = true; + } + return octets; + } + + @Override + protected int nextEscapeIndex(CharSequence csq, int index, int end) { + char c; + Preconditions.checkNotNull(csq); + while (index < end && (c = csq.charAt(index)) < this.safeOctets.length && this.safeOctets[c]) { + ++index; + } + return index; + } + + @Override + public String escape(String s) { + Preconditions.checkNotNull(s); + int slen = s.length(); + for (int index = 0; index < slen; ++index) { + char c = s.charAt(index); + if (c < this.safeOctets.length && this.safeOctets[c]) continue; + return this.escapeSlow(s, index); + } + return s; + } + + @Override + protected char[] escape(int cp) { + if (cp < this.safeOctets.length && this.safeOctets[cp]) { + return null; + } + if (cp == 32 && this.plusForSpace) { + return PLUS_SIGN; + } + if (cp <= 127) { + char[] dest = new char[3]; + dest[0] = 37; + dest[2] = UPPER_HEX_DIGITS[cp & 0xF]; + dest[1] = UPPER_HEX_DIGITS[cp >>> 4]; + return dest; + } + if (cp <= 2047) { + char[] dest = new char[6]; + dest[0] = 37; + dest[3] = 37; + dest[5] = UPPER_HEX_DIGITS[cp & 0xF]; + dest[4] = UPPER_HEX_DIGITS[8 | (cp >>>= 4) & 3]; + dest[2] = UPPER_HEX_DIGITS[(cp >>>= 2) & 0xF]; + dest[1] = UPPER_HEX_DIGITS[0xC | (cp >>>= 4)]; + return dest; + } + if (cp <= 65535) { + char[] dest = new char[9]; + dest[0] = 37; + dest[1] = 69; + dest[3] = 37; + dest[6] = 37; + dest[8] = UPPER_HEX_DIGITS[cp & 0xF]; + dest[7] = UPPER_HEX_DIGITS[8 | (cp >>>= 4) & 3]; + dest[5] = UPPER_HEX_DIGITS[(cp >>>= 2) & 0xF]; + dest[4] = UPPER_HEX_DIGITS[8 | (cp >>>= 4) & 3]; + dest[2] = UPPER_HEX_DIGITS[cp >>>= 2]; + return dest; + } + if (cp <= 0x10FFFF) { + char[] dest = new char[12]; + dest[0] = 37; + dest[1] = 70; + dest[3] = 37; + dest[6] = 37; + dest[9] = 37; + dest[11] = UPPER_HEX_DIGITS[cp & 0xF]; + dest[10] = UPPER_HEX_DIGITS[8 | (cp >>>= 4) & 3]; + dest[8] = UPPER_HEX_DIGITS[(cp >>>= 2) & 0xF]; + dest[7] = UPPER_HEX_DIGITS[8 | (cp >>>= 4) & 3]; + dest[5] = UPPER_HEX_DIGITS[(cp >>>= 2) & 0xF]; + dest[4] = UPPER_HEX_DIGITS[8 | (cp >>>= 4) & 3]; + dest[2] = UPPER_HEX_DIGITS[(cp >>>= 2) & 7]; + return dest; + } + int n = cp; + throw new IllegalArgumentException(new StringBuilder(43).append("Invalid unicode character value ").append(n).toString()); + } +} diff --git a/src/com/google/common/net/UrlEscapers.java b/src/com/google/common/net/UrlEscapers.java new file mode 100644 index 0000000..20dddb4 --- /dev/null +++ b/src/com/google/common/net/UrlEscapers.java @@ -0,0 +1,34 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.net; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.escape.Escaper; +import com.google.common.net.PercentEscaper; + +@Beta +@GwtCompatible +public final class UrlEscapers { + static final String URL_FORM_PARAMETER_OTHER_SAFE_CHARS = "-_.*"; + static final String URL_PATH_OTHER_SAFE_CHARS_LACKING_PLUS = "-._~!$'()*,;&=@:"; + private static final Escaper URL_FORM_PARAMETER_ESCAPER = new PercentEscaper("-_.*", true); + private static final Escaper URL_PATH_SEGMENT_ESCAPER = new PercentEscaper("-._~!$'()*,;&=@:+", false); + private static final Escaper URL_FRAGMENT_ESCAPER = new PercentEscaper("-._~!$'()*,;&=@:+/?", false); + + private UrlEscapers() { + } + + public static Escaper urlFormParameterEscaper() { + return URL_FORM_PARAMETER_ESCAPER; + } + + public static Escaper urlPathSegmentEscaper() { + return URL_PATH_SEGMENT_ESCAPER; + } + + public static Escaper urlFragmentEscaper() { + return URL_FRAGMENT_ESCAPER; + } +} diff --git a/src/com/google/common/net/package-info.java b/src/com/google/common/net/package-info.java new file mode 100644 index 0000000..d8c4ceb --- /dev/null +++ b/src/com/google/common/net/package-info.java @@ -0,0 +1,8 @@ +/* + * Decompiled with CFR 0.152. + */ +@ParametersAreNonnullByDefault +package com.google.common.net; + +import javax.annotation.ParametersAreNonnullByDefault; + diff --git a/src/com/google/common/primitives/Booleans.java b/src/com/google/common/primitives/Booleans.java new file mode 100644 index 0000000..22e8277 --- /dev/null +++ b/src/com/google/common/primitives/Booleans.java @@ -0,0 +1,290 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.primitives; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Preconditions; +import java.io.Serializable; +import java.util.AbstractList; +import java.util.Collection; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; +import java.util.RandomAccess; + +@GwtCompatible +public final class Booleans { + private Booleans() { + } + + public static int hashCode(boolean value) { + return value ? 1231 : 1237; + } + + public static int compare(boolean a, boolean b) { + return a == b ? 0 : (a ? 1 : -1); + } + + public static boolean contains(boolean[] array, boolean target) { + for (boolean value : array) { + if (value != target) continue; + return true; + } + return false; + } + + public static int indexOf(boolean[] array, boolean target) { + return Booleans.indexOf(array, target, 0, array.length); + } + + private static int indexOf(boolean[] array, boolean target, int start, int end) { + for (int i = start; i < end; ++i) { + if (array[i] != target) continue; + return i; + } + return -1; + } + + public static int indexOf(boolean[] array, boolean[] target) { + Preconditions.checkNotNull(array, "array"); + Preconditions.checkNotNull(target, "target"); + if (target.length == 0) { + return 0; + } + block0: for (int i = 0; i < array.length - target.length + 1; ++i) { + for (int j = 0; j < target.length; ++j) { + if (array[i + j] != target[j]) continue block0; + } + return i; + } + return -1; + } + + public static int lastIndexOf(boolean[] array, boolean target) { + return Booleans.lastIndexOf(array, target, 0, array.length); + } + + private static int lastIndexOf(boolean[] array, boolean target, int start, int end) { + for (int i = end - 1; i >= start; --i) { + if (array[i] != target) continue; + return i; + } + return -1; + } + + public static boolean[] concat(boolean[] ... arrays) { + int length = 0; + for (boolean[] array : arrays) { + length += array.length; + } + boolean[] result = new boolean[length]; + int pos = 0; + for (boolean[] array : arrays) { + System.arraycopy(array, 0, result, pos, array.length); + pos += array.length; + } + return result; + } + + public static boolean[] ensureCapacity(boolean[] array, int minLength, int padding) { + Preconditions.checkArgument(minLength >= 0, "Invalid minLength: %s", minLength); + Preconditions.checkArgument(padding >= 0, "Invalid padding: %s", padding); + return array.length < minLength ? Booleans.copyOf(array, minLength + padding) : array; + } + + private static boolean[] copyOf(boolean[] original, int length) { + boolean[] copy = new boolean[length]; + System.arraycopy(original, 0, copy, 0, Math.min(original.length, length)); + return copy; + } + + public static String join(String separator, boolean ... array) { + Preconditions.checkNotNull(separator); + if (array.length == 0) { + return ""; + } + StringBuilder builder = new StringBuilder(array.length * 7); + builder.append(array[0]); + for (int i = 1; i < array.length; ++i) { + builder.append(separator).append(array[i]); + } + return builder.toString(); + } + + public static Comparator lexicographicalComparator() { + return LexicographicalComparator.INSTANCE; + } + + public static boolean[] toArray(Collection collection) { + if (collection instanceof BooleanArrayAsList) { + return ((BooleanArrayAsList)collection).toBooleanArray(); + } + Object[] boxedArray = collection.toArray(); + int len = boxedArray.length; + boolean[] array = new boolean[len]; + for (int i = 0; i < len; ++i) { + array[i] = (Boolean)Preconditions.checkNotNull(boxedArray[i]); + } + return array; + } + + public static List asList(boolean ... backingArray) { + if (backingArray.length == 0) { + return Collections.emptyList(); + } + return new BooleanArrayAsList(backingArray); + } + + @Beta + public static int countTrue(boolean ... values) { + int count = 0; + for (boolean value : values) { + if (!value) continue; + ++count; + } + return count; + } + + @GwtCompatible + private static class BooleanArrayAsList + extends AbstractList + implements RandomAccess, + Serializable { + final boolean[] array; + final int start; + final int end; + private static final long serialVersionUID = 0L; + + BooleanArrayAsList(boolean[] array) { + this(array, 0, array.length); + } + + BooleanArrayAsList(boolean[] array, int start, int end) { + this.array = array; + this.start = start; + this.end = end; + } + + @Override + public int size() { + return this.end - this.start; + } + + @Override + public boolean isEmpty() { + return false; + } + + @Override + public Boolean get(int index) { + Preconditions.checkElementIndex(index, this.size()); + return this.array[this.start + index]; + } + + @Override + public boolean contains(Object target) { + return target instanceof Boolean && Booleans.indexOf(this.array, (Boolean)target, this.start, this.end) != -1; + } + + @Override + public int indexOf(Object target) { + int i; + if (target instanceof Boolean && (i = Booleans.indexOf(this.array, (Boolean)target, this.start, this.end)) >= 0) { + return i - this.start; + } + return -1; + } + + @Override + public int lastIndexOf(Object target) { + int i; + if (target instanceof Boolean && (i = Booleans.lastIndexOf(this.array, (Boolean)target, this.start, this.end)) >= 0) { + return i - this.start; + } + return -1; + } + + @Override + public Boolean set(int index, Boolean element) { + Preconditions.checkElementIndex(index, this.size()); + boolean oldValue = this.array[this.start + index]; + this.array[this.start + index] = Preconditions.checkNotNull(element); + return oldValue; + } + + @Override + public List subList(int fromIndex, int toIndex) { + int size = this.size(); + Preconditions.checkPositionIndexes(fromIndex, toIndex, size); + if (fromIndex == toIndex) { + return Collections.emptyList(); + } + return new BooleanArrayAsList(this.array, this.start + fromIndex, this.start + toIndex); + } + + @Override + public boolean equals(Object object) { + if (object == this) { + return true; + } + if (object instanceof BooleanArrayAsList) { + BooleanArrayAsList that = (BooleanArrayAsList)object; + int size = this.size(); + if (that.size() != size) { + return false; + } + for (int i = 0; i < size; ++i) { + if (this.array[this.start + i] == that.array[that.start + i]) continue; + return false; + } + return true; + } + return super.equals(object); + } + + @Override + public int hashCode() { + int result = 1; + for (int i = this.start; i < this.end; ++i) { + result = 31 * result + Booleans.hashCode(this.array[i]); + } + return result; + } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(this.size() * 7); + builder.append(this.array[this.start] ? "[true" : "[false"); + for (int i = this.start + 1; i < this.end; ++i) { + builder.append(this.array[i] ? ", true" : ", false"); + } + return builder.append(']').toString(); + } + + boolean[] toBooleanArray() { + int size = this.size(); + boolean[] result = new boolean[size]; + System.arraycopy(this.array, this.start, result, 0, size); + return result; + } + } + + private static enum LexicographicalComparator implements Comparator + { + INSTANCE; + + + @Override + public int compare(boolean[] left, boolean[] right) { + int minLength = Math.min(left.length, right.length); + for (int i = 0; i < minLength; ++i) { + int result = Booleans.compare(left[i], right[i]); + if (result == 0) continue; + return result; + } + return left.length - right.length; + } + } +} diff --git a/src/com/google/common/primitives/Bytes.java b/src/com/google/common/primitives/Bytes.java new file mode 100644 index 0000000..1654f28 --- /dev/null +++ b/src/com/google/common/primitives/Bytes.java @@ -0,0 +1,240 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.primitives; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Preconditions; +import java.io.Serializable; +import java.util.AbstractList; +import java.util.Collection; +import java.util.Collections; +import java.util.List; +import java.util.RandomAccess; + +@GwtCompatible +public final class Bytes { + private Bytes() { + } + + public static int hashCode(byte value) { + return value; + } + + public static boolean contains(byte[] array, byte target) { + for (byte value : array) { + if (value != target) continue; + return true; + } + return false; + } + + public static int indexOf(byte[] array, byte target) { + return Bytes.indexOf(array, target, 0, array.length); + } + + private static int indexOf(byte[] array, byte target, int start, int end) { + for (int i = start; i < end; ++i) { + if (array[i] != target) continue; + return i; + } + return -1; + } + + public static int indexOf(byte[] array, byte[] target) { + Preconditions.checkNotNull(array, "array"); + Preconditions.checkNotNull(target, "target"); + if (target.length == 0) { + return 0; + } + block0: for (int i = 0; i < array.length - target.length + 1; ++i) { + for (int j = 0; j < target.length; ++j) { + if (array[i + j] != target[j]) continue block0; + } + return i; + } + return -1; + } + + public static int lastIndexOf(byte[] array, byte target) { + return Bytes.lastIndexOf(array, target, 0, array.length); + } + + private static int lastIndexOf(byte[] array, byte target, int start, int end) { + for (int i = end - 1; i >= start; --i) { + if (array[i] != target) continue; + return i; + } + return -1; + } + + public static byte[] concat(byte[] ... arrays) { + int length = 0; + for (byte[] array : arrays) { + length += array.length; + } + byte[] result = new byte[length]; + int pos = 0; + for (byte[] array : arrays) { + System.arraycopy(array, 0, result, pos, array.length); + pos += array.length; + } + return result; + } + + public static byte[] ensureCapacity(byte[] array, int minLength, int padding) { + Preconditions.checkArgument(minLength >= 0, "Invalid minLength: %s", minLength); + Preconditions.checkArgument(padding >= 0, "Invalid padding: %s", padding); + return array.length < minLength ? Bytes.copyOf(array, minLength + padding) : array; + } + + private static byte[] copyOf(byte[] original, int length) { + byte[] copy = new byte[length]; + System.arraycopy(original, 0, copy, 0, Math.min(original.length, length)); + return copy; + } + + public static byte[] toArray(Collection collection) { + if (collection instanceof ByteArrayAsList) { + return ((ByteArrayAsList)collection).toByteArray(); + } + Object[] boxedArray = collection.toArray(); + int len = boxedArray.length; + byte[] array = new byte[len]; + for (int i = 0; i < len; ++i) { + array[i] = ((Number)Preconditions.checkNotNull(boxedArray[i])).byteValue(); + } + return array; + } + + public static List asList(byte ... backingArray) { + if (backingArray.length == 0) { + return Collections.emptyList(); + } + return new ByteArrayAsList(backingArray); + } + + @GwtCompatible + private static class ByteArrayAsList + extends AbstractList + implements RandomAccess, + Serializable { + final byte[] array; + final int start; + final int end; + private static final long serialVersionUID = 0L; + + ByteArrayAsList(byte[] array) { + this(array, 0, array.length); + } + + ByteArrayAsList(byte[] array, int start, int end) { + this.array = array; + this.start = start; + this.end = end; + } + + @Override + public int size() { + return this.end - this.start; + } + + @Override + public boolean isEmpty() { + return false; + } + + @Override + public Byte get(int index) { + Preconditions.checkElementIndex(index, this.size()); + return this.array[this.start + index]; + } + + @Override + public boolean contains(Object target) { + return target instanceof Byte && Bytes.indexOf(this.array, (Byte)target, this.start, this.end) != -1; + } + + @Override + public int indexOf(Object target) { + int i; + if (target instanceof Byte && (i = Bytes.indexOf(this.array, (Byte)target, this.start, this.end)) >= 0) { + return i - this.start; + } + return -1; + } + + @Override + public int lastIndexOf(Object target) { + int i; + if (target instanceof Byte && (i = Bytes.lastIndexOf(this.array, (Byte)target, this.start, this.end)) >= 0) { + return i - this.start; + } + return -1; + } + + @Override + public Byte set(int index, Byte element) { + Preconditions.checkElementIndex(index, this.size()); + byte oldValue = this.array[this.start + index]; + this.array[this.start + index] = Preconditions.checkNotNull(element); + return oldValue; + } + + @Override + public List subList(int fromIndex, int toIndex) { + int size = this.size(); + Preconditions.checkPositionIndexes(fromIndex, toIndex, size); + if (fromIndex == toIndex) { + return Collections.emptyList(); + } + return new ByteArrayAsList(this.array, this.start + fromIndex, this.start + toIndex); + } + + @Override + public boolean equals(Object object) { + if (object == this) { + return true; + } + if (object instanceof ByteArrayAsList) { + ByteArrayAsList that = (ByteArrayAsList)object; + int size = this.size(); + if (that.size() != size) { + return false; + } + for (int i = 0; i < size; ++i) { + if (this.array[this.start + i] == that.array[that.start + i]) continue; + return false; + } + return true; + } + return super.equals(object); + } + + @Override + public int hashCode() { + int result = 1; + for (int i = this.start; i < this.end; ++i) { + result = 31 * result + Bytes.hashCode(this.array[i]); + } + return result; + } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(this.size() * 5); + builder.append('[').append(this.array[this.start]); + for (int i = this.start + 1; i < this.end; ++i) { + builder.append(", ").append(this.array[i]); + } + return builder.append(']').toString(); + } + + byte[] toByteArray() { + int size = this.size(); + byte[] result = new byte[size]; + System.arraycopy(this.array, this.start, result, 0, size); + return result; + } + } +} diff --git a/src/com/google/common/primitives/Chars.java b/src/com/google/common/primitives/Chars.java new file mode 100644 index 0000000..538c072 --- /dev/null +++ b/src/com/google/common/primitives/Chars.java @@ -0,0 +1,338 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.primitives; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.base.Preconditions; +import java.io.Serializable; +import java.util.AbstractList; +import java.util.Collection; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; +import java.util.RandomAccess; + +@GwtCompatible(emulated=true) +public final class Chars { + public static final int BYTES = 2; + + private Chars() { + } + + public static int hashCode(char value) { + return value; + } + + public static char checkedCast(long value) { + char result = (char)value; + if ((long)result != value) { + long l = value; + throw new IllegalArgumentException(new StringBuilder(34).append("Out of range: ").append(l).toString()); + } + return result; + } + + public static char saturatedCast(long value) { + if (value > 65535L) { + return '\uffff'; + } + if (value < 0L) { + return '\u0000'; + } + return (char)value; + } + + public static int compare(char a, char b) { + return a - b; + } + + public static boolean contains(char[] array, char target) { + for (char value : array) { + if (value != target) continue; + return true; + } + return false; + } + + public static int indexOf(char[] array, char target) { + return Chars.indexOf(array, target, 0, array.length); + } + + private static int indexOf(char[] array, char target, int start, int end) { + for (int i = start; i < end; ++i) { + if (array[i] != target) continue; + return i; + } + return -1; + } + + public static int indexOf(char[] array, char[] target) { + Preconditions.checkNotNull(array, "array"); + Preconditions.checkNotNull(target, "target"); + if (target.length == 0) { + return 0; + } + block0: for (int i = 0; i < array.length - target.length + 1; ++i) { + for (int j = 0; j < target.length; ++j) { + if (array[i + j] != target[j]) continue block0; + } + return i; + } + return -1; + } + + public static int lastIndexOf(char[] array, char target) { + return Chars.lastIndexOf(array, target, 0, array.length); + } + + private static int lastIndexOf(char[] array, char target, int start, int end) { + for (int i = end - 1; i >= start; --i) { + if (array[i] != target) continue; + return i; + } + return -1; + } + + public static char min(char ... array) { + Preconditions.checkArgument(array.length > 0); + char min = array[0]; + for (int i = 1; i < array.length; ++i) { + if (array[i] >= min) continue; + min = array[i]; + } + return min; + } + + public static char max(char ... array) { + Preconditions.checkArgument(array.length > 0); + char max = array[0]; + for (int i = 1; i < array.length; ++i) { + if (array[i] <= max) continue; + max = array[i]; + } + return max; + } + + public static char[] concat(char[] ... arrays) { + int length = 0; + for (char[] array : arrays) { + length += array.length; + } + char[] result = new char[length]; + int pos = 0; + for (char[] array : arrays) { + System.arraycopy(array, 0, result, pos, array.length); + pos += array.length; + } + return result; + } + + @GwtIncompatible(value="doesn't work") + public static byte[] toByteArray(char value) { + return new byte[]{(byte)(value >> 8), (byte)value}; + } + + @GwtIncompatible(value="doesn't work") + public static char fromByteArray(byte[] bytes) { + Preconditions.checkArgument(bytes.length >= 2, "array too small: %s < %s", bytes.length, 2); + return Chars.fromBytes(bytes[0], bytes[1]); + } + + @GwtIncompatible(value="doesn't work") + public static char fromBytes(byte b1, byte b2) { + return (char)(b1 << 8 | b2 & 0xFF); + } + + public static char[] ensureCapacity(char[] array, int minLength, int padding) { + Preconditions.checkArgument(minLength >= 0, "Invalid minLength: %s", minLength); + Preconditions.checkArgument(padding >= 0, "Invalid padding: %s", padding); + return array.length < minLength ? Chars.copyOf(array, minLength + padding) : array; + } + + private static char[] copyOf(char[] original, int length) { + char[] copy = new char[length]; + System.arraycopy(original, 0, copy, 0, Math.min(original.length, length)); + return copy; + } + + public static String join(String separator, char ... array) { + Preconditions.checkNotNull(separator); + int len = array.length; + if (len == 0) { + return ""; + } + StringBuilder builder = new StringBuilder(len + separator.length() * (len - 1)); + builder.append(array[0]); + for (int i = 1; i < len; ++i) { + builder.append(separator).append(array[i]); + } + return builder.toString(); + } + + public static Comparator lexicographicalComparator() { + return LexicographicalComparator.INSTANCE; + } + + public static char[] toArray(Collection collection) { + if (collection instanceof CharArrayAsList) { + return ((CharArrayAsList)collection).toCharArray(); + } + Object[] boxedArray = collection.toArray(); + int len = boxedArray.length; + char[] array = new char[len]; + for (int i = 0; i < len; ++i) { + array[i] = ((Character)Preconditions.checkNotNull(boxedArray[i])).charValue(); + } + return array; + } + + public static List asList(char ... backingArray) { + if (backingArray.length == 0) { + return Collections.emptyList(); + } + return new CharArrayAsList(backingArray); + } + + @GwtCompatible + private static class CharArrayAsList + extends AbstractList + implements RandomAccess, + Serializable { + final char[] array; + final int start; + final int end; + private static final long serialVersionUID = 0L; + + CharArrayAsList(char[] array) { + this(array, 0, array.length); + } + + CharArrayAsList(char[] array, int start, int end) { + this.array = array; + this.start = start; + this.end = end; + } + + @Override + public int size() { + return this.end - this.start; + } + + @Override + public boolean isEmpty() { + return false; + } + + @Override + public Character get(int index) { + Preconditions.checkElementIndex(index, this.size()); + return Character.valueOf(this.array[this.start + index]); + } + + @Override + public boolean contains(Object target) { + return target instanceof Character && Chars.indexOf(this.array, ((Character)target).charValue(), this.start, this.end) != -1; + } + + @Override + public int indexOf(Object target) { + int i; + if (target instanceof Character && (i = Chars.indexOf(this.array, ((Character)target).charValue(), this.start, this.end)) >= 0) { + return i - this.start; + } + return -1; + } + + @Override + public int lastIndexOf(Object target) { + int i; + if (target instanceof Character && (i = Chars.lastIndexOf(this.array, ((Character)target).charValue(), this.start, this.end)) >= 0) { + return i - this.start; + } + return -1; + } + + @Override + public Character set(int index, Character element) { + Preconditions.checkElementIndex(index, this.size()); + char oldValue = this.array[this.start + index]; + this.array[this.start + index] = Preconditions.checkNotNull(element).charValue(); + return Character.valueOf(oldValue); + } + + @Override + public List subList(int fromIndex, int toIndex) { + int size = this.size(); + Preconditions.checkPositionIndexes(fromIndex, toIndex, size); + if (fromIndex == toIndex) { + return Collections.emptyList(); + } + return new CharArrayAsList(this.array, this.start + fromIndex, this.start + toIndex); + } + + @Override + public boolean equals(Object object) { + if (object == this) { + return true; + } + if (object instanceof CharArrayAsList) { + CharArrayAsList that = (CharArrayAsList)object; + int size = this.size(); + if (that.size() != size) { + return false; + } + for (int i = 0; i < size; ++i) { + if (this.array[this.start + i] == that.array[that.start + i]) continue; + return false; + } + return true; + } + return super.equals(object); + } + + @Override + public int hashCode() { + int result = 1; + for (int i = this.start; i < this.end; ++i) { + result = 31 * result + Chars.hashCode(this.array[i]); + } + return result; + } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(this.size() * 3); + builder.append('[').append(this.array[this.start]); + for (int i = this.start + 1; i < this.end; ++i) { + builder.append(", ").append(this.array[i]); + } + return builder.append(']').toString(); + } + + char[] toCharArray() { + int size = this.size(); + char[] result = new char[size]; + System.arraycopy(this.array, this.start, result, 0, size); + return result; + } + } + + private static enum LexicographicalComparator implements Comparator + { + INSTANCE; + + + @Override + public int compare(char[] left, char[] right) { + int minLength = Math.min(left.length, right.length); + for (int i = 0; i < minLength; ++i) { + int result = Chars.compare(left[i], right[i]); + if (result == 0) continue; + return result; + } + return left.length - right.length; + } + } +} diff --git a/src/com/google/common/primitives/Doubles.java b/src/com/google/common/primitives/Doubles.java new file mode 100644 index 0000000..78e5809 --- /dev/null +++ b/src/com/google/common/primitives/Doubles.java @@ -0,0 +1,371 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.primitives; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.base.Converter; +import com.google.common.base.Preconditions; +import java.io.Serializable; +import java.util.AbstractList; +import java.util.Collection; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; +import java.util.RandomAccess; +import java.util.regex.Pattern; +import javax.annotation.Nullable; + +@GwtCompatible(emulated=true) +public final class Doubles { + public static final int BYTES = 8; + @GwtIncompatible(value="regular expressions") + static final Pattern FLOATING_POINT_PATTERN = Doubles.fpPattern(); + + private Doubles() { + } + + public static int hashCode(double value) { + return Double.valueOf(value).hashCode(); + } + + public static int compare(double a, double b) { + return Double.compare(a, b); + } + + public static boolean isFinite(double value) { + return Double.NEGATIVE_INFINITY < value & value < Double.POSITIVE_INFINITY; + } + + public static boolean contains(double[] array, double target) { + for (double value : array) { + if (value != target) continue; + return true; + } + return false; + } + + public static int indexOf(double[] array, double target) { + return Doubles.indexOf(array, target, 0, array.length); + } + + private static int indexOf(double[] array, double target, int start, int end) { + for (int i = start; i < end; ++i) { + if (array[i] != target) continue; + return i; + } + return -1; + } + + public static int indexOf(double[] array, double[] target) { + Preconditions.checkNotNull(array, "array"); + Preconditions.checkNotNull(target, "target"); + if (target.length == 0) { + return 0; + } + block0: for (int i = 0; i < array.length - target.length + 1; ++i) { + for (int j = 0; j < target.length; ++j) { + if (array[i + j] != target[j]) continue block0; + } + return i; + } + return -1; + } + + public static int lastIndexOf(double[] array, double target) { + return Doubles.lastIndexOf(array, target, 0, array.length); + } + + private static int lastIndexOf(double[] array, double target, int start, int end) { + for (int i = end - 1; i >= start; --i) { + if (array[i] != target) continue; + return i; + } + return -1; + } + + public static double min(double ... array) { + Preconditions.checkArgument(array.length > 0); + double min = array[0]; + for (int i = 1; i < array.length; ++i) { + min = Math.min(min, array[i]); + } + return min; + } + + public static double max(double ... array) { + Preconditions.checkArgument(array.length > 0); + double max = array[0]; + for (int i = 1; i < array.length; ++i) { + max = Math.max(max, array[i]); + } + return max; + } + + public static double[] concat(double[] ... arrays) { + int length = 0; + for (double[] array : arrays) { + length += array.length; + } + double[] result = new double[length]; + int pos = 0; + for (double[] array : arrays) { + System.arraycopy(array, 0, result, pos, array.length); + pos += array.length; + } + return result; + } + + @Beta + public static Converter stringConverter() { + return DoubleConverter.INSTANCE; + } + + public static double[] ensureCapacity(double[] array, int minLength, int padding) { + Preconditions.checkArgument(minLength >= 0, "Invalid minLength: %s", minLength); + Preconditions.checkArgument(padding >= 0, "Invalid padding: %s", padding); + return array.length < minLength ? Doubles.copyOf(array, minLength + padding) : array; + } + + private static double[] copyOf(double[] original, int length) { + double[] copy = new double[length]; + System.arraycopy(original, 0, copy, 0, Math.min(original.length, length)); + return copy; + } + + public static String join(String separator, double ... array) { + Preconditions.checkNotNull(separator); + if (array.length == 0) { + return ""; + } + StringBuilder builder = new StringBuilder(array.length * 12); + builder.append(array[0]); + for (int i = 1; i < array.length; ++i) { + builder.append(separator).append(array[i]); + } + return builder.toString(); + } + + public static Comparator lexicographicalComparator() { + return LexicographicalComparator.INSTANCE; + } + + public static double[] toArray(Collection collection) { + if (collection instanceof DoubleArrayAsList) { + return ((DoubleArrayAsList)collection).toDoubleArray(); + } + Object[] boxedArray = collection.toArray(); + int len = boxedArray.length; + double[] array = new double[len]; + for (int i = 0; i < len; ++i) { + array[i] = ((Number)Preconditions.checkNotNull(boxedArray[i])).doubleValue(); + } + return array; + } + + public static List asList(double ... backingArray) { + if (backingArray.length == 0) { + return Collections.emptyList(); + } + return new DoubleArrayAsList(backingArray); + } + + @GwtIncompatible(value="regular expressions") + private static Pattern fpPattern() { + String decimal = "(?:\\d++(?:\\.\\d*+)?|\\.\\d++)"; + String completeDec = String.valueOf(decimal).concat("(?:[eE][+-]?\\d++)?[fFdD]?"); + String hex = "(?:\\p{XDigit}++(?:\\.\\p{XDigit}*+)?|\\.\\p{XDigit}++)"; + String string = String.valueOf(String.valueOf(hex)); + String completeHex = new StringBuilder(25 + string.length()).append("0[xX]").append(string).append("[pP][+-]?\\d++[fFdD]?").toString(); + String string2 = String.valueOf(String.valueOf(completeDec)); + String string3 = String.valueOf(String.valueOf(completeHex)); + String fpPattern = new StringBuilder(23 + string2.length() + string3.length()).append("[+-]?(?:NaN|Infinity|").append(string2).append("|").append(string3).append(")").toString(); + return Pattern.compile(fpPattern); + } + + @Nullable + @GwtIncompatible(value="regular expressions") + @Beta + public static Double tryParse(String string) { + if (FLOATING_POINT_PATTERN.matcher(string).matches()) { + try { + return Double.parseDouble(string); + } + catch (NumberFormatException numberFormatException) { + // empty catch block + } + } + return null; + } + + @GwtCompatible + private static class DoubleArrayAsList + extends AbstractList + implements RandomAccess, + Serializable { + final double[] array; + final int start; + final int end; + private static final long serialVersionUID = 0L; + + DoubleArrayAsList(double[] array) { + this(array, 0, array.length); + } + + DoubleArrayAsList(double[] array, int start, int end) { + this.array = array; + this.start = start; + this.end = end; + } + + @Override + public int size() { + return this.end - this.start; + } + + @Override + public boolean isEmpty() { + return false; + } + + @Override + public Double get(int index) { + Preconditions.checkElementIndex(index, this.size()); + return this.array[this.start + index]; + } + + @Override + public boolean contains(Object target) { + return target instanceof Double && Doubles.indexOf(this.array, (Double)target, this.start, this.end) != -1; + } + + @Override + public int indexOf(Object target) { + int i; + if (target instanceof Double && (i = Doubles.indexOf(this.array, (Double)target, this.start, this.end)) >= 0) { + return i - this.start; + } + return -1; + } + + @Override + public int lastIndexOf(Object target) { + int i; + if (target instanceof Double && (i = Doubles.lastIndexOf(this.array, (Double)target, this.start, this.end)) >= 0) { + return i - this.start; + } + return -1; + } + + @Override + public Double set(int index, Double element) { + Preconditions.checkElementIndex(index, this.size()); + double oldValue = this.array[this.start + index]; + this.array[this.start + index] = Preconditions.checkNotNull(element); + return oldValue; + } + + @Override + public List subList(int fromIndex, int toIndex) { + int size = this.size(); + Preconditions.checkPositionIndexes(fromIndex, toIndex, size); + if (fromIndex == toIndex) { + return Collections.emptyList(); + } + return new DoubleArrayAsList(this.array, this.start + fromIndex, this.start + toIndex); + } + + @Override + public boolean equals(Object object) { + if (object == this) { + return true; + } + if (object instanceof DoubleArrayAsList) { + DoubleArrayAsList that = (DoubleArrayAsList)object; + int size = this.size(); + if (that.size() != size) { + return false; + } + for (int i = 0; i < size; ++i) { + if (this.array[this.start + i] == that.array[that.start + i]) continue; + return false; + } + return true; + } + return super.equals(object); + } + + @Override + public int hashCode() { + int result = 1; + for (int i = this.start; i < this.end; ++i) { + result = 31 * result + Doubles.hashCode(this.array[i]); + } + return result; + } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(this.size() * 12); + builder.append('[').append(this.array[this.start]); + for (int i = this.start + 1; i < this.end; ++i) { + builder.append(", ").append(this.array[i]); + } + return builder.append(']').toString(); + } + + double[] toDoubleArray() { + int size = this.size(); + double[] result = new double[size]; + System.arraycopy(this.array, this.start, result, 0, size); + return result; + } + } + + private static enum LexicographicalComparator implements Comparator + { + INSTANCE; + + + @Override + public int compare(double[] left, double[] right) { + int minLength = Math.min(left.length, right.length); + for (int i = 0; i < minLength; ++i) { + int result = Double.compare(left[i], right[i]); + if (result == 0) continue; + return result; + } + return left.length - right.length; + } + } + + private static final class DoubleConverter + extends Converter + implements Serializable { + static final DoubleConverter INSTANCE = new DoubleConverter(); + private static final long serialVersionUID = 1L; + + private DoubleConverter() { + } + + @Override + protected Double doForward(String value) { + return Double.valueOf(value); + } + + @Override + protected String doBackward(Double value) { + return value.toString(); + } + + public String toString() { + return "Doubles.stringConverter()"; + } + + private Object readResolve() { + return INSTANCE; + } + } +} diff --git a/src/com/google/common/primitives/Floats.java b/src/com/google/common/primitives/Floats.java new file mode 100644 index 0000000..07e95f8 --- /dev/null +++ b/src/com/google/common/primitives/Floats.java @@ -0,0 +1,356 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.primitives; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.base.Converter; +import com.google.common.base.Preconditions; +import com.google.common.primitives.Doubles; +import java.io.Serializable; +import java.util.AbstractList; +import java.util.Collection; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; +import java.util.RandomAccess; +import javax.annotation.Nullable; + +@GwtCompatible(emulated=true) +public final class Floats { + public static final int BYTES = 4; + + private Floats() { + } + + public static int hashCode(float value) { + return Float.valueOf(value).hashCode(); + } + + public static int compare(float a, float b) { + return Float.compare(a, b); + } + + public static boolean isFinite(float value) { + return Float.NEGATIVE_INFINITY < value & value < Float.POSITIVE_INFINITY; + } + + public static boolean contains(float[] array, float target) { + for (float value : array) { + if (value != target) continue; + return true; + } + return false; + } + + public static int indexOf(float[] array, float target) { + return Floats.indexOf(array, target, 0, array.length); + } + + private static int indexOf(float[] array, float target, int start, int end) { + for (int i = start; i < end; ++i) { + if (array[i] != target) continue; + return i; + } + return -1; + } + + public static int indexOf(float[] array, float[] target) { + Preconditions.checkNotNull(array, "array"); + Preconditions.checkNotNull(target, "target"); + if (target.length == 0) { + return 0; + } + block0: for (int i = 0; i < array.length - target.length + 1; ++i) { + for (int j = 0; j < target.length; ++j) { + if (array[i + j] != target[j]) continue block0; + } + return i; + } + return -1; + } + + public static int lastIndexOf(float[] array, float target) { + return Floats.lastIndexOf(array, target, 0, array.length); + } + + private static int lastIndexOf(float[] array, float target, int start, int end) { + for (int i = end - 1; i >= start; --i) { + if (array[i] != target) continue; + return i; + } + return -1; + } + + public static float min(float ... array) { + Preconditions.checkArgument(array.length > 0); + float min = array[0]; + for (int i = 1; i < array.length; ++i) { + min = Math.min(min, array[i]); + } + return min; + } + + public static float max(float ... array) { + Preconditions.checkArgument(array.length > 0); + float max = array[0]; + for (int i = 1; i < array.length; ++i) { + max = Math.max(max, array[i]); + } + return max; + } + + public static float[] concat(float[] ... arrays) { + int length = 0; + for (float[] array : arrays) { + length += array.length; + } + float[] result = new float[length]; + int pos = 0; + for (float[] array : arrays) { + System.arraycopy(array, 0, result, pos, array.length); + pos += array.length; + } + return result; + } + + @Beta + public static Converter stringConverter() { + return FloatConverter.INSTANCE; + } + + public static float[] ensureCapacity(float[] array, int minLength, int padding) { + Preconditions.checkArgument(minLength >= 0, "Invalid minLength: %s", minLength); + Preconditions.checkArgument(padding >= 0, "Invalid padding: %s", padding); + return array.length < minLength ? Floats.copyOf(array, minLength + padding) : array; + } + + private static float[] copyOf(float[] original, int length) { + float[] copy = new float[length]; + System.arraycopy(original, 0, copy, 0, Math.min(original.length, length)); + return copy; + } + + public static String join(String separator, float ... array) { + Preconditions.checkNotNull(separator); + if (array.length == 0) { + return ""; + } + StringBuilder builder = new StringBuilder(array.length * 12); + builder.append(array[0]); + for (int i = 1; i < array.length; ++i) { + builder.append(separator).append(array[i]); + } + return builder.toString(); + } + + public static Comparator lexicographicalComparator() { + return LexicographicalComparator.INSTANCE; + } + + public static float[] toArray(Collection collection) { + if (collection instanceof FloatArrayAsList) { + return ((FloatArrayAsList)collection).toFloatArray(); + } + Object[] boxedArray = collection.toArray(); + int len = boxedArray.length; + float[] array = new float[len]; + for (int i = 0; i < len; ++i) { + array[i] = ((Number)Preconditions.checkNotNull(boxedArray[i])).floatValue(); + } + return array; + } + + public static List asList(float ... backingArray) { + if (backingArray.length == 0) { + return Collections.emptyList(); + } + return new FloatArrayAsList(backingArray); + } + + @Nullable + @GwtIncompatible(value="regular expressions") + @Beta + public static Float tryParse(String string) { + if (Doubles.FLOATING_POINT_PATTERN.matcher(string).matches()) { + try { + return Float.valueOf(Float.parseFloat(string)); + } + catch (NumberFormatException numberFormatException) { + // empty catch block + } + } + return null; + } + + @GwtCompatible + private static class FloatArrayAsList + extends AbstractList + implements RandomAccess, + Serializable { + final float[] array; + final int start; + final int end; + private static final long serialVersionUID = 0L; + + FloatArrayAsList(float[] array) { + this(array, 0, array.length); + } + + FloatArrayAsList(float[] array, int start, int end) { + this.array = array; + this.start = start; + this.end = end; + } + + @Override + public int size() { + return this.end - this.start; + } + + @Override + public boolean isEmpty() { + return false; + } + + @Override + public Float get(int index) { + Preconditions.checkElementIndex(index, this.size()); + return Float.valueOf(this.array[this.start + index]); + } + + @Override + public boolean contains(Object target) { + return target instanceof Float && Floats.indexOf(this.array, ((Float)target).floatValue(), this.start, this.end) != -1; + } + + @Override + public int indexOf(Object target) { + int i; + if (target instanceof Float && (i = Floats.indexOf(this.array, ((Float)target).floatValue(), this.start, this.end)) >= 0) { + return i - this.start; + } + return -1; + } + + @Override + public int lastIndexOf(Object target) { + int i; + if (target instanceof Float && (i = Floats.lastIndexOf(this.array, ((Float)target).floatValue(), this.start, this.end)) >= 0) { + return i - this.start; + } + return -1; + } + + @Override + public Float set(int index, Float element) { + Preconditions.checkElementIndex(index, this.size()); + float oldValue = this.array[this.start + index]; + this.array[this.start + index] = Preconditions.checkNotNull(element).floatValue(); + return Float.valueOf(oldValue); + } + + @Override + public List subList(int fromIndex, int toIndex) { + int size = this.size(); + Preconditions.checkPositionIndexes(fromIndex, toIndex, size); + if (fromIndex == toIndex) { + return Collections.emptyList(); + } + return new FloatArrayAsList(this.array, this.start + fromIndex, this.start + toIndex); + } + + @Override + public boolean equals(Object object) { + if (object == this) { + return true; + } + if (object instanceof FloatArrayAsList) { + FloatArrayAsList that = (FloatArrayAsList)object; + int size = this.size(); + if (that.size() != size) { + return false; + } + for (int i = 0; i < size; ++i) { + if (this.array[this.start + i] == that.array[that.start + i]) continue; + return false; + } + return true; + } + return super.equals(object); + } + + @Override + public int hashCode() { + int result = 1; + for (int i = this.start; i < this.end; ++i) { + result = 31 * result + Floats.hashCode(this.array[i]); + } + return result; + } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(this.size() * 12); + builder.append('[').append(this.array[this.start]); + for (int i = this.start + 1; i < this.end; ++i) { + builder.append(", ").append(this.array[i]); + } + return builder.append(']').toString(); + } + + float[] toFloatArray() { + int size = this.size(); + float[] result = new float[size]; + System.arraycopy(this.array, this.start, result, 0, size); + return result; + } + } + + private static enum LexicographicalComparator implements Comparator + { + INSTANCE; + + + @Override + public int compare(float[] left, float[] right) { + int minLength = Math.min(left.length, right.length); + for (int i = 0; i < minLength; ++i) { + int result = Float.compare(left[i], right[i]); + if (result == 0) continue; + return result; + } + return left.length - right.length; + } + } + + private static final class FloatConverter + extends Converter + implements Serializable { + static final FloatConverter INSTANCE = new FloatConverter(); + private static final long serialVersionUID = 1L; + + private FloatConverter() { + } + + @Override + protected Float doForward(String value) { + return Float.valueOf(value); + } + + @Override + protected String doBackward(Float value) { + return value.toString(); + } + + public String toString() { + return "Floats.stringConverter()"; + } + + private Object readResolve() { + return INSTANCE; + } + } +} diff --git a/src/com/google/common/primitives/Ints.java b/src/com/google/common/primitives/Ints.java new file mode 100644 index 0000000..d9a6360 --- /dev/null +++ b/src/com/google/common/primitives/Ints.java @@ -0,0 +1,438 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.primitives; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.base.Converter; +import com.google.common.base.Preconditions; +import java.io.Serializable; +import java.util.AbstractList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; +import java.util.RandomAccess; +import javax.annotation.CheckForNull; + +@GwtCompatible(emulated=true) +public final class Ints { + public static final int BYTES = 4; + public static final int MAX_POWER_OF_TWO = 0x40000000; + private static final byte[] asciiDigits; + + private Ints() { + } + + public static int hashCode(int value) { + return value; + } + + public static int checkedCast(long value) { + int result = (int)value; + if ((long)result != value) { + long l = value; + throw new IllegalArgumentException(new StringBuilder(34).append("Out of range: ").append(l).toString()); + } + return result; + } + + public static int saturatedCast(long value) { + if (value > Integer.MAX_VALUE) { + return Integer.MAX_VALUE; + } + if (value < Integer.MIN_VALUE) { + return Integer.MIN_VALUE; + } + return (int)value; + } + + public static int compare(int a, int b) { + return a < b ? -1 : (a > b ? 1 : 0); + } + + public static boolean contains(int[] array, int target) { + for (int value : array) { + if (value != target) continue; + return true; + } + return false; + } + + public static int indexOf(int[] array, int target) { + return Ints.indexOf(array, target, 0, array.length); + } + + private static int indexOf(int[] array, int target, int start, int end) { + for (int i = start; i < end; ++i) { + if (array[i] != target) continue; + return i; + } + return -1; + } + + public static int indexOf(int[] array, int[] target) { + Preconditions.checkNotNull(array, "array"); + Preconditions.checkNotNull(target, "target"); + if (target.length == 0) { + return 0; + } + block0: for (int i = 0; i < array.length - target.length + 1; ++i) { + for (int j = 0; j < target.length; ++j) { + if (array[i + j] != target[j]) continue block0; + } + return i; + } + return -1; + } + + public static int lastIndexOf(int[] array, int target) { + return Ints.lastIndexOf(array, target, 0, array.length); + } + + private static int lastIndexOf(int[] array, int target, int start, int end) { + for (int i = end - 1; i >= start; --i) { + if (array[i] != target) continue; + return i; + } + return -1; + } + + public static int min(int ... array) { + Preconditions.checkArgument(array.length > 0); + int min = array[0]; + for (int i = 1; i < array.length; ++i) { + if (array[i] >= min) continue; + min = array[i]; + } + return min; + } + + public static int max(int ... array) { + Preconditions.checkArgument(array.length > 0); + int max = array[0]; + for (int i = 1; i < array.length; ++i) { + if (array[i] <= max) continue; + max = array[i]; + } + return max; + } + + public static int[] concat(int[] ... arrays) { + int length = 0; + for (int[] array : arrays) { + length += array.length; + } + int[] result = new int[length]; + int pos = 0; + for (int[] array : arrays) { + System.arraycopy(array, 0, result, pos, array.length); + pos += array.length; + } + return result; + } + + @GwtIncompatible(value="doesn't work") + public static byte[] toByteArray(int value) { + return new byte[]{(byte)(value >> 24), (byte)(value >> 16), (byte)(value >> 8), (byte)value}; + } + + @GwtIncompatible(value="doesn't work") + public static int fromByteArray(byte[] bytes) { + Preconditions.checkArgument(bytes.length >= 4, "array too small: %s < %s", bytes.length, 4); + return Ints.fromBytes(bytes[0], bytes[1], bytes[2], bytes[3]); + } + + @GwtIncompatible(value="doesn't work") + public static int fromBytes(byte b1, byte b2, byte b3, byte b4) { + return b1 << 24 | (b2 & 0xFF) << 16 | (b3 & 0xFF) << 8 | b4 & 0xFF; + } + + @Beta + public static Converter stringConverter() { + return IntConverter.INSTANCE; + } + + public static int[] ensureCapacity(int[] array, int minLength, int padding) { + Preconditions.checkArgument(minLength >= 0, "Invalid minLength: %s", minLength); + Preconditions.checkArgument(padding >= 0, "Invalid padding: %s", padding); + return array.length < minLength ? Ints.copyOf(array, minLength + padding) : array; + } + + private static int[] copyOf(int[] original, int length) { + int[] copy = new int[length]; + System.arraycopy(original, 0, copy, 0, Math.min(original.length, length)); + return copy; + } + + public static String join(String separator, int ... array) { + Preconditions.checkNotNull(separator); + if (array.length == 0) { + return ""; + } + StringBuilder builder = new StringBuilder(array.length * 5); + builder.append(array[0]); + for (int i = 1; i < array.length; ++i) { + builder.append(separator).append(array[i]); + } + return builder.toString(); + } + + public static Comparator lexicographicalComparator() { + return LexicographicalComparator.INSTANCE; + } + + public static int[] toArray(Collection collection) { + if (collection instanceof IntArrayAsList) { + return ((IntArrayAsList)collection).toIntArray(); + } + Object[] boxedArray = collection.toArray(); + int len = boxedArray.length; + int[] array = new int[len]; + for (int i = 0; i < len; ++i) { + array[i] = ((Number)Preconditions.checkNotNull(boxedArray[i])).intValue(); + } + return array; + } + + public static List asList(int ... backingArray) { + if (backingArray.length == 0) { + return Collections.emptyList(); + } + return new IntArrayAsList(backingArray); + } + + private static int digit(char c) { + return c < '\u0080' ? asciiDigits[c] : -1; + } + + @CheckForNull + @Beta + public static Integer tryParse(String string) { + return Ints.tryParse(string, 10); + } + + @CheckForNull + static Integer tryParse(String string, int radix) { + int digit; + int index; + if (Preconditions.checkNotNull(string).isEmpty()) { + return null; + } + if (radix < 2 || radix > 36) { + int n = radix; + throw new IllegalArgumentException(new StringBuilder(65).append("radix must be between MIN_RADIX and MAX_RADIX but was ").append(n).toString()); + } + boolean negative = string.charAt(0) == '-'; + int n = index = negative ? 1 : 0; + if (index == string.length()) { + return null; + } + if ((digit = Ints.digit(string.charAt(index++))) < 0 || digit >= radix) { + return null; + } + int accum = -digit; + int cap = Integer.MIN_VALUE / radix; + while (index < string.length()) { + if ((digit = Ints.digit(string.charAt(index++))) < 0 || digit >= radix || accum < cap) { + return null; + } + if ((accum *= radix) < Integer.MIN_VALUE + digit) { + return null; + } + accum -= digit; + } + if (negative) { + return accum; + } + if (accum == Integer.MIN_VALUE) { + return null; + } + return -accum; + } + + static { + int i; + asciiDigits = new byte[128]; + Arrays.fill(asciiDigits, (byte)-1); + for (i = 0; i <= 9; ++i) { + Ints.asciiDigits[48 + i] = (byte)i; + } + for (i = 0; i <= 26; ++i) { + Ints.asciiDigits[65 + i] = (byte)(10 + i); + Ints.asciiDigits[97 + i] = (byte)(10 + i); + } + } + + @GwtCompatible + private static class IntArrayAsList + extends AbstractList + implements RandomAccess, + Serializable { + final int[] array; + final int start; + final int end; + private static final long serialVersionUID = 0L; + + IntArrayAsList(int[] array) { + this(array, 0, array.length); + } + + IntArrayAsList(int[] array, int start, int end) { + this.array = array; + this.start = start; + this.end = end; + } + + @Override + public int size() { + return this.end - this.start; + } + + @Override + public boolean isEmpty() { + return false; + } + + @Override + public Integer get(int index) { + Preconditions.checkElementIndex(index, this.size()); + return this.array[this.start + index]; + } + + @Override + public boolean contains(Object target) { + return target instanceof Integer && Ints.indexOf(this.array, (Integer)target, this.start, this.end) != -1; + } + + @Override + public int indexOf(Object target) { + int i; + if (target instanceof Integer && (i = Ints.indexOf(this.array, (Integer)target, this.start, this.end)) >= 0) { + return i - this.start; + } + return -1; + } + + @Override + public int lastIndexOf(Object target) { + int i; + if (target instanceof Integer && (i = Ints.lastIndexOf(this.array, (Integer)target, this.start, this.end)) >= 0) { + return i - this.start; + } + return -1; + } + + @Override + public Integer set(int index, Integer element) { + Preconditions.checkElementIndex(index, this.size()); + int oldValue = this.array[this.start + index]; + this.array[this.start + index] = Preconditions.checkNotNull(element); + return oldValue; + } + + @Override + public List subList(int fromIndex, int toIndex) { + int size = this.size(); + Preconditions.checkPositionIndexes(fromIndex, toIndex, size); + if (fromIndex == toIndex) { + return Collections.emptyList(); + } + return new IntArrayAsList(this.array, this.start + fromIndex, this.start + toIndex); + } + + @Override + public boolean equals(Object object) { + if (object == this) { + return true; + } + if (object instanceof IntArrayAsList) { + IntArrayAsList that = (IntArrayAsList)object; + int size = this.size(); + if (that.size() != size) { + return false; + } + for (int i = 0; i < size; ++i) { + if (this.array[this.start + i] == that.array[that.start + i]) continue; + return false; + } + return true; + } + return super.equals(object); + } + + @Override + public int hashCode() { + int result = 1; + for (int i = this.start; i < this.end; ++i) { + result = 31 * result + Ints.hashCode(this.array[i]); + } + return result; + } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(this.size() * 5); + builder.append('[').append(this.array[this.start]); + for (int i = this.start + 1; i < this.end; ++i) { + builder.append(", ").append(this.array[i]); + } + return builder.append(']').toString(); + } + + int[] toIntArray() { + int size = this.size(); + int[] result = new int[size]; + System.arraycopy(this.array, this.start, result, 0, size); + return result; + } + } + + private static enum LexicographicalComparator implements Comparator + { + INSTANCE; + + + @Override + public int compare(int[] left, int[] right) { + int minLength = Math.min(left.length, right.length); + for (int i = 0; i < minLength; ++i) { + int result = Ints.compare(left[i], right[i]); + if (result == 0) continue; + return result; + } + return left.length - right.length; + } + } + + private static final class IntConverter + extends Converter + implements Serializable { + static final IntConverter INSTANCE = new IntConverter(); + private static final long serialVersionUID = 1L; + + private IntConverter() { + } + + @Override + protected Integer doForward(String value) { + return Integer.decode(value); + } + + @Override + protected String doBackward(Integer value) { + return value.toString(); + } + + public String toString() { + return "Ints.stringConverter()"; + } + + private Object readResolve() { + return INSTANCE; + } + } +} diff --git a/src/com/google/common/primitives/Longs.java b/src/com/google/common/primitives/Longs.java new file mode 100644 index 0000000..63487d0 --- /dev/null +++ b/src/com/google/common/primitives/Longs.java @@ -0,0 +1,389 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.primitives; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Converter; +import com.google.common.base.Preconditions; +import java.io.Serializable; +import java.util.AbstractList; +import java.util.Collection; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; +import java.util.RandomAccess; + +@GwtCompatible +public final class Longs { + public static final int BYTES = 8; + public static final long MAX_POWER_OF_TWO = 0x4000000000000000L; + + private Longs() { + } + + public static int hashCode(long value) { + return (int)(value ^ value >>> 32); + } + + public static int compare(long a, long b) { + return a < b ? -1 : (a > b ? 1 : 0); + } + + public static boolean contains(long[] array, long target) { + for (long value : array) { + if (value != target) continue; + return true; + } + return false; + } + + public static int indexOf(long[] array, long target) { + return Longs.indexOf(array, target, 0, array.length); + } + + private static int indexOf(long[] array, long target, int start, int end) { + for (int i = start; i < end; ++i) { + if (array[i] != target) continue; + return i; + } + return -1; + } + + public static int indexOf(long[] array, long[] target) { + Preconditions.checkNotNull(array, "array"); + Preconditions.checkNotNull(target, "target"); + if (target.length == 0) { + return 0; + } + block0: for (int i = 0; i < array.length - target.length + 1; ++i) { + for (int j = 0; j < target.length; ++j) { + if (array[i + j] != target[j]) continue block0; + } + return i; + } + return -1; + } + + public static int lastIndexOf(long[] array, long target) { + return Longs.lastIndexOf(array, target, 0, array.length); + } + + private static int lastIndexOf(long[] array, long target, int start, int end) { + for (int i = end - 1; i >= start; --i) { + if (array[i] != target) continue; + return i; + } + return -1; + } + + public static long min(long ... array) { + Preconditions.checkArgument(array.length > 0); + long min = array[0]; + for (int i = 1; i < array.length; ++i) { + if (array[i] >= min) continue; + min = array[i]; + } + return min; + } + + public static long max(long ... array) { + Preconditions.checkArgument(array.length > 0); + long max = array[0]; + for (int i = 1; i < array.length; ++i) { + if (array[i] <= max) continue; + max = array[i]; + } + return max; + } + + public static long[] concat(long[] ... arrays) { + int length = 0; + for (long[] array : arrays) { + length += array.length; + } + long[] result = new long[length]; + int pos = 0; + for (long[] array : arrays) { + System.arraycopy(array, 0, result, pos, array.length); + pos += array.length; + } + return result; + } + + public static byte[] toByteArray(long value) { + byte[] result = new byte[8]; + for (int i = 7; i >= 0; --i) { + result[i] = (byte)(value & 0xFFL); + value >>= 8; + } + return result; + } + + public static long fromByteArray(byte[] bytes) { + Preconditions.checkArgument(bytes.length >= 8, "array too small: %s < %s", bytes.length, 8); + return Longs.fromBytes(bytes[0], bytes[1], bytes[2], bytes[3], bytes[4], bytes[5], bytes[6], bytes[7]); + } + + public static long fromBytes(byte b1, byte b2, byte b3, byte b4, byte b5, byte b6, byte b7, byte b8) { + return ((long)b1 & 0xFFL) << 56 | ((long)b2 & 0xFFL) << 48 | ((long)b3 & 0xFFL) << 40 | ((long)b4 & 0xFFL) << 32 | ((long)b5 & 0xFFL) << 24 | ((long)b6 & 0xFFL) << 16 | ((long)b7 & 0xFFL) << 8 | (long)b8 & 0xFFL; + } + + @Beta + public static Long tryParse(String string) { + int digit; + int index; + if (Preconditions.checkNotNull(string).isEmpty()) { + return null; + } + boolean negative = string.charAt(0) == '-'; + int n = index = negative ? 1 : 0; + if (index == string.length()) { + return null; + } + if ((digit = string.charAt(index++) - 48) < 0 || digit > 9) { + return null; + } + long accum = -digit; + while (index < string.length()) { + if ((digit = string.charAt(index++) - 48) < 0 || digit > 9 || accum < -922337203685477580L) { + return null; + } + if ((accum *= 10L) < Long.MIN_VALUE + (long)digit) { + return null; + } + accum -= (long)digit; + } + if (negative) { + return accum; + } + if (accum == Long.MIN_VALUE) { + return null; + } + return -accum; + } + + @Beta + public static Converter stringConverter() { + return LongConverter.INSTANCE; + } + + public static long[] ensureCapacity(long[] array, int minLength, int padding) { + Preconditions.checkArgument(minLength >= 0, "Invalid minLength: %s", minLength); + Preconditions.checkArgument(padding >= 0, "Invalid padding: %s", padding); + return array.length < minLength ? Longs.copyOf(array, minLength + padding) : array; + } + + private static long[] copyOf(long[] original, int length) { + long[] copy = new long[length]; + System.arraycopy(original, 0, copy, 0, Math.min(original.length, length)); + return copy; + } + + public static String join(String separator, long ... array) { + Preconditions.checkNotNull(separator); + if (array.length == 0) { + return ""; + } + StringBuilder builder = new StringBuilder(array.length * 10); + builder.append(array[0]); + for (int i = 1; i < array.length; ++i) { + builder.append(separator).append(array[i]); + } + return builder.toString(); + } + + public static Comparator lexicographicalComparator() { + return LexicographicalComparator.INSTANCE; + } + + public static long[] toArray(Collection collection) { + if (collection instanceof LongArrayAsList) { + return ((LongArrayAsList)collection).toLongArray(); + } + Object[] boxedArray = collection.toArray(); + int len = boxedArray.length; + long[] array = new long[len]; + for (int i = 0; i < len; ++i) { + array[i] = ((Number)Preconditions.checkNotNull(boxedArray[i])).longValue(); + } + return array; + } + + public static List asList(long ... backingArray) { + if (backingArray.length == 0) { + return Collections.emptyList(); + } + return new LongArrayAsList(backingArray); + } + + @GwtCompatible + private static class LongArrayAsList + extends AbstractList + implements RandomAccess, + Serializable { + final long[] array; + final int start; + final int end; + private static final long serialVersionUID = 0L; + + LongArrayAsList(long[] array) { + this(array, 0, array.length); + } + + LongArrayAsList(long[] array, int start, int end) { + this.array = array; + this.start = start; + this.end = end; + } + + @Override + public int size() { + return this.end - this.start; + } + + @Override + public boolean isEmpty() { + return false; + } + + @Override + public Long get(int index) { + Preconditions.checkElementIndex(index, this.size()); + return this.array[this.start + index]; + } + + @Override + public boolean contains(Object target) { + return target instanceof Long && Longs.indexOf(this.array, (Long)target, this.start, this.end) != -1; + } + + @Override + public int indexOf(Object target) { + int i; + if (target instanceof Long && (i = Longs.indexOf(this.array, (Long)target, this.start, this.end)) >= 0) { + return i - this.start; + } + return -1; + } + + @Override + public int lastIndexOf(Object target) { + int i; + if (target instanceof Long && (i = Longs.lastIndexOf(this.array, (Long)target, this.start, this.end)) >= 0) { + return i - this.start; + } + return -1; + } + + @Override + public Long set(int index, Long element) { + Preconditions.checkElementIndex(index, this.size()); + long oldValue = this.array[this.start + index]; + this.array[this.start + index] = Preconditions.checkNotNull(element); + return oldValue; + } + + @Override + public List subList(int fromIndex, int toIndex) { + int size = this.size(); + Preconditions.checkPositionIndexes(fromIndex, toIndex, size); + if (fromIndex == toIndex) { + return Collections.emptyList(); + } + return new LongArrayAsList(this.array, this.start + fromIndex, this.start + toIndex); + } + + @Override + public boolean equals(Object object) { + if (object == this) { + return true; + } + if (object instanceof LongArrayAsList) { + LongArrayAsList that = (LongArrayAsList)object; + int size = this.size(); + if (that.size() != size) { + return false; + } + for (int i = 0; i < size; ++i) { + if (this.array[this.start + i] == that.array[that.start + i]) continue; + return false; + } + return true; + } + return super.equals(object); + } + + @Override + public int hashCode() { + int result = 1; + for (int i = this.start; i < this.end; ++i) { + result = 31 * result + Longs.hashCode(this.array[i]); + } + return result; + } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(this.size() * 10); + builder.append('[').append(this.array[this.start]); + for (int i = this.start + 1; i < this.end; ++i) { + builder.append(", ").append(this.array[i]); + } + return builder.append(']').toString(); + } + + long[] toLongArray() { + int size = this.size(); + long[] result = new long[size]; + System.arraycopy(this.array, this.start, result, 0, size); + return result; + } + } + + private static enum LexicographicalComparator implements Comparator + { + INSTANCE; + + + @Override + public int compare(long[] left, long[] right) { + int minLength = Math.min(left.length, right.length); + for (int i = 0; i < minLength; ++i) { + int result = Longs.compare(left[i], right[i]); + if (result == 0) continue; + return result; + } + return left.length - right.length; + } + } + + private static final class LongConverter + extends Converter + implements Serializable { + static final LongConverter INSTANCE = new LongConverter(); + private static final long serialVersionUID = 1L; + + private LongConverter() { + } + + @Override + protected Long doForward(String value) { + return Long.decode(value); + } + + @Override + protected String doBackward(Long value) { + return value.toString(); + } + + public String toString() { + return "Longs.stringConverter()"; + } + + private Object readResolve() { + return INSTANCE; + } + } +} diff --git a/src/com/google/common/primitives/ParseRequest.java b/src/com/google/common/primitives/ParseRequest.java new file mode 100644 index 0000000..95f4c68 --- /dev/null +++ b/src/com/google/common/primitives/ParseRequest.java @@ -0,0 +1,40 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.primitives; + +import com.google.common.annotations.GwtCompatible; + +@GwtCompatible +final class ParseRequest { + final String rawValue; + final int radix; + + private ParseRequest(String rawValue, int radix) { + this.rawValue = rawValue; + this.radix = radix; + } + + static ParseRequest fromString(String stringValue) { + int radix; + String rawValue; + if (stringValue.length() == 0) { + throw new NumberFormatException("empty string"); + } + char firstChar = stringValue.charAt(0); + if (stringValue.startsWith("0x") || stringValue.startsWith("0X")) { + rawValue = stringValue.substring(2); + radix = 16; + } else if (firstChar == '#') { + rawValue = stringValue.substring(1); + radix = 16; + } else if (firstChar == '0' && stringValue.length() > 1) { + rawValue = stringValue.substring(1); + radix = 8; + } else { + rawValue = stringValue; + radix = 10; + } + return new ParseRequest(rawValue, radix); + } +} diff --git a/src/com/google/common/primitives/Primitives.java b/src/com/google/common/primitives/Primitives.java new file mode 100644 index 0000000..d9626e2 --- /dev/null +++ b/src/com/google/common/primitives/Primitives.java @@ -0,0 +1,63 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.primitives; + +import com.google.common.base.Preconditions; +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; +import java.util.Set; + +public final class Primitives { + private static final Map, Class> PRIMITIVE_TO_WRAPPER_TYPE; + private static final Map, Class> WRAPPER_TO_PRIMITIVE_TYPE; + + private Primitives() { + } + + private static void add(Map, Class> forward, Map, Class> backward, Class key, Class value) { + forward.put(key, value); + backward.put(value, key); + } + + public static Set> allPrimitiveTypes() { + return PRIMITIVE_TO_WRAPPER_TYPE.keySet(); + } + + public static Set> allWrapperTypes() { + return WRAPPER_TO_PRIMITIVE_TYPE.keySet(); + } + + public static boolean isWrapperType(Class type) { + return WRAPPER_TO_PRIMITIVE_TYPE.containsKey(Preconditions.checkNotNull(type)); + } + + public static Class wrap(Class type) { + Preconditions.checkNotNull(type); + Class wrapped = PRIMITIVE_TO_WRAPPER_TYPE.get(type); + return wrapped == null ? type : wrapped; + } + + public static Class unwrap(Class type) { + Preconditions.checkNotNull(type); + Class unwrapped = WRAPPER_TO_PRIMITIVE_TYPE.get(type); + return unwrapped == null ? type : unwrapped; + } + + static { + HashMap primToWrap = new HashMap(16); + HashMap wrapToPrim = new HashMap(16); + Primitives.add(primToWrap, wrapToPrim, Boolean.TYPE, Boolean.class); + Primitives.add(primToWrap, wrapToPrim, Byte.TYPE, Byte.class); + Primitives.add(primToWrap, wrapToPrim, Character.TYPE, Character.class); + Primitives.add(primToWrap, wrapToPrim, Double.TYPE, Double.class); + Primitives.add(primToWrap, wrapToPrim, Float.TYPE, Float.class); + Primitives.add(primToWrap, wrapToPrim, Integer.TYPE, Integer.class); + Primitives.add(primToWrap, wrapToPrim, Long.TYPE, Long.class); + Primitives.add(primToWrap, wrapToPrim, Short.TYPE, Short.class); + Primitives.add(primToWrap, wrapToPrim, Void.TYPE, Void.class); + PRIMITIVE_TO_WRAPPER_TYPE = Collections.unmodifiableMap(primToWrap); + WRAPPER_TO_PRIMITIVE_TYPE = Collections.unmodifiableMap(wrapToPrim); + } +} diff --git a/src/com/google/common/primitives/Shorts.java b/src/com/google/common/primitives/Shorts.java new file mode 100644 index 0000000..e9f80bf --- /dev/null +++ b/src/com/google/common/primitives/Shorts.java @@ -0,0 +1,373 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.primitives; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.base.Converter; +import com.google.common.base.Preconditions; +import java.io.Serializable; +import java.util.AbstractList; +import java.util.Collection; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; +import java.util.RandomAccess; + +@GwtCompatible(emulated=true) +public final class Shorts { + public static final int BYTES = 2; + public static final short MAX_POWER_OF_TWO = 16384; + + private Shorts() { + } + + public static int hashCode(short value) { + return value; + } + + public static short checkedCast(long value) { + short result = (short)value; + if ((long)result != value) { + long l = value; + throw new IllegalArgumentException(new StringBuilder(34).append("Out of range: ").append(l).toString()); + } + return result; + } + + public static short saturatedCast(long value) { + if (value > 32767L) { + return Short.MAX_VALUE; + } + if (value < -32768L) { + return Short.MIN_VALUE; + } + return (short)value; + } + + public static int compare(short a, short b) { + return a - b; + } + + public static boolean contains(short[] array, short target) { + for (short value : array) { + if (value != target) continue; + return true; + } + return false; + } + + public static int indexOf(short[] array, short target) { + return Shorts.indexOf(array, target, 0, array.length); + } + + private static int indexOf(short[] array, short target, int start, int end) { + for (int i = start; i < end; ++i) { + if (array[i] != target) continue; + return i; + } + return -1; + } + + public static int indexOf(short[] array, short[] target) { + Preconditions.checkNotNull(array, "array"); + Preconditions.checkNotNull(target, "target"); + if (target.length == 0) { + return 0; + } + block0: for (int i = 0; i < array.length - target.length + 1; ++i) { + for (int j = 0; j < target.length; ++j) { + if (array[i + j] != target[j]) continue block0; + } + return i; + } + return -1; + } + + public static int lastIndexOf(short[] array, short target) { + return Shorts.lastIndexOf(array, target, 0, array.length); + } + + private static int lastIndexOf(short[] array, short target, int start, int end) { + for (int i = end - 1; i >= start; --i) { + if (array[i] != target) continue; + return i; + } + return -1; + } + + public static short min(short ... array) { + Preconditions.checkArgument(array.length > 0); + short min = array[0]; + for (int i = 1; i < array.length; ++i) { + if (array[i] >= min) continue; + min = array[i]; + } + return min; + } + + public static short max(short ... array) { + Preconditions.checkArgument(array.length > 0); + short max = array[0]; + for (int i = 1; i < array.length; ++i) { + if (array[i] <= max) continue; + max = array[i]; + } + return max; + } + + public static short[] concat(short[] ... arrays) { + int length = 0; + for (short[] array : arrays) { + length += array.length; + } + short[] result = new short[length]; + int pos = 0; + for (short[] array : arrays) { + System.arraycopy(array, 0, result, pos, array.length); + pos += array.length; + } + return result; + } + + @GwtIncompatible(value="doesn't work") + public static byte[] toByteArray(short value) { + return new byte[]{(byte)(value >> 8), (byte)value}; + } + + @GwtIncompatible(value="doesn't work") + public static short fromByteArray(byte[] bytes) { + Preconditions.checkArgument(bytes.length >= 2, "array too small: %s < %s", bytes.length, 2); + return Shorts.fromBytes(bytes[0], bytes[1]); + } + + @GwtIncompatible(value="doesn't work") + public static short fromBytes(byte b1, byte b2) { + return (short)(b1 << 8 | b2 & 0xFF); + } + + @Beta + public static Converter stringConverter() { + return ShortConverter.INSTANCE; + } + + public static short[] ensureCapacity(short[] array, int minLength, int padding) { + Preconditions.checkArgument(minLength >= 0, "Invalid minLength: %s", minLength); + Preconditions.checkArgument(padding >= 0, "Invalid padding: %s", padding); + return array.length < minLength ? Shorts.copyOf(array, minLength + padding) : array; + } + + private static short[] copyOf(short[] original, int length) { + short[] copy = new short[length]; + System.arraycopy(original, 0, copy, 0, Math.min(original.length, length)); + return copy; + } + + public static String join(String separator, short ... array) { + Preconditions.checkNotNull(separator); + if (array.length == 0) { + return ""; + } + StringBuilder builder = new StringBuilder(array.length * 6); + builder.append(array[0]); + for (int i = 1; i < array.length; ++i) { + builder.append(separator).append(array[i]); + } + return builder.toString(); + } + + public static Comparator lexicographicalComparator() { + return LexicographicalComparator.INSTANCE; + } + + public static short[] toArray(Collection collection) { + if (collection instanceof ShortArrayAsList) { + return ((ShortArrayAsList)collection).toShortArray(); + } + Object[] boxedArray = collection.toArray(); + int len = boxedArray.length; + short[] array = new short[len]; + for (int i = 0; i < len; ++i) { + array[i] = ((Number)Preconditions.checkNotNull(boxedArray[i])).shortValue(); + } + return array; + } + + public static List asList(short ... backingArray) { + if (backingArray.length == 0) { + return Collections.emptyList(); + } + return new ShortArrayAsList(backingArray); + } + + @GwtCompatible + private static class ShortArrayAsList + extends AbstractList + implements RandomAccess, + Serializable { + final short[] array; + final int start; + final int end; + private static final long serialVersionUID = 0L; + + ShortArrayAsList(short[] array) { + this(array, 0, array.length); + } + + ShortArrayAsList(short[] array, int start, int end) { + this.array = array; + this.start = start; + this.end = end; + } + + @Override + public int size() { + return this.end - this.start; + } + + @Override + public boolean isEmpty() { + return false; + } + + @Override + public Short get(int index) { + Preconditions.checkElementIndex(index, this.size()); + return this.array[this.start + index]; + } + + @Override + public boolean contains(Object target) { + return target instanceof Short && Shorts.indexOf(this.array, (Short)target, this.start, this.end) != -1; + } + + @Override + public int indexOf(Object target) { + int i; + if (target instanceof Short && (i = Shorts.indexOf(this.array, (Short)target, this.start, this.end)) >= 0) { + return i - this.start; + } + return -1; + } + + @Override + public int lastIndexOf(Object target) { + int i; + if (target instanceof Short && (i = Shorts.lastIndexOf(this.array, (Short)target, this.start, this.end)) >= 0) { + return i - this.start; + } + return -1; + } + + @Override + public Short set(int index, Short element) { + Preconditions.checkElementIndex(index, this.size()); + short oldValue = this.array[this.start + index]; + this.array[this.start + index] = Preconditions.checkNotNull(element); + return oldValue; + } + + @Override + public List subList(int fromIndex, int toIndex) { + int size = this.size(); + Preconditions.checkPositionIndexes(fromIndex, toIndex, size); + if (fromIndex == toIndex) { + return Collections.emptyList(); + } + return new ShortArrayAsList(this.array, this.start + fromIndex, this.start + toIndex); + } + + @Override + public boolean equals(Object object) { + if (object == this) { + return true; + } + if (object instanceof ShortArrayAsList) { + ShortArrayAsList that = (ShortArrayAsList)object; + int size = this.size(); + if (that.size() != size) { + return false; + } + for (int i = 0; i < size; ++i) { + if (this.array[this.start + i] == that.array[that.start + i]) continue; + return false; + } + return true; + } + return super.equals(object); + } + + @Override + public int hashCode() { + int result = 1; + for (int i = this.start; i < this.end; ++i) { + result = 31 * result + Shorts.hashCode(this.array[i]); + } + return result; + } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(this.size() * 6); + builder.append('[').append(this.array[this.start]); + for (int i = this.start + 1; i < this.end; ++i) { + builder.append(", ").append(this.array[i]); + } + return builder.append(']').toString(); + } + + short[] toShortArray() { + int size = this.size(); + short[] result = new short[size]; + System.arraycopy(this.array, this.start, result, 0, size); + return result; + } + } + + private static enum LexicographicalComparator implements Comparator + { + INSTANCE; + + + @Override + public int compare(short[] left, short[] right) { + int minLength = Math.min(left.length, right.length); + for (int i = 0; i < minLength; ++i) { + int result = Shorts.compare(left[i], right[i]); + if (result == 0) continue; + return result; + } + return left.length - right.length; + } + } + + private static final class ShortConverter + extends Converter + implements Serializable { + static final ShortConverter INSTANCE = new ShortConverter(); + private static final long serialVersionUID = 1L; + + private ShortConverter() { + } + + @Override + protected Short doForward(String value) { + return Short.decode(value); + } + + @Override + protected String doBackward(Short value) { + return value.toString(); + } + + public String toString() { + return "Shorts.stringConverter()"; + } + + private Object readResolve() { + return INSTANCE; + } + } +} diff --git a/src/com/google/common/primitives/SignedBytes.java b/src/com/google/common/primitives/SignedBytes.java new file mode 100644 index 0000000..ff3a6c3 --- /dev/null +++ b/src/com/google/common/primitives/SignedBytes.java @@ -0,0 +1,93 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.primitives; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Preconditions; +import java.util.Comparator; + +@GwtCompatible +public final class SignedBytes { + public static final byte MAX_POWER_OF_TWO = 64; + + private SignedBytes() { + } + + public static byte checkedCast(long value) { + byte result = (byte)value; + if ((long)result != value) { + long l = value; + throw new IllegalArgumentException(new StringBuilder(34).append("Out of range: ").append(l).toString()); + } + return result; + } + + public static byte saturatedCast(long value) { + if (value > 127L) { + return 127; + } + if (value < -128L) { + return -128; + } + return (byte)value; + } + + public static int compare(byte a, byte b) { + return a - b; + } + + public static byte min(byte ... array) { + Preconditions.checkArgument(array.length > 0); + byte min = array[0]; + for (int i = 1; i < array.length; ++i) { + if (array[i] >= min) continue; + min = array[i]; + } + return min; + } + + public static byte max(byte ... array) { + Preconditions.checkArgument(array.length > 0); + byte max = array[0]; + for (int i = 1; i < array.length; ++i) { + if (array[i] <= max) continue; + max = array[i]; + } + return max; + } + + public static String join(String separator, byte ... array) { + Preconditions.checkNotNull(separator); + if (array.length == 0) { + return ""; + } + StringBuilder builder = new StringBuilder(array.length * 5); + builder.append(array[0]); + for (int i = 1; i < array.length; ++i) { + builder.append(separator).append(array[i]); + } + return builder.toString(); + } + + public static Comparator lexicographicalComparator() { + return LexicographicalComparator.INSTANCE; + } + + private static enum LexicographicalComparator implements Comparator + { + INSTANCE; + + + @Override + public int compare(byte[] left, byte[] right) { + int minLength = Math.min(left.length, right.length); + for (int i = 0; i < minLength; ++i) { + int result = SignedBytes.compare(left[i], right[i]); + if (result == 0) continue; + return result; + } + return left.length - right.length; + } + } +} diff --git a/src/com/google/common/primitives/UnsignedBytes.java b/src/com/google/common/primitives/UnsignedBytes.java new file mode 100644 index 0000000..e963b95 --- /dev/null +++ b/src/com/google/common/primitives/UnsignedBytes.java @@ -0,0 +1,227 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.primitives; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.Preconditions; +import com.google.common.primitives.UnsignedLongs; +import java.lang.reflect.Field; +import java.nio.ByteOrder; +import java.security.AccessController; +import java.security.PrivilegedActionException; +import java.security.PrivilegedExceptionAction; +import java.util.Comparator; +import sun.misc.Unsafe; + +public final class UnsignedBytes { + public static final byte MAX_POWER_OF_TWO = -128; + public static final byte MAX_VALUE = -1; + private static final int UNSIGNED_MASK = 255; + + private UnsignedBytes() { + } + + public static int toInt(byte value) { + return value & 0xFF; + } + + public static byte checkedCast(long value) { + if (value >> 8 != 0L) { + long l = value; + throw new IllegalArgumentException(new StringBuilder(34).append("Out of range: ").append(l).toString()); + } + return (byte)value; + } + + public static byte saturatedCast(long value) { + if (value > (long)UnsignedBytes.toInt((byte)-1)) { + return -1; + } + if (value < 0L) { + return 0; + } + return (byte)value; + } + + public static int compare(byte a, byte b) { + return UnsignedBytes.toInt(a) - UnsignedBytes.toInt(b); + } + + public static byte min(byte ... array) { + Preconditions.checkArgument(array.length > 0); + int min = UnsignedBytes.toInt(array[0]); + for (int i = 1; i < array.length; ++i) { + int next = UnsignedBytes.toInt(array[i]); + if (next >= min) continue; + min = next; + } + return (byte)min; + } + + public static byte max(byte ... array) { + Preconditions.checkArgument(array.length > 0); + int max = UnsignedBytes.toInt(array[0]); + for (int i = 1; i < array.length; ++i) { + int next = UnsignedBytes.toInt(array[i]); + if (next <= max) continue; + max = next; + } + return (byte)max; + } + + @Beta + public static String toString(byte x) { + return UnsignedBytes.toString(x, 10); + } + + @Beta + public static String toString(byte x, int radix) { + Preconditions.checkArgument(radix >= 2 && radix <= 36, "radix (%s) must be between Character.MIN_RADIX and Character.MAX_RADIX", radix); + return Integer.toString(UnsignedBytes.toInt(x), radix); + } + + @Beta + public static byte parseUnsignedByte(String string) { + return UnsignedBytes.parseUnsignedByte(string, 10); + } + + @Beta + public static byte parseUnsignedByte(String string, int radix) { + int parse = Integer.parseInt(Preconditions.checkNotNull(string), radix); + if (parse >> 8 == 0) { + return (byte)parse; + } + int n = parse; + throw new NumberFormatException(new StringBuilder(25).append("out of range: ").append(n).toString()); + } + + public static String join(String separator, byte ... array) { + Preconditions.checkNotNull(separator); + if (array.length == 0) { + return ""; + } + StringBuilder builder = new StringBuilder(array.length * (3 + separator.length())); + builder.append(UnsignedBytes.toInt(array[0])); + for (int i = 1; i < array.length; ++i) { + builder.append(separator).append(UnsignedBytes.toString(array[i])); + } + return builder.toString(); + } + + public static Comparator lexicographicalComparator() { + return LexicographicalComparatorHolder.BEST_COMPARATOR; + } + + @VisibleForTesting + static Comparator lexicographicalComparatorJavaImpl() { + return LexicographicalComparatorHolder.PureJavaComparator.INSTANCE; + } + + @VisibleForTesting + static class LexicographicalComparatorHolder { + static final String UNSAFE_COMPARATOR_NAME = String.valueOf(LexicographicalComparatorHolder.class.getName()).concat("$UnsafeComparator"); + static final Comparator BEST_COMPARATOR = LexicographicalComparatorHolder.getBestComparator(); + + LexicographicalComparatorHolder() { + } + + static Comparator getBestComparator() { + try { + Class theClass = Class.forName(UNSAFE_COMPARATOR_NAME); + Comparator comparator = (Comparator)theClass.getEnumConstants()[0]; + return comparator; + } + catch (Throwable t) { + return UnsignedBytes.lexicographicalComparatorJavaImpl(); + } + } + + static enum PureJavaComparator implements Comparator + { + INSTANCE; + + + @Override + public int compare(byte[] left, byte[] right) { + int minLength = Math.min(left.length, right.length); + for (int i = 0; i < minLength; ++i) { + int result = UnsignedBytes.compare(left[i], right[i]); + if (result == 0) continue; + return result; + } + return left.length - right.length; + } + } + + @VisibleForTesting + static enum UnsafeComparator implements Comparator + { + INSTANCE; + + static final boolean BIG_ENDIAN; + static final Unsafe theUnsafe; + static final int BYTE_ARRAY_BASE_OFFSET; + + private static Unsafe getUnsafe() { + try { + return Unsafe.getUnsafe(); + } + catch (SecurityException tryReflectionInstead) { + try { + return AccessController.doPrivileged(new PrivilegedExceptionAction(){ + + @Override + public Unsafe run() throws Exception { + Class k = Unsafe.class; + for (Field f : k.getDeclaredFields()) { + f.setAccessible(true); + Object x = f.get(null); + if (!k.isInstance(x)) continue; + return (Unsafe)k.cast(x); + } + throw new NoSuchFieldError("the Unsafe"); + } + }); + } + catch (PrivilegedActionException e) { + throw new RuntimeException("Could not initialize intrinsics", e.getCause()); + } + } + } + + @Override + public int compare(byte[] left, byte[] right) { + int i; + int minLength = Math.min(left.length, right.length); + int minWords = minLength / 8; + for (i = 0; i < minWords * 8; i += 8) { + long rw; + long lw = theUnsafe.getLong(left, (long)BYTE_ARRAY_BASE_OFFSET + (long)i); + if (lw == (rw = theUnsafe.getLong(right, (long)BYTE_ARRAY_BASE_OFFSET + (long)i))) continue; + if (BIG_ENDIAN) { + return UnsignedLongs.compare(lw, rw); + } + int n = Long.numberOfTrailingZeros(lw ^ rw) & 0xFFFFFFF8; + return (int)((lw >>> n & 0xFFL) - (rw >>> n & 0xFFL)); + } + for (i = minWords * 8; i < minLength; ++i) { + int result = UnsignedBytes.compare(left[i], right[i]); + if (result == 0) continue; + return result; + } + return left.length - right.length; + } + + static { + BIG_ENDIAN = ByteOrder.nativeOrder().equals(ByteOrder.BIG_ENDIAN); + theUnsafe = UnsafeComparator.getUnsafe(); + BYTE_ARRAY_BASE_OFFSET = theUnsafe.arrayBaseOffset(byte[].class); + if (theUnsafe.arrayIndexScale(byte[].class) != 1) { + throw new AssertionError(); + } + } + } + } +} diff --git a/src/com/google/common/primitives/UnsignedInteger.java b/src/com/google/common/primitives/UnsignedInteger.java new file mode 100644 index 0000000..636c66d --- /dev/null +++ b/src/com/google/common/primitives/UnsignedInteger.java @@ -0,0 +1,125 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.primitives; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.annotations.GwtIncompatible; +import com.google.common.base.Preconditions; +import com.google.common.primitives.UnsignedInts; +import java.math.BigInteger; +import javax.annotation.CheckReturnValue; +import javax.annotation.Nullable; + +@GwtCompatible(emulated=true) +public final class UnsignedInteger +extends Number +implements Comparable { + public static final UnsignedInteger ZERO = UnsignedInteger.fromIntBits(0); + public static final UnsignedInteger ONE = UnsignedInteger.fromIntBits(1); + public static final UnsignedInteger MAX_VALUE = UnsignedInteger.fromIntBits(-1); + private final int value; + + private UnsignedInteger(int value) { + this.value = value & 0xFFFFFFFF; + } + + public static UnsignedInteger fromIntBits(int bits) { + return new UnsignedInteger(bits); + } + + public static UnsignedInteger valueOf(long value) { + Preconditions.checkArgument((value & 0xFFFFFFFFL) == value, "value (%s) is outside the range for an unsigned integer value", value); + return UnsignedInteger.fromIntBits((int)value); + } + + public static UnsignedInteger valueOf(BigInteger value) { + Preconditions.checkNotNull(value); + Preconditions.checkArgument(value.signum() >= 0 && value.bitLength() <= 32, "value (%s) is outside the range for an unsigned integer value", value); + return UnsignedInteger.fromIntBits(value.intValue()); + } + + public static UnsignedInteger valueOf(String string) { + return UnsignedInteger.valueOf(string, 10); + } + + public static UnsignedInteger valueOf(String string, int radix) { + return UnsignedInteger.fromIntBits(UnsignedInts.parseUnsignedInt(string, radix)); + } + + @CheckReturnValue + public UnsignedInteger plus(UnsignedInteger val) { + return UnsignedInteger.fromIntBits(this.value + Preconditions.checkNotNull(val).value); + } + + @CheckReturnValue + public UnsignedInteger minus(UnsignedInteger val) { + return UnsignedInteger.fromIntBits(this.value - Preconditions.checkNotNull(val).value); + } + + @CheckReturnValue + @GwtIncompatible(value="Does not truncate correctly") + public UnsignedInteger times(UnsignedInteger val) { + return UnsignedInteger.fromIntBits(this.value * Preconditions.checkNotNull(val).value); + } + + @CheckReturnValue + public UnsignedInteger dividedBy(UnsignedInteger val) { + return UnsignedInteger.fromIntBits(UnsignedInts.divide(this.value, Preconditions.checkNotNull(val).value)); + } + + @CheckReturnValue + public UnsignedInteger mod(UnsignedInteger val) { + return UnsignedInteger.fromIntBits(UnsignedInts.remainder(this.value, Preconditions.checkNotNull(val).value)); + } + + @Override + public int intValue() { + return this.value; + } + + @Override + public long longValue() { + return UnsignedInts.toLong(this.value); + } + + @Override + public float floatValue() { + return this.longValue(); + } + + @Override + public double doubleValue() { + return this.longValue(); + } + + public BigInteger bigIntegerValue() { + return BigInteger.valueOf(this.longValue()); + } + + @Override + public int compareTo(UnsignedInteger other) { + Preconditions.checkNotNull(other); + return UnsignedInts.compare(this.value, other.value); + } + + public int hashCode() { + return this.value; + } + + public boolean equals(@Nullable Object obj) { + if (obj instanceof UnsignedInteger) { + UnsignedInteger other = (UnsignedInteger)obj; + return this.value == other.value; + } + return false; + } + + public String toString() { + return this.toString(10); + } + + public String toString(int radix) { + return UnsignedInts.toString(this.value, radix); + } +} diff --git a/src/com/google/common/primitives/UnsignedInts.java b/src/com/google/common/primitives/UnsignedInts.java new file mode 100644 index 0000000..570d761 --- /dev/null +++ b/src/com/google/common/primitives/UnsignedInts.java @@ -0,0 +1,132 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.primitives; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Preconditions; +import com.google.common.primitives.Ints; +import com.google.common.primitives.ParseRequest; +import java.util.Comparator; + +@Beta +@GwtCompatible +public final class UnsignedInts { + static final long INT_MASK = 0xFFFFFFFFL; + + private UnsignedInts() { + } + + static int flip(int value) { + return value ^ Integer.MIN_VALUE; + } + + public static int compare(int a, int b) { + return Ints.compare(UnsignedInts.flip(a), UnsignedInts.flip(b)); + } + + public static long toLong(int value) { + return (long)value & 0xFFFFFFFFL; + } + + public static int min(int ... array) { + Preconditions.checkArgument(array.length > 0); + int min = UnsignedInts.flip(array[0]); + for (int i = 1; i < array.length; ++i) { + int next = UnsignedInts.flip(array[i]); + if (next >= min) continue; + min = next; + } + return UnsignedInts.flip(min); + } + + public static int max(int ... array) { + Preconditions.checkArgument(array.length > 0); + int max = UnsignedInts.flip(array[0]); + for (int i = 1; i < array.length; ++i) { + int next = UnsignedInts.flip(array[i]); + if (next <= max) continue; + max = next; + } + return UnsignedInts.flip(max); + } + + public static String join(String separator, int ... array) { + Preconditions.checkNotNull(separator); + if (array.length == 0) { + return ""; + } + StringBuilder builder = new StringBuilder(array.length * 5); + builder.append(UnsignedInts.toString(array[0])); + for (int i = 1; i < array.length; ++i) { + builder.append(separator).append(UnsignedInts.toString(array[i])); + } + return builder.toString(); + } + + public static Comparator lexicographicalComparator() { + return LexicographicalComparator.INSTANCE; + } + + public static int divide(int dividend, int divisor) { + return (int)(UnsignedInts.toLong(dividend) / UnsignedInts.toLong(divisor)); + } + + public static int remainder(int dividend, int divisor) { + return (int)(UnsignedInts.toLong(dividend) % UnsignedInts.toLong(divisor)); + } + + public static int decode(String stringValue) { + ParseRequest request = ParseRequest.fromString(stringValue); + try { + return UnsignedInts.parseUnsignedInt(request.rawValue, request.radix); + } + catch (NumberFormatException e) { + String string = String.valueOf(stringValue); + NumberFormatException decodeException = new NumberFormatException(string.length() != 0 ? "Error parsing value: ".concat(string) : new String("Error parsing value: ")); + decodeException.initCause(e); + throw decodeException; + } + } + + public static int parseUnsignedInt(String s) { + return UnsignedInts.parseUnsignedInt(s, 10); + } + + public static int parseUnsignedInt(String string, int radix) { + Preconditions.checkNotNull(string); + long result = Long.parseLong(string, radix); + if ((result & 0xFFFFFFFFL) != result) { + String string2 = String.valueOf(String.valueOf(string)); + int n = radix; + throw new NumberFormatException(new StringBuilder(69 + string2.length()).append("Input ").append(string2).append(" in base ").append(n).append(" is not in the range of an unsigned integer").toString()); + } + return (int)result; + } + + public static String toString(int x) { + return UnsignedInts.toString(x, 10); + } + + public static String toString(int x, int radix) { + long asLong = (long)x & 0xFFFFFFFFL; + return Long.toString(asLong, radix); + } + + static enum LexicographicalComparator implements Comparator + { + INSTANCE; + + + @Override + public int compare(int[] left, int[] right) { + int minLength = Math.min(left.length, right.length); + for (int i = 0; i < minLength; ++i) { + if (left[i] == right[i]) continue; + return UnsignedInts.compare(left[i], right[i]); + } + return left.length - right.length; + } + } +} diff --git a/src/com/google/common/primitives/UnsignedLong.java b/src/com/google/common/primitives/UnsignedLong.java new file mode 100644 index 0000000..d1e31b6 --- /dev/null +++ b/src/com/google/common/primitives/UnsignedLong.java @@ -0,0 +1,137 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.primitives; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Preconditions; +import com.google.common.primitives.Longs; +import com.google.common.primitives.UnsignedLongs; +import java.io.Serializable; +import java.math.BigInteger; +import javax.annotation.CheckReturnValue; +import javax.annotation.Nullable; + +@GwtCompatible(serializable=true) +public final class UnsignedLong +extends Number +implements Comparable, +Serializable { + private static final long UNSIGNED_MASK = Long.MAX_VALUE; + public static final UnsignedLong ZERO = new UnsignedLong(0L); + public static final UnsignedLong ONE = new UnsignedLong(1L); + public static final UnsignedLong MAX_VALUE = new UnsignedLong(-1L); + private final long value; + + private UnsignedLong(long value) { + this.value = value; + } + + public static UnsignedLong fromLongBits(long bits) { + return new UnsignedLong(bits); + } + + public static UnsignedLong valueOf(long value) { + Preconditions.checkArgument(value >= 0L, "value (%s) is outside the range for an unsigned long value", value); + return UnsignedLong.fromLongBits(value); + } + + public static UnsignedLong valueOf(BigInteger value) { + Preconditions.checkNotNull(value); + Preconditions.checkArgument(value.signum() >= 0 && value.bitLength() <= 64, "value (%s) is outside the range for an unsigned long value", value); + return UnsignedLong.fromLongBits(value.longValue()); + } + + public static UnsignedLong valueOf(String string) { + return UnsignedLong.valueOf(string, 10); + } + + public static UnsignedLong valueOf(String string, int radix) { + return UnsignedLong.fromLongBits(UnsignedLongs.parseUnsignedLong(string, radix)); + } + + public UnsignedLong plus(UnsignedLong val) { + return UnsignedLong.fromLongBits(this.value + Preconditions.checkNotNull(val).value); + } + + public UnsignedLong minus(UnsignedLong val) { + return UnsignedLong.fromLongBits(this.value - Preconditions.checkNotNull(val).value); + } + + @CheckReturnValue + public UnsignedLong times(UnsignedLong val) { + return UnsignedLong.fromLongBits(this.value * Preconditions.checkNotNull(val).value); + } + + @CheckReturnValue + public UnsignedLong dividedBy(UnsignedLong val) { + return UnsignedLong.fromLongBits(UnsignedLongs.divide(this.value, Preconditions.checkNotNull(val).value)); + } + + @CheckReturnValue + public UnsignedLong mod(UnsignedLong val) { + return UnsignedLong.fromLongBits(UnsignedLongs.remainder(this.value, Preconditions.checkNotNull(val).value)); + } + + @Override + public int intValue() { + return (int)this.value; + } + + @Override + public long longValue() { + return this.value; + } + + @Override + public float floatValue() { + float fValue = this.value & Long.MAX_VALUE; + if (this.value < 0L) { + fValue += 9.223372E18f; + } + return fValue; + } + + @Override + public double doubleValue() { + double dValue = this.value & Long.MAX_VALUE; + if (this.value < 0L) { + dValue += 9.223372036854776E18; + } + return dValue; + } + + public BigInteger bigIntegerValue() { + BigInteger bigInt = BigInteger.valueOf(this.value & Long.MAX_VALUE); + if (this.value < 0L) { + bigInt = bigInt.setBit(63); + } + return bigInt; + } + + @Override + public int compareTo(UnsignedLong o) { + Preconditions.checkNotNull(o); + return UnsignedLongs.compare(this.value, o.value); + } + + public int hashCode() { + return Longs.hashCode(this.value); + } + + public boolean equals(@Nullable Object obj) { + if (obj instanceof UnsignedLong) { + UnsignedLong other = (UnsignedLong)obj; + return this.value == other.value; + } + return false; + } + + public String toString() { + return UnsignedLongs.toString(this.value); + } + + public String toString(int radix) { + return UnsignedLongs.toString(this.value, radix); + } +} diff --git a/src/com/google/common/primitives/UnsignedLongs.java b/src/com/google/common/primitives/UnsignedLongs.java new file mode 100644 index 0000000..2610ad7 --- /dev/null +++ b/src/com/google/common/primitives/UnsignedLongs.java @@ -0,0 +1,205 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.primitives; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Preconditions; +import com.google.common.primitives.Longs; +import com.google.common.primitives.ParseRequest; +import java.math.BigInteger; +import java.util.Comparator; + +@Beta +@GwtCompatible +public final class UnsignedLongs { + public static final long MAX_VALUE = -1L; + private static final long[] maxValueDivs = new long[37]; + private static final int[] maxValueMods = new int[37]; + private static final int[] maxSafeDigits = new int[37]; + + private UnsignedLongs() { + } + + private static long flip(long a) { + return a ^ Long.MIN_VALUE; + } + + public static int compare(long a, long b) { + return Longs.compare(UnsignedLongs.flip(a), UnsignedLongs.flip(b)); + } + + public static long min(long ... array) { + Preconditions.checkArgument(array.length > 0); + long min = UnsignedLongs.flip(array[0]); + for (int i = 1; i < array.length; ++i) { + long next = UnsignedLongs.flip(array[i]); + if (next >= min) continue; + min = next; + } + return UnsignedLongs.flip(min); + } + + public static long max(long ... array) { + Preconditions.checkArgument(array.length > 0); + long max = UnsignedLongs.flip(array[0]); + for (int i = 1; i < array.length; ++i) { + long next = UnsignedLongs.flip(array[i]); + if (next <= max) continue; + max = next; + } + return UnsignedLongs.flip(max); + } + + public static String join(String separator, long ... array) { + Preconditions.checkNotNull(separator); + if (array.length == 0) { + return ""; + } + StringBuilder builder = new StringBuilder(array.length * 5); + builder.append(UnsignedLongs.toString(array[0])); + for (int i = 1; i < array.length; ++i) { + builder.append(separator).append(UnsignedLongs.toString(array[i])); + } + return builder.toString(); + } + + public static Comparator lexicographicalComparator() { + return LexicographicalComparator.INSTANCE; + } + + public static long divide(long dividend, long divisor) { + long quotient; + if (divisor < 0L) { + if (UnsignedLongs.compare(dividend, divisor) < 0) { + return 0L; + } + return 1L; + } + if (dividend >= 0L) { + return dividend / divisor; + } + long rem = dividend - (quotient = (dividend >>> 1) / divisor << 1) * divisor; + return quotient + (long)(UnsignedLongs.compare(rem, divisor) >= 0 ? 1 : 0); + } + + public static long remainder(long dividend, long divisor) { + long rem; + if (divisor < 0L) { + if (UnsignedLongs.compare(dividend, divisor) < 0) { + return dividend; + } + return dividend - divisor; + } + if (dividend >= 0L) { + return dividend % divisor; + } + long quotient = (dividend >>> 1) / divisor << 1; + return rem - (UnsignedLongs.compare(rem = dividend - quotient * divisor, divisor) >= 0 ? divisor : 0L); + } + + public static long parseUnsignedLong(String s) { + return UnsignedLongs.parseUnsignedLong(s, 10); + } + + public static long decode(String stringValue) { + ParseRequest request = ParseRequest.fromString(stringValue); + try { + return UnsignedLongs.parseUnsignedLong(request.rawValue, request.radix); + } + catch (NumberFormatException e) { + String string = String.valueOf(stringValue); + NumberFormatException decodeException = new NumberFormatException(string.length() != 0 ? "Error parsing value: ".concat(string) : new String("Error parsing value: ")); + decodeException.initCause(e); + throw decodeException; + } + } + + public static long parseUnsignedLong(String s, int radix) { + Preconditions.checkNotNull(s); + if (s.length() == 0) { + throw new NumberFormatException("empty string"); + } + if (radix < 2 || radix > 36) { + int n = radix; + throw new NumberFormatException(new StringBuilder(26).append("illegal radix: ").append(n).toString()); + } + int max_safe_pos = maxSafeDigits[radix] - 1; + long value = 0L; + for (int pos = 0; pos < s.length(); ++pos) { + int digit = Character.digit(s.charAt(pos), radix); + if (digit == -1) { + throw new NumberFormatException(s); + } + if (pos > max_safe_pos && UnsignedLongs.overflowInParse(value, digit, radix)) { + String string = String.valueOf(s); + throw new NumberFormatException(string.length() != 0 ? "Too large for unsigned long: ".concat(string) : new String("Too large for unsigned long: ")); + } + value = value * (long)radix + (long)digit; + } + return value; + } + + private static boolean overflowInParse(long current, int digit, int radix) { + if (current >= 0L) { + if (current < maxValueDivs[radix]) { + return false; + } + if (current > maxValueDivs[radix]) { + return true; + } + return digit > maxValueMods[radix]; + } + return true; + } + + public static String toString(long x) { + return UnsignedLongs.toString(x, 10); + } + + public static String toString(long x, int radix) { + Preconditions.checkArgument(radix >= 2 && radix <= 36, "radix (%s) must be between Character.MIN_RADIX and Character.MAX_RADIX", radix); + if (x == 0L) { + return "0"; + } + char[] buf = new char[64]; + int i = buf.length; + if (x < 0L) { + long quotient = UnsignedLongs.divide(x, radix); + long rem = x - quotient * (long)radix; + buf[--i] = Character.forDigit((int)rem, radix); + x = quotient; + } + while (x > 0L) { + buf[--i] = Character.forDigit((int)(x % (long)radix), radix); + x /= (long)radix; + } + return new String(buf, i, buf.length - i); + } + + static { + BigInteger overflow = new BigInteger("10000000000000000", 16); + for (int i = 2; i <= 36; ++i) { + UnsignedLongs.maxValueDivs[i] = UnsignedLongs.divide(-1L, i); + UnsignedLongs.maxValueMods[i] = (int)UnsignedLongs.remainder(-1L, i); + UnsignedLongs.maxSafeDigits[i] = overflow.toString(i).length() - 1; + } + } + + static enum LexicographicalComparator implements Comparator + { + INSTANCE; + + + @Override + public int compare(long[] left, long[] right) { + int minLength = Math.min(left.length, right.length); + for (int i = 0; i < minLength; ++i) { + if (left[i] == right[i]) continue; + return UnsignedLongs.compare(left[i], right[i]); + } + return left.length - right.length; + } + } +} diff --git a/src/com/google/common/primitives/package-info.java b/src/com/google/common/primitives/package-info.java new file mode 100644 index 0000000..d5be0ca --- /dev/null +++ b/src/com/google/common/primitives/package-info.java @@ -0,0 +1,8 @@ +/* + * Decompiled with CFR 0.152. + */ +@ParametersAreNonnullByDefault +package com.google.common.primitives; + +import javax.annotation.ParametersAreNonnullByDefault; + diff --git a/src/com/google/common/reflect/AbstractInvocationHandler.java b/src/com/google/common/reflect/AbstractInvocationHandler.java new file mode 100644 index 0000000..e471de6 --- /dev/null +++ b/src/com/google/common/reflect/AbstractInvocationHandler.java @@ -0,0 +1,59 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.reflect; + +import com.google.common.annotations.Beta; +import java.lang.reflect.InvocationHandler; +import java.lang.reflect.Method; +import java.lang.reflect.Proxy; +import java.util.Arrays; +import javax.annotation.Nullable; + +@Beta +public abstract class AbstractInvocationHandler +implements InvocationHandler { + private static final Object[] NO_ARGS = new Object[0]; + + @Override + public final Object invoke(Object proxy, Method method, @Nullable Object[] args) throws Throwable { + if (args == null) { + args = NO_ARGS; + } + if (args.length == 0 && method.getName().equals("hashCode")) { + return this.hashCode(); + } + if (args.length == 1 && method.getName().equals("equals") && method.getParameterTypes()[0] == Object.class) { + Object arg = args[0]; + if (arg == null) { + return false; + } + if (proxy == arg) { + return true; + } + return AbstractInvocationHandler.isProxyOfSameInterfaces(arg, proxy.getClass()) && this.equals(Proxy.getInvocationHandler(arg)); + } + if (args.length == 0 && method.getName().equals("toString")) { + return this.toString(); + } + return this.handleInvocation(proxy, method, args); + } + + protected abstract Object handleInvocation(Object var1, Method var2, Object[] var3) throws Throwable; + + public boolean equals(Object obj) { + return super.equals(obj); + } + + public int hashCode() { + return super.hashCode(); + } + + public String toString() { + return super.toString(); + } + + private static boolean isProxyOfSameInterfaces(Object arg, Class proxyClass) { + return proxyClass.isInstance(arg) || Proxy.isProxyClass(arg.getClass()) && Arrays.equals(arg.getClass().getInterfaces(), proxyClass.getInterfaces()); + } +} diff --git a/src/com/google/common/reflect/ClassPath.java b/src/com/google/common/reflect/ClassPath.java new file mode 100644 index 0000000..367843e --- /dev/null +++ b/src/com/google/common/reflect/ClassPath.java @@ -0,0 +1,342 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.reflect; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.CharMatcher; +import com.google.common.base.Preconditions; +import com.google.common.base.Predicate; +import com.google.common.base.Splitter; +import com.google.common.collect.FluentIterable; +import com.google.common.collect.ImmutableCollection; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.ImmutableSortedSet; +import com.google.common.collect.Maps; +import com.google.common.collect.Ordering; +import com.google.common.collect.Sets; +import com.google.common.reflect.Reflection; +import java.io.File; +import java.io.IOException; +import java.net.URI; +import java.net.URISyntaxException; +import java.net.URL; +import java.net.URLClassLoader; +import java.util.Enumeration; +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.Set; +import java.util.jar.Attributes; +import java.util.jar.JarEntry; +import java.util.jar.JarFile; +import java.util.jar.Manifest; +import java.util.logging.Logger; +import javax.annotation.Nullable; + +@Beta +public final class ClassPath { + private static final Logger logger = Logger.getLogger(ClassPath.class.getName()); + private static final Predicate IS_TOP_LEVEL = new Predicate(){ + + @Override + public boolean apply(ClassInfo info) { + return info.className.indexOf(36) == -1; + } + }; + private static final Splitter CLASS_PATH_ATTRIBUTE_SEPARATOR = Splitter.on(" ").omitEmptyStrings(); + private static final String CLASS_FILE_NAME_EXTENSION = ".class"; + private final ImmutableSet resources; + + private ClassPath(ImmutableSet resources) { + this.resources = resources; + } + + public static ClassPath from(ClassLoader classloader) throws IOException { + Scanner scanner = new Scanner(); + for (Map.Entry entry : ClassPath.getClassPathEntries(classloader).entrySet()) { + scanner.scan((URI)entry.getKey(), (ClassLoader)entry.getValue()); + } + return new ClassPath(scanner.getResources()); + } + + public ImmutableSet getResources() { + return this.resources; + } + + public ImmutableSet getAllClasses() { + return FluentIterable.from(this.resources).filter(ClassInfo.class).toSet(); + } + + public ImmutableSet getTopLevelClasses() { + return FluentIterable.from(this.resources).filter(ClassInfo.class).filter(IS_TOP_LEVEL).toSet(); + } + + public ImmutableSet getTopLevelClasses(String packageName) { + Preconditions.checkNotNull(packageName); + ImmutableSet.Builder builder = ImmutableSet.builder(); + for (ClassInfo classInfo : this.getTopLevelClasses()) { + if (!classInfo.getPackageName().equals(packageName)) continue; + builder.add(classInfo); + } + return builder.build(); + } + + public ImmutableSet getTopLevelClassesRecursive(String packageName) { + Preconditions.checkNotNull(packageName); + String string = String.valueOf(String.valueOf(packageName)); + String packagePrefix = new StringBuilder(1 + string.length()).append(string).append(".").toString(); + ImmutableSet.Builder builder = ImmutableSet.builder(); + for (ClassInfo classInfo : this.getTopLevelClasses()) { + if (!classInfo.getName().startsWith(packagePrefix)) continue; + builder.add(classInfo); + } + return builder.build(); + } + + @VisibleForTesting + static ImmutableMap getClassPathEntries(ClassLoader classloader) { + LinkedHashMap entries = Maps.newLinkedHashMap(); + ClassLoader parent = classloader.getParent(); + if (parent != null) { + entries.putAll(ClassPath.getClassPathEntries(parent)); + } + if (classloader instanceof URLClassLoader) { + URLClassLoader urlClassLoader = (URLClassLoader)classloader; + for (URL entry : urlClassLoader.getURLs()) { + URI uri; + try { + uri = entry.toURI(); + } + catch (URISyntaxException e) { + throw new IllegalArgumentException(e); + } + if (entries.containsKey(uri)) continue; + entries.put(uri, classloader); + } + } + return ImmutableMap.copyOf(entries); + } + + @VisibleForTesting + static String getClassName(String filename) { + int classNameEnd = filename.length() - CLASS_FILE_NAME_EXTENSION.length(); + return filename.substring(0, classNameEnd).replace('/', '.'); + } + + @VisibleForTesting + static final class Scanner { + private final ImmutableSortedSet.Builder resources = new ImmutableSortedSet.Builder(Ordering.usingToString()); + private final Set scannedUris = Sets.newHashSet(); + + Scanner() { + } + + ImmutableSortedSet getResources() { + return this.resources.build(); + } + + void scan(URI uri, ClassLoader classloader) throws IOException { + if (uri.getScheme().equals("file") && this.scannedUris.add(uri)) { + this.scanFrom(new File(uri), classloader); + } + } + + @VisibleForTesting + void scanFrom(File file, ClassLoader classloader) throws IOException { + if (!file.exists()) { + return; + } + if (file.isDirectory()) { + this.scanDirectory(file, classloader); + } else { + this.scanJar(file, classloader); + } + } + + private void scanDirectory(File directory, ClassLoader classloader) throws IOException { + this.scanDirectory(directory, classloader, "", ImmutableSet.of()); + } + + private void scanDirectory(File directory, ClassLoader classloader, String packagePrefix, ImmutableSet ancestors) throws IOException { + File canonical = directory.getCanonicalFile(); + if (ancestors.contains(canonical)) { + return; + } + File[] files = directory.listFiles(); + if (files == null) { + String string = String.valueOf(String.valueOf(directory)); + logger.warning(new StringBuilder(22 + string.length()).append("Cannot read directory ").append(string).toString()); + return; + } + ImmutableCollection newAncestors = ((ImmutableSet.Builder)((ImmutableSet.Builder)ImmutableSet.builder().addAll(ancestors)).add(canonical)).build(); + for (File f : files) { + String resourceName; + String name = f.getName(); + if (f.isDirectory()) { + String string = String.valueOf(String.valueOf(packagePrefix)); + String string2 = String.valueOf(String.valueOf(name)); + this.scanDirectory(f, classloader, new StringBuilder(1 + string.length() + string2.length()).append(string).append(string2).append("/").toString(), (ImmutableSet)newAncestors); + continue; + } + String string = String.valueOf(packagePrefix); + String string3 = String.valueOf(name); + String string4 = resourceName = string3.length() != 0 ? string.concat(string3) : new String(string); + if (resourceName.equals("META-INF/MANIFEST.MF")) continue; + this.resources.add((Object)ResourceInfo.of(resourceName, classloader)); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + private void scanJar(File file, ClassLoader classloader) throws IOException { + JarFile jarFile; + try { + jarFile = new JarFile(file); + } + catch (IOException e) { + return; + } + try { + for (URI uri : Scanner.getClassPathFromManifest(file, jarFile.getManifest())) { + this.scan(uri, classloader); + } + Enumeration entries = jarFile.entries(); + while (entries.hasMoreElements()) { + JarEntry entry = entries.nextElement(); + if (entry.isDirectory() || entry.getName().equals("META-INF/MANIFEST.MF")) continue; + this.resources.add((Object)ResourceInfo.of(entry.getName(), classloader)); + } + } + finally { + try { + jarFile.close(); + } + catch (IOException ignored) {} + } + } + + @VisibleForTesting + static ImmutableSet getClassPathFromManifest(File jarFile, @Nullable Manifest manifest) { + if (manifest == null) { + return ImmutableSet.of(); + } + ImmutableSet.Builder builder = ImmutableSet.builder(); + String classpathAttribute = manifest.getMainAttributes().getValue(Attributes.Name.CLASS_PATH.toString()); + if (classpathAttribute != null) { + for (String path : CLASS_PATH_ATTRIBUTE_SEPARATOR.split(classpathAttribute)) { + URI uri; + try { + uri = Scanner.getClassPathEntry(jarFile, path); + } + catch (URISyntaxException e) { + String string = String.valueOf(path); + logger.warning(string.length() != 0 ? "Invalid Class-Path entry: ".concat(string) : new String("Invalid Class-Path entry: ")); + continue; + } + builder.add(uri); + } + } + return builder.build(); + } + + @VisibleForTesting + static URI getClassPathEntry(File jarFile, String path) throws URISyntaxException { + URI uri = new URI(path); + if (uri.isAbsolute()) { + return uri; + } + return new File(jarFile.getParentFile(), path.replace('/', File.separatorChar)).toURI(); + } + } + + @Beta + public static final class ClassInfo + extends ResourceInfo { + private final String className; + + ClassInfo(String resourceName, ClassLoader loader) { + super(resourceName, loader); + this.className = ClassPath.getClassName(resourceName); + } + + public String getPackageName() { + return Reflection.getPackageName(this.className); + } + + public String getSimpleName() { + int lastDollarSign = this.className.lastIndexOf(36); + if (lastDollarSign != -1) { + String innerClassName = this.className.substring(lastDollarSign + 1); + return CharMatcher.DIGIT.trimLeadingFrom(innerClassName); + } + String packageName = this.getPackageName(); + if (packageName.isEmpty()) { + return this.className; + } + return this.className.substring(packageName.length() + 1); + } + + public String getName() { + return this.className; + } + + public Class load() { + try { + return this.loader.loadClass(this.className); + } + catch (ClassNotFoundException e) { + throw new IllegalStateException(e); + } + } + + @Override + public String toString() { + return this.className; + } + } + + @Beta + public static class ResourceInfo { + private final String resourceName; + final ClassLoader loader; + + static ResourceInfo of(String resourceName, ClassLoader loader) { + if (resourceName.endsWith(ClassPath.CLASS_FILE_NAME_EXTENSION)) { + return new ClassInfo(resourceName, loader); + } + return new ResourceInfo(resourceName, loader); + } + + ResourceInfo(String resourceName, ClassLoader loader) { + this.resourceName = Preconditions.checkNotNull(resourceName); + this.loader = Preconditions.checkNotNull(loader); + } + + public final URL url() { + return Preconditions.checkNotNull(this.loader.getResource(this.resourceName), "Failed to load resource: %s", this.resourceName); + } + + public final String getResourceName() { + return this.resourceName; + } + + public int hashCode() { + return this.resourceName.hashCode(); + } + + public boolean equals(Object obj) { + if (obj instanceof ResourceInfo) { + ResourceInfo that = (ResourceInfo)obj; + return this.resourceName.equals(that.resourceName) && this.loader == that.loader; + } + return false; + } + + public String toString() { + return this.resourceName; + } + } +} diff --git a/src/com/google/common/reflect/Element.java b/src/com/google/common/reflect/Element.java new file mode 100644 index 0000000..f60d49f --- /dev/null +++ b/src/com/google/common/reflect/Element.java @@ -0,0 +1,138 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.reflect; + +import com.google.common.base.Preconditions; +import com.google.common.reflect.TypeToken; +import java.lang.annotation.Annotation; +import java.lang.reflect.AccessibleObject; +import java.lang.reflect.Member; +import java.lang.reflect.Modifier; +import javax.annotation.Nullable; + +class Element +extends AccessibleObject +implements Member { + private final AccessibleObject accessibleObject; + private final Member member; + + Element(M member) { + Preconditions.checkNotNull(member); + this.accessibleObject = member; + this.member = (Member)((Object)member); + } + + public TypeToken getOwnerType() { + return TypeToken.of(this.getDeclaringClass()); + } + + @Override + public final boolean isAnnotationPresent(Class annotationClass) { + return this.accessibleObject.isAnnotationPresent(annotationClass); + } + + public final A getAnnotation(Class annotationClass) { + return this.accessibleObject.getAnnotation(annotationClass); + } + + @Override + public final Annotation[] getAnnotations() { + return this.accessibleObject.getAnnotations(); + } + + @Override + public final Annotation[] getDeclaredAnnotations() { + return this.accessibleObject.getDeclaredAnnotations(); + } + + @Override + public final void setAccessible(boolean flag) throws SecurityException { + this.accessibleObject.setAccessible(flag); + } + + @Override + public final boolean isAccessible() { + return this.accessibleObject.isAccessible(); + } + + @Override + public Class getDeclaringClass() { + return this.member.getDeclaringClass(); + } + + @Override + public final String getName() { + return this.member.getName(); + } + + @Override + public final int getModifiers() { + return this.member.getModifiers(); + } + + @Override + public final boolean isSynthetic() { + return this.member.isSynthetic(); + } + + public final boolean isPublic() { + return Modifier.isPublic(this.getModifiers()); + } + + public final boolean isProtected() { + return Modifier.isProtected(this.getModifiers()); + } + + public final boolean isPackagePrivate() { + return !this.isPrivate() && !this.isPublic() && !this.isProtected(); + } + + public final boolean isPrivate() { + return Modifier.isPrivate(this.getModifiers()); + } + + public final boolean isStatic() { + return Modifier.isStatic(this.getModifiers()); + } + + public final boolean isFinal() { + return Modifier.isFinal(this.getModifiers()); + } + + public final boolean isAbstract() { + return Modifier.isAbstract(this.getModifiers()); + } + + public final boolean isNative() { + return Modifier.isNative(this.getModifiers()); + } + + public final boolean isSynchronized() { + return Modifier.isSynchronized(this.getModifiers()); + } + + final boolean isVolatile() { + return Modifier.isVolatile(this.getModifiers()); + } + + final boolean isTransient() { + return Modifier.isTransient(this.getModifiers()); + } + + public boolean equals(@Nullable Object obj) { + if (obj instanceof Element) { + Element that = (Element)obj; + return this.getOwnerType().equals(that.getOwnerType()) && this.member.equals(that.member); + } + return false; + } + + public int hashCode() { + return this.member.hashCode(); + } + + public String toString() { + return this.member.toString(); + } +} diff --git a/src/com/google/common/reflect/ImmutableTypeToInstanceMap.java b/src/com/google/common/reflect/ImmutableTypeToInstanceMap.java new file mode 100644 index 0000000..d9bb64b --- /dev/null +++ b/src/com/google/common/reflect/ImmutableTypeToInstanceMap.java @@ -0,0 +1,81 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.reflect; + +import com.google.common.annotations.Beta; +import com.google.common.collect.ForwardingMap; +import com.google.common.collect.ImmutableMap; +import com.google.common.reflect.TypeToInstanceMap; +import com.google.common.reflect.TypeToken; +import java.util.Map; + +@Beta +public final class ImmutableTypeToInstanceMap +extends ForwardingMap, B> +implements TypeToInstanceMap { + private final ImmutableMap, B> delegate; + + public static ImmutableTypeToInstanceMap of() { + return new ImmutableTypeToInstanceMap(ImmutableMap.of()); + } + + public static Builder builder() { + return new Builder(); + } + + private ImmutableTypeToInstanceMap(ImmutableMap, B> delegate) { + this.delegate = delegate; + } + + @Override + public T getInstance(TypeToken type) { + return this.trustedGet(type.rejectTypeVariables()); + } + + @Override + public T putInstance(TypeToken type, T value) { + throw new UnsupportedOperationException(); + } + + @Override + public T getInstance(Class type) { + return this.trustedGet(TypeToken.of(type)); + } + + @Override + public T putInstance(Class type, T value) { + throw new UnsupportedOperationException(); + } + + @Override + protected Map, B> delegate() { + return this.delegate; + } + + private T trustedGet(TypeToken type) { + return (T)this.delegate.get(type); + } + + @Beta + public static final class Builder { + private final ImmutableMap.Builder, B> mapBuilder = ImmutableMap.builder(); + + private Builder() { + } + + public Builder put(Class key, T value) { + this.mapBuilder.put(TypeToken.of(key), value); + return this; + } + + public Builder put(TypeToken key, T value) { + this.mapBuilder.put(key.rejectTypeVariables(), value); + return this; + } + + public ImmutableTypeToInstanceMap build() { + return new ImmutableTypeToInstanceMap(this.mapBuilder.build()); + } + } +} diff --git a/src/com/google/common/reflect/Invokable.java b/src/com/google/common/reflect/Invokable.java new file mode 100644 index 0000000..754253e --- /dev/null +++ b/src/com/google/common/reflect/Invokable.java @@ -0,0 +1,236 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.reflect; + +import com.google.common.annotations.Beta; +import com.google.common.base.Preconditions; +import com.google.common.collect.ImmutableList; +import com.google.common.reflect.Element; +import com.google.common.reflect.Parameter; +import com.google.common.reflect.TypeToken; +import com.google.common.reflect.Types; +import java.lang.annotation.Annotation; +import java.lang.reflect.AccessibleObject; +import java.lang.reflect.Constructor; +import java.lang.reflect.GenericDeclaration; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; +import java.lang.reflect.Type; +import java.lang.reflect.TypeVariable; +import java.util.Arrays; +import javax.annotation.Nullable; + +@Beta +public abstract class Invokable +extends Element +implements GenericDeclaration { + Invokable(M member) { + super(member); + } + + public static Invokable from(Method method) { + return new MethodInvokable(method); + } + + public static Invokable from(Constructor constructor) { + return new ConstructorInvokable(constructor); + } + + public abstract boolean isOverridable(); + + public abstract boolean isVarArgs(); + + public final R invoke(@Nullable T receiver, Object ... args) throws InvocationTargetException, IllegalAccessException { + return (R)this.invokeInternal(receiver, Preconditions.checkNotNull(args)); + } + + public final TypeToken getReturnType() { + return TypeToken.of(this.getGenericReturnType()); + } + + public final ImmutableList getParameters() { + Type[] parameterTypes = this.getGenericParameterTypes(); + Annotation[][] annotations = this.getParameterAnnotations(); + ImmutableList.Builder builder = ImmutableList.builder(); + for (int i = 0; i < parameterTypes.length; ++i) { + builder.add(new Parameter(this, i, TypeToken.of(parameterTypes[i]), annotations[i])); + } + return builder.build(); + } + + public final ImmutableList> getExceptionTypes() { + ImmutableList.Builder builder = ImmutableList.builder(); + for (Type type : this.getGenericExceptionTypes()) { + TypeToken exceptionType = TypeToken.of(type); + builder.add(exceptionType); + } + return builder.build(); + } + + public final Invokable returning(Class returnType) { + return this.returning(TypeToken.of(returnType)); + } + + public final Invokable returning(TypeToken returnType) { + if (!returnType.isAssignableFrom(this.getReturnType())) { + String string = String.valueOf(String.valueOf(this.getReturnType())); + String string2 = String.valueOf(String.valueOf(returnType)); + throw new IllegalArgumentException(new StringBuilder(35 + string.length() + string2.length()).append("Invokable is known to return ").append(string).append(", not ").append(string2).toString()); + } + Invokable specialized = this; + return specialized; + } + + public final Class getDeclaringClass() { + return super.getDeclaringClass(); + } + + public TypeToken getOwnerType() { + return TypeToken.of(this.getDeclaringClass()); + } + + abstract Object invokeInternal(@Nullable Object var1, Object[] var2) throws InvocationTargetException, IllegalAccessException; + + abstract Type[] getGenericParameterTypes(); + + abstract Type[] getGenericExceptionTypes(); + + abstract Annotation[][] getParameterAnnotations(); + + abstract Type getGenericReturnType(); + + static class ConstructorInvokable + extends Invokable { + final Constructor constructor; + + ConstructorInvokable(Constructor constructor) { + super(constructor); + this.constructor = constructor; + } + + @Override + final Object invokeInternal(@Nullable Object receiver, Object[] args) throws InvocationTargetException, IllegalAccessException { + try { + return this.constructor.newInstance(args); + } + catch (InstantiationException e) { + String string = String.valueOf(String.valueOf(this.constructor)); + throw new RuntimeException(new StringBuilder(8 + string.length()).append(string).append(" failed.").toString(), e); + } + } + + @Override + Type getGenericReturnType() { + Class declaringClass = this.getDeclaringClass(); + Type[] typeParams = declaringClass.getTypeParameters(); + if (typeParams.length > 0) { + return Types.newParameterizedType(declaringClass, typeParams); + } + return declaringClass; + } + + @Override + Type[] getGenericParameterTypes() { + Class[] rawParamTypes; + Type[] types = this.constructor.getGenericParameterTypes(); + if (types.length > 0 && this.mayNeedHiddenThis() && types.length == (rawParamTypes = this.constructor.getParameterTypes()).length && rawParamTypes[0] == this.getDeclaringClass().getEnclosingClass()) { + return Arrays.copyOfRange(types, 1, types.length); + } + return types; + } + + @Override + Type[] getGenericExceptionTypes() { + return this.constructor.getGenericExceptionTypes(); + } + + @Override + final Annotation[][] getParameterAnnotations() { + return this.constructor.getParameterAnnotations(); + } + + @Override + public final TypeVariable[] getTypeParameters() { + TypeVariable>[] declaredByClass = this.getDeclaringClass().getTypeParameters(); + TypeVariable>[] declaredByConstructor = this.constructor.getTypeParameters(); + TypeVariable[] result = new TypeVariable[declaredByClass.length + declaredByConstructor.length]; + System.arraycopy(declaredByClass, 0, result, 0, declaredByClass.length); + System.arraycopy(declaredByConstructor, 0, result, declaredByClass.length, declaredByConstructor.length); + return result; + } + + @Override + public final boolean isOverridable() { + return false; + } + + @Override + public final boolean isVarArgs() { + return this.constructor.isVarArgs(); + } + + private boolean mayNeedHiddenThis() { + Class declaringClass = this.constructor.getDeclaringClass(); + if (declaringClass.getEnclosingConstructor() != null) { + return true; + } + Method enclosingMethod = declaringClass.getEnclosingMethod(); + if (enclosingMethod != null) { + return !Modifier.isStatic(enclosingMethod.getModifiers()); + } + return declaringClass.getEnclosingClass() != null && !Modifier.isStatic(declaringClass.getModifiers()); + } + } + + static class MethodInvokable + extends Invokable { + final Method method; + + MethodInvokable(Method method) { + super(method); + this.method = method; + } + + @Override + final Object invokeInternal(@Nullable Object receiver, Object[] args) throws InvocationTargetException, IllegalAccessException { + return this.method.invoke(receiver, args); + } + + @Override + Type getGenericReturnType() { + return this.method.getGenericReturnType(); + } + + @Override + Type[] getGenericParameterTypes() { + return this.method.getGenericParameterTypes(); + } + + @Override + Type[] getGenericExceptionTypes() { + return this.method.getGenericExceptionTypes(); + } + + @Override + final Annotation[][] getParameterAnnotations() { + return this.method.getParameterAnnotations(); + } + + @Override + public final TypeVariable[] getTypeParameters() { + return this.method.getTypeParameters(); + } + + @Override + public final boolean isOverridable() { + return !this.isFinal() && !this.isPrivate() && !this.isStatic() && !Modifier.isFinal(this.getDeclaringClass().getModifiers()); + } + + @Override + public final boolean isVarArgs() { + return this.method.isVarArgs(); + } + } +} diff --git a/src/com/google/common/reflect/MutableTypeToInstanceMap.java b/src/com/google/common/reflect/MutableTypeToInstanceMap.java new file mode 100644 index 0000000..a78ce12 --- /dev/null +++ b/src/com/google/common/reflect/MutableTypeToInstanceMap.java @@ -0,0 +1,134 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.reflect; + +import com.google.common.annotations.Beta; +import com.google.common.base.Function; +import com.google.common.base.Preconditions; +import com.google.common.collect.ForwardingMap; +import com.google.common.collect.ForwardingMapEntry; +import com.google.common.collect.ForwardingSet; +import com.google.common.collect.Iterators; +import com.google.common.collect.Maps; +import com.google.common.reflect.TypeToInstanceMap; +import com.google.common.reflect.TypeToken; +import java.util.Iterator; +import java.util.Map; +import java.util.Set; +import javax.annotation.Nullable; + +@Beta +public final class MutableTypeToInstanceMap +extends ForwardingMap, B> +implements TypeToInstanceMap { + private final Map, B> backingMap = Maps.newHashMap(); + + @Override + @Nullable + public T getInstance(Class type) { + return this.trustedGet(TypeToken.of(type)); + } + + @Override + @Nullable + public T putInstance(Class type, @Nullable T value) { + return this.trustedPut(TypeToken.of(type), value); + } + + @Override + @Nullable + public T getInstance(TypeToken type) { + return this.trustedGet(type.rejectTypeVariables()); + } + + @Override + @Nullable + public T putInstance(TypeToken type, @Nullable T value) { + return this.trustedPut(type.rejectTypeVariables(), value); + } + + @Override + public B put(TypeToken key, B value) { + throw new UnsupportedOperationException("Please use putInstance() instead."); + } + + @Override + public void putAll(Map, ? extends B> map) { + throw new UnsupportedOperationException("Please use putInstance() instead."); + } + + @Override + public Set, B>> entrySet() { + return UnmodifiableEntry.transformEntries(super.entrySet()); + } + + @Override + protected Map, B> delegate() { + return this.backingMap; + } + + @Nullable + private T trustedPut(TypeToken type, @Nullable T value) { + return (T)this.backingMap.put(type, value); + } + + @Nullable + private T trustedGet(TypeToken type) { + return (T)this.backingMap.get(type); + } + + private static final class UnmodifiableEntry + extends ForwardingMapEntry { + private final Map.Entry delegate; + + static Set> transformEntries(final Set> entries) { + return new ForwardingSet>(){ + + @Override + protected Set> delegate() { + return entries; + } + + @Override + public Iterator> iterator() { + return UnmodifiableEntry.transformEntries(super.iterator()); + } + + @Override + public Object[] toArray() { + return this.standardToArray(); + } + + @Override + public T[] toArray(T[] array) { + return this.standardToArray(array); + } + }; + } + + private static Iterator> transformEntries(Iterator> entries) { + return Iterators.transform(entries, new Function, Map.Entry>(){ + + @Override + public Map.Entry apply(Map.Entry entry) { + return new UnmodifiableEntry(entry); + } + }); + } + + private UnmodifiableEntry(Map.Entry delegate) { + this.delegate = Preconditions.checkNotNull(delegate); + } + + @Override + protected Map.Entry delegate() { + return this.delegate; + } + + @Override + public V setValue(V value) { + throw new UnsupportedOperationException(); + } + } +} diff --git a/src/com/google/common/reflect/Parameter.java b/src/com/google/common/reflect/Parameter.java new file mode 100644 index 0000000..0228c29 --- /dev/null +++ b/src/com/google/common/reflect/Parameter.java @@ -0,0 +1,95 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.reflect; + +import com.google.common.annotations.Beta; +import com.google.common.base.Preconditions; +import com.google.common.collect.FluentIterable; +import com.google.common.collect.ImmutableList; +import com.google.common.reflect.Invokable; +import com.google.common.reflect.TypeToken; +import java.lang.annotation.Annotation; +import java.lang.reflect.AnnotatedElement; +import javax.annotation.Nullable; + +@Beta +public final class Parameter +implements AnnotatedElement { + private final Invokable declaration; + private final int position; + private final TypeToken type; + private final ImmutableList annotations; + + Parameter(Invokable declaration, int position, TypeToken type, Annotation[] annotations) { + this.declaration = declaration; + this.position = position; + this.type = type; + this.annotations = ImmutableList.copyOf(annotations); + } + + public TypeToken getType() { + return this.type; + } + + public Invokable getDeclaringInvokable() { + return this.declaration; + } + + @Override + public boolean isAnnotationPresent(Class annotationType) { + return this.getAnnotation((Class)annotationType) != null; + } + + @Nullable + public A getAnnotation(Class annotationType) { + Preconditions.checkNotNull(annotationType); + for (Annotation annotation : this.annotations) { + if (!annotationType.isInstance(annotation)) continue; + return (A)((Annotation)annotationType.cast(annotation)); + } + return null; + } + + @Override + public Annotation[] getAnnotations() { + return this.getDeclaredAnnotations(); + } + + public A[] getAnnotationsByType(Class annotationType) { + return this.getDeclaredAnnotationsByType(annotationType); + } + + @Override + public Annotation[] getDeclaredAnnotations() { + return this.annotations.toArray(new Annotation[this.annotations.size()]); + } + + @Nullable + public A getDeclaredAnnotation(Class annotationType) { + Preconditions.checkNotNull(annotationType); + return (A)((Annotation)FluentIterable.from(this.annotations).filter(annotationType).first().orNull()); + } + + public A[] getDeclaredAnnotationsByType(Class annotationType) { + return (Annotation[])FluentIterable.from(this.annotations).filter(annotationType).toArray(annotationType); + } + + public boolean equals(@Nullable Object obj) { + if (obj instanceof Parameter) { + Parameter that = (Parameter)obj; + return this.position == that.position && this.declaration.equals(that.declaration); + } + return false; + } + + public int hashCode() { + return this.position; + } + + public String toString() { + String string = String.valueOf(String.valueOf(this.type)); + int n = this.position; + return new StringBuilder(15 + string.length()).append(string).append(" arg").append(n).toString(); + } +} diff --git a/src/com/google/common/reflect/Reflection.java b/src/com/google/common/reflect/Reflection.java new file mode 100644 index 0000000..75d3d5a --- /dev/null +++ b/src/com/google/common/reflect/Reflection.java @@ -0,0 +1,42 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.reflect; + +import com.google.common.annotations.Beta; +import com.google.common.base.Preconditions; +import java.lang.reflect.InvocationHandler; +import java.lang.reflect.Proxy; + +@Beta +public final class Reflection { + public static String getPackageName(Class clazz) { + return Reflection.getPackageName(clazz.getName()); + } + + public static String getPackageName(String classFullName) { + int lastDot = classFullName.lastIndexOf(46); + return lastDot < 0 ? "" : classFullName.substring(0, lastDot); + } + + public static void initialize(Class ... classes) { + for (Class clazz : classes) { + try { + Class.forName(clazz.getName(), true, clazz.getClassLoader()); + } + catch (ClassNotFoundException e) { + throw new AssertionError((Object)e); + } + } + } + + public static T newProxy(Class interfaceType, InvocationHandler handler) { + Preconditions.checkNotNull(handler); + Preconditions.checkArgument(interfaceType.isInterface(), "%s is not an interface", interfaceType); + Object object = Proxy.newProxyInstance(interfaceType.getClassLoader(), new Class[]{interfaceType}, handler); + return interfaceType.cast(object); + } + + private Reflection() { + } +} diff --git a/src/com/google/common/reflect/TypeCapture.java b/src/com/google/common/reflect/TypeCapture.java new file mode 100644 index 0000000..b1c5eb6 --- /dev/null +++ b/src/com/google/common/reflect/TypeCapture.java @@ -0,0 +1,19 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.reflect; + +import com.google.common.base.Preconditions; +import java.lang.reflect.ParameterizedType; +import java.lang.reflect.Type; + +abstract class TypeCapture { + TypeCapture() { + } + + final Type capture() { + Type superclass = this.getClass().getGenericSuperclass(); + Preconditions.checkArgument(superclass instanceof ParameterizedType, "%s isn't parameterized", superclass); + return ((ParameterizedType)superclass).getActualTypeArguments()[0]; + } +} diff --git a/src/com/google/common/reflect/TypeParameter.java b/src/com/google/common/reflect/TypeParameter.java new file mode 100644 index 0000000..0bcaba3 --- /dev/null +++ b/src/com/google/common/reflect/TypeParameter.java @@ -0,0 +1,39 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.reflect; + +import com.google.common.annotations.Beta; +import com.google.common.base.Preconditions; +import com.google.common.reflect.TypeCapture; +import java.lang.reflect.Type; +import java.lang.reflect.TypeVariable; +import javax.annotation.Nullable; + +@Beta +public abstract class TypeParameter +extends TypeCapture { + final TypeVariable typeVariable; + + protected TypeParameter() { + Type type = this.capture(); + Preconditions.checkArgument(type instanceof TypeVariable, "%s should be a type variable.", type); + this.typeVariable = (TypeVariable)type; + } + + public final int hashCode() { + return this.typeVariable.hashCode(); + } + + public final boolean equals(@Nullable Object o) { + if (o instanceof TypeParameter) { + TypeParameter that = (TypeParameter)o; + return this.typeVariable.equals(that.typeVariable); + } + return false; + } + + public String toString() { + return this.typeVariable.toString(); + } +} diff --git a/src/com/google/common/reflect/TypeResolver.java b/src/com/google/common/reflect/TypeResolver.java new file mode 100644 index 0000000..61d6ca0 --- /dev/null +++ b/src/com/google/common/reflect/TypeResolver.java @@ -0,0 +1,374 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.reflect; + +import com.google.common.annotations.Beta; +import com.google.common.base.Joiner; +import com.google.common.base.Objects; +import com.google.common.base.Preconditions; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.Maps; +import com.google.common.reflect.TypeVisitor; +import com.google.common.reflect.Types; +import java.lang.reflect.GenericArrayType; +import java.lang.reflect.ParameterizedType; +import java.lang.reflect.Type; +import java.lang.reflect.TypeVariable; +import java.lang.reflect.WildcardType; +import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; +import java.util.concurrent.atomic.AtomicInteger; +import javax.annotation.Nullable; + +@Beta +public final class TypeResolver { + private final TypeTable typeTable; + + public TypeResolver() { + this.typeTable = new TypeTable(); + } + + private TypeResolver(TypeTable typeTable) { + this.typeTable = typeTable; + } + + static TypeResolver accordingTo(Type type) { + return new TypeResolver().where(TypeMappingIntrospector.getTypeMappings(type)); + } + + public TypeResolver where(Type formal, Type actual) { + HashMap mappings = Maps.newHashMap(); + TypeResolver.populateTypeMappings(mappings, Preconditions.checkNotNull(formal), Preconditions.checkNotNull(actual)); + return this.where(mappings); + } + + TypeResolver where(Map mappings) { + return new TypeResolver(this.typeTable.where(mappings)); + } + + private static void populateTypeMappings(final Map mappings, Type from, final Type to) { + if (from.equals(to)) { + return; + } + new TypeVisitor(){ + + @Override + void visitTypeVariable(TypeVariable typeVariable) { + mappings.put(new TypeVariableKey(typeVariable), to); + } + + @Override + void visitWildcardType(WildcardType fromWildcardType) { + int i; + WildcardType toWildcardType = (WildcardType)TypeResolver.expectArgument(WildcardType.class, to); + Type[] fromUpperBounds = fromWildcardType.getUpperBounds(); + Type[] toUpperBounds = toWildcardType.getUpperBounds(); + Type[] fromLowerBounds = fromWildcardType.getLowerBounds(); + Type[] toLowerBounds = toWildcardType.getLowerBounds(); + Preconditions.checkArgument(fromUpperBounds.length == toUpperBounds.length && fromLowerBounds.length == toLowerBounds.length, "Incompatible type: %s vs. %s", fromWildcardType, to); + for (i = 0; i < fromUpperBounds.length; ++i) { + TypeResolver.populateTypeMappings(mappings, fromUpperBounds[i], toUpperBounds[i]); + } + for (i = 0; i < fromLowerBounds.length; ++i) { + TypeResolver.populateTypeMappings(mappings, fromLowerBounds[i], toLowerBounds[i]); + } + } + + @Override + void visitParameterizedType(ParameterizedType fromParameterizedType) { + ParameterizedType toParameterizedType = (ParameterizedType)TypeResolver.expectArgument(ParameterizedType.class, to); + Preconditions.checkArgument(fromParameterizedType.getRawType().equals(toParameterizedType.getRawType()), "Inconsistent raw type: %s vs. %s", fromParameterizedType, to); + Type[] fromArgs = fromParameterizedType.getActualTypeArguments(); + Type[] toArgs = toParameterizedType.getActualTypeArguments(); + Preconditions.checkArgument(fromArgs.length == toArgs.length, "%s not compatible with %s", fromParameterizedType, toParameterizedType); + for (int i = 0; i < fromArgs.length; ++i) { + TypeResolver.populateTypeMappings(mappings, fromArgs[i], toArgs[i]); + } + } + + @Override + void visitGenericArrayType(GenericArrayType fromArrayType) { + Type componentType = Types.getComponentType(to); + Preconditions.checkArgument(componentType != null, "%s is not an array type.", to); + TypeResolver.populateTypeMappings(mappings, fromArrayType.getGenericComponentType(), componentType); + } + + @Override + void visitClass(Class fromClass) { + String string = String.valueOf(String.valueOf(fromClass)); + throw new IllegalArgumentException(new StringBuilder(21 + string.length()).append("No type mapping from ").append(string).toString()); + } + }.visit(from); + } + + public Type resolveType(Type type) { + Preconditions.checkNotNull(type); + if (type instanceof TypeVariable) { + return this.typeTable.resolve((TypeVariable)type); + } + if (type instanceof ParameterizedType) { + return this.resolveParameterizedType((ParameterizedType)type); + } + if (type instanceof GenericArrayType) { + return this.resolveGenericArrayType((GenericArrayType)type); + } + if (type instanceof WildcardType) { + return this.resolveWildcardType((WildcardType)type); + } + return type; + } + + private Type[] resolveTypes(Type[] types) { + Type[] result = new Type[types.length]; + for (int i = 0; i < types.length; ++i) { + result[i] = this.resolveType(types[i]); + } + return result; + } + + private WildcardType resolveWildcardType(WildcardType type) { + Type[] lowerBounds = type.getLowerBounds(); + Type[] upperBounds = type.getUpperBounds(); + return new Types.WildcardTypeImpl(this.resolveTypes(lowerBounds), this.resolveTypes(upperBounds)); + } + + private Type resolveGenericArrayType(GenericArrayType type) { + Type componentType = type.getGenericComponentType(); + Type resolvedComponentType = this.resolveType(componentType); + return Types.newArrayType(resolvedComponentType); + } + + private ParameterizedType resolveParameterizedType(ParameterizedType type) { + Type owner = type.getOwnerType(); + Type resolvedOwner = owner == null ? null : this.resolveType(owner); + Type resolvedRawType = this.resolveType(type.getRawType()); + Type[] args = type.getActualTypeArguments(); + Type[] resolvedArgs = this.resolveTypes(args); + return Types.newParameterizedTypeWithOwner(resolvedOwner, (Class)resolvedRawType, resolvedArgs); + } + + private static T expectArgument(Class type, Object arg) { + try { + return type.cast(arg); + } + catch (ClassCastException e) { + String string = String.valueOf(String.valueOf(arg)); + String string2 = String.valueOf(String.valueOf(type.getSimpleName())); + throw new IllegalArgumentException(new StringBuilder(10 + string.length() + string2.length()).append(string).append(" is not a ").append(string2).toString()); + } + } + + static final class TypeVariableKey { + private final TypeVariable var; + + TypeVariableKey(TypeVariable var) { + this.var = Preconditions.checkNotNull(var); + } + + public int hashCode() { + return Objects.hashCode(this.var.getGenericDeclaration(), this.var.getName()); + } + + public boolean equals(Object obj) { + if (obj instanceof TypeVariableKey) { + TypeVariableKey that = (TypeVariableKey)obj; + return this.equalsTypeVariable(that.var); + } + return false; + } + + public String toString() { + return this.var.toString(); + } + + static Object forLookup(Type t) { + if (t instanceof TypeVariable) { + return new TypeVariableKey((TypeVariable)t); + } + return null; + } + + boolean equalsType(Type type) { + if (type instanceof TypeVariable) { + return this.equalsTypeVariable((TypeVariable)type); + } + return false; + } + + private boolean equalsTypeVariable(TypeVariable that) { + return this.var.getGenericDeclaration().equals(that.getGenericDeclaration()) && this.var.getName().equals(that.getName()); + } + } + + private static final class WildcardCapturer { + private final AtomicInteger id = new AtomicInteger(); + + private WildcardCapturer() { + } + + Type capture(Type type) { + Preconditions.checkNotNull(type); + if (type instanceof Class) { + return type; + } + if (type instanceof TypeVariable) { + return type; + } + if (type instanceof GenericArrayType) { + GenericArrayType arrayType = (GenericArrayType)type; + return Types.newArrayType(this.capture(arrayType.getGenericComponentType())); + } + if (type instanceof ParameterizedType) { + ParameterizedType parameterizedType = (ParameterizedType)type; + return Types.newParameterizedTypeWithOwner(this.captureNullable(parameterizedType.getOwnerType()), (Class)parameterizedType.getRawType(), this.capture(parameterizedType.getActualTypeArguments())); + } + if (type instanceof WildcardType) { + WildcardType wildcardType = (WildcardType)type; + Type[] lowerBounds = wildcardType.getLowerBounds(); + if (lowerBounds.length == 0) { + Object[] upperBounds = wildcardType.getUpperBounds(); + int n = this.id.incrementAndGet(); + String string = String.valueOf(String.valueOf(Joiner.on('&').join(upperBounds))); + String name = new StringBuilder(33 + string.length()).append("capture#").append(n).append("-of ? extends ").append(string).toString(); + return Types.newArtificialTypeVariable(WildcardCapturer.class, name, wildcardType.getUpperBounds()); + } + return type; + } + throw new AssertionError((Object)"must have been one of the known types"); + } + + private Type captureNullable(@Nullable Type type) { + if (type == null) { + return null; + } + return this.capture(type); + } + + private Type[] capture(Type[] types) { + Type[] result = new Type[types.length]; + for (int i = 0; i < types.length; ++i) { + result[i] = this.capture(types[i]); + } + return result; + } + } + + private static final class TypeMappingIntrospector + extends TypeVisitor { + private static final WildcardCapturer wildcardCapturer = new WildcardCapturer(); + private final Map mappings = Maps.newHashMap(); + + private TypeMappingIntrospector() { + } + + static ImmutableMap getTypeMappings(Type contextType) { + TypeMappingIntrospector introspector = new TypeMappingIntrospector(); + introspector.visit(wildcardCapturer.capture(contextType)); + return ImmutableMap.copyOf(introspector.mappings); + } + + @Override + void visitClass(Class clazz) { + this.visit(clazz.getGenericSuperclass()); + this.visit(clazz.getGenericInterfaces()); + } + + @Override + void visitParameterizedType(ParameterizedType parameterizedType) { + Type[] typeArgs; + Class rawClass = (Class)parameterizedType.getRawType(); + TypeVariable>[] vars = rawClass.getTypeParameters(); + Preconditions.checkState(vars.length == (typeArgs = parameterizedType.getActualTypeArguments()).length); + for (int i = 0; i < vars.length; ++i) { + this.map(new TypeVariableKey(vars[i]), typeArgs[i]); + } + this.visit(rawClass); + this.visit(parameterizedType.getOwnerType()); + } + + @Override + void visitTypeVariable(TypeVariable t) { + this.visit(t.getBounds()); + } + + @Override + void visitWildcardType(WildcardType t) { + this.visit(t.getUpperBounds()); + } + + private void map(TypeVariableKey var, Type arg) { + if (this.mappings.containsKey(var)) { + return; + } + Type t = arg; + while (t != null) { + if (var.equalsType(t)) { + Type x = arg; + while (x != null) { + x = this.mappings.remove(TypeVariableKey.forLookup(x)); + } + return; + } + t = this.mappings.get(TypeVariableKey.forLookup(t)); + } + this.mappings.put(var, arg); + } + } + + private static class TypeTable { + private final ImmutableMap map; + + TypeTable() { + this.map = ImmutableMap.of(); + } + + private TypeTable(ImmutableMap map) { + this.map = map; + } + + final TypeTable where(Map mappings) { + ImmutableMap.Builder builder = ImmutableMap.builder(); + builder.putAll(this.map); + for (Map.Entry mapping : mappings.entrySet()) { + Type type; + TypeVariableKey variable = mapping.getKey(); + Preconditions.checkArgument(!variable.equalsType(type = mapping.getValue()), "Type variable %s bound to itself", variable); + builder.put(variable, type); + } + return new TypeTable(builder.build()); + } + + final Type resolve(final TypeVariable var) { + final TypeTable unguarded = this; + TypeTable guarded = new TypeTable(){ + + @Override + public Type resolveInternal(TypeVariable intermediateVar, TypeTable forDependent) { + if (intermediateVar.getGenericDeclaration().equals(var.getGenericDeclaration())) { + return intermediateVar; + } + return unguarded.resolveInternal(intermediateVar, forDependent); + } + }; + return this.resolveInternal(var, guarded); + } + + Type resolveInternal(TypeVariable var, TypeTable forDependants) { + Type type = this.map.get(new TypeVariableKey(var)); + if (type == null) { + Object[] bounds = var.getBounds(); + if (bounds.length == 0) { + return var; + } + Object[] resolvedBounds = new TypeResolver(forDependants).resolveTypes((Type[])bounds); + if (Types.NativeTypeVariableEquals.NATIVE_TYPE_VARIABLE_ONLY && Arrays.equals(bounds, resolvedBounds)) { + return var; + } + return Types.newArtificialTypeVariable(var.getGenericDeclaration(), var.getName(), (Type[])resolvedBounds); + } + return new TypeResolver(forDependants).resolveType(type); + } + } +} diff --git a/src/com/google/common/reflect/TypeToInstanceMap.java b/src/com/google/common/reflect/TypeToInstanceMap.java new file mode 100644 index 0000000..5f2b5a3 --- /dev/null +++ b/src/com/google/common/reflect/TypeToInstanceMap.java @@ -0,0 +1,25 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.reflect; + +import com.google.common.annotations.Beta; +import com.google.common.reflect.TypeToken; +import java.util.Map; +import javax.annotation.Nullable; + +@Beta +public interface TypeToInstanceMap +extends Map, B> { + @Nullable + public T getInstance(Class var1); + + @Nullable + public T putInstance(Class var1, @Nullable T var2); + + @Nullable + public T getInstance(TypeToken var1); + + @Nullable + public T putInstance(TypeToken var1, @Nullable T var2); +} diff --git a/src/com/google/common/reflect/TypeToken.java b/src/com/google/common/reflect/TypeToken.java new file mode 100644 index 0000000..3a3b94a --- /dev/null +++ b/src/com/google/common/reflect/TypeToken.java @@ -0,0 +1,898 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.reflect; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.Joiner; +import com.google.common.base.Preconditions; +import com.google.common.base.Predicate; +import com.google.common.collect.FluentIterable; +import com.google.common.collect.ForwardingSet; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Maps; +import com.google.common.collect.Ordering; +import com.google.common.primitives.Primitives; +import com.google.common.reflect.Invokable; +import com.google.common.reflect.TypeCapture; +import com.google.common.reflect.TypeParameter; +import com.google.common.reflect.TypeResolver; +import com.google.common.reflect.TypeVisitor; +import com.google.common.reflect.Types; +import java.io.Serializable; +import java.lang.reflect.Constructor; +import java.lang.reflect.GenericArrayType; +import java.lang.reflect.Method; +import java.lang.reflect.ParameterizedType; +import java.lang.reflect.Type; +import java.lang.reflect.TypeVariable; +import java.lang.reflect.WildcardType; +import java.util.Arrays; +import java.util.Comparator; +import java.util.HashMap; +import java.util.Map; +import java.util.Set; +import javax.annotation.Nullable; + +@Beta +public abstract class TypeToken +extends TypeCapture +implements Serializable { + private final Type runtimeType; + private transient TypeResolver typeResolver; + + protected TypeToken() { + this.runtimeType = this.capture(); + Preconditions.checkState(!(this.runtimeType instanceof TypeVariable), "Cannot construct a TypeToken for a type variable.\nYou probably meant to call new TypeToken<%s>(getClass()) that can resolve the type variable for you.\nIf you do need to create a TypeToken of a type variable, please use TypeToken.of() instead.", this.runtimeType); + } + + protected TypeToken(Class declaringClass) { + Type captured = super.capture(); + this.runtimeType = captured instanceof Class ? captured : TypeToken.of(declaringClass).resolveType((Type)captured).runtimeType; + } + + private TypeToken(Type type) { + this.runtimeType = Preconditions.checkNotNull(type); + } + + public static TypeToken of(Class type) { + return new SimpleTypeToken((Type)type); + } + + public static TypeToken of(Type type) { + return new SimpleTypeToken(type); + } + + public final Class getRawType() { + Class rawType; + Class result = rawType = TypeToken.getRawType(this.runtimeType); + return result; + } + + private ImmutableSet> getImmediateRawTypes() { + ImmutableSet> result = TypeToken.getRawTypes(this.runtimeType); + return result; + } + + public final Type getType() { + return this.runtimeType; + } + + public final TypeToken where(TypeParameter typeParam, TypeToken typeArg) { + TypeResolver resolver = new TypeResolver().where(ImmutableMap.of(new TypeResolver.TypeVariableKey(typeParam.typeVariable), typeArg.runtimeType)); + return new SimpleTypeToken(resolver.resolveType(this.runtimeType)); + } + + public final TypeToken where(TypeParameter typeParam, Class typeArg) { + return this.where(typeParam, TypeToken.of(typeArg)); + } + + public final TypeToken resolveType(Type type) { + Preconditions.checkNotNull(type); + TypeResolver resolver = this.typeResolver; + if (resolver == null) { + resolver = this.typeResolver = TypeResolver.accordingTo(this.runtimeType); + } + return TypeToken.of(resolver.resolveType(type)); + } + + private Type[] resolveInPlace(Type[] types) { + for (int i = 0; i < types.length; ++i) { + types[i] = this.resolveType(types[i]).getType(); + } + return types; + } + + private TypeToken resolveSupertype(Type type) { + TypeToken supertype = this.resolveType(type); + supertype.typeResolver = this.typeResolver; + return supertype; + } + + @Nullable + final TypeToken getGenericSuperclass() { + if (this.runtimeType instanceof TypeVariable) { + return this.boundAsSuperclass(((TypeVariable)this.runtimeType).getBounds()[0]); + } + if (this.runtimeType instanceof WildcardType) { + return this.boundAsSuperclass(((WildcardType)this.runtimeType).getUpperBounds()[0]); + } + Type superclass = this.getRawType().getGenericSuperclass(); + if (superclass == null) { + return null; + } + TypeToken superToken = this.resolveSupertype(superclass); + return superToken; + } + + @Nullable + private TypeToken boundAsSuperclass(Type bound) { + TypeToken token = TypeToken.of(bound); + if (token.getRawType().isInterface()) { + return null; + } + TypeToken superclass = token; + return superclass; + } + + final ImmutableList> getGenericInterfaces() { + if (this.runtimeType instanceof TypeVariable) { + return this.boundsAsInterfaces(((TypeVariable)this.runtimeType).getBounds()); + } + if (this.runtimeType instanceof WildcardType) { + return this.boundsAsInterfaces(((WildcardType)this.runtimeType).getUpperBounds()); + } + ImmutableList.Builder builder = ImmutableList.builder(); + for (Type interfaceType : this.getRawType().getGenericInterfaces()) { + TypeToken resolvedInterface = this.resolveSupertype(interfaceType); + builder.add(resolvedInterface); + } + return builder.build(); + } + + private ImmutableList> boundsAsInterfaces(Type[] bounds) { + ImmutableList.Builder builder = ImmutableList.builder(); + for (Type bound : bounds) { + TypeToken boundType = TypeToken.of(bound); + if (!boundType.getRawType().isInterface()) continue; + builder.add(boundType); + } + return builder.build(); + } + + public final TypeSet getTypes() { + return new TypeSet(); + } + + public final TypeToken getSupertype(Class superclass) { + Preconditions.checkArgument(superclass.isAssignableFrom(this.getRawType()), "%s is not a super class of %s", superclass, this); + if (this.runtimeType instanceof TypeVariable) { + return this.getSupertypeFromUpperBounds(superclass, ((TypeVariable)this.runtimeType).getBounds()); + } + if (this.runtimeType instanceof WildcardType) { + return this.getSupertypeFromUpperBounds(superclass, ((WildcardType)this.runtimeType).getUpperBounds()); + } + if (superclass.isArray()) { + return this.getArraySupertype(superclass); + } + TypeToken supertype = this.resolveSupertype(TypeToken.toGenericType(superclass).runtimeType); + return supertype; + } + + public final TypeToken getSubtype(Class subclass) { + Preconditions.checkArgument(!(this.runtimeType instanceof TypeVariable), "Cannot get subtype of type variable <%s>", this); + if (this.runtimeType instanceof WildcardType) { + return this.getSubtypeFromLowerBounds(subclass, ((WildcardType)this.runtimeType).getLowerBounds()); + } + Preconditions.checkArgument(this.getRawType().isAssignableFrom(subclass), "%s isn't a subclass of %s", subclass, this); + if (this.isArray()) { + return this.getArraySubtype(subclass); + } + TypeToken subtype = TypeToken.of(this.resolveTypeArgsForSubclass(subclass)); + return subtype; + } + + public final boolean isAssignableFrom(TypeToken type) { + return this.isAssignableFrom(type.runtimeType); + } + + public final boolean isAssignableFrom(Type type) { + return TypeToken.isAssignable(Preconditions.checkNotNull(type), this.runtimeType); + } + + public final boolean isArray() { + return this.getComponentType() != null; + } + + public final boolean isPrimitive() { + return this.runtimeType instanceof Class && ((Class)this.runtimeType).isPrimitive(); + } + + public final TypeToken wrap() { + if (this.isPrimitive()) { + Class type = (Class)this.runtimeType; + return TypeToken.of(Primitives.wrap(type)); + } + return this; + } + + private boolean isWrapper() { + return Primitives.allWrapperTypes().contains(this.runtimeType); + } + + public final TypeToken unwrap() { + if (this.isWrapper()) { + Class type = (Class)this.runtimeType; + return TypeToken.of(Primitives.unwrap(type)); + } + return this; + } + + @Nullable + public final TypeToken getComponentType() { + Type componentType = Types.getComponentType(this.runtimeType); + if (componentType == null) { + return null; + } + return TypeToken.of(componentType); + } + + public final Invokable method(Method method) { + Preconditions.checkArgument(TypeToken.of(method.getDeclaringClass()).isAssignableFrom(this), "%s not declared by %s", method, this); + return new Invokable.MethodInvokable(method){ + + @Override + Type getGenericReturnType() { + return TypeToken.this.resolveType(super.getGenericReturnType()).getType(); + } + + @Override + Type[] getGenericParameterTypes() { + return TypeToken.this.resolveInPlace(super.getGenericParameterTypes()); + } + + @Override + Type[] getGenericExceptionTypes() { + return TypeToken.this.resolveInPlace(super.getGenericExceptionTypes()); + } + + @Override + public TypeToken getOwnerType() { + return TypeToken.this; + } + + @Override + public String toString() { + String string = String.valueOf(String.valueOf(this.getOwnerType())); + String string2 = String.valueOf(String.valueOf(super.toString())); + return new StringBuilder(1 + string.length() + string2.length()).append(string).append(".").append(string2).toString(); + } + }; + } + + public final Invokable constructor(Constructor constructor) { + Preconditions.checkArgument(constructor.getDeclaringClass() == this.getRawType(), "%s not declared by %s", constructor, this.getRawType()); + return new Invokable.ConstructorInvokable(constructor){ + + @Override + Type getGenericReturnType() { + return TypeToken.this.resolveType(super.getGenericReturnType()).getType(); + } + + @Override + Type[] getGenericParameterTypes() { + return TypeToken.this.resolveInPlace(super.getGenericParameterTypes()); + } + + @Override + Type[] getGenericExceptionTypes() { + return TypeToken.this.resolveInPlace(super.getGenericExceptionTypes()); + } + + @Override + public TypeToken getOwnerType() { + return TypeToken.this; + } + + @Override + public String toString() { + String string = String.valueOf(String.valueOf(this.getOwnerType())); + String string2 = String.valueOf(String.valueOf(Joiner.on(", ").join(this.getGenericParameterTypes()))); + return new StringBuilder(2 + string.length() + string2.length()).append(string).append("(").append(string2).append(")").toString(); + } + }; + } + + public boolean equals(@Nullable Object o) { + if (o instanceof TypeToken) { + TypeToken that = (TypeToken)o; + return this.runtimeType.equals(that.runtimeType); + } + return false; + } + + public int hashCode() { + return this.runtimeType.hashCode(); + } + + public String toString() { + return Types.toString(this.runtimeType); + } + + protected Object writeReplace() { + return TypeToken.of(new TypeResolver().resolveType(this.runtimeType)); + } + + final TypeToken rejectTypeVariables() { + new TypeVisitor(){ + + @Override + void visitTypeVariable(TypeVariable type) { + String string = String.valueOf(String.valueOf(TypeToken.this.runtimeType)); + throw new IllegalArgumentException(new StringBuilder(58 + string.length()).append(string).append("contains a type variable and is not safe for the operation").toString()); + } + + @Override + void visitWildcardType(WildcardType type) { + this.visit(type.getLowerBounds()); + this.visit(type.getUpperBounds()); + } + + @Override + void visitParameterizedType(ParameterizedType type) { + this.visit(type.getActualTypeArguments()); + this.visit(type.getOwnerType()); + } + + @Override + void visitGenericArrayType(GenericArrayType type) { + this.visit(type.getGenericComponentType()); + } + }.visit(this.runtimeType); + return this; + } + + private static boolean isAssignable(Type from, Type to) { + if (to.equals(from)) { + return true; + } + if (to instanceof WildcardType) { + return TypeToken.isAssignableToWildcardType(from, (WildcardType)to); + } + if (from instanceof TypeVariable) { + return TypeToken.isAssignableFromAny(((TypeVariable)from).getBounds(), to); + } + if (from instanceof WildcardType) { + return TypeToken.isAssignableFromAny(((WildcardType)from).getUpperBounds(), to); + } + if (from instanceof GenericArrayType) { + return TypeToken.isAssignableFromGenericArrayType((GenericArrayType)from, to); + } + if (to instanceof Class) { + return TypeToken.isAssignableToClass(from, (Class)to); + } + if (to instanceof ParameterizedType) { + return TypeToken.isAssignableToParameterizedType(from, (ParameterizedType)to); + } + if (to instanceof GenericArrayType) { + return TypeToken.isAssignableToGenericArrayType(from, (GenericArrayType)to); + } + return false; + } + + private static boolean isAssignableFromAny(Type[] fromTypes, Type to) { + for (Type from : fromTypes) { + if (!TypeToken.isAssignable(from, to)) continue; + return true; + } + return false; + } + + private static boolean isAssignableToClass(Type from, Class to) { + return to.isAssignableFrom(TypeToken.getRawType(from)); + } + + private static boolean isAssignableToWildcardType(Type from, WildcardType to) { + return TypeToken.isAssignable(from, TypeToken.supertypeBound(to)) && TypeToken.isAssignableBySubtypeBound(from, to); + } + + private static boolean isAssignableBySubtypeBound(Type from, WildcardType to) { + Type toSubtypeBound = TypeToken.subtypeBound(to); + if (toSubtypeBound == null) { + return true; + } + Type fromSubtypeBound = TypeToken.subtypeBound(from); + if (fromSubtypeBound == null) { + return false; + } + return TypeToken.isAssignable(toSubtypeBound, fromSubtypeBound); + } + + private static boolean isAssignableToParameterizedType(Type from, ParameterizedType to) { + Class matchedClass = TypeToken.getRawType(to); + if (!matchedClass.isAssignableFrom(TypeToken.getRawType(from))) { + return false; + } + TypeVariable>[] typeParams = matchedClass.getTypeParameters(); + Type[] toTypeArgs = to.getActualTypeArguments(); + TypeToken fromTypeToken = TypeToken.of(from); + for (int i = 0; i < typeParams.length; ++i) { + Type fromTypeArg = fromTypeToken.resolveType(typeParams[i]).runtimeType; + if (TypeToken.matchTypeArgument(fromTypeArg, toTypeArgs[i])) continue; + return false; + } + return true; + } + + private static boolean isAssignableToGenericArrayType(Type from, GenericArrayType to) { + if (from instanceof Class) { + Class fromClass = (Class)from; + if (!fromClass.isArray()) { + return false; + } + return TypeToken.isAssignable(fromClass.getComponentType(), to.getGenericComponentType()); + } + if (from instanceof GenericArrayType) { + GenericArrayType fromArrayType = (GenericArrayType)from; + return TypeToken.isAssignable(fromArrayType.getGenericComponentType(), to.getGenericComponentType()); + } + return false; + } + + private static boolean isAssignableFromGenericArrayType(GenericArrayType from, Type to) { + if (to instanceof Class) { + Class toClass = (Class)to; + if (!toClass.isArray()) { + return toClass == Object.class; + } + return TypeToken.isAssignable(from.getGenericComponentType(), toClass.getComponentType()); + } + if (to instanceof GenericArrayType) { + GenericArrayType toArrayType = (GenericArrayType)to; + return TypeToken.isAssignable(from.getGenericComponentType(), toArrayType.getGenericComponentType()); + } + return false; + } + + private static boolean matchTypeArgument(Type from, Type to) { + if (from.equals(to)) { + return true; + } + if (to instanceof WildcardType) { + return TypeToken.isAssignableToWildcardType(from, (WildcardType)to); + } + return false; + } + + private static Type supertypeBound(Type type) { + if (type instanceof WildcardType) { + return TypeToken.supertypeBound((WildcardType)type); + } + return type; + } + + private static Type supertypeBound(WildcardType type) { + Type[] upperBounds = type.getUpperBounds(); + if (upperBounds.length == 1) { + return TypeToken.supertypeBound(upperBounds[0]); + } + if (upperBounds.length == 0) { + return Object.class; + } + String string = String.valueOf(String.valueOf(type)); + throw new AssertionError((Object)new StringBuilder(59 + string.length()).append("There should be at most one upper bound for wildcard type: ").append(string).toString()); + } + + @Nullable + private static Type subtypeBound(Type type) { + if (type instanceof WildcardType) { + return TypeToken.subtypeBound((WildcardType)type); + } + return type; + } + + @Nullable + private static Type subtypeBound(WildcardType type) { + Type[] lowerBounds = type.getLowerBounds(); + if (lowerBounds.length == 1) { + return TypeToken.subtypeBound(lowerBounds[0]); + } + if (lowerBounds.length == 0) { + return null; + } + String string = String.valueOf(String.valueOf(type)); + throw new AssertionError((Object)new StringBuilder(46 + string.length()).append("Wildcard should have at most one lower bound: ").append(string).toString()); + } + + @VisibleForTesting + static Class getRawType(Type type) { + return (Class)TypeToken.getRawTypes(type).iterator().next(); + } + + @VisibleForTesting + static ImmutableSet> getRawTypes(Type type) { + Preconditions.checkNotNull(type); + final ImmutableSet.Builder builder = ImmutableSet.builder(); + new TypeVisitor(){ + + @Override + void visitTypeVariable(TypeVariable t) { + this.visit(t.getBounds()); + } + + @Override + void visitWildcardType(WildcardType t) { + this.visit(t.getUpperBounds()); + } + + @Override + void visitParameterizedType(ParameterizedType t) { + builder.add((Class)t.getRawType()); + } + + @Override + void visitClass(Class t) { + builder.add(t); + } + + @Override + void visitGenericArrayType(GenericArrayType t) { + builder.add(Types.getArrayClass(TypeToken.getRawType(t.getGenericComponentType()))); + } + }.visit(type); + return builder.build(); + } + + @VisibleForTesting + static TypeToken toGenericType(Class cls) { + if (cls.isArray()) { + Type arrayOfGenericType = Types.newArrayType(TypeToken.toGenericType(cls.getComponentType()).runtimeType); + TypeToken result = TypeToken.of(arrayOfGenericType); + return result; + } + Type[] typeParams = cls.getTypeParameters(); + if (typeParams.length > 0) { + TypeToken type = TypeToken.of(Types.newParameterizedType(cls, typeParams)); + return type; + } + return TypeToken.of(cls); + } + + private TypeToken getSupertypeFromUpperBounds(Class supertype, Type[] upperBounds) { + for (Type upperBound : upperBounds) { + TypeToken bound = TypeToken.of(upperBound); + if (!TypeToken.of(supertype).isAssignableFrom(bound)) continue; + TypeToken result = bound.getSupertype(supertype); + return result; + } + String string = String.valueOf(String.valueOf(supertype)); + String string2 = String.valueOf(String.valueOf(this)); + throw new IllegalArgumentException(new StringBuilder(23 + string.length() + string2.length()).append(string).append(" isn't a super type of ").append(string2).toString()); + } + + private TypeToken getSubtypeFromLowerBounds(Class subclass, Type[] lowerBounds) { + int i$ = 0; + Type[] arr$ = lowerBounds; + int len$ = arr$.length; + if (i$ < len$) { + Type lowerBound = arr$[i$]; + TypeToken bound = TypeToken.of(lowerBound); + return bound.getSubtype(subclass); + } + String string = String.valueOf(String.valueOf(subclass)); + String string2 = String.valueOf(String.valueOf(this)); + throw new IllegalArgumentException(new StringBuilder(21 + string.length() + string2.length()).append(string).append(" isn't a subclass of ").append(string2).toString()); + } + + private TypeToken getArraySupertype(Class supertype) { + TypeToken componentType = Preconditions.checkNotNull(this.getComponentType(), "%s isn't a super type of %s", supertype, this); + TypeToken componentSupertype = componentType.getSupertype(supertype.getComponentType()); + TypeToken result = TypeToken.of(TypeToken.newArrayClassOrGenericArrayType(componentSupertype.runtimeType)); + return result; + } + + private TypeToken getArraySubtype(Class subclass) { + TypeToken componentSubtype = this.getComponentType().getSubtype(subclass.getComponentType()); + TypeToken result = TypeToken.of(TypeToken.newArrayClassOrGenericArrayType(componentSubtype.runtimeType)); + return result; + } + + private Type resolveTypeArgsForSubclass(Class subclass) { + if (this.runtimeType instanceof Class) { + return subclass; + } + TypeToken genericSubtype = TypeToken.toGenericType(subclass); + Type supertypeWithArgsFromSubtype = genericSubtype.getSupertype(this.getRawType()).runtimeType; + return new TypeResolver().where(supertypeWithArgsFromSubtype, this.runtimeType).resolveType(genericSubtype.runtimeType); + } + + private static Type newArrayClassOrGenericArrayType(Type componentType) { + return Types.JavaVersion.JAVA7.newArrayType(componentType); + } + + private static abstract class TypeCollector { + static final TypeCollector> FOR_GENERIC_TYPE = new TypeCollector>(){ + + @Override + Class getRawType(TypeToken type) { + return type.getRawType(); + } + + @Override + Iterable> getInterfaces(TypeToken type) { + return type.getGenericInterfaces(); + } + + @Override + @Nullable + TypeToken getSuperclass(TypeToken type) { + return type.getGenericSuperclass(); + } + }; + static final TypeCollector> FOR_RAW_TYPE = new TypeCollector>(){ + + @Override + Class getRawType(Class type) { + return type; + } + + @Override + Iterable> getInterfaces(Class type) { + return Arrays.asList(type.getInterfaces()); + } + + @Override + @Nullable + Class getSuperclass(Class type) { + return type.getSuperclass(); + } + }; + + private TypeCollector() { + } + + final TypeCollector classesOnly() { + return new ForwardingTypeCollector(this){ + + @Override + Iterable getInterfaces(K type) { + return ImmutableSet.of(); + } + + @Override + ImmutableList collectTypes(Iterable types) { + ImmutableList.Builder builder = ImmutableList.builder(); + for (Object type : types) { + if (this.getRawType(type).isInterface()) continue; + builder.add(type); + } + return super.collectTypes(builder.build()); + } + }; + } + + final ImmutableList collectTypes(K type) { + return this.collectTypes((Iterable)ImmutableList.of(type)); + } + + ImmutableList collectTypes(Iterable types) { + HashMap map = Maps.newHashMap(); + for (K type : types) { + this.collectTypes(type, map); + } + return TypeCollector.sortKeysByValue(map, Ordering.natural().reverse()); + } + + private int collectTypes(K type, Map map) { + Integer existing = map.get(this); + if (existing != null) { + return existing; + } + int aboveMe = this.getRawType(type).isInterface() ? 1 : 0; + for (K interfaceType : this.getInterfaces(type)) { + aboveMe = Math.max(aboveMe, this.collectTypes(interfaceType, map)); + } + K superclass = this.getSuperclass(type); + if (superclass != null) { + aboveMe = Math.max(aboveMe, this.collectTypes(superclass, map)); + } + map.put(type, aboveMe + 1); + return aboveMe + 1; + } + + private static ImmutableList sortKeysByValue(final Map map, final Comparator valueComparator) { + Ordering keyOrdering = new Ordering(){ + + @Override + public int compare(K left, K right) { + return valueComparator.compare(map.get(left), map.get(right)); + } + }; + return keyOrdering.immutableSortedCopy(map.keySet()); + } + + abstract Class getRawType(K var1); + + abstract Iterable getInterfaces(K var1); + + @Nullable + abstract K getSuperclass(K var1); + + private static class ForwardingTypeCollector + extends TypeCollector { + private final TypeCollector delegate; + + ForwardingTypeCollector(TypeCollector delegate) { + this.delegate = delegate; + } + + @Override + Class getRawType(K type) { + return this.delegate.getRawType(type); + } + + @Override + Iterable getInterfaces(K type) { + return this.delegate.getInterfaces(type); + } + + @Override + K getSuperclass(K type) { + return this.delegate.getSuperclass(type); + } + } + } + + private static final class SimpleTypeToken + extends TypeToken { + private static final long serialVersionUID = 0L; + + SimpleTypeToken(Type type) { + super(type); + } + } + + private static enum TypeFilter implements Predicate> + { + IGNORE_TYPE_VARIABLE_OR_WILDCARD{ + + @Override + public boolean apply(TypeToken type) { + return !(((TypeToken)type).runtimeType instanceof TypeVariable) && !(((TypeToken)type).runtimeType instanceof WildcardType); + } + } + , + INTERFACE_ONLY{ + + @Override + public boolean apply(TypeToken type) { + return type.getRawType().isInterface(); + } + }; + + } + + private final class ClassSet + extends TypeSet { + private transient ImmutableSet> classes; + private static final long serialVersionUID = 0L; + + private ClassSet() { + } + + @Override + protected Set> delegate() { + ImmutableSet result = this.classes; + if (result == null) { + ImmutableList collectedTypes = TypeCollector.FOR_GENERIC_TYPE.classesOnly().collectTypes(TypeToken.this); + this.classes = FluentIterable.from(collectedTypes).filter(TypeFilter.IGNORE_TYPE_VARIABLE_OR_WILDCARD).toSet(); + return this.classes; + } + return result; + } + + @Override + public TypeSet classes() { + return this; + } + + @Override + public Set> rawTypes() { + ImmutableList> collectedTypes = TypeCollector.FOR_RAW_TYPE.classesOnly().collectTypes(TypeToken.this.getImmediateRawTypes()); + return ImmutableSet.copyOf(collectedTypes); + } + + @Override + public TypeSet interfaces() { + throw new UnsupportedOperationException("classes().interfaces() not supported."); + } + + private Object readResolve() { + return TypeToken.this.getTypes().classes(); + } + } + + private final class InterfaceSet + extends TypeSet { + private final transient TypeSet allTypes; + private transient ImmutableSet> interfaces; + private static final long serialVersionUID = 0L; + + InterfaceSet(TypeSet allTypes) { + this.allTypes = allTypes; + } + + @Override + protected Set> delegate() { + ImmutableSet result = this.interfaces; + if (result == null) { + this.interfaces = FluentIterable.from(this.allTypes).filter(TypeFilter.INTERFACE_ONLY).toSet(); + return this.interfaces; + } + return result; + } + + @Override + public TypeSet interfaces() { + return this; + } + + @Override + public Set> rawTypes() { + ImmutableList> collectedTypes = TypeCollector.FOR_RAW_TYPE.collectTypes(TypeToken.this.getImmediateRawTypes()); + return FluentIterable.from(collectedTypes).filter(new Predicate>(){ + + @Override + public boolean apply(Class type) { + return type.isInterface(); + } + }).toSet(); + } + + @Override + public TypeSet classes() { + throw new UnsupportedOperationException("interfaces().classes() not supported."); + } + + private Object readResolve() { + return TypeToken.this.getTypes().interfaces(); + } + } + + public class TypeSet + extends ForwardingSet> + implements Serializable { + private transient ImmutableSet> types; + private static final long serialVersionUID = 0L; + + TypeSet() { + } + + public TypeSet interfaces() { + return new InterfaceSet(this); + } + + public TypeSet classes() { + return new ClassSet(); + } + + @Override + protected Set> delegate() { + ImmutableSet filteredTypes = this.types; + if (filteredTypes == null) { + ImmutableList collectedTypes = TypeCollector.FOR_GENERIC_TYPE.collectTypes(TypeToken.this); + this.types = FluentIterable.from(collectedTypes).filter(TypeFilter.IGNORE_TYPE_VARIABLE_OR_WILDCARD).toSet(); + return this.types; + } + return filteredTypes; + } + + public Set> rawTypes() { + ImmutableList> collectedTypes = TypeCollector.FOR_RAW_TYPE.collectTypes(TypeToken.this.getImmediateRawTypes()); + return ImmutableSet.copyOf(collectedTypes); + } + } +} diff --git a/src/com/google/common/reflect/TypeVisitor.java b/src/com/google/common/reflect/TypeVisitor.java new file mode 100644 index 0000000..8b62951 --- /dev/null +++ b/src/com/google/common/reflect/TypeVisitor.java @@ -0,0 +1,68 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.reflect; + +import com.google.common.collect.Sets; +import java.lang.reflect.GenericArrayType; +import java.lang.reflect.ParameterizedType; +import java.lang.reflect.Type; +import java.lang.reflect.TypeVariable; +import java.lang.reflect.WildcardType; +import java.util.Set; +import javax.annotation.concurrent.NotThreadSafe; + +@NotThreadSafe +abstract class TypeVisitor { + private final Set visited = Sets.newHashSet(); + + TypeVisitor() { + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + public final void visit(Type ... types) { + for (Type type : types) { + if (type == null || !this.visited.add(type)) continue; + boolean succeeded = false; + try { + if (type instanceof TypeVariable) { + this.visitTypeVariable((TypeVariable)type); + } else if (type instanceof WildcardType) { + this.visitWildcardType((WildcardType)type); + } else if (type instanceof ParameterizedType) { + this.visitParameterizedType((ParameterizedType)type); + } else if (type instanceof Class) { + this.visitClass((Class)type); + } else if (type instanceof GenericArrayType) { + this.visitGenericArrayType((GenericArrayType)type); + } else { + String string = String.valueOf(String.valueOf(type)); + throw new AssertionError((Object)new StringBuilder(14 + string.length()).append("Unknown type: ").append(string).toString()); + } + succeeded = true; + } + finally { + if (!succeeded) { + this.visited.remove(type); + } + } + } + } + + void visitClass(Class t) { + } + + void visitGenericArrayType(GenericArrayType t) { + } + + void visitParameterizedType(ParameterizedType t) { + } + + void visitTypeVariable(TypeVariable t) { + } + + void visitWildcardType(WildcardType t) { + } +} diff --git a/src/com/google/common/reflect/Types.java b/src/com/google/common/reflect/Types.java new file mode 100644 index 0000000..f41c322 --- /dev/null +++ b/src/com/google/common/reflect/Types.java @@ -0,0 +1,491 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.reflect; + +import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.Function; +import com.google.common.base.Joiner; +import com.google.common.base.Objects; +import com.google.common.base.Preconditions; +import com.google.common.base.Predicates; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.Iterables; +import com.google.common.reflect.TypeCapture; +import com.google.common.reflect.TypeVisitor; +import java.io.Serializable; +import java.lang.reflect.AnnotatedElement; +import java.lang.reflect.Array; +import java.lang.reflect.GenericArrayType; +import java.lang.reflect.GenericDeclaration; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.lang.reflect.ParameterizedType; +import java.lang.reflect.Type; +import java.lang.reflect.TypeVariable; +import java.lang.reflect.WildcardType; +import java.util.Arrays; +import java.util.Collection; +import java.util.concurrent.atomic.AtomicReference; +import javax.annotation.Nullable; + +final class Types { + private static final Function TYPE_NAME = new Function(){ + + @Override + public String apply(Type from) { + return JavaVersion.CURRENT.typeName(from); + } + }; + private static final Joiner COMMA_JOINER = Joiner.on(", ").useForNull("null"); + + static Type newArrayType(Type componentType) { + if (componentType instanceof WildcardType) { + WildcardType wildcard = (WildcardType)componentType; + Type[] lowerBounds = wildcard.getLowerBounds(); + Preconditions.checkArgument(lowerBounds.length <= 1, "Wildcard cannot have more than one lower bounds."); + if (lowerBounds.length == 1) { + return Types.supertypeOf(Types.newArrayType(lowerBounds[0])); + } + Type[] upperBounds = wildcard.getUpperBounds(); + Preconditions.checkArgument(upperBounds.length == 1, "Wildcard should have only one upper bound."); + return Types.subtypeOf(Types.newArrayType(upperBounds[0])); + } + return JavaVersion.CURRENT.newArrayType(componentType); + } + + static ParameterizedType newParameterizedTypeWithOwner(@Nullable Type ownerType, Class rawType, Type ... arguments) { + if (ownerType == null) { + return Types.newParameterizedType(rawType, arguments); + } + Preconditions.checkNotNull(arguments); + Preconditions.checkArgument(rawType.getEnclosingClass() != null, "Owner type for unenclosed %s", rawType); + return new ParameterizedTypeImpl(ownerType, rawType, arguments); + } + + static ParameterizedType newParameterizedType(Class rawType, Type ... arguments) { + return new ParameterizedTypeImpl(ClassOwnership.JVM_BEHAVIOR.getOwnerType(rawType), rawType, arguments); + } + + static TypeVariable newArtificialTypeVariable(D declaration, String name, Type ... bounds) { + Type[] typeArray; + if (bounds.length == 0) { + Type[] typeArray2 = new Type[1]; + typeArray = typeArray2; + typeArray2[0] = Object.class; + } else { + typeArray = bounds; + } + return new TypeVariableImpl(declaration, name, typeArray); + } + + @VisibleForTesting + static WildcardType subtypeOf(Type upperBound) { + return new WildcardTypeImpl(new Type[0], new Type[]{upperBound}); + } + + @VisibleForTesting + static WildcardType supertypeOf(Type lowerBound) { + return new WildcardTypeImpl(new Type[]{lowerBound}, new Type[]{Object.class}); + } + + static String toString(Type type) { + return type instanceof Class ? ((Class)type).getName() : type.toString(); + } + + @Nullable + static Type getComponentType(Type type) { + Preconditions.checkNotNull(type); + final AtomicReference result = new AtomicReference(); + new TypeVisitor(){ + + @Override + void visitTypeVariable(TypeVariable t) { + result.set(Types.subtypeOfComponentType(t.getBounds())); + } + + @Override + void visitWildcardType(WildcardType t) { + result.set(Types.subtypeOfComponentType(t.getUpperBounds())); + } + + @Override + void visitGenericArrayType(GenericArrayType t) { + result.set(t.getGenericComponentType()); + } + + @Override + void visitClass(Class t) { + result.set(t.getComponentType()); + } + }.visit(type); + return (Type)result.get(); + } + + @Nullable + private static Type subtypeOfComponentType(Type[] bounds) { + for (Type bound : bounds) { + Class componentClass; + Type componentType = Types.getComponentType(bound); + if (componentType == null) continue; + if (componentType instanceof Class && (componentClass = (Class)componentType).isPrimitive()) { + return componentClass; + } + return Types.subtypeOf(componentType); + } + return null; + } + + private static Type[] toArray(Collection types) { + return types.toArray(new Type[types.size()]); + } + + private static Iterable filterUpperBounds(Iterable bounds) { + return Iterables.filter(bounds, Predicates.not(Predicates.equalTo(Object.class))); + } + + private static void disallowPrimitiveType(Type[] types, String usedAs) { + for (Type type : types) { + if (!(type instanceof Class)) continue; + Class cls = (Class)type; + Preconditions.checkArgument(!cls.isPrimitive(), "Primitive type '%s' used as %s", cls, usedAs); + } + } + + static Class getArrayClass(Class componentType) { + return Array.newInstance(componentType, 0).getClass(); + } + + private Types() { + } + + static final class NativeTypeVariableEquals { + static final boolean NATIVE_TYPE_VARIABLE_ONLY = !NativeTypeVariableEquals.class.getTypeParameters()[0].equals(Types.newArtificialTypeVariable(NativeTypeVariableEquals.class, "X", new Type[0])); + + NativeTypeVariableEquals() { + } + } + + static enum JavaVersion { + JAVA6{ + + @Override + GenericArrayType newArrayType(Type componentType) { + return new GenericArrayTypeImpl(componentType); + } + + @Override + Type usedInGenericType(Type type) { + Class cls; + Preconditions.checkNotNull(type); + if (type instanceof Class && (cls = (Class)type).isArray()) { + return new GenericArrayTypeImpl(cls.getComponentType()); + } + return type; + } + } + , + JAVA7{ + + @Override + Type newArrayType(Type componentType) { + if (componentType instanceof Class) { + return Types.getArrayClass((Class)componentType); + } + return new GenericArrayTypeImpl(componentType); + } + + @Override + Type usedInGenericType(Type type) { + return Preconditions.checkNotNull(type); + } + } + , + JAVA8{ + + @Override + Type newArrayType(Type componentType) { + return JAVA7.newArrayType(componentType); + } + + @Override + Type usedInGenericType(Type type) { + return JAVA7.usedInGenericType(type); + } + + @Override + String typeName(Type type) { + try { + Method getTypeName = Type.class.getMethod("getTypeName", new Class[0]); + return (String)getTypeName.invoke(type, new Object[0]); + } + catch (NoSuchMethodException e) { + throw new AssertionError((Object)"Type.getTypeName should be available in Java 8"); + } + catch (InvocationTargetException e) { + throw new RuntimeException(e); + } + catch (IllegalAccessException e) { + throw new RuntimeException(e); + } + } + }; + + static final JavaVersion CURRENT; + + abstract Type newArrayType(Type var1); + + abstract Type usedInGenericType(Type var1); + + String typeName(Type type) { + return Types.toString(type); + } + + final ImmutableList usedInGenericType(Type[] types) { + ImmutableList.Builder builder = ImmutableList.builder(); + for (Type type : types) { + builder.add(this.usedInGenericType(type)); + } + return builder.build(); + } + + static { + CURRENT = AnnotatedElement.class.isAssignableFrom(TypeVariable.class) ? JAVA8 : (new TypeCapture(){}.capture() instanceof Class ? JAVA7 : JAVA6); + } + } + + static final class WildcardTypeImpl + implements WildcardType, + Serializable { + private final ImmutableList lowerBounds; + private final ImmutableList upperBounds; + private static final long serialVersionUID = 0L; + + WildcardTypeImpl(Type[] lowerBounds, Type[] upperBounds) { + Types.disallowPrimitiveType(lowerBounds, "lower bound for wildcard"); + Types.disallowPrimitiveType(upperBounds, "upper bound for wildcard"); + this.lowerBounds = JavaVersion.CURRENT.usedInGenericType(lowerBounds); + this.upperBounds = JavaVersion.CURRENT.usedInGenericType(upperBounds); + } + + @Override + public Type[] getLowerBounds() { + return Types.toArray(this.lowerBounds); + } + + @Override + public Type[] getUpperBounds() { + return Types.toArray(this.upperBounds); + } + + public boolean equals(Object obj) { + if (obj instanceof WildcardType) { + WildcardType that = (WildcardType)obj; + return this.lowerBounds.equals(Arrays.asList(that.getLowerBounds())) && this.upperBounds.equals(Arrays.asList(that.getUpperBounds())); + } + return false; + } + + public int hashCode() { + return this.lowerBounds.hashCode() ^ this.upperBounds.hashCode(); + } + + public String toString() { + StringBuilder builder = new StringBuilder("?"); + for (Type lowerBound : this.lowerBounds) { + builder.append(" super ").append(JavaVersion.CURRENT.typeName(lowerBound)); + } + for (Type upperBound : Types.filterUpperBounds(this.upperBounds)) { + builder.append(" extends ").append(JavaVersion.CURRENT.typeName(upperBound)); + } + return builder.toString(); + } + } + + private static final class TypeVariableImpl + implements TypeVariable { + private final D genericDeclaration; + private final String name; + private final ImmutableList bounds; + + TypeVariableImpl(D genericDeclaration, String name, Type[] bounds) { + Types.disallowPrimitiveType(bounds, "bound for type variable"); + this.genericDeclaration = (GenericDeclaration)Preconditions.checkNotNull(genericDeclaration); + this.name = Preconditions.checkNotNull(name); + this.bounds = ImmutableList.copyOf(bounds); + } + + @Override + public Type[] getBounds() { + return Types.toArray(this.bounds); + } + + @Override + public D getGenericDeclaration() { + return this.genericDeclaration; + } + + @Override + public String getName() { + return this.name; + } + + public String toString() { + return this.name; + } + + public int hashCode() { + return this.genericDeclaration.hashCode() ^ this.name.hashCode(); + } + + public boolean equals(Object obj) { + if (NativeTypeVariableEquals.NATIVE_TYPE_VARIABLE_ONLY) { + if (obj instanceof TypeVariableImpl) { + TypeVariableImpl that = (TypeVariableImpl)obj; + return this.name.equals(that.getName()) && this.genericDeclaration.equals(that.getGenericDeclaration()) && this.bounds.equals(that.bounds); + } + return false; + } + if (obj instanceof TypeVariable) { + TypeVariable that = (TypeVariable)obj; + return this.name.equals(that.getName()) && this.genericDeclaration.equals(that.getGenericDeclaration()); + } + return false; + } + } + + private static final class ParameterizedTypeImpl + implements ParameterizedType, + Serializable { + private final Type ownerType; + private final ImmutableList argumentsList; + private final Class rawType; + private static final long serialVersionUID = 0L; + + ParameterizedTypeImpl(@Nullable Type ownerType, Class rawType, Type[] typeArguments) { + Preconditions.checkNotNull(rawType); + Preconditions.checkArgument(typeArguments.length == rawType.getTypeParameters().length); + Types.disallowPrimitiveType(typeArguments, "type parameter"); + this.ownerType = ownerType; + this.rawType = rawType; + this.argumentsList = JavaVersion.CURRENT.usedInGenericType(typeArguments); + } + + @Override + public Type[] getActualTypeArguments() { + return Types.toArray(this.argumentsList); + } + + @Override + public Type getRawType() { + return this.rawType; + } + + @Override + public Type getOwnerType() { + return this.ownerType; + } + + public String toString() { + StringBuilder builder = new StringBuilder(); + if (this.ownerType != null) { + builder.append(JavaVersion.CURRENT.typeName(this.ownerType)).append('.'); + } + builder.append(this.rawType.getName()).append('<').append(COMMA_JOINER.join(Iterables.transform(this.argumentsList, TYPE_NAME))).append('>'); + return builder.toString(); + } + + public int hashCode() { + return (this.ownerType == null ? 0 : this.ownerType.hashCode()) ^ this.argumentsList.hashCode() ^ this.rawType.hashCode(); + } + + public boolean equals(Object other) { + if (!(other instanceof ParameterizedType)) { + return false; + } + ParameterizedType that = (ParameterizedType)other; + return this.getRawType().equals(that.getRawType()) && Objects.equal(this.getOwnerType(), that.getOwnerType()) && Arrays.equals(this.getActualTypeArguments(), that.getActualTypeArguments()); + } + } + + private static final class GenericArrayTypeImpl + implements GenericArrayType, + Serializable { + private final Type componentType; + private static final long serialVersionUID = 0L; + + GenericArrayTypeImpl(Type componentType) { + this.componentType = JavaVersion.CURRENT.usedInGenericType(componentType); + } + + @Override + public Type getGenericComponentType() { + return this.componentType; + } + + public String toString() { + return String.valueOf(Types.toString(this.componentType)).concat("[]"); + } + + public int hashCode() { + return this.componentType.hashCode(); + } + + public boolean equals(Object obj) { + if (obj instanceof GenericArrayType) { + GenericArrayType that = (GenericArrayType)obj; + return Objects.equal(this.getGenericComponentType(), that.getGenericComponentType()); + } + return false; + } + } + + private static enum ClassOwnership { + OWNED_BY_ENCLOSING_CLASS{ + + @Override + @Nullable + Class getOwnerType(Class rawType) { + return rawType.getEnclosingClass(); + } + } + , + LOCAL_CLASS_HAS_NO_OWNER{ + + @Override + @Nullable + Class getOwnerType(Class rawType) { + if (rawType.isLocalClass()) { + return null; + } + return rawType.getEnclosingClass(); + } + }; + + static final ClassOwnership JVM_BEHAVIOR; + + @Nullable + abstract Class getOwnerType(Class var1); + + private static ClassOwnership detectJvmBehavior() { + class LocalClass { + LocalClass() { + } + } + Class subclass = new LocalClass(){ + { + } + }.getClass(); + ParameterizedType parameterizedType = (ParameterizedType)subclass.getGenericSuperclass(); + for (ClassOwnership behavior : ClassOwnership.values()) { + if (behavior.getOwnerType(LocalClass.class) != parameterizedType.getOwnerType()) continue; + return behavior; + } + throw new AssertionError(); + } + + static { + JVM_BEHAVIOR = ClassOwnership.detectJvmBehavior(); + } + } +} diff --git a/src/com/google/common/reflect/package-info.java b/src/com/google/common/reflect/package-info.java new file mode 100644 index 0000000..643295b --- /dev/null +++ b/src/com/google/common/reflect/package-info.java @@ -0,0 +1,8 @@ +/* + * Decompiled with CFR 0.152. + */ +@ParametersAreNonnullByDefault +package com.google.common.reflect; + +import javax.annotation.ParametersAreNonnullByDefault; + diff --git a/src/com/google/common/util/concurrent/AbstractCheckedFuture.java b/src/com/google/common/util/concurrent/AbstractCheckedFuture.java new file mode 100644 index 0000000..73cf2a8 --- /dev/null +++ b/src/com/google/common/util/concurrent/AbstractCheckedFuture.java @@ -0,0 +1,58 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.util.concurrent; + +import com.google.common.annotations.Beta; +import com.google.common.util.concurrent.CheckedFuture; +import com.google.common.util.concurrent.ForwardingListenableFuture; +import com.google.common.util.concurrent.ListenableFuture; +import java.util.concurrent.CancellationException; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; + +@Beta +public abstract class AbstractCheckedFuture +extends ForwardingListenableFuture.SimpleForwardingListenableFuture +implements CheckedFuture { + protected AbstractCheckedFuture(ListenableFuture delegate) { + super(delegate); + } + + protected abstract X mapException(Exception var1); + + @Override + public V checkedGet() throws X { + try { + return this.get(); + } + catch (InterruptedException e) { + Thread.currentThread().interrupt(); + throw this.mapException(e); + } + catch (CancellationException e) { + throw this.mapException(e); + } + catch (ExecutionException e) { + throw this.mapException(e); + } + } + + @Override + public V checkedGet(long timeout, TimeUnit unit) throws TimeoutException, X { + try { + return this.get(timeout, unit); + } + catch (InterruptedException e) { + Thread.currentThread().interrupt(); + throw this.mapException(e); + } + catch (CancellationException e) { + throw this.mapException(e); + } + catch (ExecutionException e) { + throw this.mapException(e); + } + } +} diff --git a/src/com/google/common/util/concurrent/AbstractExecutionThreadService.java b/src/com/google/common/util/concurrent/AbstractExecutionThreadService.java new file mode 100644 index 0000000..dadfefd --- /dev/null +++ b/src/com/google/common/util/concurrent/AbstractExecutionThreadService.java @@ -0,0 +1,156 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.util.concurrent; + +import com.google.common.annotations.Beta; +import com.google.common.base.Supplier; +import com.google.common.base.Throwables; +import com.google.common.util.concurrent.AbstractService; +import com.google.common.util.concurrent.MoreExecutors; +import com.google.common.util.concurrent.Service; +import java.util.concurrent.Executor; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; +import java.util.logging.Level; +import java.util.logging.Logger; + +@Beta +public abstract class AbstractExecutionThreadService +implements Service { + private static final Logger logger = Logger.getLogger(AbstractExecutionThreadService.class.getName()); + private final Service delegate = new AbstractService(){ + + @Override + protected final void doStart() { + Executor executor = MoreExecutors.renamingDecorator(AbstractExecutionThreadService.this.executor(), new Supplier(){ + + @Override + public String get() { + return AbstractExecutionThreadService.this.serviceName(); + } + }); + executor.execute(new Runnable(){ + + @Override + public void run() { + try { + AbstractExecutionThreadService.this.startUp(); + this.notifyStarted(); + if (this.isRunning()) { + try { + AbstractExecutionThreadService.this.run(); + } + catch (Throwable t) { + try { + AbstractExecutionThreadService.this.shutDown(); + } + catch (Exception ignored) { + logger.log(Level.WARNING, "Error while attempting to shut down the service after failure.", ignored); + } + throw t; + } + } + AbstractExecutionThreadService.this.shutDown(); + this.notifyStopped(); + } + catch (Throwable t) { + this.notifyFailed(t); + throw Throwables.propagate(t); + } + } + }); + } + + @Override + protected void doStop() { + AbstractExecutionThreadService.this.triggerShutdown(); + } + }; + + protected AbstractExecutionThreadService() { + } + + protected void startUp() throws Exception { + } + + protected abstract void run() throws Exception; + + protected void shutDown() throws Exception { + } + + protected void triggerShutdown() { + } + + protected Executor executor() { + return new Executor(){ + + @Override + public void execute(Runnable command) { + MoreExecutors.newThread(AbstractExecutionThreadService.this.serviceName(), command).start(); + } + }; + } + + public String toString() { + String string = String.valueOf(String.valueOf(this.serviceName())); + String string2 = String.valueOf(String.valueOf((Object)this.state())); + return new StringBuilder(3 + string.length() + string2.length()).append(string).append(" [").append(string2).append("]").toString(); + } + + @Override + public final boolean isRunning() { + return this.delegate.isRunning(); + } + + @Override + public final Service.State state() { + return this.delegate.state(); + } + + @Override + public final void addListener(Service.Listener listener, Executor executor) { + this.delegate.addListener(listener, executor); + } + + @Override + public final Throwable failureCause() { + return this.delegate.failureCause(); + } + + @Override + public final Service startAsync() { + this.delegate.startAsync(); + return this; + } + + @Override + public final Service stopAsync() { + this.delegate.stopAsync(); + return this; + } + + @Override + public final void awaitRunning() { + this.delegate.awaitRunning(); + } + + @Override + public final void awaitRunning(long timeout, TimeUnit unit) throws TimeoutException { + this.delegate.awaitRunning(timeout, unit); + } + + @Override + public final void awaitTerminated() { + this.delegate.awaitTerminated(); + } + + @Override + public final void awaitTerminated(long timeout, TimeUnit unit) throws TimeoutException { + this.delegate.awaitTerminated(timeout, unit); + } + + protected String serviceName() { + return this.getClass().getSimpleName(); + } +} diff --git a/src/com/google/common/util/concurrent/AbstractFuture.java b/src/com/google/common/util/concurrent/AbstractFuture.java new file mode 100644 index 0000000..ff95417 --- /dev/null +++ b/src/com/google/common/util/concurrent/AbstractFuture.java @@ -0,0 +1,185 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.util.concurrent; + +import com.google.common.base.Preconditions; +import com.google.common.util.concurrent.ExecutionList; +import com.google.common.util.concurrent.ListenableFuture; +import java.util.concurrent.CancellationException; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.Executor; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; +import java.util.concurrent.locks.AbstractQueuedSynchronizer; +import javax.annotation.Nullable; + +public abstract class AbstractFuture +implements ListenableFuture { + private final Sync sync = new Sync(); + private final ExecutionList executionList = new ExecutionList(); + + protected AbstractFuture() { + } + + @Override + public V get(long timeout, TimeUnit unit) throws InterruptedException, TimeoutException, ExecutionException { + return this.sync.get(unit.toNanos(timeout)); + } + + @Override + public V get() throws InterruptedException, ExecutionException { + return this.sync.get(); + } + + @Override + public boolean isDone() { + return this.sync.isDone(); + } + + @Override + public boolean isCancelled() { + return this.sync.isCancelled(); + } + + @Override + public boolean cancel(boolean mayInterruptIfRunning) { + if (!this.sync.cancel(mayInterruptIfRunning)) { + return false; + } + this.executionList.execute(); + if (mayInterruptIfRunning) { + this.interruptTask(); + } + return true; + } + + protected void interruptTask() { + } + + protected final boolean wasInterrupted() { + return this.sync.wasInterrupted(); + } + + @Override + public void addListener(Runnable listener, Executor exec) { + this.executionList.add(listener, exec); + } + + protected boolean set(@Nullable V value) { + boolean result = this.sync.set(value); + if (result) { + this.executionList.execute(); + } + return result; + } + + protected boolean setException(Throwable throwable) { + boolean result = this.sync.setException(Preconditions.checkNotNull(throwable)); + if (result) { + this.executionList.execute(); + } + return result; + } + + static final CancellationException cancellationExceptionWithCause(@Nullable String message, @Nullable Throwable cause) { + CancellationException exception = new CancellationException(message); + exception.initCause(cause); + return exception; + } + + static final class Sync + extends AbstractQueuedSynchronizer { + private static final long serialVersionUID = 0L; + static final int RUNNING = 0; + static final int COMPLETING = 1; + static final int COMPLETED = 2; + static final int CANCELLED = 4; + static final int INTERRUPTED = 8; + private V value; + private Throwable exception; + + Sync() { + } + + @Override + protected int tryAcquireShared(int ignored) { + if (this.isDone()) { + return 1; + } + return -1; + } + + @Override + protected boolean tryReleaseShared(int finalState) { + this.setState(finalState); + return true; + } + + V get(long nanos) throws TimeoutException, CancellationException, ExecutionException, InterruptedException { + if (!this.tryAcquireSharedNanos(-1, nanos)) { + throw new TimeoutException("Timeout waiting for task."); + } + return this.getValue(); + } + + V get() throws CancellationException, ExecutionException, InterruptedException { + this.acquireSharedInterruptibly(-1); + return this.getValue(); + } + + private V getValue() throws CancellationException, ExecutionException { + int state = this.getState(); + switch (state) { + case 2: { + if (this.exception != null) { + throw new ExecutionException(this.exception); + } + return this.value; + } + case 4: + case 8: { + throw AbstractFuture.cancellationExceptionWithCause("Task was cancelled.", this.exception); + } + } + int n = state; + throw new IllegalStateException(new StringBuilder(49).append("Error, synchronizer in invalid state: ").append(n).toString()); + } + + boolean isDone() { + return (this.getState() & 0xE) != 0; + } + + boolean isCancelled() { + return (this.getState() & 0xC) != 0; + } + + boolean wasInterrupted() { + return this.getState() == 8; + } + + boolean set(@Nullable V v) { + return this.complete(v, null, 2); + } + + boolean setException(Throwable t) { + return this.complete(null, t, 2); + } + + boolean cancel(boolean interrupt) { + return this.complete(null, null, interrupt ? 8 : 4); + } + + private boolean complete(@Nullable V v, @Nullable Throwable t, int finalState) { + boolean doCompletion = this.compareAndSetState(0, 1); + if (doCompletion) { + this.value = v; + this.exception = (finalState & 0xC) != 0 ? new CancellationException("Future.cancel() was called.") : t; + this.releaseShared(finalState); + } else if (this.getState() == 1) { + this.acquireShared(-1); + } + return doCompletion; + } + } +} diff --git a/src/com/google/common/util/concurrent/AbstractIdleService.java b/src/com/google/common/util/concurrent/AbstractIdleService.java new file mode 100644 index 0000000..c1d4d3d --- /dev/null +++ b/src/com/google/common/util/concurrent/AbstractIdleService.java @@ -0,0 +1,145 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.util.concurrent; + +import com.google.common.annotations.Beta; +import com.google.common.base.Supplier; +import com.google.common.base.Throwables; +import com.google.common.util.concurrent.AbstractService; +import com.google.common.util.concurrent.MoreExecutors; +import com.google.common.util.concurrent.Service; +import java.util.concurrent.Executor; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; + +@Beta +public abstract class AbstractIdleService +implements Service { + private final Supplier threadNameSupplier = new Supplier(){ + + @Override + public String get() { + String string = String.valueOf(String.valueOf(AbstractIdleService.this.serviceName())); + String string2 = String.valueOf(String.valueOf((Object)AbstractIdleService.this.state())); + return new StringBuilder(1 + string.length() + string2.length()).append(string).append(" ").append(string2).toString(); + } + }; + private final Service delegate = new AbstractService(){ + + @Override + protected final void doStart() { + MoreExecutors.renamingDecorator(AbstractIdleService.this.executor(), (Supplier)AbstractIdleService.this.threadNameSupplier).execute(new Runnable(){ + + @Override + public void run() { + try { + AbstractIdleService.this.startUp(); + this.notifyStarted(); + } + catch (Throwable t) { + this.notifyFailed(t); + throw Throwables.propagate(t); + } + } + }); + } + + @Override + protected final void doStop() { + MoreExecutors.renamingDecorator(AbstractIdleService.this.executor(), (Supplier)AbstractIdleService.this.threadNameSupplier).execute(new Runnable(){ + + @Override + public void run() { + try { + AbstractIdleService.this.shutDown(); + this.notifyStopped(); + } + catch (Throwable t) { + this.notifyFailed(t); + throw Throwables.propagate(t); + } + } + }); + } + }; + + protected AbstractIdleService() { + } + + protected abstract void startUp() throws Exception; + + protected abstract void shutDown() throws Exception; + + protected Executor executor() { + return new Executor(){ + + @Override + public void execute(Runnable command) { + MoreExecutors.newThread((String)AbstractIdleService.this.threadNameSupplier.get(), command).start(); + } + }; + } + + public String toString() { + String string = String.valueOf(String.valueOf(this.serviceName())); + String string2 = String.valueOf(String.valueOf((Object)this.state())); + return new StringBuilder(3 + string.length() + string2.length()).append(string).append(" [").append(string2).append("]").toString(); + } + + @Override + public final boolean isRunning() { + return this.delegate.isRunning(); + } + + @Override + public final Service.State state() { + return this.delegate.state(); + } + + @Override + public final void addListener(Service.Listener listener, Executor executor) { + this.delegate.addListener(listener, executor); + } + + @Override + public final Throwable failureCause() { + return this.delegate.failureCause(); + } + + @Override + public final Service startAsync() { + this.delegate.startAsync(); + return this; + } + + @Override + public final Service stopAsync() { + this.delegate.stopAsync(); + return this; + } + + @Override + public final void awaitRunning() { + this.delegate.awaitRunning(); + } + + @Override + public final void awaitRunning(long timeout, TimeUnit unit) throws TimeoutException { + this.delegate.awaitRunning(timeout, unit); + } + + @Override + public final void awaitTerminated() { + this.delegate.awaitTerminated(); + } + + @Override + public final void awaitTerminated(long timeout, TimeUnit unit) throws TimeoutException { + this.delegate.awaitTerminated(timeout, unit); + } + + protected String serviceName() { + return this.getClass().getSimpleName(); + } +} diff --git a/src/com/google/common/util/concurrent/AbstractListeningExecutorService.java b/src/com/google/common/util/concurrent/AbstractListeningExecutorService.java new file mode 100644 index 0000000..ddce9d6 --- /dev/null +++ b/src/com/google/common/util/concurrent/AbstractListeningExecutorService.java @@ -0,0 +1,40 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.util.concurrent; + +import com.google.common.annotations.Beta; +import com.google.common.util.concurrent.ListenableFuture; +import com.google.common.util.concurrent.ListenableFutureTask; +import com.google.common.util.concurrent.ListeningExecutorService; +import java.util.concurrent.AbstractExecutorService; +import java.util.concurrent.Callable; +import javax.annotation.Nullable; + +@Beta +public abstract class AbstractListeningExecutorService +extends AbstractExecutorService +implements ListeningExecutorService { + protected final ListenableFutureTask newTaskFor(Runnable runnable, T value) { + return ListenableFutureTask.create(runnable, value); + } + + protected final ListenableFutureTask newTaskFor(Callable callable) { + return ListenableFutureTask.create(callable); + } + + @Override + public ListenableFuture submit(Runnable task) { + return (ListenableFuture)super.submit(task); + } + + @Override + public ListenableFuture submit(Runnable task, @Nullable T result) { + return (ListenableFuture)super.submit(task, result); + } + + @Override + public ListenableFuture submit(Callable task) { + return (ListenableFuture)super.submit(task); + } +} diff --git a/src/com/google/common/util/concurrent/AbstractScheduledService.java b/src/com/google/common/util/concurrent/AbstractScheduledService.java new file mode 100644 index 0000000..8f4933a --- /dev/null +++ b/src/com/google/common/util/concurrent/AbstractScheduledService.java @@ -0,0 +1,334 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.util.concurrent; + +import com.google.common.annotations.Beta; +import com.google.common.base.Preconditions; +import com.google.common.base.Supplier; +import com.google.common.base.Throwables; +import com.google.common.util.concurrent.AbstractService; +import com.google.common.util.concurrent.ForwardingFuture; +import com.google.common.util.concurrent.MoreExecutors; +import com.google.common.util.concurrent.Service; +import java.util.concurrent.Callable; +import java.util.concurrent.Executor; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.ThreadFactory; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; +import java.util.concurrent.locks.ReentrantLock; +import java.util.logging.Level; +import java.util.logging.Logger; +import javax.annotation.concurrent.GuardedBy; + +@Beta +public abstract class AbstractScheduledService +implements Service { + private static final Logger logger = Logger.getLogger(AbstractScheduledService.class.getName()); + private final AbstractService delegate = new AbstractService(){ + private volatile Future runningTask; + private volatile ScheduledExecutorService executorService; + private final ReentrantLock lock = new ReentrantLock(); + private final Runnable task = new Runnable(){ + + @Override + public void run() { + lock.lock(); + try { + AbstractScheduledService.this.runOneIteration(); + } + catch (Throwable t) { + try { + AbstractScheduledService.this.shutDown(); + } + catch (Exception ignored) { + logger.log(Level.WARNING, "Error while attempting to shut down the service after failure.", ignored); + } + this.notifyFailed(t); + throw Throwables.propagate(t); + } + finally { + lock.unlock(); + } + } + }; + + @Override + protected final void doStart() { + this.executorService = MoreExecutors.renamingDecorator(AbstractScheduledService.this.executor(), new Supplier(){ + + @Override + public String get() { + String string = String.valueOf(String.valueOf(AbstractScheduledService.this.serviceName())); + String string2 = String.valueOf(String.valueOf((Object)this.state())); + return new StringBuilder(1 + string.length() + string2.length()).append(string).append(" ").append(string2).toString(); + } + }); + this.executorService.execute(new Runnable(){ + + @Override + public void run() { + lock.lock(); + try { + AbstractScheduledService.this.startUp(); + runningTask = AbstractScheduledService.this.scheduler().schedule(AbstractScheduledService.this.delegate, executorService, task); + this.notifyStarted(); + } + catch (Throwable t) { + this.notifyFailed(t); + throw Throwables.propagate(t); + } + finally { + lock.unlock(); + } + } + }); + } + + @Override + protected final void doStop() { + this.runningTask.cancel(false); + this.executorService.execute(new Runnable(){ + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public void run() { + try { + lock.lock(); + try { + if (this.state() != Service.State.STOPPING) { + return; + } + AbstractScheduledService.this.shutDown(); + } + finally { + lock.unlock(); + } + this.notifyStopped(); + } + catch (Throwable t) { + this.notifyFailed(t); + throw Throwables.propagate(t); + } + } + }); + } + }; + + protected AbstractScheduledService() { + } + + protected abstract void runOneIteration() throws Exception; + + protected void startUp() throws Exception { + } + + protected void shutDown() throws Exception { + } + + protected abstract Scheduler scheduler(); + + protected ScheduledExecutorService executor() { + final ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor(new ThreadFactory(){ + + @Override + public Thread newThread(Runnable runnable) { + return MoreExecutors.newThread(AbstractScheduledService.this.serviceName(), runnable); + } + }); + this.addListener(new Service.Listener(){ + + @Override + public void terminated(Service.State from) { + executor.shutdown(); + } + + @Override + public void failed(Service.State from, Throwable failure) { + executor.shutdown(); + } + }, MoreExecutors.directExecutor()); + return executor; + } + + protected String serviceName() { + return this.getClass().getSimpleName(); + } + + public String toString() { + String string = String.valueOf(String.valueOf(this.serviceName())); + String string2 = String.valueOf(String.valueOf((Object)this.state())); + return new StringBuilder(3 + string.length() + string2.length()).append(string).append(" [").append(string2).append("]").toString(); + } + + @Override + public final boolean isRunning() { + return this.delegate.isRunning(); + } + + @Override + public final Service.State state() { + return this.delegate.state(); + } + + @Override + public final void addListener(Service.Listener listener, Executor executor) { + this.delegate.addListener(listener, executor); + } + + @Override + public final Throwable failureCause() { + return this.delegate.failureCause(); + } + + @Override + public final Service startAsync() { + this.delegate.startAsync(); + return this; + } + + @Override + public final Service stopAsync() { + this.delegate.stopAsync(); + return this; + } + + @Override + public final void awaitRunning() { + this.delegate.awaitRunning(); + } + + @Override + public final void awaitRunning(long timeout, TimeUnit unit) throws TimeoutException { + this.delegate.awaitRunning(timeout, unit); + } + + @Override + public final void awaitTerminated() { + this.delegate.awaitTerminated(); + } + + @Override + public final void awaitTerminated(long timeout, TimeUnit unit) throws TimeoutException { + this.delegate.awaitTerminated(timeout, unit); + } + + @Beta + public static abstract class CustomScheduler + extends Scheduler { + @Override + final Future schedule(AbstractService service, ScheduledExecutorService executor, Runnable runnable) { + ReschedulableCallable task = new ReschedulableCallable(service, executor, runnable); + task.reschedule(); + return task; + } + + protected abstract Schedule getNextSchedule() throws Exception; + + @Beta + protected static final class Schedule { + private final long delay; + private final TimeUnit unit; + + public Schedule(long delay, TimeUnit unit) { + this.delay = delay; + this.unit = Preconditions.checkNotNull(unit); + } + } + + private class ReschedulableCallable + extends ForwardingFuture + implements Callable { + private final Runnable wrappedRunnable; + private final ScheduledExecutorService executor; + private final AbstractService service; + private final ReentrantLock lock = new ReentrantLock(); + @GuardedBy(value="lock") + private Future currentFuture; + + ReschedulableCallable(AbstractService service, ScheduledExecutorService executor, Runnable runnable) { + this.wrappedRunnable = runnable; + this.executor = executor; + this.service = service; + } + + @Override + public Void call() throws Exception { + this.wrappedRunnable.run(); + this.reschedule(); + return null; + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + public void reschedule() { + this.lock.lock(); + try { + if (this.currentFuture == null || !this.currentFuture.isCancelled()) { + Schedule schedule = CustomScheduler.this.getNextSchedule(); + this.currentFuture = this.executor.schedule(this, schedule.delay, schedule.unit); + } + } + catch (Throwable e) { + this.service.notifyFailed(e); + } + finally { + this.lock.unlock(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public boolean cancel(boolean mayInterruptIfRunning) { + this.lock.lock(); + try { + boolean bl = this.currentFuture.cancel(mayInterruptIfRunning); + return bl; + } + finally { + this.lock.unlock(); + } + } + + @Override + protected Future delegate() { + throw new UnsupportedOperationException("Only cancel is supported by this future"); + } + } + } + + public static abstract class Scheduler { + public static Scheduler newFixedDelaySchedule(final long initialDelay, final long delay, final TimeUnit unit) { + return new Scheduler(){ + + @Override + public Future schedule(AbstractService service, ScheduledExecutorService executor, Runnable task) { + return executor.scheduleWithFixedDelay(task, initialDelay, delay, unit); + } + }; + } + + public static Scheduler newFixedRateSchedule(final long initialDelay, final long period, final TimeUnit unit) { + return new Scheduler(){ + + @Override + public Future schedule(AbstractService service, ScheduledExecutorService executor, Runnable task) { + return executor.scheduleAtFixedRate(task, initialDelay, period, unit); + } + }; + } + + abstract Future schedule(AbstractService var1, ScheduledExecutorService var2, Runnable var3); + + private Scheduler() { + } + } +} diff --git a/src/com/google/common/util/concurrent/AbstractService.java b/src/com/google/common/util/concurrent/AbstractService.java new file mode 100644 index 0000000..85991ed --- /dev/null +++ b/src/com/google/common/util/concurrent/AbstractService.java @@ -0,0 +1,479 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.util.concurrent; + +import com.google.common.annotations.Beta; +import com.google.common.base.Preconditions; +import com.google.common.util.concurrent.ListenerCallQueue; +import com.google.common.util.concurrent.Monitor; +import com.google.common.util.concurrent.Service; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.concurrent.Executor; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; +import javax.annotation.Nullable; +import javax.annotation.concurrent.GuardedBy; +import javax.annotation.concurrent.Immutable; + +@Beta +public abstract class AbstractService +implements Service { + private static final ListenerCallQueue.Callback STARTING_CALLBACK = new ListenerCallQueue.Callback("starting()"){ + + @Override + void call(Service.Listener listener) { + listener.starting(); + } + }; + private static final ListenerCallQueue.Callback RUNNING_CALLBACK = new ListenerCallQueue.Callback("running()"){ + + @Override + void call(Service.Listener listener) { + listener.running(); + } + }; + private static final ListenerCallQueue.Callback STOPPING_FROM_STARTING_CALLBACK = AbstractService.stoppingCallback(Service.State.STARTING); + private static final ListenerCallQueue.Callback STOPPING_FROM_RUNNING_CALLBACK = AbstractService.stoppingCallback(Service.State.RUNNING); + private static final ListenerCallQueue.Callback TERMINATED_FROM_NEW_CALLBACK = AbstractService.terminatedCallback(Service.State.NEW); + private static final ListenerCallQueue.Callback TERMINATED_FROM_RUNNING_CALLBACK = AbstractService.terminatedCallback(Service.State.RUNNING); + private static final ListenerCallQueue.Callback TERMINATED_FROM_STOPPING_CALLBACK = AbstractService.terminatedCallback(Service.State.STOPPING); + private final Monitor monitor = new Monitor(); + private final Monitor.Guard isStartable = new Monitor.Guard(this.monitor){ + + @Override + public boolean isSatisfied() { + return AbstractService.this.state() == Service.State.NEW; + } + }; + private final Monitor.Guard isStoppable = new Monitor.Guard(this.monitor){ + + @Override + public boolean isSatisfied() { + return AbstractService.this.state().compareTo(Service.State.RUNNING) <= 0; + } + }; + private final Monitor.Guard hasReachedRunning = new Monitor.Guard(this.monitor){ + + @Override + public boolean isSatisfied() { + return AbstractService.this.state().compareTo(Service.State.RUNNING) >= 0; + } + }; + private final Monitor.Guard isStopped = new Monitor.Guard(this.monitor){ + + @Override + public boolean isSatisfied() { + return AbstractService.this.state().isTerminal(); + } + }; + @GuardedBy(value="monitor") + private final List> listeners = Collections.synchronizedList(new ArrayList()); + @GuardedBy(value="monitor") + private volatile StateSnapshot snapshot = new StateSnapshot(Service.State.NEW); + + private static ListenerCallQueue.Callback terminatedCallback(final Service.State from) { + String string = String.valueOf(String.valueOf((Object)from)); + return new ListenerCallQueue.Callback(new StringBuilder(21 + string.length()).append("terminated({from = ").append(string).append("})").toString()){ + + @Override + void call(Service.Listener listener) { + listener.terminated(from); + } + }; + } + + private static ListenerCallQueue.Callback stoppingCallback(final Service.State from) { + String string = String.valueOf(String.valueOf((Object)from)); + return new ListenerCallQueue.Callback(new StringBuilder(19 + string.length()).append("stopping({from = ").append(string).append("})").toString()){ + + @Override + void call(Service.Listener listener) { + listener.stopping(from); + } + }; + } + + protected AbstractService() { + } + + protected abstract void doStart(); + + protected abstract void doStop(); + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public final Service startAsync() { + if (this.monitor.enterIf(this.isStartable)) { + try { + this.snapshot = new StateSnapshot(Service.State.STARTING); + this.starting(); + this.doStart(); + } + catch (Throwable startupFailure) { + this.notifyFailed(startupFailure); + } + finally { + this.monitor.leave(); + this.executeListeners(); + } + } else { + String string = String.valueOf(String.valueOf(this)); + throw new IllegalStateException(new StringBuilder(33 + string.length()).append("Service ").append(string).append(" has already been started").toString()); + } + return this; + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + * Enabled force condition propagation + * Lifted jumps to return sites + */ + @Override + public final Service stopAsync() { + if (!this.monitor.enterIf(this.isStoppable)) return this; + try { + Service.State previous = this.state(); + switch (previous) { + case NEW: { + this.snapshot = new StateSnapshot(Service.State.TERMINATED); + this.terminated(Service.State.NEW); + return this; + } + case STARTING: { + this.snapshot = new StateSnapshot(Service.State.STARTING, true, null); + this.stopping(Service.State.STARTING); + return this; + } + case RUNNING: { + this.snapshot = new StateSnapshot(Service.State.STOPPING); + this.stopping(Service.State.RUNNING); + this.doStop(); + return this; + } + case STOPPING: + case TERMINATED: + case FAILED: { + String string = String.valueOf(String.valueOf((Object)previous)); + throw new AssertionError((Object)new StringBuilder(45 + string.length()).append("isStoppable is incorrectly implemented, saw: ").append(string).toString()); + } + default: { + String string = String.valueOf(String.valueOf((Object)previous)); + throw new AssertionError((Object)new StringBuilder(18 + string.length()).append("Unexpected state: ").append(string).toString()); + } + } + } + catch (Throwable shutdownFailure) { + this.notifyFailed(shutdownFailure); + return this; + } + finally { + this.monitor.leave(); + this.executeListeners(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public final void awaitRunning() { + this.monitor.enterWhenUninterruptibly(this.hasReachedRunning); + try { + this.checkCurrentState(Service.State.RUNNING); + } + finally { + this.monitor.leave(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public final void awaitRunning(long timeout, TimeUnit unit) throws TimeoutException { + if (this.monitor.enterWhenUninterruptibly(this.hasReachedRunning, timeout, unit)) { + try { + this.checkCurrentState(Service.State.RUNNING); + } + finally { + this.monitor.leave(); + } + } else { + String string = String.valueOf(String.valueOf(this)); + String string2 = String.valueOf(String.valueOf((Object)this.state())); + throw new TimeoutException(new StringBuilder(66 + string.length() + string2.length()).append("Timed out waiting for ").append(string).append(" to reach the RUNNING state. ").append("Current state: ").append(string2).toString()); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public final void awaitTerminated() { + this.monitor.enterWhenUninterruptibly(this.isStopped); + try { + this.checkCurrentState(Service.State.TERMINATED); + } + finally { + this.monitor.leave(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public final void awaitTerminated(long timeout, TimeUnit unit) throws TimeoutException { + if (this.monitor.enterWhenUninterruptibly(this.isStopped, timeout, unit)) { + try { + this.checkCurrentState(Service.State.TERMINATED); + } + finally { + this.monitor.leave(); + } + } else { + String string = String.valueOf(String.valueOf(this)); + String string2 = String.valueOf(String.valueOf((Object)this.state())); + throw new TimeoutException(new StringBuilder(65 + string.length() + string2.length()).append("Timed out waiting for ").append(string).append(" to reach a terminal state. ").append("Current state: ").append(string2).toString()); + } + } + + @GuardedBy(value="monitor") + private void checkCurrentState(Service.State expected) { + Service.State actual = this.state(); + if (actual != expected) { + if (actual == Service.State.FAILED) { + String string = String.valueOf(String.valueOf((Object)expected)); + throw new IllegalStateException(new StringBuilder(55 + string.length()).append("Expected the service to be ").append(string).append(", but the service has FAILED").toString(), this.failureCause()); + } + String string = String.valueOf(String.valueOf((Object)expected)); + String string2 = String.valueOf(String.valueOf((Object)actual)); + throw new IllegalStateException(new StringBuilder(37 + string.length() + string2.length()).append("Expected the service to be ").append(string).append(", but was ").append(string2).toString()); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + protected final void notifyStarted() { + this.monitor.enter(); + try { + if (this.snapshot.state != Service.State.STARTING) { + String string = String.valueOf(String.valueOf((Object)this.snapshot.state)); + IllegalStateException failure = new IllegalStateException(new StringBuilder(43 + string.length()).append("Cannot notifyStarted() when the service is ").append(string).toString()); + this.notifyFailed(failure); + throw failure; + } + if (this.snapshot.shutdownWhenStartupFinishes) { + this.snapshot = new StateSnapshot(Service.State.STOPPING); + this.doStop(); + } else { + this.snapshot = new StateSnapshot(Service.State.RUNNING); + this.running(); + } + } + finally { + this.monitor.leave(); + this.executeListeners(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + protected final void notifyStopped() { + this.monitor.enter(); + try { + Service.State previous = this.snapshot.state; + if (previous != Service.State.STOPPING && previous != Service.State.RUNNING) { + String string = String.valueOf(String.valueOf((Object)previous)); + IllegalStateException failure = new IllegalStateException(new StringBuilder(43 + string.length()).append("Cannot notifyStopped() when the service is ").append(string).toString()); + this.notifyFailed(failure); + throw failure; + } + this.snapshot = new StateSnapshot(Service.State.TERMINATED); + this.terminated(previous); + } + finally { + this.monitor.leave(); + this.executeListeners(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + * Enabled force condition propagation + * Lifted jumps to return sites + */ + protected final void notifyFailed(Throwable cause) { + Preconditions.checkNotNull(cause); + this.monitor.enter(); + try { + Service.State previous = this.state(); + switch (previous) { + case NEW: + case TERMINATED: { + String string = String.valueOf(String.valueOf((Object)previous)); + throw new IllegalStateException(new StringBuilder(22 + string.length()).append("Failed while in state:").append(string).toString(), cause); + } + case STARTING: + case RUNNING: + case STOPPING: { + this.snapshot = new StateSnapshot(Service.State.FAILED, false, cause); + this.failed(previous, cause); + return; + } + case FAILED: { + return; + } + default: { + String string = String.valueOf(String.valueOf((Object)previous)); + throw new AssertionError((Object)new StringBuilder(18 + string.length()).append("Unexpected state: ").append(string).toString()); + } + } + } + finally { + this.monitor.leave(); + this.executeListeners(); + } + } + + @Override + public final boolean isRunning() { + return this.state() == Service.State.RUNNING; + } + + @Override + public final Service.State state() { + return this.snapshot.externalState(); + } + + @Override + public final Throwable failureCause() { + return this.snapshot.failureCause(); + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public final void addListener(Service.Listener listener, Executor executor) { + Preconditions.checkNotNull(listener, "listener"); + Preconditions.checkNotNull(executor, "executor"); + this.monitor.enter(); + try { + if (!this.state().isTerminal()) { + this.listeners.add(new ListenerCallQueue(listener, executor)); + } + } + finally { + this.monitor.leave(); + } + } + + public String toString() { + String string = String.valueOf(String.valueOf(this.getClass().getSimpleName())); + String string2 = String.valueOf(String.valueOf((Object)this.state())); + return new StringBuilder(3 + string.length() + string2.length()).append(string).append(" [").append(string2).append("]").toString(); + } + + private void executeListeners() { + if (!this.monitor.isOccupiedByCurrentThread()) { + for (int i = 0; i < this.listeners.size(); ++i) { + this.listeners.get(i).execute(); + } + } + } + + @GuardedBy(value="monitor") + private void starting() { + STARTING_CALLBACK.enqueueOn(this.listeners); + } + + @GuardedBy(value="monitor") + private void running() { + RUNNING_CALLBACK.enqueueOn(this.listeners); + } + + @GuardedBy(value="monitor") + private void stopping(Service.State from) { + if (from == Service.State.STARTING) { + STOPPING_FROM_STARTING_CALLBACK.enqueueOn(this.listeners); + } else if (from == Service.State.RUNNING) { + STOPPING_FROM_RUNNING_CALLBACK.enqueueOn(this.listeners); + } else { + throw new AssertionError(); + } + } + + @GuardedBy(value="monitor") + private void terminated(Service.State from) { + switch (from) { + case NEW: { + TERMINATED_FROM_NEW_CALLBACK.enqueueOn(this.listeners); + break; + } + case RUNNING: { + TERMINATED_FROM_RUNNING_CALLBACK.enqueueOn(this.listeners); + break; + } + case STOPPING: { + TERMINATED_FROM_STOPPING_CALLBACK.enqueueOn(this.listeners); + break; + } + default: { + throw new AssertionError(); + } + } + } + + @GuardedBy(value="monitor") + private void failed(final Service.State from, final Throwable cause) { + String string = String.valueOf(String.valueOf((Object)from)); + String string2 = String.valueOf(String.valueOf(cause)); + new ListenerCallQueue.Callback(new StringBuilder(27 + string.length() + string2.length()).append("failed({from = ").append(string).append(", cause = ").append(string2).append("})").toString()){ + + @Override + void call(Service.Listener listener) { + listener.failed(from, cause); + } + }.enqueueOn(this.listeners); + } + + @Immutable + private static final class StateSnapshot { + final Service.State state; + final boolean shutdownWhenStartupFinishes; + @Nullable + final Throwable failure; + + StateSnapshot(Service.State internalState) { + this(internalState, false, null); + } + + StateSnapshot(Service.State internalState, boolean shutdownWhenStartupFinishes, @Nullable Throwable failure) { + Preconditions.checkArgument(!shutdownWhenStartupFinishes || internalState == Service.State.STARTING, "shudownWhenStartupFinishes can only be set if state is STARTING. Got %s instead.", new Object[]{internalState}); + Preconditions.checkArgument(!(failure != null ^ internalState == Service.State.FAILED), "A failure cause should be set if and only if the state is failed. Got %s and %s instead.", new Object[]{internalState, failure}); + this.state = internalState; + this.shutdownWhenStartupFinishes = shutdownWhenStartupFinishes; + this.failure = failure; + } + + Service.State externalState() { + if (this.shutdownWhenStartupFinishes && this.state == Service.State.STARTING) { + return Service.State.STOPPING; + } + return this.state; + } + + Throwable failureCause() { + Preconditions.checkState(this.state == Service.State.FAILED, "failureCause() is only valid if the service has failed, service is %s", new Object[]{this.state}); + return this.failure; + } + } +} diff --git a/src/com/google/common/util/concurrent/AsyncFunction.java b/src/com/google/common/util/concurrent/AsyncFunction.java new file mode 100644 index 0000000..34de7bd --- /dev/null +++ b/src/com/google/common/util/concurrent/AsyncFunction.java @@ -0,0 +1,10 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.util.concurrent; + +import com.google.common.util.concurrent.ListenableFuture; + +public interface AsyncFunction { + public ListenableFuture apply(I var1) throws Exception; +} diff --git a/src/com/google/common/util/concurrent/AsyncSettableFuture.java b/src/com/google/common/util/concurrent/AsyncSettableFuture.java new file mode 100644 index 0000000..967e4c1 --- /dev/null +++ b/src/com/google/common/util/concurrent/AsyncSettableFuture.java @@ -0,0 +1,59 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.util.concurrent; + +import com.google.common.base.Preconditions; +import com.google.common.util.concurrent.AbstractFuture; +import com.google.common.util.concurrent.ForwardingListenableFuture; +import com.google.common.util.concurrent.Futures; +import com.google.common.util.concurrent.ListenableFuture; +import javax.annotation.Nullable; + +final class AsyncSettableFuture +extends ForwardingListenableFuture { + private final NestedFuture nested = new NestedFuture(); + private final ListenableFuture dereferenced = Futures.dereference(this.nested); + + public static AsyncSettableFuture create() { + return new AsyncSettableFuture(); + } + + private AsyncSettableFuture() { + } + + @Override + protected ListenableFuture delegate() { + return this.dereferenced; + } + + public boolean setFuture(ListenableFuture future) { + return this.nested.setFuture(Preconditions.checkNotNull(future)); + } + + public boolean setValue(@Nullable V value) { + return this.setFuture(Futures.immediateFuture(value)); + } + + public boolean setException(Throwable exception) { + return this.setFuture(Futures.immediateFailedFuture(exception)); + } + + public boolean isSet() { + return this.nested.isDone(); + } + + private static final class NestedFuture + extends AbstractFuture> { + private NestedFuture() { + } + + boolean setFuture(ListenableFuture value) { + boolean result = this.set(value); + if (this.isCancelled()) { + value.cancel(this.wasInterrupted()); + } + return result; + } + } +} diff --git a/src/com/google/common/util/concurrent/AtomicDouble.java b/src/com/google/common/util/concurrent/AtomicDouble.java new file mode 100644 index 0000000..c54e441 --- /dev/null +++ b/src/com/google/common/util/concurrent/AtomicDouble.java @@ -0,0 +1,105 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.util.concurrent; + +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.io.Serializable; +import java.util.concurrent.atomic.AtomicLongFieldUpdater; + +public class AtomicDouble +extends Number +implements Serializable { + private static final long serialVersionUID = 0L; + private volatile transient long value; + private static final AtomicLongFieldUpdater updater = AtomicLongFieldUpdater.newUpdater(AtomicDouble.class, "value"); + + public AtomicDouble(double initialValue) { + this.value = Double.doubleToRawLongBits(initialValue); + } + + public AtomicDouble() { + } + + public final double get() { + return Double.longBitsToDouble(this.value); + } + + public final void set(double newValue) { + long next; + this.value = next = Double.doubleToRawLongBits(newValue); + } + + public final void lazySet(double newValue) { + this.set(newValue); + } + + public final double getAndSet(double newValue) { + long next = Double.doubleToRawLongBits(newValue); + return Double.longBitsToDouble(updater.getAndSet(this, next)); + } + + public final boolean compareAndSet(double expect, double update) { + return updater.compareAndSet(this, Double.doubleToRawLongBits(expect), Double.doubleToRawLongBits(update)); + } + + public final boolean weakCompareAndSet(double expect, double update) { + return updater.weakCompareAndSet(this, Double.doubleToRawLongBits(expect), Double.doubleToRawLongBits(update)); + } + + public final double getAndAdd(double delta) { + double currentVal; + double nextVal; + long next; + long current; + while (!updater.compareAndSet(this, current = this.value, next = Double.doubleToRawLongBits(nextVal = (currentVal = Double.longBitsToDouble(current)) + delta))) { + } + return currentVal; + } + + public final double addAndGet(double delta) { + double currentVal; + double nextVal; + long next; + long current; + while (!updater.compareAndSet(this, current = this.value, next = Double.doubleToRawLongBits(nextVal = (currentVal = Double.longBitsToDouble(current)) + delta))) { + } + return nextVal; + } + + public String toString() { + return Double.toString(this.get()); + } + + @Override + public int intValue() { + return (int)this.get(); + } + + @Override + public long longValue() { + return (long)this.get(); + } + + @Override + public float floatValue() { + return (float)this.get(); + } + + @Override + public double doubleValue() { + return this.get(); + } + + private void writeObject(ObjectOutputStream s) throws IOException { + s.defaultWriteObject(); + s.writeDouble(this.get()); + } + + private void readObject(ObjectInputStream s) throws IOException, ClassNotFoundException { + s.defaultReadObject(); + this.set(s.readDouble()); + } +} diff --git a/src/com/google/common/util/concurrent/AtomicDoubleArray.java b/src/com/google/common/util/concurrent/AtomicDoubleArray.java new file mode 100644 index 0000000..3b9aa4e --- /dev/null +++ b/src/com/google/common/util/concurrent/AtomicDoubleArray.java @@ -0,0 +1,115 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.util.concurrent; + +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.io.Serializable; +import java.util.concurrent.atomic.AtomicLongArray; + +public class AtomicDoubleArray +implements Serializable { + private static final long serialVersionUID = 0L; + private transient AtomicLongArray longs; + + public AtomicDoubleArray(int length) { + this.longs = new AtomicLongArray(length); + } + + public AtomicDoubleArray(double[] array) { + int len = array.length; + long[] longArray = new long[len]; + for (int i = 0; i < len; ++i) { + longArray[i] = Double.doubleToRawLongBits(array[i]); + } + this.longs = new AtomicLongArray(longArray); + } + + public final int length() { + return this.longs.length(); + } + + public final double get(int i) { + return Double.longBitsToDouble(this.longs.get(i)); + } + + public final void set(int i, double newValue) { + long next = Double.doubleToRawLongBits(newValue); + this.longs.set(i, next); + } + + public final void lazySet(int i, double newValue) { + this.set(i, newValue); + } + + public final double getAndSet(int i, double newValue) { + long next = Double.doubleToRawLongBits(newValue); + return Double.longBitsToDouble(this.longs.getAndSet(i, next)); + } + + public final boolean compareAndSet(int i, double expect, double update) { + return this.longs.compareAndSet(i, Double.doubleToRawLongBits(expect), Double.doubleToRawLongBits(update)); + } + + public final boolean weakCompareAndSet(int i, double expect, double update) { + return this.longs.weakCompareAndSet(i, Double.doubleToRawLongBits(expect), Double.doubleToRawLongBits(update)); + } + + public final double getAndAdd(int i, double delta) { + double currentVal; + double nextVal; + long next; + long current; + while (!this.longs.compareAndSet(i, current = this.longs.get(i), next = Double.doubleToRawLongBits(nextVal = (currentVal = Double.longBitsToDouble(current)) + delta))) { + } + return currentVal; + } + + public double addAndGet(int i, double delta) { + double currentVal; + double nextVal; + long next; + long current; + while (!this.longs.compareAndSet(i, current = this.longs.get(i), next = Double.doubleToRawLongBits(nextVal = (currentVal = Double.longBitsToDouble(current)) + delta))) { + } + return nextVal; + } + + public String toString() { + int iMax = this.length() - 1; + if (iMax == -1) { + return "[]"; + } + StringBuilder b = new StringBuilder(19 * (iMax + 1)); + b.append('['); + int i = 0; + while (true) { + b.append(Double.longBitsToDouble(this.longs.get(i))); + if (i == iMax) { + return b.append(']').toString(); + } + b.append(',').append(' '); + ++i; + } + } + + private void writeObject(ObjectOutputStream s) throws IOException { + s.defaultWriteObject(); + int length = this.length(); + s.writeInt(length); + for (int i = 0; i < length; ++i) { + s.writeDouble(this.get(i)); + } + } + + private void readObject(ObjectInputStream s) throws IOException, ClassNotFoundException { + s.defaultReadObject(); + int length = s.readInt(); + this.longs = new AtomicLongArray(length); + for (int i = 0; i < length; ++i) { + this.set(i, s.readDouble()); + } + } +} diff --git a/src/com/google/common/util/concurrent/AtomicLongMap.java b/src/com/google/common/util/concurrent/AtomicLongMap.java new file mode 100644 index 0000000..3512d48 --- /dev/null +++ b/src/com/google/common/util/concurrent/AtomicLongMap.java @@ -0,0 +1,216 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.util.concurrent; + +import com.google.common.annotations.GwtCompatible; +import com.google.common.base.Function; +import com.google.common.base.Preconditions; +import com.google.common.collect.Maps; +import java.util.Collections; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.atomic.AtomicLong; + +@GwtCompatible +public final class AtomicLongMap { + private final ConcurrentHashMap map; + private transient Map asMap; + + private AtomicLongMap(ConcurrentHashMap map) { + this.map = Preconditions.checkNotNull(map); + } + + public static AtomicLongMap create() { + return new AtomicLongMap(new ConcurrentHashMap()); + } + + public static AtomicLongMap create(Map m) { + AtomicLongMap result = AtomicLongMap.create(); + result.putAll(m); + return result; + } + + public long get(K key) { + AtomicLong atomic = this.map.get(key); + return atomic == null ? 0L : atomic.get(); + } + + public long incrementAndGet(K key) { + return this.addAndGet(key, 1L); + } + + public long decrementAndGet(K key) { + return this.addAndGet(key, -1L); + } + + public long addAndGet(K key, long delta) { + long newValue; + block0: while (true) { + long oldValue; + AtomicLong atomic; + if ((atomic = this.map.get(key)) == null && (atomic = this.map.putIfAbsent(key, new AtomicLong(delta))) == null) { + return delta; + } + do { + if ((oldValue = atomic.get()) != 0L) continue; + if (!this.map.replace(key, atomic, new AtomicLong(delta))) continue block0; + return delta; + } while (!atomic.compareAndSet(oldValue, newValue = oldValue + delta)); + break; + } + return newValue; + } + + public long getAndIncrement(K key) { + return this.getAndAdd(key, 1L); + } + + public long getAndDecrement(K key) { + return this.getAndAdd(key, -1L); + } + + public long getAndAdd(K key, long delta) { + long oldValue; + block0: while (true) { + long newValue; + AtomicLong atomic; + if ((atomic = this.map.get(key)) == null && (atomic = this.map.putIfAbsent(key, new AtomicLong(delta))) == null) { + return 0L; + } + do { + if ((oldValue = atomic.get()) != 0L) continue; + if (!this.map.replace(key, atomic, new AtomicLong(delta))) continue block0; + return 0L; + } while (!atomic.compareAndSet(oldValue, newValue = oldValue + delta)); + break; + } + return oldValue; + } + + public long put(K key, long newValue) { + long oldValue; + block0: while (true) { + AtomicLong atomic; + if ((atomic = this.map.get(key)) == null && (atomic = this.map.putIfAbsent(key, new AtomicLong(newValue))) == null) { + return 0L; + } + do { + if ((oldValue = atomic.get()) != 0L) continue; + if (!this.map.replace(key, atomic, new AtomicLong(newValue))) continue block0; + return 0L; + } while (!atomic.compareAndSet(oldValue, newValue)); + break; + } + return oldValue; + } + + public void putAll(Map m) { + for (Map.Entry entry : m.entrySet()) { + this.put(entry.getKey(), entry.getValue()); + } + } + + public long remove(K key) { + long oldValue; + AtomicLong atomic = this.map.get(key); + if (atomic == null) { + return 0L; + } + while ((oldValue = atomic.get()) != 0L && !atomic.compareAndSet(oldValue, 0L)) { + } + this.map.remove(key, atomic); + return oldValue; + } + + public void removeAllZeros() { + for (Object key : this.map.keySet()) { + AtomicLong atomic = this.map.get(key); + if (atomic == null || atomic.get() != 0L) continue; + this.map.remove(key, atomic); + } + } + + public long sum() { + long sum = 0L; + for (AtomicLong value : this.map.values()) { + sum += value.get(); + } + return sum; + } + + public Map asMap() { + Map result = this.asMap; + return result == null ? (this.asMap = this.createAsMap()) : result; + } + + private Map createAsMap() { + return Collections.unmodifiableMap(Maps.transformValues(this.map, new Function(){ + + @Override + public Long apply(AtomicLong atomic) { + return atomic.get(); + } + })); + } + + public boolean containsKey(Object key) { + return this.map.containsKey(key); + } + + public int size() { + return this.map.size(); + } + + public boolean isEmpty() { + return this.map.isEmpty(); + } + + public void clear() { + this.map.clear(); + } + + public String toString() { + return this.map.toString(); + } + + long putIfAbsent(K key, long newValue) { + long oldValue; + block2: { + AtomicLong atomic; + do { + if ((atomic = this.map.get(key)) == null && (atomic = this.map.putIfAbsent(key, new AtomicLong(newValue))) == null) { + return 0L; + } + oldValue = atomic.get(); + if (oldValue != 0L) break block2; + } while (!this.map.replace(key, atomic, new AtomicLong(newValue))); + return 0L; + } + return oldValue; + } + + boolean replace(K key, long expectedOldValue, long newValue) { + if (expectedOldValue == 0L) { + return this.putIfAbsent(key, newValue) == 0L; + } + AtomicLong atomic = this.map.get(key); + return atomic == null ? false : atomic.compareAndSet(expectedOldValue, newValue); + } + + boolean remove(K key, long value) { + AtomicLong atomic = this.map.get(key); + if (atomic == null) { + return false; + } + long oldValue = atomic.get(); + if (oldValue != value) { + return false; + } + if (oldValue == 0L || atomic.compareAndSet(oldValue, 0L)) { + this.map.remove(key, atomic); + return true; + } + return false; + } +} diff --git a/src/com/google/common/util/concurrent/Atomics.java b/src/com/google/common/util/concurrent/Atomics.java new file mode 100644 index 0000000..e858fcd --- /dev/null +++ b/src/com/google/common/util/concurrent/Atomics.java @@ -0,0 +1,29 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.util.concurrent; + +import java.util.concurrent.atomic.AtomicReference; +import java.util.concurrent.atomic.AtomicReferenceArray; +import javax.annotation.Nullable; + +public final class Atomics { + private Atomics() { + } + + public static AtomicReference newReference() { + return new AtomicReference(); + } + + public static AtomicReference newReference(@Nullable V initialValue) { + return new AtomicReference(initialValue); + } + + public static AtomicReferenceArray newReferenceArray(int length) { + return new AtomicReferenceArray(length); + } + + public static AtomicReferenceArray newReferenceArray(E[] array) { + return new AtomicReferenceArray(array); + } +} diff --git a/src/com/google/common/util/concurrent/Callables.java b/src/com/google/common/util/concurrent/Callables.java new file mode 100644 index 0000000..99e4c67 --- /dev/null +++ b/src/com/google/common/util/concurrent/Callables.java @@ -0,0 +1,85 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.util.concurrent; + +import com.google.common.base.Preconditions; +import com.google.common.base.Supplier; +import java.util.concurrent.Callable; +import javax.annotation.Nullable; + +public final class Callables { + private Callables() { + } + + public static Callable returning(final @Nullable T value) { + return new Callable(){ + + @Override + public T call() { + return value; + } + }; + } + + static Callable threadRenaming(final Callable callable, final Supplier nameSupplier) { + Preconditions.checkNotNull(nameSupplier); + Preconditions.checkNotNull(callable); + return new Callable(){ + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public T call() throws Exception { + Thread currentThread = Thread.currentThread(); + String oldName = currentThread.getName(); + boolean restoreName = Callables.trySetName((String)nameSupplier.get(), currentThread); + try { + Object v = callable.call(); + return v; + } + finally { + if (restoreName) { + Callables.trySetName(oldName, currentThread); + } + } + } + }; + } + + static Runnable threadRenaming(final Runnable task, final Supplier nameSupplier) { + Preconditions.checkNotNull(nameSupplier); + Preconditions.checkNotNull(task); + return new Runnable(){ + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public void run() { + Thread currentThread = Thread.currentThread(); + String oldName = currentThread.getName(); + boolean restoreName = Callables.trySetName((String)nameSupplier.get(), currentThread); + try { + task.run(); + } + finally { + if (restoreName) { + Callables.trySetName(oldName, currentThread); + } + } + } + }; + } + + private static boolean trySetName(String threadName, Thread currentThread) { + try { + currentThread.setName(threadName); + return true; + } + catch (SecurityException e) { + return false; + } + } +} diff --git a/src/com/google/common/util/concurrent/CheckedFuture.java b/src/com/google/common/util/concurrent/CheckedFuture.java new file mode 100644 index 0000000..92cc8ac --- /dev/null +++ b/src/com/google/common/util/concurrent/CheckedFuture.java @@ -0,0 +1,17 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.util.concurrent; + +import com.google.common.annotations.Beta; +import com.google.common.util.concurrent.ListenableFuture; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; + +@Beta +public interface CheckedFuture +extends ListenableFuture { + public V checkedGet() throws X; + + public V checkedGet(long var1, TimeUnit var3) throws TimeoutException, X; +} diff --git a/src/com/google/common/util/concurrent/CycleDetectingLockFactory.java b/src/com/google/common/util/concurrent/CycleDetectingLockFactory.java new file mode 100644 index 0000000..b5fa837 --- /dev/null +++ b/src/com/google/common/util/concurrent/CycleDetectingLockFactory.java @@ -0,0 +1,603 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.util.concurrent; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.MoreObjects; +import com.google.common.base.Preconditions; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Lists; +import com.google.common.collect.MapMaker; +import com.google.common.collect.Maps; +import com.google.common.collect.Sets; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.EnumMap; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.ConcurrentMap; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.locks.ReentrantLock; +import java.util.concurrent.locks.ReentrantReadWriteLock; +import java.util.logging.Level; +import java.util.logging.Logger; +import javax.annotation.Nullable; +import javax.annotation.concurrent.ThreadSafe; + +@Beta +@ThreadSafe +public class CycleDetectingLockFactory { + private static final ConcurrentMap, Map> lockGraphNodesPerType = new MapMaker().weakKeys().makeMap(); + private static final Logger logger = Logger.getLogger(CycleDetectingLockFactory.class.getName()); + final Policy policy; + private static final ThreadLocal> acquiredLocks = new ThreadLocal>(){ + + @Override + protected ArrayList initialValue() { + return Lists.newArrayListWithCapacity(3); + } + }; + + public static CycleDetectingLockFactory newInstance(Policy policy) { + return new CycleDetectingLockFactory(policy); + } + + public ReentrantLock newReentrantLock(String lockName) { + return this.newReentrantLock(lockName, false); + } + + public ReentrantLock newReentrantLock(String lockName, boolean fair) { + return this.policy == Policies.DISABLED ? new ReentrantLock(fair) : new CycleDetectingReentrantLock(new LockGraphNode(lockName), fair); + } + + public ReentrantReadWriteLock newReentrantReadWriteLock(String lockName) { + return this.newReentrantReadWriteLock(lockName, false); + } + + public ReentrantReadWriteLock newReentrantReadWriteLock(String lockName, boolean fair) { + return this.policy == Policies.DISABLED ? new ReentrantReadWriteLock(fair) : new CycleDetectingReentrantReadWriteLock(new LockGraphNode(lockName), fair); + } + + public static > WithExplicitOrdering newInstanceWithExplicitOrdering(Class enumClass, Policy policy) { + Preconditions.checkNotNull(enumClass); + Preconditions.checkNotNull(policy); + Map lockGraphNodes = CycleDetectingLockFactory.getOrCreateNodes(enumClass); + return new WithExplicitOrdering(policy, lockGraphNodes); + } + + private static Map getOrCreateNodes(Class clazz) { + Map existing = (Map)lockGraphNodesPerType.get(clazz); + if (existing != null) { + return existing; + } + Map created = CycleDetectingLockFactory.createNodes(clazz); + existing = lockGraphNodesPerType.putIfAbsent(clazz, created); + return MoreObjects.firstNonNull(existing, created); + } + + @VisibleForTesting + static > Map createNodes(Class clazz) { + int i; + EnumMap map = Maps.newEnumMap(clazz); + Enum[] keys = (Enum[])clazz.getEnumConstants(); + int numKeys = keys.length; + ArrayList nodes = Lists.newArrayListWithCapacity(numKeys); + for (Enum key : keys) { + LockGraphNode node = new LockGraphNode(CycleDetectingLockFactory.getLockName(key)); + nodes.add(node); + map.put(key, node); + } + for (i = 1; i < numKeys; ++i) { + ((LockGraphNode)nodes.get(i)).checkAcquiredLocks(Policies.THROW, nodes.subList(0, i)); + } + for (i = 0; i < numKeys - 1; ++i) { + ((LockGraphNode)nodes.get(i)).checkAcquiredLocks(Policies.DISABLED, nodes.subList(i + 1, numKeys)); + } + return Collections.unmodifiableMap(map); + } + + private static String getLockName(Enum rank) { + String string = String.valueOf(String.valueOf(rank.getDeclaringClass().getSimpleName())); + String string2 = String.valueOf(String.valueOf(rank.name())); + return new StringBuilder(1 + string.length() + string2.length()).append(string).append(".").append(string2).toString(); + } + + private CycleDetectingLockFactory(Policy policy) { + this.policy = Preconditions.checkNotNull(policy); + } + + private void aboutToAcquire(CycleDetectingLock lock) { + if (!lock.isAcquiredByCurrentThread()) { + ArrayList acquiredLockList = acquiredLocks.get(); + LockGraphNode node = lock.getLockGraphNode(); + node.checkAcquiredLocks(this.policy, acquiredLockList); + acquiredLockList.add(node); + } + } + + private void lockStateChanged(CycleDetectingLock lock) { + if (!lock.isAcquiredByCurrentThread()) { + ArrayList acquiredLockList = acquiredLocks.get(); + LockGraphNode node = lock.getLockGraphNode(); + for (int i = acquiredLockList.size() - 1; i >= 0; --i) { + if (acquiredLockList.get(i) != node) continue; + acquiredLockList.remove(i); + break; + } + } + } + + private class CycleDetectingReentrantWriteLock + extends ReentrantReadWriteLock.WriteLock { + final CycleDetectingReentrantReadWriteLock readWriteLock; + + CycleDetectingReentrantWriteLock(CycleDetectingReentrantReadWriteLock readWriteLock) { + super(readWriteLock); + this.readWriteLock = readWriteLock; + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public void lock() { + CycleDetectingLockFactory.this.aboutToAcquire(this.readWriteLock); + try { + super.lock(); + } + finally { + CycleDetectingLockFactory.this.lockStateChanged(this.readWriteLock); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public void lockInterruptibly() throws InterruptedException { + CycleDetectingLockFactory.this.aboutToAcquire(this.readWriteLock); + try { + super.lockInterruptibly(); + } + finally { + CycleDetectingLockFactory.this.lockStateChanged(this.readWriteLock); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public boolean tryLock() { + CycleDetectingLockFactory.this.aboutToAcquire(this.readWriteLock); + try { + boolean bl = super.tryLock(); + return bl; + } + finally { + CycleDetectingLockFactory.this.lockStateChanged(this.readWriteLock); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public boolean tryLock(long timeout, TimeUnit unit) throws InterruptedException { + CycleDetectingLockFactory.this.aboutToAcquire(this.readWriteLock); + try { + boolean bl = super.tryLock(timeout, unit); + return bl; + } + finally { + CycleDetectingLockFactory.this.lockStateChanged(this.readWriteLock); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public void unlock() { + try { + super.unlock(); + } + finally { + CycleDetectingLockFactory.this.lockStateChanged(this.readWriteLock); + } + } + } + + private class CycleDetectingReentrantReadLock + extends ReentrantReadWriteLock.ReadLock { + final CycleDetectingReentrantReadWriteLock readWriteLock; + + CycleDetectingReentrantReadLock(CycleDetectingReentrantReadWriteLock readWriteLock) { + super(readWriteLock); + this.readWriteLock = readWriteLock; + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public void lock() { + CycleDetectingLockFactory.this.aboutToAcquire(this.readWriteLock); + try { + super.lock(); + } + finally { + CycleDetectingLockFactory.this.lockStateChanged(this.readWriteLock); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public void lockInterruptibly() throws InterruptedException { + CycleDetectingLockFactory.this.aboutToAcquire(this.readWriteLock); + try { + super.lockInterruptibly(); + } + finally { + CycleDetectingLockFactory.this.lockStateChanged(this.readWriteLock); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public boolean tryLock() { + CycleDetectingLockFactory.this.aboutToAcquire(this.readWriteLock); + try { + boolean bl = super.tryLock(); + return bl; + } + finally { + CycleDetectingLockFactory.this.lockStateChanged(this.readWriteLock); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public boolean tryLock(long timeout, TimeUnit unit) throws InterruptedException { + CycleDetectingLockFactory.this.aboutToAcquire(this.readWriteLock); + try { + boolean bl = super.tryLock(timeout, unit); + return bl; + } + finally { + CycleDetectingLockFactory.this.lockStateChanged(this.readWriteLock); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public void unlock() { + try { + super.unlock(); + } + finally { + CycleDetectingLockFactory.this.lockStateChanged(this.readWriteLock); + } + } + } + + final class CycleDetectingReentrantReadWriteLock + extends ReentrantReadWriteLock + implements CycleDetectingLock { + private final CycleDetectingReentrantReadLock readLock; + private final CycleDetectingReentrantWriteLock writeLock; + private final LockGraphNode lockGraphNode; + + private CycleDetectingReentrantReadWriteLock(LockGraphNode lockGraphNode, boolean fair) { + super(fair); + this.readLock = new CycleDetectingReentrantReadLock(this); + this.writeLock = new CycleDetectingReentrantWriteLock(this); + this.lockGraphNode = Preconditions.checkNotNull(lockGraphNode); + } + + @Override + public ReentrantReadWriteLock.ReadLock readLock() { + return this.readLock; + } + + @Override + public ReentrantReadWriteLock.WriteLock writeLock() { + return this.writeLock; + } + + @Override + public LockGraphNode getLockGraphNode() { + return this.lockGraphNode; + } + + @Override + public boolean isAcquiredByCurrentThread() { + return this.isWriteLockedByCurrentThread() || this.getReadHoldCount() > 0; + } + } + + final class CycleDetectingReentrantLock + extends ReentrantLock + implements CycleDetectingLock { + private final LockGraphNode lockGraphNode; + + private CycleDetectingReentrantLock(LockGraphNode lockGraphNode, boolean fair) { + super(fair); + this.lockGraphNode = Preconditions.checkNotNull(lockGraphNode); + } + + @Override + public LockGraphNode getLockGraphNode() { + return this.lockGraphNode; + } + + @Override + public boolean isAcquiredByCurrentThread() { + return this.isHeldByCurrentThread(); + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public void lock() { + CycleDetectingLockFactory.this.aboutToAcquire(this); + try { + super.lock(); + } + finally { + CycleDetectingLockFactory.this.lockStateChanged(this); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public void lockInterruptibly() throws InterruptedException { + CycleDetectingLockFactory.this.aboutToAcquire(this); + try { + super.lockInterruptibly(); + } + finally { + CycleDetectingLockFactory.this.lockStateChanged(this); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public boolean tryLock() { + CycleDetectingLockFactory.this.aboutToAcquire(this); + try { + boolean bl = super.tryLock(); + return bl; + } + finally { + CycleDetectingLockFactory.this.lockStateChanged(this); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public boolean tryLock(long timeout, TimeUnit unit) throws InterruptedException { + CycleDetectingLockFactory.this.aboutToAcquire(this); + try { + boolean bl = super.tryLock(timeout, unit); + return bl; + } + finally { + CycleDetectingLockFactory.this.lockStateChanged(this); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public void unlock() { + try { + super.unlock(); + } + finally { + CycleDetectingLockFactory.this.lockStateChanged(this); + } + } + } + + private static class LockGraphNode { + final Map allowedPriorLocks = new MapMaker().weakKeys().makeMap(); + final Map disallowedPriorLocks = new MapMaker().weakKeys().makeMap(); + final String lockName; + + LockGraphNode(String lockName) { + this.lockName = Preconditions.checkNotNull(lockName); + } + + String getLockName() { + return this.lockName; + } + + void checkAcquiredLocks(Policy policy, List acquiredLocks) { + int size = acquiredLocks.size(); + for (int i = 0; i < size; ++i) { + this.checkAcquiredLock(policy, acquiredLocks.get(i)); + } + } + + void checkAcquiredLock(Policy policy, LockGraphNode acquiredLock) { + String string = String.valueOf(acquiredLock.getLockName()); + Preconditions.checkState(this != acquiredLock, string.length() != 0 ? "Attempted to acquire multiple locks with the same rank ".concat(string) : new String("Attempted to acquire multiple locks with the same rank ")); + if (this.allowedPriorLocks.containsKey(acquiredLock)) { + return; + } + PotentialDeadlockException previousDeadlockException = this.disallowedPriorLocks.get(acquiredLock); + if (previousDeadlockException != null) { + PotentialDeadlockException exception = new PotentialDeadlockException(acquiredLock, this, previousDeadlockException.getConflictingStackTrace()); + policy.handlePotentialDeadlock(exception); + return; + } + Set seen = Sets.newIdentityHashSet(); + ExampleStackTrace path = acquiredLock.findPathTo(this, seen); + if (path == null) { + this.allowedPriorLocks.put(acquiredLock, new ExampleStackTrace(acquiredLock, this)); + } else { + PotentialDeadlockException exception = new PotentialDeadlockException(acquiredLock, this, path); + this.disallowedPriorLocks.put(acquiredLock, exception); + policy.handlePotentialDeadlock(exception); + } + } + + @Nullable + private ExampleStackTrace findPathTo(LockGraphNode node, Set seen) { + if (!seen.add(this)) { + return null; + } + ExampleStackTrace found = this.allowedPriorLocks.get(node); + if (found != null) { + return found; + } + for (Map.Entry entry : this.allowedPriorLocks.entrySet()) { + LockGraphNode preAcquiredLock = entry.getKey(); + found = preAcquiredLock.findPathTo(node, seen); + if (found == null) continue; + ExampleStackTrace path = new ExampleStackTrace(preAcquiredLock, this); + path.setStackTrace(entry.getValue().getStackTrace()); + path.initCause(found); + return path; + } + return null; + } + } + + private static interface CycleDetectingLock { + public LockGraphNode getLockGraphNode(); + + public boolean isAcquiredByCurrentThread(); + } + + @Beta + public static final class PotentialDeadlockException + extends ExampleStackTrace { + private final ExampleStackTrace conflictingStackTrace; + + private PotentialDeadlockException(LockGraphNode node1, LockGraphNode node2, ExampleStackTrace conflictingStackTrace) { + super(node1, node2); + this.conflictingStackTrace = conflictingStackTrace; + this.initCause(conflictingStackTrace); + } + + public ExampleStackTrace getConflictingStackTrace() { + return this.conflictingStackTrace; + } + + @Override + public String getMessage() { + StringBuilder message = new StringBuilder(super.getMessage()); + for (Throwable t = this.conflictingStackTrace; t != null; t = t.getCause()) { + message.append(", ").append(t.getMessage()); + } + return message.toString(); + } + } + + private static class ExampleStackTrace + extends IllegalStateException { + static final StackTraceElement[] EMPTY_STACK_TRACE = new StackTraceElement[0]; + static Set EXCLUDED_CLASS_NAMES = ImmutableSet.of(CycleDetectingLockFactory.class.getName(), ExampleStackTrace.class.getName(), LockGraphNode.class.getName()); + + ExampleStackTrace(LockGraphNode node1, LockGraphNode node2) { + String string = String.valueOf(String.valueOf(node1.getLockName())); + String string2 = String.valueOf(String.valueOf(node2.getLockName())); + super(new StringBuilder(4 + string.length() + string2.length()).append(string).append(" -> ").append(string2).toString()); + StackTraceElement[] origStackTrace = this.getStackTrace(); + int n = origStackTrace.length; + for (int i = 0; i < n; ++i) { + if (WithExplicitOrdering.class.getName().equals(origStackTrace[i].getClassName())) { + this.setStackTrace(EMPTY_STACK_TRACE); + break; + } + if (EXCLUDED_CLASS_NAMES.contains(origStackTrace[i].getClassName())) continue; + this.setStackTrace(Arrays.copyOfRange(origStackTrace, i, n)); + break; + } + } + } + + @Beta + public static final class WithExplicitOrdering> + extends CycleDetectingLockFactory { + private final Map lockGraphNodes; + + @VisibleForTesting + WithExplicitOrdering(Policy policy, Map lockGraphNodes) { + super(policy); + this.lockGraphNodes = lockGraphNodes; + } + + public ReentrantLock newReentrantLock(E rank) { + return this.newReentrantLock(rank, false); + } + + public ReentrantLock newReentrantLock(E rank, boolean fair) { + return this.policy == Policies.DISABLED ? new ReentrantLock(fair) : new CycleDetectingReentrantLock(this.lockGraphNodes.get(rank), fair); + } + + public ReentrantReadWriteLock newReentrantReadWriteLock(E rank) { + return this.newReentrantReadWriteLock(rank, false); + } + + public ReentrantReadWriteLock newReentrantReadWriteLock(E rank, boolean fair) { + return this.policy == Policies.DISABLED ? new ReentrantReadWriteLock(fair) : new CycleDetectingReentrantReadWriteLock(this.lockGraphNodes.get(rank), fair); + } + } + + @Beta + public static enum Policies implements Policy + { + THROW{ + + @Override + public void handlePotentialDeadlock(PotentialDeadlockException e) { + throw e; + } + } + , + WARN{ + + @Override + public void handlePotentialDeadlock(PotentialDeadlockException e) { + logger.log(Level.SEVERE, "Detected potential deadlock", e); + } + } + , + DISABLED{ + + @Override + public void handlePotentialDeadlock(PotentialDeadlockException e) { + } + }; + + } + + @Beta + @ThreadSafe + public static interface Policy { + public void handlePotentialDeadlock(PotentialDeadlockException var1); + } +} diff --git a/src/com/google/common/util/concurrent/ExecutionError.java b/src/com/google/common/util/concurrent/ExecutionError.java new file mode 100644 index 0000000..ba73bb4 --- /dev/null +++ b/src/com/google/common/util/concurrent/ExecutionError.java @@ -0,0 +1,28 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.util.concurrent; + +import com.google.common.annotations.GwtCompatible; +import javax.annotation.Nullable; + +@GwtCompatible +public class ExecutionError +extends Error { + private static final long serialVersionUID = 0L; + + protected ExecutionError() { + } + + protected ExecutionError(@Nullable String message) { + super(message); + } + + public ExecutionError(@Nullable String message, @Nullable Error cause) { + super(message, cause); + } + + public ExecutionError(@Nullable Error cause) { + super(cause); + } +} diff --git a/src/com/google/common/util/concurrent/ExecutionList.java b/src/com/google/common/util/concurrent/ExecutionList.java new file mode 100644 index 0000000..f09e63b --- /dev/null +++ b/src/com/google/common/util/concurrent/ExecutionList.java @@ -0,0 +1,88 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.util.concurrent; + +import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.Preconditions; +import java.util.concurrent.Executor; +import java.util.logging.Level; +import java.util.logging.Logger; +import javax.annotation.Nullable; +import javax.annotation.concurrent.GuardedBy; + +public final class ExecutionList { + @VisibleForTesting + static final Logger log = Logger.getLogger(ExecutionList.class.getName()); + @GuardedBy(value="this") + private RunnableExecutorPair runnables; + @GuardedBy(value="this") + private boolean executed; + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + public void add(Runnable runnable, Executor executor) { + Preconditions.checkNotNull(runnable, "Runnable was null."); + Preconditions.checkNotNull(executor, "Executor was null."); + ExecutionList executionList = this; + synchronized (executionList) { + if (!this.executed) { + this.runnables = new RunnableExecutorPair(runnable, executor, this.runnables); + return; + } + } + ExecutionList.executeListener(runnable, executor); + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + public void execute() { + RunnableExecutorPair list; + ExecutionList executionList = this; + synchronized (executionList) { + if (this.executed) { + return; + } + this.executed = true; + list = this.runnables; + this.runnables = null; + } + RunnableExecutorPair reversedList = null; + while (list != null) { + RunnableExecutorPair tmp = list; + list = list.next; + tmp.next = reversedList; + reversedList = tmp; + } + while (reversedList != null) { + ExecutionList.executeListener(reversedList.runnable, reversedList.executor); + reversedList = reversedList.next; + } + } + + private static void executeListener(Runnable runnable, Executor executor) { + try { + executor.execute(runnable); + } + catch (RuntimeException e) { + String string = String.valueOf(String.valueOf(runnable)); + String string2 = String.valueOf(String.valueOf(executor)); + log.log(Level.SEVERE, new StringBuilder(57 + string.length() + string2.length()).append("RuntimeException while executing runnable ").append(string).append(" with executor ").append(string2).toString(), e); + } + } + + private static final class RunnableExecutorPair { + final Runnable runnable; + final Executor executor; + @Nullable + RunnableExecutorPair next; + + RunnableExecutorPair(Runnable runnable, Executor executor, RunnableExecutorPair next) { + this.runnable = runnable; + this.executor = executor; + this.next = next; + } + } +} diff --git a/src/com/google/common/util/concurrent/FakeTimeLimiter.java b/src/com/google/common/util/concurrent/FakeTimeLimiter.java new file mode 100644 index 0000000..91910d9 --- /dev/null +++ b/src/com/google/common/util/concurrent/FakeTimeLimiter.java @@ -0,0 +1,28 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.util.concurrent; + +import com.google.common.annotations.Beta; +import com.google.common.base.Preconditions; +import com.google.common.util.concurrent.TimeLimiter; +import java.util.concurrent.Callable; +import java.util.concurrent.TimeUnit; + +@Beta +public final class FakeTimeLimiter +implements TimeLimiter { + @Override + public T newProxy(T target, Class interfaceType, long timeoutDuration, TimeUnit timeoutUnit) { + Preconditions.checkNotNull(target); + Preconditions.checkNotNull(interfaceType); + Preconditions.checkNotNull(timeoutUnit); + return target; + } + + @Override + public T callWithTimeout(Callable callable, long timeoutDuration, TimeUnit timeoutUnit, boolean amInterruptible) throws Exception { + Preconditions.checkNotNull(timeoutUnit); + return callable.call(); + } +} diff --git a/src/com/google/common/util/concurrent/ForwardingBlockingQueue.java b/src/com/google/common/util/concurrent/ForwardingBlockingQueue.java new file mode 100644 index 0000000..a513d2a --- /dev/null +++ b/src/com/google/common/util/concurrent/ForwardingBlockingQueue.java @@ -0,0 +1,54 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.util.concurrent; + +import com.google.common.collect.ForwardingQueue; +import java.util.Collection; +import java.util.concurrent.BlockingQueue; +import java.util.concurrent.TimeUnit; + +public abstract class ForwardingBlockingQueue +extends ForwardingQueue +implements BlockingQueue { + protected ForwardingBlockingQueue() { + } + + @Override + protected abstract BlockingQueue delegate(); + + @Override + public int drainTo(Collection c, int maxElements) { + return this.delegate().drainTo(c, maxElements); + } + + @Override + public int drainTo(Collection c) { + return this.delegate().drainTo(c); + } + + @Override + public boolean offer(E e, long timeout, TimeUnit unit) throws InterruptedException { + return this.delegate().offer(e, timeout, unit); + } + + @Override + public E poll(long timeout, TimeUnit unit) throws InterruptedException { + return this.delegate().poll(timeout, unit); + } + + @Override + public void put(E e) throws InterruptedException { + this.delegate().put(e); + } + + @Override + public int remainingCapacity() { + return this.delegate().remainingCapacity(); + } + + @Override + public E take() throws InterruptedException { + return this.delegate().take(); + } +} diff --git a/src/com/google/common/util/concurrent/ForwardingCheckedFuture.java b/src/com/google/common/util/concurrent/ForwardingCheckedFuture.java new file mode 100644 index 0000000..2f0466c --- /dev/null +++ b/src/com/google/common/util/concurrent/ForwardingCheckedFuture.java @@ -0,0 +1,44 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.util.concurrent; + +import com.google.common.annotations.Beta; +import com.google.common.base.Preconditions; +import com.google.common.util.concurrent.CheckedFuture; +import com.google.common.util.concurrent.ForwardingListenableFuture; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; + +@Beta +public abstract class ForwardingCheckedFuture +extends ForwardingListenableFuture +implements CheckedFuture { + @Override + public V checkedGet() throws X { + return this.delegate().checkedGet(); + } + + @Override + public V checkedGet(long timeout, TimeUnit unit) throws TimeoutException, X { + return this.delegate().checkedGet(timeout, unit); + } + + @Override + protected abstract CheckedFuture delegate(); + + @Beta + public static abstract class SimpleForwardingCheckedFuture + extends ForwardingCheckedFuture { + private final CheckedFuture delegate; + + protected SimpleForwardingCheckedFuture(CheckedFuture delegate) { + this.delegate = Preconditions.checkNotNull(delegate); + } + + @Override + protected final CheckedFuture delegate() { + return this.delegate; + } + } +} diff --git a/src/com/google/common/util/concurrent/ForwardingExecutorService.java b/src/com/google/common/util/concurrent/ForwardingExecutorService.java new file mode 100644 index 0000000..fe6d648 --- /dev/null +++ b/src/com/google/common/util/concurrent/ForwardingExecutorService.java @@ -0,0 +1,89 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.util.concurrent; + +import com.google.common.collect.ForwardingObject; +import java.util.Collection; +import java.util.List; +import java.util.concurrent.Callable; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Future; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; + +public abstract class ForwardingExecutorService +extends ForwardingObject +implements ExecutorService { + protected ForwardingExecutorService() { + } + + @Override + protected abstract ExecutorService delegate(); + + @Override + public boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException { + return this.delegate().awaitTermination(timeout, unit); + } + + @Override + public List> invokeAll(Collection> tasks) throws InterruptedException { + return this.delegate().invokeAll(tasks); + } + + @Override + public List> invokeAll(Collection> tasks, long timeout, TimeUnit unit) throws InterruptedException { + return this.delegate().invokeAll(tasks, timeout, unit); + } + + @Override + public T invokeAny(Collection> tasks) throws InterruptedException, ExecutionException { + return this.delegate().invokeAny(tasks); + } + + @Override + public T invokeAny(Collection> tasks, long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException { + return this.delegate().invokeAny(tasks, timeout, unit); + } + + @Override + public boolean isShutdown() { + return this.delegate().isShutdown(); + } + + @Override + public boolean isTerminated() { + return this.delegate().isTerminated(); + } + + @Override + public void shutdown() { + this.delegate().shutdown(); + } + + @Override + public List shutdownNow() { + return this.delegate().shutdownNow(); + } + + @Override + public void execute(Runnable command) { + this.delegate().execute(command); + } + + @Override + public Future submit(Callable task) { + return this.delegate().submit(task); + } + + @Override + public Future submit(Runnable task) { + return this.delegate().submit(task); + } + + @Override + public Future submit(Runnable task, T result) { + return this.delegate().submit(task, result); + } +} diff --git a/src/com/google/common/util/concurrent/ForwardingFuture.java b/src/com/google/common/util/concurrent/ForwardingFuture.java new file mode 100644 index 0000000..1601f2b --- /dev/null +++ b/src/com/google/common/util/concurrent/ForwardingFuture.java @@ -0,0 +1,60 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.util.concurrent; + +import com.google.common.base.Preconditions; +import com.google.common.collect.ForwardingObject; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.Future; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; + +public abstract class ForwardingFuture +extends ForwardingObject +implements Future { + protected ForwardingFuture() { + } + + @Override + protected abstract Future delegate(); + + @Override + public boolean cancel(boolean mayInterruptIfRunning) { + return this.delegate().cancel(mayInterruptIfRunning); + } + + @Override + public boolean isCancelled() { + return this.delegate().isCancelled(); + } + + @Override + public boolean isDone() { + return this.delegate().isDone(); + } + + @Override + public V get() throws InterruptedException, ExecutionException { + return this.delegate().get(); + } + + @Override + public V get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException { + return this.delegate().get(timeout, unit); + } + + public static abstract class SimpleForwardingFuture + extends ForwardingFuture { + private final Future delegate; + + protected SimpleForwardingFuture(Future delegate) { + this.delegate = Preconditions.checkNotNull(delegate); + } + + @Override + protected final Future delegate() { + return this.delegate; + } + } +} diff --git a/src/com/google/common/util/concurrent/ForwardingListenableFuture.java b/src/com/google/common/util/concurrent/ForwardingListenableFuture.java new file mode 100644 index 0000000..58d32fd --- /dev/null +++ b/src/com/google/common/util/concurrent/ForwardingListenableFuture.java @@ -0,0 +1,38 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.util.concurrent; + +import com.google.common.base.Preconditions; +import com.google.common.util.concurrent.ForwardingFuture; +import com.google.common.util.concurrent.ListenableFuture; +import java.util.concurrent.Executor; + +public abstract class ForwardingListenableFuture +extends ForwardingFuture +implements ListenableFuture { + protected ForwardingListenableFuture() { + } + + @Override + protected abstract ListenableFuture delegate(); + + @Override + public void addListener(Runnable listener, Executor exec) { + this.delegate().addListener(listener, exec); + } + + public static abstract class SimpleForwardingListenableFuture + extends ForwardingListenableFuture { + private final ListenableFuture delegate; + + protected SimpleForwardingListenableFuture(ListenableFuture delegate) { + this.delegate = Preconditions.checkNotNull(delegate); + } + + @Override + protected final ListenableFuture delegate() { + return this.delegate; + } + } +} diff --git a/src/com/google/common/util/concurrent/ForwardingListeningExecutorService.java b/src/com/google/common/util/concurrent/ForwardingListeningExecutorService.java new file mode 100644 index 0000000..ea6130f --- /dev/null +++ b/src/com/google/common/util/concurrent/ForwardingListeningExecutorService.java @@ -0,0 +1,34 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.util.concurrent; + +import com.google.common.util.concurrent.ForwardingExecutorService; +import com.google.common.util.concurrent.ListenableFuture; +import com.google.common.util.concurrent.ListeningExecutorService; +import java.util.concurrent.Callable; + +public abstract class ForwardingListeningExecutorService +extends ForwardingExecutorService +implements ListeningExecutorService { + protected ForwardingListeningExecutorService() { + } + + @Override + protected abstract ListeningExecutorService delegate(); + + @Override + public ListenableFuture submit(Callable task) { + return this.delegate().submit(task); + } + + @Override + public ListenableFuture submit(Runnable task) { + return this.delegate().submit(task); + } + + @Override + public ListenableFuture submit(Runnable task, T result) { + return this.delegate().submit(task, result); + } +} diff --git a/src/com/google/common/util/concurrent/FutureCallback.java b/src/com/google/common/util/concurrent/FutureCallback.java new file mode 100644 index 0000000..2a5bda5 --- /dev/null +++ b/src/com/google/common/util/concurrent/FutureCallback.java @@ -0,0 +1,12 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.util.concurrent; + +import javax.annotation.Nullable; + +public interface FutureCallback { + public void onSuccess(@Nullable V var1); + + public void onFailure(Throwable var1); +} diff --git a/src/com/google/common/util/concurrent/FutureFallback.java b/src/com/google/common/util/concurrent/FutureFallback.java new file mode 100644 index 0000000..d00cfb0 --- /dev/null +++ b/src/com/google/common/util/concurrent/FutureFallback.java @@ -0,0 +1,12 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.util.concurrent; + +import com.google.common.annotations.Beta; +import com.google.common.util.concurrent.ListenableFuture; + +@Beta +public interface FutureFallback { + public ListenableFuture create(Throwable var1) throws Exception; +} diff --git a/src/com/google/common/util/concurrent/Futures.java b/src/com/google/common/util/concurrent/Futures.java new file mode 100644 index 0000000..3d0bce9 --- /dev/null +++ b/src/com/google/common/util/concurrent/Futures.java @@ -0,0 +1,931 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.util.concurrent; + +import com.google.common.annotations.Beta; +import com.google.common.base.Function; +import com.google.common.base.Optional; +import com.google.common.base.Preconditions; +import com.google.common.collect.ImmutableCollection; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.Lists; +import com.google.common.collect.Ordering; +import com.google.common.collect.Queues; +import com.google.common.collect.Sets; +import com.google.common.util.concurrent.AbstractCheckedFuture; +import com.google.common.util.concurrent.AbstractFuture; +import com.google.common.util.concurrent.AsyncFunction; +import com.google.common.util.concurrent.AsyncSettableFuture; +import com.google.common.util.concurrent.CheckedFuture; +import com.google.common.util.concurrent.ExecutionError; +import com.google.common.util.concurrent.FutureCallback; +import com.google.common.util.concurrent.FutureFallback; +import com.google.common.util.concurrent.ListenableFuture; +import com.google.common.util.concurrent.ListenableFutureTask; +import com.google.common.util.concurrent.MoreExecutors; +import com.google.common.util.concurrent.SerializingExecutor; +import com.google.common.util.concurrent.UncheckedExecutionException; +import com.google.common.util.concurrent.Uninterruptibles; +import java.lang.reflect.Constructor; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.UndeclaredThrowableException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.Set; +import java.util.concurrent.Callable; +import java.util.concurrent.CancellationException; +import java.util.concurrent.ConcurrentLinkedQueue; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.Executor; +import java.util.concurrent.Future; +import java.util.concurrent.RejectedExecutionException; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.logging.Level; +import java.util.logging.Logger; +import javax.annotation.Nullable; + +@Beta +public final class Futures { + private static final AsyncFunction, Object> DEREFERENCER = new AsyncFunction, Object>(){ + + @Override + public ListenableFuture apply(ListenableFuture input) { + return input; + } + }; + private static final Ordering> WITH_STRING_PARAM_FIRST = Ordering.natural().onResultOf(new Function, Boolean>(){ + + @Override + public Boolean apply(Constructor input) { + return Arrays.asList(input.getParameterTypes()).contains(String.class); + } + }).reverse(); + + private Futures() { + } + + public static CheckedFuture makeChecked(ListenableFuture future, Function mapper) { + return new MappingCheckedFuture(Preconditions.checkNotNull(future), mapper); + } + + public static ListenableFuture immediateFuture(@Nullable V value) { + return new ImmediateSuccessfulFuture(value); + } + + public static CheckedFuture immediateCheckedFuture(@Nullable V value) { + return new ImmediateSuccessfulCheckedFuture(value); + } + + public static ListenableFuture immediateFailedFuture(Throwable throwable) { + Preconditions.checkNotNull(throwable); + return new ImmediateFailedFuture(throwable); + } + + public static ListenableFuture immediateCancelledFuture() { + return new ImmediateCancelledFuture(); + } + + public static CheckedFuture immediateFailedCheckedFuture(X exception) { + Preconditions.checkNotNull(exception); + return new ImmediateFailedCheckedFuture(exception); + } + + public static ListenableFuture withFallback(ListenableFuture input, FutureFallback fallback) { + return Futures.withFallback(input, fallback, MoreExecutors.directExecutor()); + } + + public static ListenableFuture withFallback(ListenableFuture input, FutureFallback fallback, Executor executor) { + Preconditions.checkNotNull(fallback); + return new FallbackFuture(input, fallback, executor); + } + + public static ListenableFuture transform(ListenableFuture input, AsyncFunction function) { + ChainingListenableFuture output = new ChainingListenableFuture(function, input); + input.addListener(output, MoreExecutors.directExecutor()); + return output; + } + + public static ListenableFuture transform(ListenableFuture input, AsyncFunction function, Executor executor) { + Preconditions.checkNotNull(executor); + ChainingListenableFuture output = new ChainingListenableFuture(function, input); + input.addListener(Futures.rejectionPropagatingRunnable(output, output, executor), MoreExecutors.directExecutor()); + return output; + } + + private static Runnable rejectionPropagatingRunnable(final AbstractFuture outputFuture, final Runnable delegateTask, final Executor delegateExecutor) { + return new Runnable(){ + + @Override + public void run() { + block2: { + final AtomicBoolean thrownFromDelegate = new AtomicBoolean(true); + try { + delegateExecutor.execute(new Runnable(){ + + @Override + public void run() { + thrownFromDelegate.set(false); + delegateTask.run(); + } + }); + } + catch (RejectedExecutionException e) { + if (!thrownFromDelegate.get()) break block2; + outputFuture.setException(e); + } + } + } + }; + } + + public static ListenableFuture transform(ListenableFuture input, Function function) { + Preconditions.checkNotNull(function); + ChainingListenableFuture output = new ChainingListenableFuture(Futures.asAsyncFunction(function), input); + input.addListener(output, MoreExecutors.directExecutor()); + return output; + } + + public static ListenableFuture transform(ListenableFuture input, Function function, Executor executor) { + Preconditions.checkNotNull(function); + return Futures.transform(input, Futures.asAsyncFunction(function), executor); + } + + private static AsyncFunction asAsyncFunction(final Function function) { + return new AsyncFunction(){ + + @Override + public ListenableFuture apply(I input) { + Object output = function.apply(input); + return Futures.immediateFuture(output); + } + }; + } + + public static Future lazyTransform(final Future input, final Function function) { + Preconditions.checkNotNull(input); + Preconditions.checkNotNull(function); + return new Future(){ + + @Override + public boolean cancel(boolean mayInterruptIfRunning) { + return input.cancel(mayInterruptIfRunning); + } + + @Override + public boolean isCancelled() { + return input.isCancelled(); + } + + @Override + public boolean isDone() { + return input.isDone(); + } + + @Override + public O get() throws InterruptedException, ExecutionException { + return this.applyTransformation(input.get()); + } + + @Override + public O get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException { + return this.applyTransformation(input.get(timeout, unit)); + } + + private O applyTransformation(I input2) throws ExecutionException { + try { + return function.apply(input2); + } + catch (Throwable t) { + throw new ExecutionException(t); + } + } + }; + } + + public static ListenableFuture dereference(ListenableFuture> nested) { + return Futures.transform(nested, DEREFERENCER); + } + + @Beta + public static ListenableFuture> allAsList(ListenableFuture ... futures) { + return Futures.listFuture(ImmutableList.copyOf(futures), true, MoreExecutors.directExecutor()); + } + + @Beta + public static ListenableFuture> allAsList(Iterable> futures) { + return Futures.listFuture(ImmutableList.copyOf(futures), true, MoreExecutors.directExecutor()); + } + + public static ListenableFuture nonCancellationPropagating(ListenableFuture future) { + return new NonCancellationPropagatingFuture(future); + } + + @Beta + public static ListenableFuture> successfulAsList(ListenableFuture ... futures) { + return Futures.listFuture(ImmutableList.copyOf(futures), false, MoreExecutors.directExecutor()); + } + + @Beta + public static ListenableFuture> successfulAsList(Iterable> futures) { + return Futures.listFuture(ImmutableList.copyOf(futures), false, MoreExecutors.directExecutor()); + } + + @Beta + public static ImmutableList> inCompletionOrder(Iterable> futures) { + final ConcurrentLinkedQueue delegates = Queues.newConcurrentLinkedQueue(); + ImmutableList.Builder listBuilder = ImmutableList.builder(); + SerializingExecutor executor = new SerializingExecutor(MoreExecutors.directExecutor()); + for (final ListenableFuture future : futures) { + AsyncSettableFuture delegate = AsyncSettableFuture.create(); + delegates.add(delegate); + future.addListener(new Runnable(){ + + @Override + public void run() { + ((AsyncSettableFuture)delegates.remove()).setFuture(future); + } + }, executor); + listBuilder.add(delegate); + } + return listBuilder.build(); + } + + public static void addCallback(ListenableFuture future, FutureCallback callback) { + Futures.addCallback(future, callback, MoreExecutors.directExecutor()); + } + + public static void addCallback(final ListenableFuture future, final FutureCallback callback, Executor executor) { + Preconditions.checkNotNull(callback); + Runnable callbackListener = new Runnable(){ + + @Override + public void run() { + Object value; + try { + value = Uninterruptibles.getUninterruptibly(future); + } + catch (ExecutionException e) { + callback.onFailure(e.getCause()); + return; + } + catch (RuntimeException e) { + callback.onFailure(e); + return; + } + catch (Error e) { + callback.onFailure(e); + return; + } + callback.onSuccess(value); + } + }; + future.addListener(callbackListener, executor); + } + + public static V get(Future future, Class exceptionClass) throws X { + Preconditions.checkNotNull(future); + Preconditions.checkArgument(!RuntimeException.class.isAssignableFrom(exceptionClass), "Futures.get exception type (%s) must not be a RuntimeException", exceptionClass); + try { + return future.get(); + } + catch (InterruptedException e) { + Thread.currentThread().interrupt(); + throw Futures.newWithCause(exceptionClass, e); + } + catch (ExecutionException e) { + Futures.wrapAndThrowExceptionOrError(e.getCause(), exceptionClass); + throw new AssertionError(); + } + } + + public static V get(Future future, long timeout, TimeUnit unit, Class exceptionClass) throws X { + Preconditions.checkNotNull(future); + Preconditions.checkNotNull(unit); + Preconditions.checkArgument(!RuntimeException.class.isAssignableFrom(exceptionClass), "Futures.get exception type (%s) must not be a RuntimeException", exceptionClass); + try { + return future.get(timeout, unit); + } + catch (InterruptedException e) { + Thread.currentThread().interrupt(); + throw Futures.newWithCause(exceptionClass, e); + } + catch (TimeoutException e) { + throw Futures.newWithCause(exceptionClass, e); + } + catch (ExecutionException e) { + Futures.wrapAndThrowExceptionOrError(e.getCause(), exceptionClass); + throw new AssertionError(); + } + } + + private static void wrapAndThrowExceptionOrError(Throwable cause, Class exceptionClass) throws X { + if (cause instanceof Error) { + throw new ExecutionError((Error)cause); + } + if (cause instanceof RuntimeException) { + throw new UncheckedExecutionException(cause); + } + throw Futures.newWithCause(exceptionClass, cause); + } + + public static V getUnchecked(Future future) { + Preconditions.checkNotNull(future); + try { + return Uninterruptibles.getUninterruptibly(future); + } + catch (ExecutionException e) { + Futures.wrapAndThrowUnchecked(e.getCause()); + throw new AssertionError(); + } + } + + private static void wrapAndThrowUnchecked(Throwable cause) { + if (cause instanceof Error) { + throw new ExecutionError((Error)cause); + } + throw new UncheckedExecutionException(cause); + } + + private static X newWithCause(Class exceptionClass, Throwable cause) { + List> constructors = Arrays.asList(exceptionClass.getConstructors()); + for (Constructor constructor : Futures.preferringStrings(constructors)) { + Exception instance = (Exception)Futures.newFromConstructor(constructor, cause); + if (instance == null) continue; + if (instance.getCause() == null) { + instance.initCause(cause); + } + return (X)instance; + } + String string = String.valueOf(String.valueOf(exceptionClass)); + throw new IllegalArgumentException(new StringBuilder(82 + string.length()).append("No appropriate constructor for exception of type ").append(string).append(" in response to chained exception").toString(), cause); + } + + private static List> preferringStrings(List> constructors) { + return WITH_STRING_PARAM_FIRST.sortedCopy(constructors); + } + + @Nullable + private static X newFromConstructor(Constructor constructor, Throwable cause) { + Class[] paramTypes = constructor.getParameterTypes(); + Object[] params = new Object[paramTypes.length]; + for (int i = 0; i < paramTypes.length; ++i) { + Class paramType = paramTypes[i]; + if (paramType.equals(String.class)) { + params[i] = cause.toString(); + continue; + } + if (paramType.equals(Throwable.class)) { + params[i] = cause; + continue; + } + return null; + } + try { + return constructor.newInstance(params); + } + catch (IllegalArgumentException e) { + return null; + } + catch (InstantiationException e) { + return null; + } + catch (IllegalAccessException e) { + return null; + } + catch (InvocationTargetException e) { + return null; + } + } + + private static ListenableFuture> listFuture(ImmutableList> futures, boolean allMustSucceed, Executor listenerExecutor) { + return new CombinedFuture(futures, allMustSucceed, listenerExecutor, new FutureCombiner>(){ + + @Override + public List combine(List> values) { + ArrayList result = Lists.newArrayList(); + for (Optional element : values) { + result.add(element != null ? (Object)element.orNull() : null); + } + return Collections.unmodifiableList(result); + } + }); + } + + private static class MappingCheckedFuture + extends AbstractCheckedFuture { + final Function mapper; + + MappingCheckedFuture(ListenableFuture delegate, Function mapper) { + super(delegate); + this.mapper = Preconditions.checkNotNull(mapper); + } + + @Override + protected X mapException(Exception e) { + return (X)((Exception)this.mapper.apply(e)); + } + } + + private static class CombinedFuture + extends AbstractFuture { + private static final Logger logger = Logger.getLogger(CombinedFuture.class.getName()); + ImmutableCollection> futures; + final boolean allMustSucceed; + final AtomicInteger remaining; + FutureCombiner combiner; + List> values; + final Object seenExceptionsLock = new Object(); + Set seenExceptions; + + CombinedFuture(ImmutableCollection> futures, boolean allMustSucceed, Executor listenerExecutor, FutureCombiner combiner) { + this.futures = futures; + this.allMustSucceed = allMustSucceed; + this.remaining = new AtomicInteger(futures.size()); + this.combiner = combiner; + this.values = Lists.newArrayListWithCapacity(futures.size()); + this.init(listenerExecutor); + } + + protected void init(Executor listenerExecutor) { + int i; + this.addListener(new Runnable(){ + + @Override + public void run() { + if (CombinedFuture.this.isCancelled()) { + for (ListenableFuture listenableFuture : CombinedFuture.this.futures) { + listenableFuture.cancel(CombinedFuture.this.wasInterrupted()); + } + } + CombinedFuture.this.futures = null; + CombinedFuture.this.values = null; + CombinedFuture.this.combiner = null; + } + }, MoreExecutors.directExecutor()); + if (this.futures.isEmpty()) { + this.set(this.combiner.combine(ImmutableList.of())); + return; + } + for (i = 0; i < this.futures.size(); ++i) { + this.values.add(null); + } + i = 0; + for (final ListenableFuture listenableFuture : this.futures) { + final int index = i++; + listenableFuture.addListener(new Runnable(){ + + @Override + public void run() { + CombinedFuture.this.setOneValue(index, listenableFuture); + } + }, listenerExecutor); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + private void setExceptionAndMaybeLog(Throwable throwable) { + boolean visibleFromOutputFuture = false; + boolean firstTimeSeeingThisException = true; + if (this.allMustSucceed) { + visibleFromOutputFuture = super.setException(throwable); + Object object = this.seenExceptionsLock; + synchronized (object) { + if (this.seenExceptions == null) { + this.seenExceptions = Sets.newHashSet(); + } + firstTimeSeeingThisException = this.seenExceptions.add(throwable); + } + } + if (throwable instanceof Error || this.allMustSucceed && !visibleFromOutputFuture && firstTimeSeeingThisException) { + logger.log(Level.SEVERE, "input future failed.", throwable); + } + } + + /* + * Exception decompiling + */ + private void setOneValue(int index, Future future) { + /* + * This method has failed to decompile. When submitting a bug report, please provide this stack trace, and (if you hold appropriate legal rights) the relevant class file. + * + * org.benf.cfr.reader.util.ConfusedCFRException: Started 2 blocks at once + * at org.benf.cfr.reader.bytecode.analysis.opgraph.Op04StructuredStatement.getStartingBlocks(Op04StructuredStatement.java:412) + * at org.benf.cfr.reader.bytecode.analysis.opgraph.Op04StructuredStatement.buildNestedBlocks(Op04StructuredStatement.java:487) + * at org.benf.cfr.reader.bytecode.analysis.opgraph.Op03SimpleStatement.createInitialStructuredBlock(Op03SimpleStatement.java:736) + * at org.benf.cfr.reader.bytecode.CodeAnalyser.getAnalysisInner(CodeAnalyser.java:850) + * at org.benf.cfr.reader.bytecode.CodeAnalyser.getAnalysisOrWrapFail(CodeAnalyser.java:278) + * at org.benf.cfr.reader.bytecode.CodeAnalyser.getAnalysis(CodeAnalyser.java:201) + * at org.benf.cfr.reader.entities.attributes.AttributeCode.analyse(AttributeCode.java:94) + * at org.benf.cfr.reader.entities.Method.analyse(Method.java:531) + * at org.benf.cfr.reader.entities.ClassFile.analyseMid(ClassFile.java:1055) + * at org.benf.cfr.reader.entities.ClassFile.analyseInnerClassesPass1(ClassFile.java:923) + * at org.benf.cfr.reader.entities.ClassFile.analyseMid(ClassFile.java:1035) + * at org.benf.cfr.reader.entities.ClassFile.analyseTop(ClassFile.java:942) + * at org.benf.cfr.reader.Driver.doClass(Driver.java:84) + * at org.benf.cfr.reader.CfrDriverImpl.analyse(CfrDriverImpl.java:78) + * at org.benf.cfr.reader.Main.main(Main.java:54) + */ + throw new IllegalStateException("Decompilation failed"); + } + } + + private static interface FutureCombiner { + public C combine(List> var1); + } + + private static class NonCancellationPropagatingFuture + extends AbstractFuture { + NonCancellationPropagatingFuture(final ListenableFuture delegate) { + Preconditions.checkNotNull(delegate); + Futures.addCallback(delegate, new FutureCallback(){ + + @Override + public void onSuccess(V result) { + NonCancellationPropagatingFuture.this.set(result); + } + + @Override + public void onFailure(Throwable t) { + if (delegate.isCancelled()) { + NonCancellationPropagatingFuture.this.cancel(false); + } else { + NonCancellationPropagatingFuture.this.setException(t); + } + } + }, MoreExecutors.directExecutor()); + } + } + + private static final class CombinerFuture + extends ListenableFutureTask { + ImmutableList> futures; + + CombinerFuture(Callable callable, ImmutableList> futures) { + super(callable); + this.futures = futures; + } + + @Override + public boolean cancel(boolean mayInterruptIfRunning) { + ImmutableList> futures = this.futures; + if (super.cancel(mayInterruptIfRunning)) { + for (ListenableFuture listenableFuture : futures) { + listenableFuture.cancel(mayInterruptIfRunning); + } + return true; + } + return false; + } + + @Override + protected void done() { + super.done(); + this.futures = null; + } + + @Override + protected void setException(Throwable t) { + super.setException(t); + } + } + + private static final class WrappedCombiner + implements Callable { + final Callable delegate; + CombinerFuture outputFuture; + + WrappedCombiner(Callable delegate) { + this.delegate = Preconditions.checkNotNull(delegate); + } + + @Override + public T call() throws Exception { + try { + return this.delegate.call(); + } + catch (ExecutionException e) { + this.outputFuture.setException(e.getCause()); + } + catch (CancellationException e) { + this.outputFuture.cancel(false); + } + return null; + } + } + + private static class ChainingListenableFuture + extends AbstractFuture + implements Runnable { + private AsyncFunction function; + private ListenableFuture inputFuture; + private volatile ListenableFuture outputFuture; + + private ChainingListenableFuture(AsyncFunction function, ListenableFuture inputFuture) { + this.function = Preconditions.checkNotNull(function); + this.inputFuture = Preconditions.checkNotNull(inputFuture); + } + + @Override + public boolean cancel(boolean mayInterruptIfRunning) { + if (super.cancel(mayInterruptIfRunning)) { + this.cancel(this.inputFuture, mayInterruptIfRunning); + this.cancel(this.outputFuture, mayInterruptIfRunning); + return true; + } + return false; + } + + private void cancel(@Nullable Future future, boolean mayInterruptIfRunning) { + if (future != null) { + future.cancel(mayInterruptIfRunning); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + * Loose catch block + */ + @Override + public void run() { + block14: { + try { + I sourceResult; + try { + sourceResult = Uninterruptibles.getUninterruptibly(this.inputFuture); + } + catch (CancellationException e) { + this.cancel(false); + this.function = null; + this.inputFuture = null; + return; + } + catch (ExecutionException e) { + this.setException(e.getCause()); + this.function = null; + this.inputFuture = null; + return; + } + this.outputFuture = Preconditions.checkNotNull(this.function.apply(sourceResult), "AsyncFunction may not return null."); + final ListenableFuture outputFuture = this.outputFuture; + if (this.isCancelled()) { + outputFuture.cancel(this.wasInterrupted()); + this.outputFuture = null; + return; + } + outputFuture.addListener(new Runnable(){ + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public void run() { + try { + ChainingListenableFuture.this.set(Uninterruptibles.getUninterruptibly(outputFuture)); + } + catch (CancellationException e) { + ChainingListenableFuture.this.cancel(false); + return; + } + catch (ExecutionException e) { + ChainingListenableFuture.this.setException(e.getCause()); + } + finally { + ChainingListenableFuture.this.outputFuture = null; + } + } + }, MoreExecutors.directExecutor()); + break block14; + { + catch (UndeclaredThrowableException e) { + this.setException(e.getCause()); + break block14; + } + catch (Throwable t) { + this.setException(t); + break block14; + } + catch (Throwable throwable) { + throw throwable; + } + } + } + finally { + this.function = null; + this.inputFuture = null; + } + } + } + } + + private static class FallbackFuture + extends AbstractFuture { + private volatile ListenableFuture running; + + FallbackFuture(ListenableFuture input, final FutureFallback fallback, Executor executor) { + this.running = input; + Futures.addCallback(this.running, new FutureCallback(){ + + @Override + public void onSuccess(V value) { + FallbackFuture.this.set(value); + } + + @Override + public void onFailure(Throwable t) { + if (FallbackFuture.this.isCancelled()) { + return; + } + try { + FallbackFuture.this.running = fallback.create(t); + if (FallbackFuture.this.isCancelled()) { + FallbackFuture.this.running.cancel(FallbackFuture.this.wasInterrupted()); + return; + } + Futures.addCallback(FallbackFuture.this.running, new FutureCallback(){ + + @Override + public void onSuccess(V value) { + FallbackFuture.this.set(value); + } + + @Override + public void onFailure(Throwable t) { + if (FallbackFuture.this.running.isCancelled()) { + FallbackFuture.this.cancel(false); + } else { + FallbackFuture.this.setException(t); + } + } + }, MoreExecutors.directExecutor()); + } + catch (Throwable e) { + FallbackFuture.this.setException(e); + } + } + }, executor); + } + + @Override + public boolean cancel(boolean mayInterruptIfRunning) { + if (super.cancel(mayInterruptIfRunning)) { + this.running.cancel(mayInterruptIfRunning); + return true; + } + return false; + } + } + + private static class ImmediateFailedCheckedFuture + extends ImmediateFuture + implements CheckedFuture { + private final X thrown; + + ImmediateFailedCheckedFuture(X thrown) { + this.thrown = thrown; + } + + @Override + public V get() throws ExecutionException { + throw new ExecutionException((Throwable)this.thrown); + } + + @Override + public V checkedGet() throws X { + throw this.thrown; + } + + @Override + public V checkedGet(long timeout, TimeUnit unit) throws X { + Preconditions.checkNotNull(unit); + throw this.thrown; + } + } + + private static class ImmediateCancelledFuture + extends ImmediateFuture { + private final CancellationException thrown = new CancellationException("Immediate cancelled future."); + + ImmediateCancelledFuture() { + } + + @Override + public boolean isCancelled() { + return true; + } + + @Override + public V get() { + throw AbstractFuture.cancellationExceptionWithCause("Task was cancelled.", this.thrown); + } + } + + private static class ImmediateFailedFuture + extends ImmediateFuture { + private final Throwable thrown; + + ImmediateFailedFuture(Throwable thrown) { + this.thrown = thrown; + } + + @Override + public V get() throws ExecutionException { + throw new ExecutionException(this.thrown); + } + } + + private static class ImmediateSuccessfulCheckedFuture + extends ImmediateFuture + implements CheckedFuture { + @Nullable + private final V value; + + ImmediateSuccessfulCheckedFuture(@Nullable V value) { + this.value = value; + } + + @Override + public V get() { + return this.value; + } + + @Override + public V checkedGet() { + return this.value; + } + + @Override + public V checkedGet(long timeout, TimeUnit unit) { + Preconditions.checkNotNull(unit); + return this.value; + } + } + + private static class ImmediateSuccessfulFuture + extends ImmediateFuture { + @Nullable + private final V value; + + ImmediateSuccessfulFuture(@Nullable V value) { + this.value = value; + } + + @Override + public V get() { + return this.value; + } + } + + private static abstract class ImmediateFuture + implements ListenableFuture { + private static final Logger log = Logger.getLogger(ImmediateFuture.class.getName()); + + private ImmediateFuture() { + } + + @Override + public void addListener(Runnable listener, Executor executor) { + Preconditions.checkNotNull(listener, "Runnable was null."); + Preconditions.checkNotNull(executor, "Executor was null."); + try { + executor.execute(listener); + } + catch (RuntimeException e) { + String string = String.valueOf(String.valueOf(listener)); + String string2 = String.valueOf(String.valueOf(executor)); + log.log(Level.SEVERE, new StringBuilder(57 + string.length() + string2.length()).append("RuntimeException while executing runnable ").append(string).append(" with executor ").append(string2).toString(), e); + } + } + + @Override + public boolean cancel(boolean mayInterruptIfRunning) { + return false; + } + + @Override + public abstract V get() throws ExecutionException; + + @Override + public V get(long timeout, TimeUnit unit) throws ExecutionException { + Preconditions.checkNotNull(unit); + return this.get(); + } + + @Override + public boolean isCancelled() { + return false; + } + + @Override + public boolean isDone() { + return true; + } + } +} diff --git a/src/com/google/common/util/concurrent/JdkFutureAdapters.java b/src/com/google/common/util/concurrent/JdkFutureAdapters.java new file mode 100644 index 0000000..eb78071 --- /dev/null +++ b/src/com/google/common/util/concurrent/JdkFutureAdapters.java @@ -0,0 +1,90 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.util.concurrent; + +import com.google.common.annotations.Beta; +import com.google.common.base.Preconditions; +import com.google.common.util.concurrent.ExecutionList; +import com.google.common.util.concurrent.ForwardingFuture; +import com.google.common.util.concurrent.ListenableFuture; +import com.google.common.util.concurrent.ThreadFactoryBuilder; +import com.google.common.util.concurrent.Uninterruptibles; +import java.util.concurrent.Executor; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; +import java.util.concurrent.ThreadFactory; +import java.util.concurrent.atomic.AtomicBoolean; + +@Beta +public final class JdkFutureAdapters { + public static ListenableFuture listenInPoolThread(Future future) { + if (future instanceof ListenableFuture) { + return (ListenableFuture)future; + } + return new ListenableFutureAdapter(future); + } + + public static ListenableFuture listenInPoolThread(Future future, Executor executor) { + Preconditions.checkNotNull(executor); + if (future instanceof ListenableFuture) { + return (ListenableFuture)future; + } + return new ListenableFutureAdapter(future, executor); + } + + private JdkFutureAdapters() { + } + + private static class ListenableFutureAdapter + extends ForwardingFuture + implements ListenableFuture { + private static final ThreadFactory threadFactory = new ThreadFactoryBuilder().setDaemon(true).setNameFormat("ListenableFutureAdapter-thread-%d").build(); + private static final Executor defaultAdapterExecutor = Executors.newCachedThreadPool(threadFactory); + private final Executor adapterExecutor; + private final ExecutionList executionList = new ExecutionList(); + private final AtomicBoolean hasListeners = new AtomicBoolean(false); + private final Future delegate; + + ListenableFutureAdapter(Future delegate) { + this(delegate, defaultAdapterExecutor); + } + + ListenableFutureAdapter(Future delegate, Executor adapterExecutor) { + this.delegate = Preconditions.checkNotNull(delegate); + this.adapterExecutor = Preconditions.checkNotNull(adapterExecutor); + } + + @Override + protected Future delegate() { + return this.delegate; + } + + @Override + public void addListener(Runnable listener, Executor exec) { + this.executionList.add(listener, exec); + if (this.hasListeners.compareAndSet(false, true)) { + if (this.delegate.isDone()) { + this.executionList.execute(); + return; + } + this.adapterExecutor.execute(new Runnable(){ + + @Override + public void run() { + try { + Uninterruptibles.getUninterruptibly(ListenableFutureAdapter.this.delegate); + } + catch (Error e) { + throw e; + } + catch (Throwable throwable) { + // empty catch block + } + ListenableFutureAdapter.this.executionList.execute(); + } + }); + } + } + } +} diff --git a/src/com/google/common/util/concurrent/ListenableFuture.java b/src/com/google/common/util/concurrent/ListenableFuture.java new file mode 100644 index 0000000..a86edb5 --- /dev/null +++ b/src/com/google/common/util/concurrent/ListenableFuture.java @@ -0,0 +1,12 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.util.concurrent; + +import java.util.concurrent.Executor; +import java.util.concurrent.Future; + +public interface ListenableFuture +extends Future { + public void addListener(Runnable var1, Executor var2); +} diff --git a/src/com/google/common/util/concurrent/ListenableFutureTask.java b/src/com/google/common/util/concurrent/ListenableFutureTask.java new file mode 100644 index 0000000..d7a45b6 --- /dev/null +++ b/src/com/google/common/util/concurrent/ListenableFutureTask.java @@ -0,0 +1,43 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.util.concurrent; + +import com.google.common.util.concurrent.ExecutionList; +import com.google.common.util.concurrent.ListenableFuture; +import java.util.concurrent.Callable; +import java.util.concurrent.Executor; +import java.util.concurrent.FutureTask; +import javax.annotation.Nullable; + +public class ListenableFutureTask +extends FutureTask +implements ListenableFuture { + private final ExecutionList executionList = new ExecutionList(); + + public static ListenableFutureTask create(Callable callable) { + return new ListenableFutureTask(callable); + } + + public static ListenableFutureTask create(Runnable runnable, @Nullable V result) { + return new ListenableFutureTask(runnable, result); + } + + ListenableFutureTask(Callable callable) { + super(callable); + } + + ListenableFutureTask(Runnable runnable, @Nullable V result) { + super(runnable, result); + } + + @Override + public void addListener(Runnable listener, Executor exec) { + this.executionList.add(listener, exec); + } + + @Override + protected void done() { + this.executionList.execute(); + } +} diff --git a/src/com/google/common/util/concurrent/ListenableScheduledFuture.java b/src/com/google/common/util/concurrent/ListenableScheduledFuture.java new file mode 100644 index 0000000..779fc5a --- /dev/null +++ b/src/com/google/common/util/concurrent/ListenableScheduledFuture.java @@ -0,0 +1,14 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.util.concurrent; + +import com.google.common.annotations.Beta; +import com.google.common.util.concurrent.ListenableFuture; +import java.util.concurrent.ScheduledFuture; + +@Beta +public interface ListenableScheduledFuture +extends ScheduledFuture, +ListenableFuture { +} diff --git a/src/com/google/common/util/concurrent/ListenerCallQueue.java b/src/com/google/common/util/concurrent/ListenerCallQueue.java new file mode 100644 index 0000000..1fad437 --- /dev/null +++ b/src/com/google/common/util/concurrent/ListenerCallQueue.java @@ -0,0 +1,121 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.util.concurrent; + +import com.google.common.base.Preconditions; +import com.google.common.collect.Queues; +import java.util.Queue; +import java.util.concurrent.Executor; +import java.util.logging.Level; +import java.util.logging.Logger; +import javax.annotation.concurrent.GuardedBy; + +final class ListenerCallQueue +implements Runnable { + private static final Logger logger = Logger.getLogger(ListenerCallQueue.class.getName()); + private final L listener; + private final Executor executor; + @GuardedBy(value="this") + private final Queue> waitQueue = Queues.newArrayDeque(); + @GuardedBy(value="this") + private boolean isThreadScheduled; + + ListenerCallQueue(L listener, Executor executor) { + this.listener = Preconditions.checkNotNull(listener); + this.executor = Preconditions.checkNotNull(executor); + } + + synchronized void add(Callback callback) { + this.waitQueue.add(callback); + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + void execute() { + boolean scheduleTaskRunner = false; + ListenerCallQueue listenerCallQueue = this; + synchronized (listenerCallQueue) { + if (!this.isThreadScheduled) { + this.isThreadScheduled = true; + scheduleTaskRunner = true; + } + } + if (scheduleTaskRunner) { + try { + this.executor.execute(this); + } + catch (RuntimeException e) { + Object object = this; + synchronized (object) { + this.isThreadScheduled = false; + } + object = String.valueOf(String.valueOf(this.listener)); + String string = String.valueOf(String.valueOf(this.executor)); + logger.log(Level.SEVERE, new StringBuilder(42 + ((String)object).length() + string.length()).append("Exception while running callbacks for ").append((String)object).append(" on ").append(string).toString(), e); + throw e; + } + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public void run() { + block18: { + boolean stillRunning = true; + block14: while (true) { + while (true) { + Callback nextToRun; + ListenerCallQueue listenerCallQueue = this; + synchronized (listenerCallQueue) { + Preconditions.checkState(this.isThreadScheduled); + nextToRun = this.waitQueue.poll(); + if (nextToRun == null) { + this.isThreadScheduled = false; + stillRunning = false; + break block18; + } + } + try { + nextToRun.call(this.listener); + continue block14; + } + catch (RuntimeException e) { + String string = String.valueOf(String.valueOf(this.listener)); + String string2 = String.valueOf(String.valueOf(((Callback)nextToRun).methodCall)); + logger.log(Level.SEVERE, new StringBuilder(37 + string.length() + string2.length()).append("Exception while executing callback: ").append(string).append(".").append(string2).toString(), e); + continue; + } + break; + } + } + finally { + if (stillRunning) { + ListenerCallQueue listenerCallQueue = this; + synchronized (listenerCallQueue) { + this.isThreadScheduled = false; + } + } + } + } + } + + static abstract class Callback { + private final String methodCall; + + Callback(String methodCall) { + this.methodCall = methodCall; + } + + abstract void call(L var1); + + void enqueueOn(Iterable> queues) { + for (ListenerCallQueue queue : queues) { + queue.add(this); + } + } + } +} diff --git a/src/com/google/common/util/concurrent/ListeningExecutorService.java b/src/com/google/common/util/concurrent/ListeningExecutorService.java new file mode 100644 index 0000000..a1977a4 --- /dev/null +++ b/src/com/google/common/util/concurrent/ListeningExecutorService.java @@ -0,0 +1,27 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.util.concurrent; + +import com.google.common.util.concurrent.ListenableFuture; +import java.util.Collection; +import java.util.List; +import java.util.concurrent.Callable; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Future; +import java.util.concurrent.TimeUnit; + +public interface ListeningExecutorService +extends ExecutorService { + public ListenableFuture submit(Callable var1); + + public ListenableFuture submit(Runnable var1); + + public ListenableFuture submit(Runnable var1, T var2); + + @Override + public List> invokeAll(Collection> var1) throws InterruptedException; + + @Override + public List> invokeAll(Collection> var1, long var2, TimeUnit var4) throws InterruptedException; +} diff --git a/src/com/google/common/util/concurrent/ListeningScheduledExecutorService.java b/src/com/google/common/util/concurrent/ListeningScheduledExecutorService.java new file mode 100644 index 0000000..5fda77c --- /dev/null +++ b/src/com/google/common/util/concurrent/ListeningScheduledExecutorService.java @@ -0,0 +1,24 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.util.concurrent; + +import com.google.common.annotations.Beta; +import com.google.common.util.concurrent.ListenableScheduledFuture; +import com.google.common.util.concurrent.ListeningExecutorService; +import java.util.concurrent.Callable; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.TimeUnit; + +@Beta +public interface ListeningScheduledExecutorService +extends ScheduledExecutorService, +ListeningExecutorService { + public ListenableScheduledFuture schedule(Runnable var1, long var2, TimeUnit var4); + + public ListenableScheduledFuture schedule(Callable var1, long var2, TimeUnit var4); + + public ListenableScheduledFuture scheduleAtFixedRate(Runnable var1, long var2, long var4, TimeUnit var6); + + public ListenableScheduledFuture scheduleWithFixedDelay(Runnable var1, long var2, long var4, TimeUnit var6); +} diff --git a/src/com/google/common/util/concurrent/Monitor.java b/src/com/google/common/util/concurrent/Monitor.java new file mode 100644 index 0000000..9744c37 --- /dev/null +++ b/src/com/google/common/util/concurrent/Monitor.java @@ -0,0 +1,599 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.util.concurrent; + +import com.google.common.annotations.Beta; +import com.google.common.base.Preconditions; +import com.google.common.base.Throwables; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.locks.Condition; +import java.util.concurrent.locks.ReentrantLock; +import javax.annotation.concurrent.GuardedBy; + +@Beta +public final class Monitor { + private final boolean fair; + private final ReentrantLock lock; + @GuardedBy(value="lock") + private Guard activeGuards = null; + + public Monitor() { + this(false); + } + + public Monitor(boolean fair) { + this.fair = fair; + this.lock = new ReentrantLock(fair); + } + + public void enter() { + this.lock.lock(); + } + + public void enterInterruptibly() throws InterruptedException { + this.lock.lockInterruptibly(); + } + + public boolean enter(long time, TimeUnit unit) { + long timeoutNanos = unit.toNanos(time); + ReentrantLock lock = this.lock; + if (!this.fair && lock.tryLock()) { + return true; + } + long deadline = System.nanoTime() + timeoutNanos; + boolean interrupted = Thread.interrupted(); + while (true) { + try { + boolean bl = lock.tryLock(timeoutNanos, TimeUnit.NANOSECONDS); + return bl; + } + catch (InterruptedException interrupt) { + interrupted = true; + timeoutNanos = deadline - System.nanoTime(); + continue; + } + break; + } + finally { + if (interrupted) { + Thread.currentThread().interrupt(); + } + } + } + + public boolean enterInterruptibly(long time, TimeUnit unit) throws InterruptedException { + return this.lock.tryLock(time, unit); + } + + public boolean tryEnter() { + return this.lock.tryLock(); + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + public void enterWhen(Guard guard) throws InterruptedException { + if (guard.monitor != this) { + throw new IllegalMonitorStateException(); + } + ReentrantLock lock = this.lock; + boolean signalBeforeWaiting = lock.isHeldByCurrentThread(); + lock.lockInterruptibly(); + boolean satisfied = false; + try { + if (!guard.isSatisfied()) { + this.await(guard, signalBeforeWaiting); + } + satisfied = true; + } + finally { + if (!satisfied) { + this.leave(); + } + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + public void enterWhenUninterruptibly(Guard guard) { + if (guard.monitor != this) { + throw new IllegalMonitorStateException(); + } + ReentrantLock lock = this.lock; + boolean signalBeforeWaiting = lock.isHeldByCurrentThread(); + lock.lock(); + boolean satisfied = false; + try { + if (!guard.isSatisfied()) { + this.awaitUninterruptibly(guard, signalBeforeWaiting); + } + satisfied = true; + } + finally { + if (!satisfied) { + this.leave(); + } + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + public boolean enterWhen(Guard guard, long time, TimeUnit unit) throws InterruptedException { + long timeoutNanos = unit.toNanos(time); + if (guard.monitor != this) { + throw new IllegalMonitorStateException(); + } + ReentrantLock lock = this.lock; + boolean reentrant = lock.isHeldByCurrentThread(); + if (this.fair || !lock.tryLock()) { + long deadline = System.nanoTime() + timeoutNanos; + if (!lock.tryLock(time, unit)) { + return false; + } + timeoutNanos = deadline - System.nanoTime(); + } + boolean satisfied = false; + boolean threw = true; + try { + satisfied = guard.isSatisfied() || this.awaitNanos(guard, timeoutNanos, reentrant); + threw = false; + boolean bl = satisfied; + return bl; + } + finally { + if (!satisfied) { + try { + if (threw && !reentrant) { + this.signalNextWaiter(); + } + } + finally { + lock.unlock(); + } + } + } + } + + /* + * Loose catch block + */ + public boolean enterWhenUninterruptibly(Guard guard, long time, TimeUnit unit) { + long timeoutNanos = unit.toNanos(time); + if (guard.monitor != this) { + throw new IllegalMonitorStateException(); + } + ReentrantLock lock = this.lock; + long deadline = System.nanoTime() + timeoutNanos; + boolean signalBeforeWaiting = lock.isHeldByCurrentThread(); + boolean interrupted = Thread.interrupted(); + try { + if (this.fair || !lock.tryLock()) { + boolean locked = false; + do { + try { + locked = lock.tryLock(timeoutNanos, TimeUnit.NANOSECONDS); + if (!locked) { + boolean bl = false; + return bl; + } + } + catch (InterruptedException interrupt) { + interrupted = true; + } + timeoutNanos = deadline - System.nanoTime(); + } while (!locked); + } + boolean satisfied = false; + while (true) { + try { + satisfied = guard.isSatisfied() || this.awaitNanos(guard, timeoutNanos, signalBeforeWaiting); + boolean interrupt = satisfied; + return interrupt; + } + catch (InterruptedException interrupt) { + interrupted = true; + signalBeforeWaiting = false; + timeoutNanos = deadline - System.nanoTime(); + continue; + } + break; + } + finally { + if (!satisfied) { + lock.unlock(); + } + } + { + catch (Throwable throwable) { + throw throwable; + } + } + } + finally { + if (interrupted) { + Thread.currentThread().interrupt(); + } + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + public boolean enterIf(Guard guard) { + if (guard.monitor != this) { + throw new IllegalMonitorStateException(); + } + ReentrantLock lock = this.lock; + lock.lock(); + boolean satisfied = false; + try { + boolean bl = satisfied = guard.isSatisfied(); + return bl; + } + finally { + if (!satisfied) { + lock.unlock(); + } + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + public boolean enterIfInterruptibly(Guard guard) throws InterruptedException { + if (guard.monitor != this) { + throw new IllegalMonitorStateException(); + } + ReentrantLock lock = this.lock; + lock.lockInterruptibly(); + boolean satisfied = false; + try { + boolean bl = satisfied = guard.isSatisfied(); + return bl; + } + finally { + if (!satisfied) { + lock.unlock(); + } + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + public boolean enterIf(Guard guard, long time, TimeUnit unit) { + if (guard.monitor != this) { + throw new IllegalMonitorStateException(); + } + if (!this.enter(time, unit)) { + return false; + } + boolean satisfied = false; + try { + boolean bl = satisfied = guard.isSatisfied(); + return bl; + } + finally { + if (!satisfied) { + this.lock.unlock(); + } + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + public boolean enterIfInterruptibly(Guard guard, long time, TimeUnit unit) throws InterruptedException { + if (guard.monitor != this) { + throw new IllegalMonitorStateException(); + } + ReentrantLock lock = this.lock; + if (!lock.tryLock(time, unit)) { + return false; + } + boolean satisfied = false; + try { + boolean bl = satisfied = guard.isSatisfied(); + return bl; + } + finally { + if (!satisfied) { + lock.unlock(); + } + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + public boolean tryEnterIf(Guard guard) { + if (guard.monitor != this) { + throw new IllegalMonitorStateException(); + } + ReentrantLock lock = this.lock; + if (!lock.tryLock()) { + return false; + } + boolean satisfied = false; + try { + boolean bl = satisfied = guard.isSatisfied(); + return bl; + } + finally { + if (!satisfied) { + lock.unlock(); + } + } + } + + public void waitFor(Guard guard) throws InterruptedException { + if (!(guard.monitor == this & this.lock.isHeldByCurrentThread())) { + throw new IllegalMonitorStateException(); + } + if (!guard.isSatisfied()) { + this.await(guard, true); + } + } + + public void waitForUninterruptibly(Guard guard) { + if (!(guard.monitor == this & this.lock.isHeldByCurrentThread())) { + throw new IllegalMonitorStateException(); + } + if (!guard.isSatisfied()) { + this.awaitUninterruptibly(guard, true); + } + } + + public boolean waitFor(Guard guard, long time, TimeUnit unit) throws InterruptedException { + long timeoutNanos = unit.toNanos(time); + if (!(guard.monitor == this & this.lock.isHeldByCurrentThread())) { + throw new IllegalMonitorStateException(); + } + return guard.isSatisfied() || this.awaitNanos(guard, timeoutNanos, true); + } + + public boolean waitForUninterruptibly(Guard guard, long time, TimeUnit unit) { + long timeoutNanos = unit.toNanos(time); + if (!(guard.monitor == this & this.lock.isHeldByCurrentThread())) { + throw new IllegalMonitorStateException(); + } + if (guard.isSatisfied()) { + return true; + } + boolean signalBeforeWaiting = true; + long deadline = System.nanoTime() + timeoutNanos; + boolean interrupted = Thread.interrupted(); + while (true) { + try { + boolean bl = this.awaitNanos(guard, timeoutNanos, signalBeforeWaiting); + return bl; + } + catch (InterruptedException interrupt) { + interrupted = true; + if (guard.isSatisfied()) { + boolean bl = true; + return bl; + } + signalBeforeWaiting = false; + timeoutNanos = deadline - System.nanoTime(); + continue; + } + break; + } + finally { + if (interrupted) { + Thread.currentThread().interrupt(); + } + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + public void leave() { + ReentrantLock lock = this.lock; + try { + if (lock.getHoldCount() == 1) { + this.signalNextWaiter(); + } + } + finally { + lock.unlock(); + } + } + + public boolean isFair() { + return this.fair; + } + + public boolean isOccupied() { + return this.lock.isLocked(); + } + + public boolean isOccupiedByCurrentThread() { + return this.lock.isHeldByCurrentThread(); + } + + public int getOccupiedDepth() { + return this.lock.getHoldCount(); + } + + public int getQueueLength() { + return this.lock.getQueueLength(); + } + + public boolean hasQueuedThreads() { + return this.lock.hasQueuedThreads(); + } + + public boolean hasQueuedThread(Thread thread) { + return this.lock.hasQueuedThread(thread); + } + + public boolean hasWaiters(Guard guard) { + return this.getWaitQueueLength(guard) > 0; + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + public int getWaitQueueLength(Guard guard) { + if (guard.monitor != this) { + throw new IllegalMonitorStateException(); + } + this.lock.lock(); + try { + int n = guard.waiterCount; + return n; + } + finally { + this.lock.unlock(); + } + } + + @GuardedBy(value="lock") + private void signalNextWaiter() { + Guard guard = this.activeGuards; + while (guard != null) { + if (this.isSatisfied(guard)) { + guard.condition.signal(); + break; + } + guard = guard.next; + } + } + + @GuardedBy(value="lock") + private boolean isSatisfied(Guard guard) { + try { + return guard.isSatisfied(); + } + catch (Throwable throwable) { + this.signalAllWaiters(); + throw Throwables.propagate(throwable); + } + } + + @GuardedBy(value="lock") + private void signalAllWaiters() { + Guard guard = this.activeGuards; + while (guard != null) { + guard.condition.signalAll(); + guard = guard.next; + } + } + + @GuardedBy(value="lock") + private void beginWaitingFor(Guard guard) { + int waiters; + if ((waiters = guard.waiterCount++) == 0) { + guard.next = this.activeGuards; + this.activeGuards = guard; + } + } + + @GuardedBy(value="lock") + private void endWaitingFor(Guard guard) { + int waiters; + if ((waiters = --guard.waiterCount) == 0) { + Guard p = this.activeGuards; + Guard pred = null; + while (true) { + if (p == guard) { + if (pred == null) { + this.activeGuards = p.next; + } else { + pred.next = p.next; + } + p.next = null; + break; + } + pred = p; + p = p.next; + } + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @GuardedBy(value="lock") + private void await(Guard guard, boolean signalBeforeWaiting) throws InterruptedException { + if (signalBeforeWaiting) { + this.signalNextWaiter(); + } + this.beginWaitingFor(guard); + try { + do { + guard.condition.await(); + } while (!guard.isSatisfied()); + } + finally { + this.endWaitingFor(guard); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @GuardedBy(value="lock") + private void awaitUninterruptibly(Guard guard, boolean signalBeforeWaiting) { + if (signalBeforeWaiting) { + this.signalNextWaiter(); + } + this.beginWaitingFor(guard); + try { + do { + guard.condition.awaitUninterruptibly(); + } while (!guard.isSatisfied()); + } + finally { + this.endWaitingFor(guard); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @GuardedBy(value="lock") + private boolean awaitNanos(Guard guard, long nanos, boolean signalBeforeWaiting) throws InterruptedException { + if (signalBeforeWaiting) { + this.signalNextWaiter(); + } + this.beginWaitingFor(guard); + try { + do { + if (nanos < 0L) { + boolean bl = false; + return bl; + } + nanos = guard.condition.awaitNanos(nanos); + } while (!guard.isSatisfied()); + boolean bl = true; + return bl; + } + finally { + this.endWaitingFor(guard); + } + } + + @Beta + public static abstract class Guard { + final Monitor monitor; + final Condition condition; + @GuardedBy(value="monitor.lock") + int waiterCount = 0; + @GuardedBy(value="monitor.lock") + Guard next; + + protected Guard(Monitor monitor) { + this.monitor = Preconditions.checkNotNull(monitor, "monitor"); + this.condition = monitor.lock.newCondition(); + } + + public abstract boolean isSatisfied(); + } +} diff --git a/src/com/google/common/util/concurrent/MoreExecutors.java b/src/com/google/common/util/concurrent/MoreExecutors.java new file mode 100644 index 0000000..149851e --- /dev/null +++ b/src/com/google/common/util/concurrent/MoreExecutors.java @@ -0,0 +1,632 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.util.concurrent; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.Preconditions; +import com.google.common.base.Supplier; +import com.google.common.base.Throwables; +import com.google.common.collect.Lists; +import com.google.common.collect.Queues; +import com.google.common.util.concurrent.AbstractFuture; +import com.google.common.util.concurrent.AbstractListeningExecutorService; +import com.google.common.util.concurrent.Callables; +import com.google.common.util.concurrent.ForwardingListenableFuture; +import com.google.common.util.concurrent.ListenableFuture; +import com.google.common.util.concurrent.ListenableFutureTask; +import com.google.common.util.concurrent.ListenableScheduledFuture; +import com.google.common.util.concurrent.ListeningExecutorService; +import com.google.common.util.concurrent.ListeningScheduledExecutorService; +import com.google.common.util.concurrent.ThreadFactoryBuilder; +import com.google.common.util.concurrent.WrappingExecutorService; +import com.google.common.util.concurrent.WrappingScheduledExecutorService; +import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; +import java.util.concurrent.BlockingQueue; +import java.util.concurrent.Callable; +import java.util.concurrent.Delayed; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.Executor; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; +import java.util.concurrent.LinkedBlockingQueue; +import java.util.concurrent.RejectedExecutionException; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.ScheduledFuture; +import java.util.concurrent.ScheduledThreadPoolExecutor; +import java.util.concurrent.ThreadFactory; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; +import java.util.concurrent.locks.Condition; +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; + +public final class MoreExecutors { + private MoreExecutors() { + } + + @Beta + public static ExecutorService getExitingExecutorService(ThreadPoolExecutor executor, long terminationTimeout, TimeUnit timeUnit) { + return new Application().getExitingExecutorService(executor, terminationTimeout, timeUnit); + } + + @Beta + public static ScheduledExecutorService getExitingScheduledExecutorService(ScheduledThreadPoolExecutor executor, long terminationTimeout, TimeUnit timeUnit) { + return new Application().getExitingScheduledExecutorService(executor, terminationTimeout, timeUnit); + } + + @Beta + public static void addDelayedShutdownHook(ExecutorService service, long terminationTimeout, TimeUnit timeUnit) { + new Application().addDelayedShutdownHook(service, terminationTimeout, timeUnit); + } + + @Beta + public static ExecutorService getExitingExecutorService(ThreadPoolExecutor executor) { + return new Application().getExitingExecutorService(executor); + } + + @Beta + public static ScheduledExecutorService getExitingScheduledExecutorService(ScheduledThreadPoolExecutor executor) { + return new Application().getExitingScheduledExecutorService(executor); + } + + private static void useDaemonThreadFactory(ThreadPoolExecutor executor) { + executor.setThreadFactory(new ThreadFactoryBuilder().setDaemon(true).setThreadFactory(executor.getThreadFactory()).build()); + } + + @Deprecated + public static ListeningExecutorService sameThreadExecutor() { + return new DirectExecutorService(); + } + + public static ListeningExecutorService newDirectExecutorService() { + return new DirectExecutorService(); + } + + public static Executor directExecutor() { + return DirectExecutor.INSTANCE; + } + + public static ListeningExecutorService listeningDecorator(ExecutorService delegate) { + return delegate instanceof ListeningExecutorService ? (ListeningExecutorService)delegate : (delegate instanceof ScheduledExecutorService ? new ScheduledListeningDecorator((ScheduledExecutorService)delegate) : new ListeningDecorator(delegate)); + } + + public static ListeningScheduledExecutorService listeningDecorator(ScheduledExecutorService delegate) { + return delegate instanceof ListeningScheduledExecutorService ? (ListeningScheduledExecutorService)delegate : new ScheduledListeningDecorator(delegate); + } + + static T invokeAnyImpl(ListeningExecutorService executorService, Collection> tasks, boolean timed, long nanos) throws InterruptedException, ExecutionException, TimeoutException { + ExecutionException ee; + ArrayList> futures; + block15: { + Preconditions.checkNotNull(executorService); + int ntasks = tasks.size(); + Preconditions.checkArgument(ntasks > 0); + futures = Lists.newArrayListWithCapacity(ntasks); + LinkedBlockingQueue> futureQueue = Queues.newLinkedBlockingQueue(); + ee = null; + long lastTime = timed ? System.nanoTime() : 0L; + Iterator> it = tasks.iterator(); + futures.add(MoreExecutors.submitAndAddQueueListener(executorService, it.next(), futureQueue)); + --ntasks; + int active = 1; + while (true) { + Object now22; + Future f; + if ((f = (Future)futureQueue.poll()) == null) { + if (ntasks > 0) { + --ntasks; + futures.add(MoreExecutors.submitAndAddQueueListener(executorService, it.next(), futureQueue)); + ++active; + } else { + if (active == 0) break; + if (timed) { + f = (Future)futureQueue.poll(nanos, TimeUnit.NANOSECONDS); + if (f == null) { + throw new TimeoutException(); + } + long now22 = System.nanoTime(); + nanos -= now22 - lastTime; + lastTime = now22; + } else { + f = (Future)futureQueue.take(); + } + } + } + if (f == null) continue; + --active; + try { + now22 = f.get(); + } + catch (ExecutionException eex) { + ee = eex; + continue; + } + catch (RuntimeException rex) { + ee = new ExecutionException(rex); + continue; + } + return (T)now22; + break; + } + if (ee != null) break block15; + ee = new ExecutionException(null); + } + throw ee; + finally { + for (Future future : futures) { + future.cancel(true); + } + } + } + + private static ListenableFuture submitAndAddQueueListener(ListeningExecutorService executorService, Callable task, final BlockingQueue> queue) { + final ListenableFuture future = executorService.submit(task); + future.addListener(new Runnable(){ + + @Override + public void run() { + queue.add(future); + } + }, MoreExecutors.directExecutor()); + return future; + } + + @Beta + public static ThreadFactory platformThreadFactory() { + if (!MoreExecutors.isAppEngine()) { + return Executors.defaultThreadFactory(); + } + try { + return (ThreadFactory)Class.forName("com.google.appengine.api.ThreadManager").getMethod("currentRequestThreadFactory", new Class[0]).invoke(null, new Object[0]); + } + catch (IllegalAccessException e) { + throw new RuntimeException("Couldn't invoke ThreadManager.currentRequestThreadFactory", e); + } + catch (ClassNotFoundException e) { + throw new RuntimeException("Couldn't invoke ThreadManager.currentRequestThreadFactory", e); + } + catch (NoSuchMethodException e) { + throw new RuntimeException("Couldn't invoke ThreadManager.currentRequestThreadFactory", e); + } + catch (InvocationTargetException e) { + throw Throwables.propagate(e.getCause()); + } + } + + private static boolean isAppEngine() { + if (System.getProperty("com.google.appengine.runtime.environment") == null) { + return false; + } + try { + return Class.forName("com.google.apphosting.api.ApiProxy").getMethod("getCurrentEnvironment", new Class[0]).invoke(null, new Object[0]) != null; + } + catch (ClassNotFoundException e) { + return false; + } + catch (InvocationTargetException e) { + return false; + } + catch (IllegalAccessException e) { + return false; + } + catch (NoSuchMethodException e) { + return false; + } + } + + static Thread newThread(String name, Runnable runnable) { + Preconditions.checkNotNull(name); + Preconditions.checkNotNull(runnable); + Thread result = MoreExecutors.platformThreadFactory().newThread(runnable); + try { + result.setName(name); + } + catch (SecurityException securityException) { + // empty catch block + } + return result; + } + + static Executor renamingDecorator(final Executor executor, final Supplier nameSupplier) { + Preconditions.checkNotNull(executor); + Preconditions.checkNotNull(nameSupplier); + if (MoreExecutors.isAppEngine()) { + return executor; + } + return new Executor(){ + + @Override + public void execute(Runnable command) { + executor.execute(Callables.threadRenaming(command, (Supplier)nameSupplier)); + } + }; + } + + static ExecutorService renamingDecorator(ExecutorService service, final Supplier nameSupplier) { + Preconditions.checkNotNull(service); + Preconditions.checkNotNull(nameSupplier); + if (MoreExecutors.isAppEngine()) { + return service; + } + return new WrappingExecutorService(service){ + + @Override + protected Callable wrapTask(Callable callable) { + return Callables.threadRenaming(callable, (Supplier)nameSupplier); + } + + @Override + protected Runnable wrapTask(Runnable command) { + return Callables.threadRenaming(command, (Supplier)nameSupplier); + } + }; + } + + static ScheduledExecutorService renamingDecorator(ScheduledExecutorService service, final Supplier nameSupplier) { + Preconditions.checkNotNull(service); + Preconditions.checkNotNull(nameSupplier); + if (MoreExecutors.isAppEngine()) { + return service; + } + return new WrappingScheduledExecutorService(service){ + + @Override + protected Callable wrapTask(Callable callable) { + return Callables.threadRenaming(callable, (Supplier)nameSupplier); + } + + @Override + protected Runnable wrapTask(Runnable command) { + return Callables.threadRenaming(command, (Supplier)nameSupplier); + } + }; + } + + @Beta + public static boolean shutdownAndAwaitTermination(ExecutorService service, long timeout, TimeUnit unit) { + Preconditions.checkNotNull(unit); + service.shutdown(); + try { + long halfTimeoutNanos = TimeUnit.NANOSECONDS.convert(timeout, unit) / 2L; + if (!service.awaitTermination(halfTimeoutNanos, TimeUnit.NANOSECONDS)) { + service.shutdownNow(); + service.awaitTermination(halfTimeoutNanos, TimeUnit.NANOSECONDS); + } + } + catch (InterruptedException ie) { + Thread.currentThread().interrupt(); + service.shutdownNow(); + } + return service.isTerminated(); + } + + private static class ScheduledListeningDecorator + extends ListeningDecorator + implements ListeningScheduledExecutorService { + final ScheduledExecutorService delegate; + + ScheduledListeningDecorator(ScheduledExecutorService delegate) { + super(delegate); + this.delegate = Preconditions.checkNotNull(delegate); + } + + @Override + public ListenableScheduledFuture schedule(Runnable command, long delay, TimeUnit unit) { + ListenableFutureTask task = ListenableFutureTask.create(command, null); + ScheduledFuture scheduled = this.delegate.schedule(task, delay, unit); + return new ListenableScheduledTask(task, scheduled); + } + + @Override + public ListenableScheduledFuture schedule(Callable callable, long delay, TimeUnit unit) { + ListenableFutureTask task = ListenableFutureTask.create(callable); + ScheduledFuture scheduled = this.delegate.schedule(task, delay, unit); + return new ListenableScheduledTask(task, scheduled); + } + + @Override + public ListenableScheduledFuture scheduleAtFixedRate(Runnable command, long initialDelay, long period, TimeUnit unit) { + NeverSuccessfulListenableFutureTask task = new NeverSuccessfulListenableFutureTask(command); + ScheduledFuture scheduled = this.delegate.scheduleAtFixedRate(task, initialDelay, period, unit); + return new ListenableScheduledTask(task, scheduled); + } + + @Override + public ListenableScheduledFuture scheduleWithFixedDelay(Runnable command, long initialDelay, long delay, TimeUnit unit) { + NeverSuccessfulListenableFutureTask task = new NeverSuccessfulListenableFutureTask(command); + ScheduledFuture scheduled = this.delegate.scheduleWithFixedDelay(task, initialDelay, delay, unit); + return new ListenableScheduledTask(task, scheduled); + } + + private static final class NeverSuccessfulListenableFutureTask + extends AbstractFuture + implements Runnable { + private final Runnable delegate; + + public NeverSuccessfulListenableFutureTask(Runnable delegate) { + this.delegate = Preconditions.checkNotNull(delegate); + } + + @Override + public void run() { + try { + this.delegate.run(); + } + catch (Throwable t) { + this.setException(t); + throw Throwables.propagate(t); + } + } + } + + private static final class ListenableScheduledTask + extends ForwardingListenableFuture.SimpleForwardingListenableFuture + implements ListenableScheduledFuture { + private final ScheduledFuture scheduledDelegate; + + public ListenableScheduledTask(ListenableFuture listenableDelegate, ScheduledFuture scheduledDelegate) { + super(listenableDelegate); + this.scheduledDelegate = scheduledDelegate; + } + + @Override + public boolean cancel(boolean mayInterruptIfRunning) { + boolean cancelled = super.cancel(mayInterruptIfRunning); + if (cancelled) { + this.scheduledDelegate.cancel(mayInterruptIfRunning); + } + return cancelled; + } + + @Override + public long getDelay(TimeUnit unit) { + return this.scheduledDelegate.getDelay(unit); + } + + @Override + public int compareTo(Delayed other) { + return this.scheduledDelegate.compareTo(other); + } + } + } + + private static class ListeningDecorator + extends AbstractListeningExecutorService { + private final ExecutorService delegate; + + ListeningDecorator(ExecutorService delegate) { + this.delegate = Preconditions.checkNotNull(delegate); + } + + @Override + public boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException { + return this.delegate.awaitTermination(timeout, unit); + } + + @Override + public boolean isShutdown() { + return this.delegate.isShutdown(); + } + + @Override + public boolean isTerminated() { + return this.delegate.isTerminated(); + } + + @Override + public void shutdown() { + this.delegate.shutdown(); + } + + @Override + public List shutdownNow() { + return this.delegate.shutdownNow(); + } + + @Override + public void execute(Runnable command) { + this.delegate.execute(command); + } + } + + private static enum DirectExecutor implements Executor + { + INSTANCE; + + + @Override + public void execute(Runnable command) { + command.run(); + } + } + + private static class DirectExecutorService + extends AbstractListeningExecutorService { + private final Lock lock = new ReentrantLock(); + private final Condition termination = this.lock.newCondition(); + private int runningTasks = 0; + private boolean shutdown = false; + + private DirectExecutorService() { + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public void execute(Runnable command) { + this.startTask(); + try { + command.run(); + } + finally { + this.endTask(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public boolean isShutdown() { + this.lock.lock(); + try { + boolean bl = this.shutdown; + return bl; + } + finally { + this.lock.unlock(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public void shutdown() { + this.lock.lock(); + try { + this.shutdown = true; + } + finally { + this.lock.unlock(); + } + } + + @Override + public List shutdownNow() { + this.shutdown(); + return Collections.emptyList(); + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public boolean isTerminated() { + this.lock.lock(); + try { + boolean bl = this.shutdown && this.runningTasks == 0; + return bl; + } + finally { + this.lock.unlock(); + } + } + + @Override + public boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException { + long nanos = unit.toNanos(timeout); + this.lock.lock(); + try { + while (true) { + if (this.isTerminated()) { + boolean bl = true; + return bl; + } + if (nanos <= 0L) { + boolean bl = false; + return bl; + } + nanos = this.termination.awaitNanos(nanos); + } + } + finally { + this.lock.unlock(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + private void startTask() { + this.lock.lock(); + try { + if (this.isShutdown()) { + throw new RejectedExecutionException("Executor already shutdown"); + } + ++this.runningTasks; + } + finally { + this.lock.unlock(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + private void endTask() { + this.lock.lock(); + try { + --this.runningTasks; + if (this.isTerminated()) { + this.termination.signalAll(); + } + } + finally { + this.lock.unlock(); + } + } + } + + @VisibleForTesting + static class Application { + Application() { + } + + final ExecutorService getExitingExecutorService(ThreadPoolExecutor executor, long terminationTimeout, TimeUnit timeUnit) { + MoreExecutors.useDaemonThreadFactory(executor); + ExecutorService service = Executors.unconfigurableExecutorService(executor); + this.addDelayedShutdownHook(service, terminationTimeout, timeUnit); + return service; + } + + final ScheduledExecutorService getExitingScheduledExecutorService(ScheduledThreadPoolExecutor executor, long terminationTimeout, TimeUnit timeUnit) { + MoreExecutors.useDaemonThreadFactory(executor); + ScheduledExecutorService service = Executors.unconfigurableScheduledExecutorService(executor); + this.addDelayedShutdownHook(service, terminationTimeout, timeUnit); + return service; + } + + final void addDelayedShutdownHook(final ExecutorService service, final long terminationTimeout, final TimeUnit timeUnit) { + Preconditions.checkNotNull(service); + Preconditions.checkNotNull(timeUnit); + String string = String.valueOf(String.valueOf(service)); + this.addShutdownHook(MoreExecutors.newThread(new StringBuilder(24 + string.length()).append("DelayedShutdownHook-for-").append(string).toString(), new Runnable(){ + + @Override + public void run() { + try { + service.shutdown(); + service.awaitTermination(terminationTimeout, timeUnit); + } + catch (InterruptedException interruptedException) { + // empty catch block + } + } + })); + } + + final ExecutorService getExitingExecutorService(ThreadPoolExecutor executor) { + return this.getExitingExecutorService(executor, 120L, TimeUnit.SECONDS); + } + + final ScheduledExecutorService getExitingScheduledExecutorService(ScheduledThreadPoolExecutor executor) { + return this.getExitingScheduledExecutorService(executor, 120L, TimeUnit.SECONDS); + } + + @VisibleForTesting + void addShutdownHook(Thread hook) { + Runtime.getRuntime().addShutdownHook(hook); + } + } +} diff --git a/src/com/google/common/util/concurrent/RateLimiter.java b/src/com/google/common/util/concurrent/RateLimiter.java new file mode 100644 index 0000000..2844770 --- /dev/null +++ b/src/com/google/common/util/concurrent/RateLimiter.java @@ -0,0 +1,191 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.util.concurrent; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.Preconditions; +import com.google.common.base.Stopwatch; +import com.google.common.util.concurrent.SmoothRateLimiter; +import com.google.common.util.concurrent.Uninterruptibles; +import java.util.concurrent.TimeUnit; +import javax.annotation.concurrent.ThreadSafe; + +@ThreadSafe +@Beta +public abstract class RateLimiter { + private final SleepingStopwatch stopwatch; + private volatile Object mutexDoNotUseDirectly; + + public static RateLimiter create(double permitsPerSecond) { + return RateLimiter.create(SleepingStopwatch.createFromSystemTimer(), permitsPerSecond); + } + + @VisibleForTesting + static RateLimiter create(SleepingStopwatch stopwatch, double permitsPerSecond) { + SmoothRateLimiter.SmoothBursty rateLimiter = new SmoothRateLimiter.SmoothBursty(stopwatch, 1.0); + rateLimiter.setRate(permitsPerSecond); + return rateLimiter; + } + + public static RateLimiter create(double permitsPerSecond, long warmupPeriod, TimeUnit unit) { + Preconditions.checkArgument(warmupPeriod >= 0L, "warmupPeriod must not be negative: %s", warmupPeriod); + return RateLimiter.create(SleepingStopwatch.createFromSystemTimer(), permitsPerSecond, warmupPeriod, unit); + } + + @VisibleForTesting + static RateLimiter create(SleepingStopwatch stopwatch, double permitsPerSecond, long warmupPeriod, TimeUnit unit) { + SmoothRateLimiter.SmoothWarmingUp rateLimiter = new SmoothRateLimiter.SmoothWarmingUp(stopwatch, warmupPeriod, unit); + rateLimiter.setRate(permitsPerSecond); + return rateLimiter; + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + private Object mutex() { + Object mutex = this.mutexDoNotUseDirectly; + if (mutex == null) { + RateLimiter rateLimiter = this; + synchronized (rateLimiter) { + mutex = this.mutexDoNotUseDirectly; + if (mutex == null) { + this.mutexDoNotUseDirectly = mutex = new Object(); + } + } + } + return mutex; + } + + RateLimiter(SleepingStopwatch stopwatch) { + this.stopwatch = Preconditions.checkNotNull(stopwatch); + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + public final void setRate(double permitsPerSecond) { + Preconditions.checkArgument(permitsPerSecond > 0.0 && !Double.isNaN(permitsPerSecond), "rate must be positive"); + Object object = this.mutex(); + synchronized (object) { + this.doSetRate(permitsPerSecond, this.stopwatch.readMicros()); + } + } + + abstract void doSetRate(double var1, long var3); + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + public final double getRate() { + Object object = this.mutex(); + synchronized (object) { + return this.doGetRate(); + } + } + + abstract double doGetRate(); + + public double acquire() { + return this.acquire(1); + } + + public double acquire(int permits) { + long microsToWait = this.reserve(permits); + this.stopwatch.sleepMicrosUninterruptibly(microsToWait); + return 1.0 * (double)microsToWait / (double)TimeUnit.SECONDS.toMicros(1L); + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + final long reserve(int permits) { + RateLimiter.checkPermits(permits); + Object object = this.mutex(); + synchronized (object) { + return this.reserveAndGetWaitLength(permits, this.stopwatch.readMicros()); + } + } + + public boolean tryAcquire(long timeout, TimeUnit unit) { + return this.tryAcquire(1, timeout, unit); + } + + public boolean tryAcquire(int permits) { + return this.tryAcquire(permits, 0L, TimeUnit.MICROSECONDS); + } + + public boolean tryAcquire() { + return this.tryAcquire(1, 0L, TimeUnit.MICROSECONDS); + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + public boolean tryAcquire(int permits, long timeout, TimeUnit unit) { + long microsToWait; + long timeoutMicros = Math.max(unit.toMicros(timeout), 0L); + RateLimiter.checkPermits(permits); + Object object = this.mutex(); + synchronized (object) { + long nowMicros = this.stopwatch.readMicros(); + if (!this.canAcquire(nowMicros, timeoutMicros)) { + return false; + } + microsToWait = this.reserveAndGetWaitLength(permits, nowMicros); + } + this.stopwatch.sleepMicrosUninterruptibly(microsToWait); + return true; + } + + private boolean canAcquire(long nowMicros, long timeoutMicros) { + return this.queryEarliestAvailable(nowMicros) - timeoutMicros <= nowMicros; + } + + final long reserveAndGetWaitLength(int permits, long nowMicros) { + long momentAvailable = this.reserveEarliestAvailable(permits, nowMicros); + return Math.max(momentAvailable - nowMicros, 0L); + } + + abstract long queryEarliestAvailable(long var1); + + abstract long reserveEarliestAvailable(int var1, long var2); + + public String toString() { + return String.format("RateLimiter[stableRate=%3.1fqps]", this.getRate()); + } + + private static int checkPermits(int permits) { + Preconditions.checkArgument(permits > 0, "Requested permits (%s) must be positive", permits); + return permits; + } + + @VisibleForTesting + static abstract class SleepingStopwatch { + SleepingStopwatch() { + } + + abstract long readMicros(); + + abstract void sleepMicrosUninterruptibly(long var1); + + static final SleepingStopwatch createFromSystemTimer() { + return new SleepingStopwatch(){ + final Stopwatch stopwatch = Stopwatch.createStarted(); + + @Override + long readMicros() { + return this.stopwatch.elapsed(TimeUnit.MICROSECONDS); + } + + @Override + void sleepMicrosUninterruptibly(long micros) { + if (micros > 0L) { + Uninterruptibles.sleepUninterruptibly(micros, TimeUnit.MICROSECONDS); + } + } + }; + } + } +} diff --git a/src/com/google/common/util/concurrent/Runnables.java b/src/com/google/common/util/concurrent/Runnables.java new file mode 100644 index 0000000..cb18196 --- /dev/null +++ b/src/com/google/common/util/concurrent/Runnables.java @@ -0,0 +1,25 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.util.concurrent; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; + +@Beta +@GwtCompatible +public final class Runnables { + private static final Runnable EMPTY_RUNNABLE = new Runnable(){ + + @Override + public void run() { + } + }; + + public static Runnable doNothing() { + return EMPTY_RUNNABLE; + } + + private Runnables() { + } +} diff --git a/src/com/google/common/util/concurrent/SerializingExecutor.java b/src/com/google/common/util/concurrent/SerializingExecutor.java new file mode 100644 index 0000000..62411ef --- /dev/null +++ b/src/com/google/common/util/concurrent/SerializingExecutor.java @@ -0,0 +1,116 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.util.concurrent; + +import com.google.common.base.Preconditions; +import java.util.ArrayDeque; +import java.util.Queue; +import java.util.concurrent.Executor; +import java.util.logging.Level; +import java.util.logging.Logger; +import javax.annotation.concurrent.GuardedBy; + +final class SerializingExecutor +implements Executor { + private static final Logger log = Logger.getLogger(SerializingExecutor.class.getName()); + private final Executor executor; + @GuardedBy(value="internalLock") + private final Queue waitQueue = new ArrayDeque(); + @GuardedBy(value="internalLock") + private boolean isThreadScheduled = false; + private final TaskRunner taskRunner = new TaskRunner(); + private final Object internalLock = new Object(){ + + public String toString() { + String string = String.valueOf(super.toString()); + return string.length() != 0 ? "SerializingExecutor lock: ".concat(string) : new String("SerializingExecutor lock: "); + } + }; + + public SerializingExecutor(Executor executor) { + Preconditions.checkNotNull(executor, "'executor' must not be null."); + this.executor = executor; + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public void execute(Runnable r) { + Preconditions.checkNotNull(r, "'r' must not be null."); + boolean scheduleTaskRunner = false; + Object object = this.internalLock; + synchronized (object) { + this.waitQueue.add(r); + if (!this.isThreadScheduled) { + this.isThreadScheduled = true; + scheduleTaskRunner = true; + } + } + if (scheduleTaskRunner) { + boolean threw = true; + try { + this.executor.execute(this.taskRunner); + threw = false; + } + finally { + if (threw) { + Object object2 = this.internalLock; + synchronized (object2) { + this.isThreadScheduled = false; + } + } + } + } + } + + private class TaskRunner + implements Runnable { + private TaskRunner() { + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public void run() { + block18: { + boolean stillRunning = true; + block14: while (true) { + while (true) { + Runnable nextToRun; + Preconditions.checkState(SerializingExecutor.this.isThreadScheduled); + Object object = SerializingExecutor.this.internalLock; + synchronized (object) { + nextToRun = (Runnable)SerializingExecutor.this.waitQueue.poll(); + if (nextToRun == null) { + SerializingExecutor.this.isThreadScheduled = false; + stillRunning = false; + break block18; + } + } + try { + nextToRun.run(); + continue block14; + } + catch (RuntimeException e) { + String string = String.valueOf(String.valueOf(nextToRun)); + log.log(Level.SEVERE, new StringBuilder(35 + string.length()).append("Exception while executing runnable ").append(string).toString(), e); + continue; + } + break; + } + } + finally { + if (stillRunning) { + Object object = SerializingExecutor.this.internalLock; + synchronized (object) { + SerializingExecutor.this.isThreadScheduled = false; + } + } + } + } + } + } +} diff --git a/src/com/google/common/util/concurrent/Service.java b/src/com/google/common/util/concurrent/Service.java new file mode 100644 index 0000000..47a0c6f --- /dev/null +++ b/src/com/google/common/util/concurrent/Service.java @@ -0,0 +1,104 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.util.concurrent; + +import com.google.common.annotations.Beta; +import java.util.concurrent.Executor; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; + +@Beta +public interface Service { + public Service startAsync(); + + public boolean isRunning(); + + public State state(); + + public Service stopAsync(); + + public void awaitRunning(); + + public void awaitRunning(long var1, TimeUnit var3) throws TimeoutException; + + public void awaitTerminated(); + + public void awaitTerminated(long var1, TimeUnit var3) throws TimeoutException; + + public Throwable failureCause(); + + public void addListener(Listener var1, Executor var2); + + @Beta + public static abstract class Listener { + public void starting() { + } + + public void running() { + } + + public void stopping(State from) { + } + + public void terminated(State from) { + } + + public void failed(State from, Throwable failure) { + } + } + + @Beta + public static enum State { + NEW{ + + @Override + boolean isTerminal() { + return false; + } + } + , + STARTING{ + + @Override + boolean isTerminal() { + return false; + } + } + , + RUNNING{ + + @Override + boolean isTerminal() { + return false; + } + } + , + STOPPING{ + + @Override + boolean isTerminal() { + return false; + } + } + , + TERMINATED{ + + @Override + boolean isTerminal() { + return true; + } + } + , + FAILED{ + + @Override + boolean isTerminal() { + return true; + } + }; + + + abstract boolean isTerminal(); + } +} diff --git a/src/com/google/common/util/concurrent/ServiceManager.java b/src/com/google/common/util/concurrent/ServiceManager.java new file mode 100644 index 0000000..6fd7f39 --- /dev/null +++ b/src/com/google/common/util/concurrent/ServiceManager.java @@ -0,0 +1,528 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.util.concurrent; + +import com.google.common.annotations.Beta; +import com.google.common.base.Function; +import com.google.common.base.MoreObjects; +import com.google.common.base.Preconditions; +import com.google.common.base.Predicates; +import com.google.common.base.Stopwatch; +import com.google.common.base.Supplier; +import com.google.common.collect.Collections2; +import com.google.common.collect.ImmutableCollection; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableMultimap; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.ImmutableSetMultimap; +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import com.google.common.collect.Multimaps; +import com.google.common.collect.Multiset; +import com.google.common.collect.Ordering; +import com.google.common.collect.SetMultimap; +import com.google.common.collect.Sets; +import com.google.common.util.concurrent.AbstractService; +import com.google.common.util.concurrent.ListenerCallQueue; +import com.google.common.util.concurrent.Monitor; +import com.google.common.util.concurrent.MoreExecutors; +import com.google.common.util.concurrent.Service; +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.Collections; +import java.util.EnumMap; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.Executor; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; +import java.util.logging.Level; +import java.util.logging.Logger; +import javax.annotation.concurrent.GuardedBy; + +@Beta +public final class ServiceManager { + private static final Logger logger = Logger.getLogger(ServiceManager.class.getName()); + private static final ListenerCallQueue.Callback HEALTHY_CALLBACK = new ListenerCallQueue.Callback("healthy()"){ + + @Override + void call(Listener listener) { + listener.healthy(); + } + }; + private static final ListenerCallQueue.Callback STOPPED_CALLBACK = new ListenerCallQueue.Callback("stopped()"){ + + @Override + void call(Listener listener) { + listener.stopped(); + } + }; + private final ServiceManagerState state; + private final ImmutableList services; + + public ServiceManager(Iterable services) { + ImmutableList copy = ImmutableList.copyOf(services); + if (copy.isEmpty()) { + logger.log(Level.WARNING, "ServiceManager configured with no services. Is your application configured properly?", new EmptyServiceManagerWarning()); + copy = ImmutableList.of(new NoOpService()); + } + this.state = new ServiceManagerState(copy); + this.services = copy; + WeakReference stateReference = new WeakReference(this.state); + for (Service service : copy) { + service.addListener(new ServiceListener(service, stateReference), MoreExecutors.directExecutor()); + Preconditions.checkArgument(service.state() == Service.State.NEW, "Can only manage NEW services, %s", service); + } + this.state.markReady(); + } + + public void addListener(Listener listener, Executor executor) { + this.state.addListener(listener, executor); + } + + public void addListener(Listener listener) { + this.state.addListener(listener, MoreExecutors.directExecutor()); + } + + public ServiceManager startAsync() { + for (Service service : this.services) { + Service.State state = service.state(); + Preconditions.checkState(state == Service.State.NEW, "Service %s is %s, cannot start it.", new Object[]{service, state}); + } + for (Service service : this.services) { + try { + this.state.tryStartTiming(service); + service.startAsync(); + } + catch (IllegalStateException e) { + String string = String.valueOf(String.valueOf(service)); + logger.log(Level.WARNING, new StringBuilder(24 + string.length()).append("Unable to start Service ").append(string).toString(), e); + } + } + return this; + } + + public void awaitHealthy() { + this.state.awaitHealthy(); + } + + public void awaitHealthy(long timeout, TimeUnit unit) throws TimeoutException { + this.state.awaitHealthy(timeout, unit); + } + + public ServiceManager stopAsync() { + for (Service service : this.services) { + service.stopAsync(); + } + return this; + } + + public void awaitStopped() { + this.state.awaitStopped(); + } + + public void awaitStopped(long timeout, TimeUnit unit) throws TimeoutException { + this.state.awaitStopped(timeout, unit); + } + + public boolean isHealthy() { + for (Service service : this.services) { + if (service.isRunning()) continue; + return false; + } + return true; + } + + public ImmutableMultimap servicesByState() { + return this.state.servicesByState(); + } + + public ImmutableMap startupTimes() { + return this.state.startupTimes(); + } + + public String toString() { + return MoreObjects.toStringHelper(ServiceManager.class).add("services", Collections2.filter(this.services, Predicates.not(Predicates.instanceOf(NoOpService.class)))).toString(); + } + + private static final class EmptyServiceManagerWarning + extends Throwable { + private EmptyServiceManagerWarning() { + } + } + + private static final class NoOpService + extends AbstractService { + private NoOpService() { + } + + @Override + protected void doStart() { + this.notifyStarted(); + } + + @Override + protected void doStop() { + this.notifyStopped(); + } + } + + private static final class ServiceListener + extends Service.Listener { + final Service service; + final WeakReference state; + + ServiceListener(Service service, WeakReference state) { + this.service = service; + this.state = state; + } + + @Override + public void starting() { + ServiceManagerState state = (ServiceManagerState)this.state.get(); + if (state != null) { + state.transitionService(this.service, Service.State.NEW, Service.State.STARTING); + if (!(this.service instanceof NoOpService)) { + logger.log(Level.FINE, "Starting {0}.", this.service); + } + } + } + + @Override + public void running() { + ServiceManagerState state = (ServiceManagerState)this.state.get(); + if (state != null) { + state.transitionService(this.service, Service.State.STARTING, Service.State.RUNNING); + } + } + + @Override + public void stopping(Service.State from) { + ServiceManagerState state = (ServiceManagerState)this.state.get(); + if (state != null) { + state.transitionService(this.service, from, Service.State.STOPPING); + } + } + + @Override + public void terminated(Service.State from) { + ServiceManagerState state = (ServiceManagerState)this.state.get(); + if (state != null) { + if (!(this.service instanceof NoOpService)) { + logger.log(Level.FINE, "Service {0} has terminated. Previous state was: {1}", new Object[]{this.service, from}); + } + state.transitionService(this.service, from, Service.State.TERMINATED); + } + } + + @Override + public void failed(Service.State from, Throwable failure) { + ServiceManagerState state = (ServiceManagerState)this.state.get(); + if (state != null) { + if (!(this.service instanceof NoOpService)) { + String string = String.valueOf(String.valueOf(this.service)); + String string2 = String.valueOf(String.valueOf((Object)from)); + logger.log(Level.SEVERE, new StringBuilder(34 + string.length() + string2.length()).append("Service ").append(string).append(" has failed in the ").append(string2).append(" state.").toString(), failure); + } + state.transitionService(this.service, from, Service.State.FAILED); + } + } + } + + private static final class ServiceManagerState { + final Monitor monitor = new Monitor(); + @GuardedBy(value="monitor") + final SetMultimap servicesByState = Multimaps.newSetMultimap(new EnumMap(Service.State.class), new Supplier>(){ + + @Override + public Set get() { + return Sets.newLinkedHashSet(); + } + }); + @GuardedBy(value="monitor") + final Multiset states = this.servicesByState.keys(); + @GuardedBy(value="monitor") + final Map startupTimers = Maps.newIdentityHashMap(); + @GuardedBy(value="monitor") + boolean ready; + @GuardedBy(value="monitor") + boolean transitioned; + final int numberOfServices; + final Monitor.Guard awaitHealthGuard = new Monitor.Guard(this.monitor){ + + @Override + public boolean isSatisfied() { + return ServiceManagerState.this.states.count((Object)Service.State.RUNNING) == ServiceManagerState.this.numberOfServices || ServiceManagerState.this.states.contains((Object)Service.State.STOPPING) || ServiceManagerState.this.states.contains((Object)Service.State.TERMINATED) || ServiceManagerState.this.states.contains((Object)Service.State.FAILED); + } + }; + final Monitor.Guard stoppedGuard = new Monitor.Guard(this.monitor){ + + @Override + public boolean isSatisfied() { + return ServiceManagerState.this.states.count((Object)Service.State.TERMINATED) + ServiceManagerState.this.states.count((Object)Service.State.FAILED) == ServiceManagerState.this.numberOfServices; + } + }; + @GuardedBy(value="monitor") + final List> listeners = Collections.synchronizedList(new ArrayList()); + + ServiceManagerState(ImmutableCollection services) { + this.numberOfServices = services.size(); + this.servicesByState.putAll(Service.State.NEW, services); + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + void tryStartTiming(Service service) { + this.monitor.enter(); + try { + Stopwatch stopwatch = this.startupTimers.get(service); + if (stopwatch == null) { + this.startupTimers.put(service, Stopwatch.createStarted()); + } + } + finally { + this.monitor.leave(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + void markReady() { + block5: { + this.monitor.enter(); + try { + if (!this.transitioned) { + this.ready = true; + break block5; + } + ArrayList servicesInBadStates = Lists.newArrayList(); + for (Service service : this.servicesByState().values()) { + if (service.state() == Service.State.NEW) continue; + servicesInBadStates.add(service); + } + String string = String.valueOf(String.valueOf("Services started transitioning asynchronously before the ServiceManager was constructed: ")); + String string2 = String.valueOf(String.valueOf(servicesInBadStates)); + throw new IllegalArgumentException(new StringBuilder(0 + string.length() + string2.length()).append(string).append(string2).toString()); + } + finally { + this.monitor.leave(); + } + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + void addListener(Listener listener, Executor executor) { + Preconditions.checkNotNull(listener, "listener"); + Preconditions.checkNotNull(executor, "executor"); + this.monitor.enter(); + try { + if (!this.stoppedGuard.isSatisfied()) { + this.listeners.add(new ListenerCallQueue(listener, executor)); + } + } + finally { + this.monitor.leave(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + void awaitHealthy() { + this.monitor.enterWhenUninterruptibly(this.awaitHealthGuard); + try { + this.checkHealthy(); + } + finally { + this.monitor.leave(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + void awaitHealthy(long timeout, TimeUnit unit) throws TimeoutException { + this.monitor.enter(); + try { + if (!this.monitor.waitForUninterruptibly(this.awaitHealthGuard, timeout, unit)) { + String string = String.valueOf(String.valueOf("Timeout waiting for the services to become healthy. The following services have not started: ")); + String string2 = String.valueOf(String.valueOf(Multimaps.filterKeys(this.servicesByState, Predicates.in(ImmutableSet.of(Service.State.NEW, Service.State.STARTING))))); + throw new TimeoutException(new StringBuilder(0 + string.length() + string2.length()).append(string).append(string2).toString()); + } + this.checkHealthy(); + } + finally { + this.monitor.leave(); + } + } + + void awaitStopped() { + this.monitor.enterWhenUninterruptibly(this.stoppedGuard); + this.monitor.leave(); + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + void awaitStopped(long timeout, TimeUnit unit) throws TimeoutException { + this.monitor.enter(); + try { + if (!this.monitor.waitForUninterruptibly(this.stoppedGuard, timeout, unit)) { + String string = String.valueOf(String.valueOf("Timeout waiting for the services to stop. The following services have not stopped: ")); + String string2 = String.valueOf(String.valueOf(Multimaps.filterKeys(this.servicesByState, Predicates.not(Predicates.in(ImmutableSet.of(Service.State.TERMINATED, Service.State.FAILED)))))); + throw new TimeoutException(new StringBuilder(0 + string.length() + string2.length()).append(string).append(string2).toString()); + } + } + finally { + this.monitor.leave(); + } + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + ImmutableMultimap servicesByState() { + ImmutableSetMultimap.Builder builder = ImmutableSetMultimap.builder(); + this.monitor.enter(); + try { + for (Map.Entry entry : this.servicesByState.entries()) { + if (entry.getValue() instanceof NoOpService) continue; + builder.put((Object)entry.getKey(), entry.getValue()); + } + } + finally { + this.monitor.leave(); + } + return builder.build(); + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + ImmutableMap startupTimes() { + ArrayList> loadTimes; + this.monitor.enter(); + try { + loadTimes = Lists.newArrayListWithCapacity(this.startupTimers.size()); + for (Map.Entry entry : this.startupTimers.entrySet()) { + Service service = entry.getKey(); + Stopwatch stopWatch = entry.getValue(); + if (stopWatch.isRunning() || service instanceof NoOpService) continue; + loadTimes.add(Maps.immutableEntry(service, stopWatch.elapsed(TimeUnit.MILLISECONDS))); + } + } + finally { + this.monitor.leave(); + } + Collections.sort(loadTimes, Ordering.natural().onResultOf(new Function, Long>(){ + + @Override + public Long apply(Map.Entry input) { + return input.getValue(); + } + })); + ImmutableMap.Builder builder = ImmutableMap.builder(); + for (Map.Entry entry : loadTimes) { + builder.put(entry); + } + return builder.build(); + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + void transitionService(Service service, Service.State from, Service.State to) { + Preconditions.checkNotNull(service); + Preconditions.checkArgument(from != to); + this.monitor.enter(); + try { + this.transitioned = true; + if (!this.ready) { + return; + } + Preconditions.checkState(this.servicesByState.remove((Object)from, service), "Service %s not at the expected location in the state map %s", new Object[]{service, from}); + Preconditions.checkState(this.servicesByState.put(to, service), "Service %s in the state map unexpectedly at %s", new Object[]{service, to}); + Stopwatch stopwatch = this.startupTimers.get(service); + if (stopwatch == null) { + stopwatch = Stopwatch.createStarted(); + this.startupTimers.put(service, stopwatch); + } + if (to.compareTo(Service.State.RUNNING) >= 0 && stopwatch.isRunning()) { + stopwatch.stop(); + if (!(service instanceof NoOpService)) { + logger.log(Level.FINE, "Started {0} in {1}.", new Object[]{service, stopwatch}); + } + } + if (to == Service.State.FAILED) { + this.fireFailedListeners(service); + } + if (this.states.count((Object)Service.State.RUNNING) == this.numberOfServices) { + this.fireHealthyListeners(); + } else if (this.states.count((Object)Service.State.TERMINATED) + this.states.count((Object)Service.State.FAILED) == this.numberOfServices) { + this.fireStoppedListeners(); + } + } + finally { + this.monitor.leave(); + this.executeListeners(); + } + } + + @GuardedBy(value="monitor") + void fireStoppedListeners() { + STOPPED_CALLBACK.enqueueOn(this.listeners); + } + + @GuardedBy(value="monitor") + void fireHealthyListeners() { + HEALTHY_CALLBACK.enqueueOn(this.listeners); + } + + @GuardedBy(value="monitor") + void fireFailedListeners(final Service service) { + String string = String.valueOf(String.valueOf(service)); + new ListenerCallQueue.Callback(new StringBuilder(18 + string.length()).append("failed({service=").append(string).append("})").toString()){ + + @Override + void call(Listener listener) { + listener.failure(service); + } + }.enqueueOn(this.listeners); + } + + void executeListeners() { + Preconditions.checkState(!this.monitor.isOccupiedByCurrentThread(), "It is incorrect to execute listeners with the monitor held."); + for (int i = 0; i < this.listeners.size(); ++i) { + this.listeners.get(i).execute(); + } + } + + @GuardedBy(value="monitor") + void checkHealthy() { + if (this.states.count((Object)Service.State.RUNNING) != this.numberOfServices) { + String string = String.valueOf(String.valueOf(Multimaps.filterKeys(this.servicesByState, Predicates.not(Predicates.equalTo(Service.State.RUNNING))))); + IllegalStateException exception = new IllegalStateException(new StringBuilder(79 + string.length()).append("Expected to be healthy after starting. The following services are not running: ").append(string).toString()); + throw exception; + } + } + } + + @Beta + public static abstract class Listener { + public void healthy() { + } + + public void stopped() { + } + + public void failure(Service service) { + } + } +} diff --git a/src/com/google/common/util/concurrent/SettableFuture.java b/src/com/google/common/util/concurrent/SettableFuture.java new file mode 100644 index 0000000..a385b49 --- /dev/null +++ b/src/com/google/common/util/concurrent/SettableFuture.java @@ -0,0 +1,27 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.util.concurrent; + +import com.google.common.util.concurrent.AbstractFuture; +import javax.annotation.Nullable; + +public final class SettableFuture +extends AbstractFuture { + public static SettableFuture create() { + return new SettableFuture(); + } + + private SettableFuture() { + } + + @Override + public boolean set(@Nullable V value) { + return super.set(value); + } + + @Override + public boolean setException(Throwable throwable) { + return super.setException(throwable); + } +} diff --git a/src/com/google/common/util/concurrent/SimpleTimeLimiter.java b/src/com/google/common/util/concurrent/SimpleTimeLimiter.java new file mode 100644 index 0000000..cb0a15a --- /dev/null +++ b/src/com/google/common/util/concurrent/SimpleTimeLimiter.java @@ -0,0 +1,137 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.util.concurrent; + +import com.google.common.annotations.Beta; +import com.google.common.base.Preconditions; +import com.google.common.collect.ObjectArrays; +import com.google.common.collect.Sets; +import com.google.common.util.concurrent.TimeLimiter; +import com.google.common.util.concurrent.UncheckedTimeoutException; +import com.google.common.util.concurrent.Uninterruptibles; +import java.lang.reflect.InvocationHandler; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.lang.reflect.Proxy; +import java.util.HashSet; +import java.util.Set; +import java.util.concurrent.Callable; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; + +@Beta +public final class SimpleTimeLimiter +implements TimeLimiter { + private final ExecutorService executor; + + public SimpleTimeLimiter(ExecutorService executor) { + this.executor = Preconditions.checkNotNull(executor); + } + + public SimpleTimeLimiter() { + this(Executors.newCachedThreadPool()); + } + + @Override + public T newProxy(final T target, Class interfaceType, final long timeoutDuration, final TimeUnit timeoutUnit) { + Preconditions.checkNotNull(target); + Preconditions.checkNotNull(interfaceType); + Preconditions.checkNotNull(timeoutUnit); + Preconditions.checkArgument(timeoutDuration > 0L, "bad timeout: %s", timeoutDuration); + Preconditions.checkArgument(interfaceType.isInterface(), "interfaceType must be an interface type"); + final Set interruptibleMethods = SimpleTimeLimiter.findInterruptibleMethods(interfaceType); + InvocationHandler handler = new InvocationHandler(){ + + @Override + public Object invoke(Object obj, final Method method, final Object[] args) throws Throwable { + Callable callable = new Callable(){ + + @Override + public Object call() throws Exception { + try { + return method.invoke(target, args); + } + catch (InvocationTargetException e) { + SimpleTimeLimiter.throwCause(e, false); + throw new AssertionError((Object)"can't get here"); + } + } + }; + return SimpleTimeLimiter.this.callWithTimeout(callable, timeoutDuration, timeoutUnit, interruptibleMethods.contains(method)); + } + }; + return SimpleTimeLimiter.newProxy(interfaceType, handler); + } + + @Override + public T callWithTimeout(Callable callable, long timeoutDuration, TimeUnit timeoutUnit, boolean amInterruptible) throws Exception { + Preconditions.checkNotNull(callable); + Preconditions.checkNotNull(timeoutUnit); + Preconditions.checkArgument(timeoutDuration > 0L, "timeout must be positive: %s", timeoutDuration); + Future future = this.executor.submit(callable); + try { + if (amInterruptible) { + try { + return future.get(timeoutDuration, timeoutUnit); + } + catch (InterruptedException e) { + future.cancel(true); + throw e; + } + } + return Uninterruptibles.getUninterruptibly(future, timeoutDuration, timeoutUnit); + } + catch (ExecutionException e) { + throw SimpleTimeLimiter.throwCause(e, true); + } + catch (TimeoutException e) { + future.cancel(true); + throw new UncheckedTimeoutException(e); + } + } + + private static Exception throwCause(Exception e, boolean combineStackTraces) throws Exception { + Throwable cause = e.getCause(); + if (cause == null) { + throw e; + } + if (combineStackTraces) { + StackTraceElement[] combined = ObjectArrays.concat(cause.getStackTrace(), e.getStackTrace(), StackTraceElement.class); + cause.setStackTrace(combined); + } + if (cause instanceof Exception) { + throw (Exception)cause; + } + if (cause instanceof Error) { + throw (Error)cause; + } + throw e; + } + + private static Set findInterruptibleMethods(Class interfaceType) { + HashSet set = Sets.newHashSet(); + for (Method m : interfaceType.getMethods()) { + if (!SimpleTimeLimiter.declaresInterruptedEx(m)) continue; + set.add(m); + } + return set; + } + + private static boolean declaresInterruptedEx(Method method) { + for (Class exType : method.getExceptionTypes()) { + if (exType != InterruptedException.class) continue; + return true; + } + return false; + } + + private static T newProxy(Class interfaceType, InvocationHandler handler) { + Object object = Proxy.newProxyInstance(interfaceType.getClassLoader(), new Class[]{interfaceType}, handler); + return interfaceType.cast(object); + } +} diff --git a/src/com/google/common/util/concurrent/SmoothRateLimiter.java b/src/com/google/common/util/concurrent/SmoothRateLimiter.java new file mode 100644 index 0000000..0345542 --- /dev/null +++ b/src/com/google/common/util/concurrent/SmoothRateLimiter.java @@ -0,0 +1,121 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.util.concurrent; + +import com.google.common.util.concurrent.RateLimiter; +import java.util.concurrent.TimeUnit; + +abstract class SmoothRateLimiter +extends RateLimiter { + double storedPermits; + double maxPermits; + double stableIntervalMicros; + private long nextFreeTicketMicros = 0L; + + private SmoothRateLimiter(RateLimiter.SleepingStopwatch stopwatch) { + super(stopwatch); + } + + @Override + final void doSetRate(double permitsPerSecond, long nowMicros) { + double stableIntervalMicros; + this.resync(nowMicros); + this.stableIntervalMicros = stableIntervalMicros = (double)TimeUnit.SECONDS.toMicros(1L) / permitsPerSecond; + this.doSetRate(permitsPerSecond, stableIntervalMicros); + } + + abstract void doSetRate(double var1, double var3); + + @Override + final double doGetRate() { + return (double)TimeUnit.SECONDS.toMicros(1L) / this.stableIntervalMicros; + } + + @Override + final long queryEarliestAvailable(long nowMicros) { + return this.nextFreeTicketMicros; + } + + @Override + final long reserveEarliestAvailable(int requiredPermits, long nowMicros) { + this.resync(nowMicros); + long returnValue = this.nextFreeTicketMicros; + double storedPermitsToSpend = Math.min((double)requiredPermits, this.storedPermits); + double freshPermits = (double)requiredPermits - storedPermitsToSpend; + long waitMicros = this.storedPermitsToWaitTime(this.storedPermits, storedPermitsToSpend) + (long)(freshPermits * this.stableIntervalMicros); + this.nextFreeTicketMicros += waitMicros; + this.storedPermits -= storedPermitsToSpend; + return returnValue; + } + + abstract long storedPermitsToWaitTime(double var1, double var3); + + private void resync(long nowMicros) { + if (nowMicros > this.nextFreeTicketMicros) { + this.storedPermits = Math.min(this.maxPermits, this.storedPermits + (double)(nowMicros - this.nextFreeTicketMicros) / this.stableIntervalMicros); + this.nextFreeTicketMicros = nowMicros; + } + } + + static final class SmoothBursty + extends SmoothRateLimiter { + final double maxBurstSeconds; + + SmoothBursty(RateLimiter.SleepingStopwatch stopwatch, double maxBurstSeconds) { + super(stopwatch); + this.maxBurstSeconds = maxBurstSeconds; + } + + @Override + void doSetRate(double permitsPerSecond, double stableIntervalMicros) { + double oldMaxPermits = this.maxPermits; + this.maxPermits = this.maxBurstSeconds * permitsPerSecond; + this.storedPermits = oldMaxPermits == Double.POSITIVE_INFINITY ? this.maxPermits : (oldMaxPermits == 0.0 ? 0.0 : this.storedPermits * this.maxPermits / oldMaxPermits); + } + + @Override + long storedPermitsToWaitTime(double storedPermits, double permitsToTake) { + return 0L; + } + } + + static final class SmoothWarmingUp + extends SmoothRateLimiter { + private final long warmupPeriodMicros; + private double slope; + private double halfPermits; + + SmoothWarmingUp(RateLimiter.SleepingStopwatch stopwatch, long warmupPeriod, TimeUnit timeUnit) { + super(stopwatch); + this.warmupPeriodMicros = timeUnit.toMicros(warmupPeriod); + } + + @Override + void doSetRate(double permitsPerSecond, double stableIntervalMicros) { + double oldMaxPermits = this.maxPermits; + this.maxPermits = (double)this.warmupPeriodMicros / stableIntervalMicros; + this.halfPermits = this.maxPermits / 2.0; + double coldIntervalMicros = stableIntervalMicros * 3.0; + this.slope = (coldIntervalMicros - stableIntervalMicros) / this.halfPermits; + this.storedPermits = oldMaxPermits == Double.POSITIVE_INFINITY ? 0.0 : (oldMaxPermits == 0.0 ? this.maxPermits : this.storedPermits * this.maxPermits / oldMaxPermits); + } + + @Override + long storedPermitsToWaitTime(double storedPermits, double permitsToTake) { + double availablePermitsAboveHalf = storedPermits - this.halfPermits; + long micros = 0L; + if (availablePermitsAboveHalf > 0.0) { + double permitsAboveHalfToTake = Math.min(availablePermitsAboveHalf, permitsToTake); + micros = (long)(permitsAboveHalfToTake * (this.permitsToTime(availablePermitsAboveHalf) + this.permitsToTime(availablePermitsAboveHalf - permitsAboveHalfToTake)) / 2.0); + permitsToTake -= permitsAboveHalfToTake; + } + micros = (long)((double)micros + this.stableIntervalMicros * permitsToTake); + return micros; + } + + private double permitsToTime(double permits) { + return this.stableIntervalMicros + permits * this.slope; + } + } +} diff --git a/src/com/google/common/util/concurrent/Striped.java b/src/com/google/common/util/concurrent/Striped.java new file mode 100644 index 0000000..2e25590 --- /dev/null +++ b/src/com/google/common/util/concurrent/Striped.java @@ -0,0 +1,301 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.util.concurrent; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.MoreObjects; +import com.google.common.base.Preconditions; +import com.google.common.base.Supplier; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.Iterables; +import com.google.common.collect.MapMaker; +import com.google.common.math.IntMath; +import java.lang.ref.Reference; +import java.lang.ref.ReferenceQueue; +import java.lang.ref.WeakReference; +import java.math.RoundingMode; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.concurrent.ConcurrentMap; +import java.util.concurrent.Semaphore; +import java.util.concurrent.atomic.AtomicReferenceArray; +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReadWriteLock; +import java.util.concurrent.locks.ReentrantLock; +import java.util.concurrent.locks.ReentrantReadWriteLock; + +@Beta +public abstract class Striped { + private static final int LARGE_LAZY_CUTOFF = 1024; + private static final Supplier READ_WRITE_LOCK_SUPPLIER = new Supplier(){ + + @Override + public ReadWriteLock get() { + return new ReentrantReadWriteLock(); + } + }; + private static final int ALL_SET = -1; + + private Striped() { + } + + public abstract L get(Object var1); + + public abstract L getAt(int var1); + + abstract int indexFor(Object var1); + + public abstract int size(); + + public Iterable bulkGet(Iterable keys) { + Object[] array = Iterables.toArray(keys, Object.class); + if (array.length == 0) { + return ImmutableList.of(); + } + int[] stripes = new int[array.length]; + for (int i = 0; i < array.length; ++i) { + stripes[i] = this.indexFor(array[i]); + } + Arrays.sort(stripes); + int previousStripe = stripes[0]; + array[0] = this.getAt(previousStripe); + for (int i = 1; i < array.length; ++i) { + int currentStripe = stripes[i]; + if (currentStripe == previousStripe) { + array[i] = array[i - 1]; + continue; + } + array[i] = this.getAt(currentStripe); + previousStripe = currentStripe; + } + List asList = Arrays.asList(array); + return Collections.unmodifiableList(asList); + } + + public static Striped lock(int stripes) { + return new CompactStriped(stripes, new Supplier(){ + + @Override + public Lock get() { + return new PaddedLock(); + } + }); + } + + public static Striped lazyWeakLock(int stripes) { + return Striped.lazy(stripes, new Supplier(){ + + @Override + public Lock get() { + return new ReentrantLock(false); + } + }); + } + + private static Striped lazy(int stripes, Supplier supplier) { + return stripes < 1024 ? new SmallLazyStriped(stripes, supplier) : new LargeLazyStriped(stripes, supplier); + } + + public static Striped semaphore(int stripes, final int permits) { + return new CompactStriped(stripes, new Supplier(){ + + @Override + public Semaphore get() { + return new PaddedSemaphore(permits); + } + }); + } + + public static Striped lazyWeakSemaphore(int stripes, final int permits) { + return Striped.lazy(stripes, new Supplier(){ + + @Override + public Semaphore get() { + return new Semaphore(permits, false); + } + }); + } + + public static Striped readWriteLock(int stripes) { + return new CompactStriped(stripes, READ_WRITE_LOCK_SUPPLIER); + } + + public static Striped lazyWeakReadWriteLock(int stripes) { + return Striped.lazy(stripes, READ_WRITE_LOCK_SUPPLIER); + } + + private static int ceilToPowerOfTwo(int x) { + return 1 << IntMath.log2(x, RoundingMode.CEILING); + } + + private static int smear(int hashCode) { + hashCode ^= hashCode >>> 20 ^ hashCode >>> 12; + return hashCode ^ hashCode >>> 7 ^ hashCode >>> 4; + } + + private static class PaddedSemaphore + extends Semaphore { + long q1; + long q2; + long q3; + + PaddedSemaphore(int permits) { + super(permits, false); + } + } + + private static class PaddedLock + extends ReentrantLock { + long q1; + long q2; + long q3; + + PaddedLock() { + super(false); + } + } + + @VisibleForTesting + static class LargeLazyStriped + extends PowerOfTwoStriped { + final ConcurrentMap locks; + final Supplier supplier; + final int size; + + LargeLazyStriped(int stripes, Supplier supplier) { + super(stripes); + this.size = this.mask == -1 ? Integer.MAX_VALUE : this.mask + 1; + this.supplier = supplier; + this.locks = new MapMaker().weakValues().makeMap(); + } + + @Override + public L getAt(int index) { + Object existing; + if (this.size != Integer.MAX_VALUE) { + Preconditions.checkElementIndex(index, this.size()); + } + if ((existing = this.locks.get(index)) != null) { + return (L)existing; + } + L created = this.supplier.get(); + existing = this.locks.putIfAbsent(index, created); + return (L)MoreObjects.firstNonNull(existing, created); + } + + @Override + public int size() { + return this.size; + } + } + + @VisibleForTesting + static class SmallLazyStriped + extends PowerOfTwoStriped { + final AtomicReferenceArray> locks; + final Supplier supplier; + final int size; + final ReferenceQueue queue = new ReferenceQueue(); + + SmallLazyStriped(int stripes, Supplier supplier) { + super(stripes); + this.size = this.mask == -1 ? Integer.MAX_VALUE : this.mask + 1; + this.locks = new AtomicReferenceArray(this.size); + this.supplier = supplier; + } + + @Override + public L getAt(int index) { + ArrayReference existingRef; + L existing; + if (this.size != Integer.MAX_VALUE) { + Preconditions.checkElementIndex(index, this.size()); + } + L l = existing = (existingRef = this.locks.get(index)) == null ? null : (L)existingRef.get(); + if (existing != null) { + return existing; + } + L created = this.supplier.get(); + ArrayReference newRef = new ArrayReference(created, index, this.queue); + while (!this.locks.compareAndSet(index, existingRef, newRef)) { + existingRef = this.locks.get(index); + existing = existingRef == null ? null : (L)existingRef.get(); + if (existing == null) continue; + return existing; + } + this.drainQueue(); + return created; + } + + private void drainQueue() { + Reference ref; + while ((ref = this.queue.poll()) != null) { + ArrayReference arrayRef = (ArrayReference)ref; + this.locks.compareAndSet(arrayRef.index, arrayRef, null); + } + } + + @Override + public int size() { + return this.size; + } + + private static final class ArrayReference + extends WeakReference { + final int index; + + ArrayReference(L referent, int index, ReferenceQueue queue) { + super(referent, queue); + this.index = index; + } + } + } + + private static class CompactStriped + extends PowerOfTwoStriped { + private final Object[] array; + + private CompactStriped(int stripes, Supplier supplier) { + super(stripes); + Preconditions.checkArgument(stripes <= 0x40000000, "Stripes must be <= 2^30)"); + this.array = new Object[this.mask + 1]; + for (int i = 0; i < this.array.length; ++i) { + this.array[i] = supplier.get(); + } + } + + @Override + public L getAt(int index) { + return (L)this.array[index]; + } + + @Override + public int size() { + return this.array.length; + } + } + + private static abstract class PowerOfTwoStriped + extends Striped { + final int mask; + + PowerOfTwoStriped(int stripes) { + Preconditions.checkArgument(stripes > 0, "Stripes must be positive"); + this.mask = stripes > 0x40000000 ? -1 : Striped.ceilToPowerOfTwo(stripes) - 1; + } + + @Override + final int indexFor(Object key) { + int hash = Striped.smear(key.hashCode()); + return hash & this.mask; + } + + @Override + public final L get(Object key) { + return this.getAt(this.indexFor(key)); + } + } +} diff --git a/src/com/google/common/util/concurrent/ThreadFactoryBuilder.java b/src/com/google/common/util/concurrent/ThreadFactoryBuilder.java new file mode 100644 index 0000000..80b0c49 --- /dev/null +++ b/src/com/google/common/util/concurrent/ThreadFactoryBuilder.java @@ -0,0 +1,78 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.util.concurrent; + +import com.google.common.base.Preconditions; +import java.util.concurrent.Executors; +import java.util.concurrent.ThreadFactory; +import java.util.concurrent.atomic.AtomicLong; + +public final class ThreadFactoryBuilder { + private String nameFormat = null; + private Boolean daemon = null; + private Integer priority = null; + private Thread.UncaughtExceptionHandler uncaughtExceptionHandler = null; + private ThreadFactory backingThreadFactory = null; + + public ThreadFactoryBuilder setNameFormat(String nameFormat) { + String.format(nameFormat, 0); + this.nameFormat = nameFormat; + return this; + } + + public ThreadFactoryBuilder setDaemon(boolean daemon) { + this.daemon = daemon; + return this; + } + + public ThreadFactoryBuilder setPriority(int priority) { + Preconditions.checkArgument(priority >= 1, "Thread priority (%s) must be >= %s", priority, 1); + Preconditions.checkArgument(priority <= 10, "Thread priority (%s) must be <= %s", priority, 10); + this.priority = priority; + return this; + } + + public ThreadFactoryBuilder setUncaughtExceptionHandler(Thread.UncaughtExceptionHandler uncaughtExceptionHandler) { + this.uncaughtExceptionHandler = Preconditions.checkNotNull(uncaughtExceptionHandler); + return this; + } + + public ThreadFactoryBuilder setThreadFactory(ThreadFactory backingThreadFactory) { + this.backingThreadFactory = Preconditions.checkNotNull(backingThreadFactory); + return this; + } + + public ThreadFactory build() { + return ThreadFactoryBuilder.build(this); + } + + private static ThreadFactory build(ThreadFactoryBuilder builder) { + final String nameFormat = builder.nameFormat; + final Boolean daemon = builder.daemon; + final Integer priority = builder.priority; + final Thread.UncaughtExceptionHandler uncaughtExceptionHandler = builder.uncaughtExceptionHandler; + final ThreadFactory backingThreadFactory = builder.backingThreadFactory != null ? builder.backingThreadFactory : Executors.defaultThreadFactory(); + final AtomicLong count = nameFormat != null ? new AtomicLong(0L) : null; + return new ThreadFactory(){ + + @Override + public Thread newThread(Runnable runnable) { + Thread thread = backingThreadFactory.newThread(runnable); + if (nameFormat != null) { + thread.setName(String.format(nameFormat, count.getAndIncrement())); + } + if (daemon != null) { + thread.setDaemon(daemon); + } + if (priority != null) { + thread.setPriority(priority); + } + if (uncaughtExceptionHandler != null) { + thread.setUncaughtExceptionHandler(uncaughtExceptionHandler); + } + return thread; + } + }; + } +} diff --git a/src/com/google/common/util/concurrent/TimeLimiter.java b/src/com/google/common/util/concurrent/TimeLimiter.java new file mode 100644 index 0000000..1180de6 --- /dev/null +++ b/src/com/google/common/util/concurrent/TimeLimiter.java @@ -0,0 +1,15 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.util.concurrent; + +import com.google.common.annotations.Beta; +import java.util.concurrent.Callable; +import java.util.concurrent.TimeUnit; + +@Beta +public interface TimeLimiter { + public T newProxy(T var1, Class var2, long var3, TimeUnit var5); + + public T callWithTimeout(Callable var1, long var2, TimeUnit var4, boolean var5) throws Exception; +} diff --git a/src/com/google/common/util/concurrent/UncaughtExceptionHandlers.java b/src/com/google/common/util/concurrent/UncaughtExceptionHandlers.java new file mode 100644 index 0000000..780801a --- /dev/null +++ b/src/com/google/common/util/concurrent/UncaughtExceptionHandlers.java @@ -0,0 +1,45 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.util.concurrent; + +import com.google.common.annotations.VisibleForTesting; +import java.util.logging.Level; +import java.util.logging.Logger; + +public final class UncaughtExceptionHandlers { + private UncaughtExceptionHandlers() { + } + + public static Thread.UncaughtExceptionHandler systemExit() { + return new Exiter(Runtime.getRuntime()); + } + + @VisibleForTesting + static final class Exiter + implements Thread.UncaughtExceptionHandler { + private static final Logger logger = Logger.getLogger(Exiter.class.getName()); + private final Runtime runtime; + + Exiter(Runtime runtime) { + this.runtime = runtime; + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public void uncaughtException(Thread t, Throwable e) { + try { + logger.log(Level.SEVERE, String.format("Caught an exception in %s. Shutting down.", t), e); + } + catch (Throwable errorInLogging) { + System.err.println(e.getMessage()); + System.err.println(errorInLogging.getMessage()); + } + finally { + this.runtime.exit(1); + } + } + } +} diff --git a/src/com/google/common/util/concurrent/UncheckedExecutionException.java b/src/com/google/common/util/concurrent/UncheckedExecutionException.java new file mode 100644 index 0000000..aeb1ce8 --- /dev/null +++ b/src/com/google/common/util/concurrent/UncheckedExecutionException.java @@ -0,0 +1,28 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.util.concurrent; + +import com.google.common.annotations.GwtCompatible; +import javax.annotation.Nullable; + +@GwtCompatible +public class UncheckedExecutionException +extends RuntimeException { + private static final long serialVersionUID = 0L; + + protected UncheckedExecutionException() { + } + + protected UncheckedExecutionException(@Nullable String message) { + super(message); + } + + public UncheckedExecutionException(@Nullable String message, @Nullable Throwable cause) { + super(message, cause); + } + + public UncheckedExecutionException(@Nullable Throwable cause) { + super(cause); + } +} diff --git a/src/com/google/common/util/concurrent/UncheckedTimeoutException.java b/src/com/google/common/util/concurrent/UncheckedTimeoutException.java new file mode 100644 index 0000000..dd0541b --- /dev/null +++ b/src/com/google/common/util/concurrent/UncheckedTimeoutException.java @@ -0,0 +1,26 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.util.concurrent; + +import javax.annotation.Nullable; + +public class UncheckedTimeoutException +extends RuntimeException { + private static final long serialVersionUID = 0L; + + public UncheckedTimeoutException() { + } + + public UncheckedTimeoutException(@Nullable String message) { + super(message); + } + + public UncheckedTimeoutException(@Nullable Throwable cause) { + super(cause); + } + + public UncheckedTimeoutException(@Nullable String message, @Nullable Throwable cause) { + super(message, cause); + } +} diff --git a/src/com/google/common/util/concurrent/Uninterruptibles.java b/src/com/google/common/util/concurrent/Uninterruptibles.java new file mode 100644 index 0000000..5450dab --- /dev/null +++ b/src/com/google/common/util/concurrent/Uninterruptibles.java @@ -0,0 +1,250 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.util.concurrent; + +import com.google.common.annotations.Beta; +import com.google.common.base.Preconditions; +import java.util.concurrent.BlockingQueue; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.Future; +import java.util.concurrent.Semaphore; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; + +@Beta +public final class Uninterruptibles { + public static void awaitUninterruptibly(CountDownLatch latch) { + boolean interrupted = false; + while (true) { + try { + latch.await(); + return; + } + catch (InterruptedException e) { + interrupted = true; + continue; + } + break; + } + finally { + if (interrupted) { + Thread.currentThread().interrupt(); + } + } + } + + public static boolean awaitUninterruptibly(CountDownLatch latch, long timeout, TimeUnit unit) { + boolean interrupted = false; + try { + long remainingNanos = unit.toNanos(timeout); + long end = System.nanoTime() + remainingNanos; + while (true) { + try { + boolean bl = latch.await(remainingNanos, TimeUnit.NANOSECONDS); + return bl; + } + catch (InterruptedException e) { + interrupted = true; + remainingNanos = end - System.nanoTime(); + continue; + } + break; + } + } + finally { + if (interrupted) { + Thread.currentThread().interrupt(); + } + } + } + + public static void joinUninterruptibly(Thread toJoin) { + boolean interrupted = false; + while (true) { + try { + toJoin.join(); + return; + } + catch (InterruptedException e) { + interrupted = true; + continue; + } + break; + } + finally { + if (interrupted) { + Thread.currentThread().interrupt(); + } + } + } + + public static V getUninterruptibly(Future future) throws ExecutionException { + boolean interrupted = false; + while (true) { + try { + V v = future.get(); + return v; + } + catch (InterruptedException e) { + interrupted = true; + continue; + } + break; + } + finally { + if (interrupted) { + Thread.currentThread().interrupt(); + } + } + } + + public static V getUninterruptibly(Future future, long timeout, TimeUnit unit) throws ExecutionException, TimeoutException { + boolean interrupted = false; + try { + long remainingNanos = unit.toNanos(timeout); + long end = System.nanoTime() + remainingNanos; + while (true) { + V v; + try { + v = future.get(remainingNanos, TimeUnit.NANOSECONDS); + } + catch (InterruptedException e) { + interrupted = true; + remainingNanos = end - System.nanoTime(); + continue; + } + return v; + } + } + finally { + if (interrupted) { + Thread.currentThread().interrupt(); + } + } + } + + public static void joinUninterruptibly(Thread toJoin, long timeout, TimeUnit unit) { + Preconditions.checkNotNull(toJoin); + boolean interrupted = false; + try { + long remainingNanos = unit.toNanos(timeout); + long end = System.nanoTime() + remainingNanos; + while (true) { + try { + TimeUnit.NANOSECONDS.timedJoin(toJoin, remainingNanos); + return; + } + catch (InterruptedException e) { + interrupted = true; + remainingNanos = end - System.nanoTime(); + continue; + } + break; + } + } + finally { + if (interrupted) { + Thread.currentThread().interrupt(); + } + } + } + + public static E takeUninterruptibly(BlockingQueue queue) { + boolean interrupted = false; + while (true) { + try { + E e = queue.take(); + return e; + } + catch (InterruptedException e) { + interrupted = true; + continue; + } + break; + } + finally { + if (interrupted) { + Thread.currentThread().interrupt(); + } + } + } + + public static void putUninterruptibly(BlockingQueue queue, E element) { + boolean interrupted = false; + while (true) { + try { + queue.put(element); + return; + } + catch (InterruptedException e) { + interrupted = true; + continue; + } + break; + } + finally { + if (interrupted) { + Thread.currentThread().interrupt(); + } + } + } + + public static void sleepUninterruptibly(long sleepFor, TimeUnit unit) { + boolean interrupted = false; + try { + long remainingNanos = unit.toNanos(sleepFor); + long end = System.nanoTime() + remainingNanos; + while (true) { + try { + TimeUnit.NANOSECONDS.sleep(remainingNanos); + return; + } + catch (InterruptedException e) { + interrupted = true; + remainingNanos = end - System.nanoTime(); + continue; + } + break; + } + } + finally { + if (interrupted) { + Thread.currentThread().interrupt(); + } + } + } + + public static boolean tryAcquireUninterruptibly(Semaphore semaphore, long timeout, TimeUnit unit) { + return Uninterruptibles.tryAcquireUninterruptibly(semaphore, 1, timeout, unit); + } + + public static boolean tryAcquireUninterruptibly(Semaphore semaphore, int permits, long timeout, TimeUnit unit) { + boolean interrupted = false; + try { + long remainingNanos = unit.toNanos(timeout); + long end = System.nanoTime() + remainingNanos; + while (true) { + try { + boolean bl = semaphore.tryAcquire(permits, remainingNanos, TimeUnit.NANOSECONDS); + return bl; + } + catch (InterruptedException e) { + interrupted = true; + remainingNanos = end - System.nanoTime(); + continue; + } + break; + } + } + finally { + if (interrupted) { + Thread.currentThread().interrupt(); + } + } + } + + private Uninterruptibles() { + } +} diff --git a/src/com/google/common/util/concurrent/WrappingExecutorService.java b/src/com/google/common/util/concurrent/WrappingExecutorService.java new file mode 100644 index 0000000..be4b6e3 --- /dev/null +++ b/src/com/google/common/util/concurrent/WrappingExecutorService.java @@ -0,0 +1,117 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.util.concurrent; + +import com.google.common.base.Preconditions; +import com.google.common.base.Throwables; +import com.google.common.collect.ImmutableList; +import java.util.Collection; +import java.util.List; +import java.util.concurrent.Callable; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; + +abstract class WrappingExecutorService +implements ExecutorService { + private final ExecutorService delegate; + + protected WrappingExecutorService(ExecutorService delegate) { + this.delegate = Preconditions.checkNotNull(delegate); + } + + protected abstract Callable wrapTask(Callable var1); + + protected Runnable wrapTask(Runnable command) { + final Callable wrapped = this.wrapTask(Executors.callable(command, null)); + return new Runnable(){ + + @Override + public void run() { + try { + wrapped.call(); + } + catch (Exception e) { + Throwables.propagate(e); + } + } + }; + } + + private final ImmutableList> wrapTasks(Collection> tasks) { + ImmutableList.Builder builder = ImmutableList.builder(); + for (Callable task : tasks) { + builder.add(this.wrapTask(task)); + } + return builder.build(); + } + + @Override + public final void execute(Runnable command) { + this.delegate.execute(this.wrapTask(command)); + } + + @Override + public final Future submit(Callable task) { + return this.delegate.submit(this.wrapTask(Preconditions.checkNotNull(task))); + } + + @Override + public final Future submit(Runnable task) { + return this.delegate.submit(this.wrapTask(task)); + } + + @Override + public final Future submit(Runnable task, T result) { + return this.delegate.submit(this.wrapTask(task), result); + } + + @Override + public final List> invokeAll(Collection> tasks) throws InterruptedException { + return this.delegate.invokeAll(this.wrapTasks(tasks)); + } + + @Override + public final List> invokeAll(Collection> tasks, long timeout, TimeUnit unit) throws InterruptedException { + return this.delegate.invokeAll(this.wrapTasks(tasks), timeout, unit); + } + + @Override + public final T invokeAny(Collection> tasks) throws InterruptedException, ExecutionException { + return this.delegate.invokeAny(this.wrapTasks(tasks)); + } + + @Override + public final T invokeAny(Collection> tasks, long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException { + return this.delegate.invokeAny(this.wrapTasks(tasks), timeout, unit); + } + + @Override + public final void shutdown() { + this.delegate.shutdown(); + } + + @Override + public final List shutdownNow() { + return this.delegate.shutdownNow(); + } + + @Override + public final boolean isShutdown() { + return this.delegate.isShutdown(); + } + + @Override + public final boolean isTerminated() { + return this.delegate.isTerminated(); + } + + @Override + public final boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException { + return this.delegate.awaitTermination(timeout, unit); + } +} diff --git a/src/com/google/common/util/concurrent/WrappingScheduledExecutorService.java b/src/com/google/common/util/concurrent/WrappingScheduledExecutorService.java new file mode 100644 index 0000000..0418274 --- /dev/null +++ b/src/com/google/common/util/concurrent/WrappingScheduledExecutorService.java @@ -0,0 +1,41 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.util.concurrent; + +import com.google.common.util.concurrent.WrappingExecutorService; +import java.util.concurrent.Callable; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.ScheduledFuture; +import java.util.concurrent.TimeUnit; + +abstract class WrappingScheduledExecutorService +extends WrappingExecutorService +implements ScheduledExecutorService { + final ScheduledExecutorService delegate; + + protected WrappingScheduledExecutorService(ScheduledExecutorService delegate) { + super(delegate); + this.delegate = delegate; + } + + @Override + public final ScheduledFuture schedule(Runnable command, long delay, TimeUnit unit) { + return this.delegate.schedule(this.wrapTask(command), delay, unit); + } + + @Override + public final ScheduledFuture schedule(Callable task, long delay, TimeUnit unit) { + return this.delegate.schedule(this.wrapTask(task), delay, unit); + } + + @Override + public final ScheduledFuture scheduleAtFixedRate(Runnable command, long initialDelay, long period, TimeUnit unit) { + return this.delegate.scheduleAtFixedRate(this.wrapTask(command), initialDelay, period, unit); + } + + @Override + public final ScheduledFuture scheduleWithFixedDelay(Runnable command, long initialDelay, long delay, TimeUnit unit) { + return this.delegate.scheduleWithFixedDelay(this.wrapTask(command), initialDelay, delay, unit); + } +} diff --git a/src/com/google/common/util/concurrent/package-info.java b/src/com/google/common/util/concurrent/package-info.java new file mode 100644 index 0000000..aecac94 --- /dev/null +++ b/src/com/google/common/util/concurrent/package-info.java @@ -0,0 +1,8 @@ +/* + * Decompiled with CFR 0.152. + */ +@ParametersAreNonnullByDefault +package com.google.common.util.concurrent; + +import javax.annotation.ParametersAreNonnullByDefault; + diff --git a/src/com/google/common/xml/XmlEscapers.java b/src/com/google/common/xml/XmlEscapers.java new file mode 100644 index 0000000..fa194d6 --- /dev/null +++ b/src/com/google/common/xml/XmlEscapers.java @@ -0,0 +1,51 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.common.xml; + +import com.google.common.annotations.Beta; +import com.google.common.annotations.GwtCompatible; +import com.google.common.escape.Escaper; +import com.google.common.escape.Escapers; + +@Beta +@GwtCompatible +public class XmlEscapers { + private static final char MIN_ASCII_CONTROL_CHAR = '\u0000'; + private static final char MAX_ASCII_CONTROL_CHAR = '\u001f'; + private static final Escaper XML_ESCAPER; + private static final Escaper XML_CONTENT_ESCAPER; + private static final Escaper XML_ATTRIBUTE_ESCAPER; + + private XmlEscapers() { + } + + public static Escaper xmlContentEscaper() { + return XML_CONTENT_ESCAPER; + } + + public static Escaper xmlAttributeEscaper() { + return XML_ATTRIBUTE_ESCAPER; + } + + static { + Escapers.Builder builder = Escapers.builder(); + builder.setSafeRange('\u0000', '\ufffd'); + builder.setUnsafeReplacement("\ufffd"); + for (char c = '\u0000'; c <= '\u001f'; c = (char)((char)(c + 1))) { + if (c == 9 || c == 10 || c == 13) continue; + builder.addEscape(c, "\ufffd"); + } + builder.addEscape('&', "&"); + builder.addEscape('<', "<"); + builder.addEscape('>', ">"); + XML_CONTENT_ESCAPER = builder.build(); + builder.addEscape('\'', "'"); + builder.addEscape('\"', """); + XML_ESCAPER = builder.build(); + builder.addEscape('\t', " "); + builder.addEscape('\n', " "); + builder.addEscape('\r', " "); + XML_ATTRIBUTE_ESCAPER = builder.build(); + } +} diff --git a/src/com/google/common/xml/package-info.java b/src/com/google/common/xml/package-info.java new file mode 100644 index 0000000..cf5d076 --- /dev/null +++ b/src/com/google/common/xml/package-info.java @@ -0,0 +1,8 @@ +/* + * Decompiled with CFR 0.152. + */ +@ParametersAreNonnullByDefault +package com.google.common.xml; + +import javax.annotation.ParametersAreNonnullByDefault; + diff --git a/src/com/google/gson/DefaultDateTypeAdapter.java b/src/com/google/gson/DefaultDateTypeAdapter.java new file mode 100644 index 0000000..1e7742b --- /dev/null +++ b/src/com/google/gson/DefaultDateTypeAdapter.java @@ -0,0 +1,114 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.gson; + +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonParseException; +import com.google.gson.JsonPrimitive; +import com.google.gson.JsonSerializationContext; +import com.google.gson.JsonSerializer; +import com.google.gson.JsonSyntaxException; +import java.lang.reflect.Type; +import java.sql.Timestamp; +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Locale; +import java.util.TimeZone; + +/* + * This class specifies class file version 49.0 but uses Java 6 signatures. Assumed Java 6. + */ +final class DefaultDateTypeAdapter +implements JsonSerializer, +JsonDeserializer { + private final DateFormat enUsFormat; + private final DateFormat localFormat; + private final DateFormat iso8601Format; + + DefaultDateTypeAdapter() { + this(DateFormat.getDateTimeInstance(2, 2, Locale.US), DateFormat.getDateTimeInstance(2, 2)); + } + + DefaultDateTypeAdapter(String datePattern) { + this(new SimpleDateFormat(datePattern, Locale.US), new SimpleDateFormat(datePattern)); + } + + DefaultDateTypeAdapter(int style) { + this(DateFormat.getDateInstance(style, Locale.US), DateFormat.getDateInstance(style)); + } + + public DefaultDateTypeAdapter(int dateStyle, int timeStyle) { + this(DateFormat.getDateTimeInstance(dateStyle, timeStyle, Locale.US), DateFormat.getDateTimeInstance(dateStyle, timeStyle)); + } + + DefaultDateTypeAdapter(DateFormat enUsFormat, DateFormat localFormat) { + this.enUsFormat = enUsFormat; + this.localFormat = localFormat; + this.iso8601Format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.US); + this.iso8601Format.setTimeZone(TimeZone.getTimeZone("UTC")); + } + + /* + * WARNING - Removed try catching itself - possible behaviour change. + */ + @Override + public JsonElement serialize(Date src, Type typeOfSrc, JsonSerializationContext context) { + DateFormat dateFormat = this.localFormat; + synchronized (dateFormat) { + String dateFormatAsString = this.enUsFormat.format(src); + return new JsonPrimitive(dateFormatAsString); + } + } + + @Override + public Date deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { + if (!(json instanceof JsonPrimitive)) { + throw new JsonParseException("The date should be a string value"); + } + Date date = this.deserializeToDate(json); + if (typeOfT == Date.class) { + return date; + } + if (typeOfT == Timestamp.class) { + return new Timestamp(date.getTime()); + } + if (typeOfT == java.sql.Date.class) { + return new java.sql.Date(date.getTime()); + } + throw new IllegalArgumentException(this.getClass() + " cannot deserialize to " + typeOfT); + } + + private Date deserializeToDate(JsonElement json) { + DateFormat dateFormat = this.localFormat; + synchronized (dateFormat) { + try { + return this.localFormat.parse(json.getAsString()); + } + catch (ParseException ignored) { + try { + return this.enUsFormat.parse(json.getAsString()); + } + catch (ParseException ignored2) { + try { + return this.iso8601Format.parse(json.getAsString()); + } + catch (ParseException e) { + throw new JsonSyntaxException(json.getAsString(), e); + } + } + } + } + } + + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append(DefaultDateTypeAdapter.class.getSimpleName()); + sb.append('(').append(this.localFormat.getClass().getSimpleName()).append(')'); + return sb.toString(); + } +} diff --git a/src/com/google/gson/ExclusionStrategy.java b/src/com/google/gson/ExclusionStrategy.java new file mode 100644 index 0000000..16cdfaf --- /dev/null +++ b/src/com/google/gson/ExclusionStrategy.java @@ -0,0 +1,15 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.gson; + +import com.google.gson.FieldAttributes; + +/* + * This class specifies class file version 49.0 but uses Java 6 signatures. Assumed Java 6. + */ +public interface ExclusionStrategy { + public boolean shouldSkipField(FieldAttributes var1); + + public boolean shouldSkipClass(Class var1); +} diff --git a/src/com/google/gson/FieldAttributes.java b/src/com/google/gson/FieldAttributes.java new file mode 100644 index 0000000..9d08991 --- /dev/null +++ b/src/com/google/gson/FieldAttributes.java @@ -0,0 +1,59 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.gson; + +import com.google.gson.internal.$Gson$Preconditions; +import java.lang.annotation.Annotation; +import java.lang.reflect.Field; +import java.lang.reflect.Type; +import java.util.Arrays; +import java.util.Collection; + +/* + * This class specifies class file version 49.0 but uses Java 6 signatures. Assumed Java 6. + */ +public final class FieldAttributes { + private final Field field; + + public FieldAttributes(Field f) { + $Gson$Preconditions.checkNotNull(f); + this.field = f; + } + + public Class getDeclaringClass() { + return this.field.getDeclaringClass(); + } + + public String getName() { + return this.field.getName(); + } + + public Type getDeclaredType() { + return this.field.getGenericType(); + } + + public Class getDeclaredClass() { + return this.field.getType(); + } + + public T getAnnotation(Class annotation) { + return this.field.getAnnotation(annotation); + } + + public Collection getAnnotations() { + return Arrays.asList(this.field.getAnnotations()); + } + + public boolean hasModifier(int modifier) { + return (this.field.getModifiers() & modifier) != 0; + } + + Object get(Object instance) throws IllegalAccessException { + return this.field.get(instance); + } + + boolean isSynthetic() { + return this.field.isSynthetic(); + } +} diff --git a/src/com/google/gson/FieldNamingPolicy.java b/src/com/google/gson/FieldNamingPolicy.java new file mode 100644 index 0000000..8054d52 --- /dev/null +++ b/src/com/google/gson/FieldNamingPolicy.java @@ -0,0 +1,83 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.gson; + +import com.google.gson.FieldNamingStrategy; +import java.lang.reflect.Field; + +/* + * This class specifies class file version 49.0 but uses Java 6 signatures. Assumed Java 6. + */ +public enum FieldNamingPolicy implements FieldNamingStrategy +{ + IDENTITY{ + + public String translateName(Field f) { + return f.getName(); + } + } + , + UPPER_CAMEL_CASE{ + + public String translateName(Field f) { + return FieldNamingPolicy.upperCaseFirstLetter(f.getName()); + } + } + , + UPPER_CAMEL_CASE_WITH_SPACES{ + + public String translateName(Field f) { + return FieldNamingPolicy.upperCaseFirstLetter(FieldNamingPolicy.separateCamelCase(f.getName(), " ")); + } + } + , + LOWER_CASE_WITH_UNDERSCORES{ + + public String translateName(Field f) { + return FieldNamingPolicy.separateCamelCase(f.getName(), "_").toLowerCase(); + } + } + , + LOWER_CASE_WITH_DASHES{ + + public String translateName(Field f) { + return FieldNamingPolicy.separateCamelCase(f.getName(), "-").toLowerCase(); + } + }; + + + private static String separateCamelCase(String name, String separator) { + StringBuilder translation = new StringBuilder(); + for (int i = 0; i < name.length(); ++i) { + char character = name.charAt(i); + if (Character.isUpperCase(character) && translation.length() != 0) { + translation.append(separator); + } + translation.append(character); + } + return translation.toString(); + } + + private static String upperCaseFirstLetter(String name) { + StringBuilder fieldNameBuilder = new StringBuilder(); + int index = 0; + char firstCharacter = name.charAt(index); + while (index < name.length() - 1 && !Character.isLetter(firstCharacter)) { + fieldNameBuilder.append(firstCharacter); + firstCharacter = name.charAt(++index); + } + if (index == name.length()) { + return fieldNameBuilder.toString(); + } + if (!Character.isUpperCase(firstCharacter)) { + String modifiedTarget = FieldNamingPolicy.modifyString(Character.toUpperCase(firstCharacter), name, ++index); + return fieldNameBuilder.append(modifiedTarget).toString(); + } + return name; + } + + private static String modifyString(char firstCharacter, String srcString, int indexOfSubstring) { + return indexOfSubstring < srcString.length() ? firstCharacter + srcString.substring(indexOfSubstring) : String.valueOf(firstCharacter); + } +} diff --git a/src/com/google/gson/FieldNamingStrategy.java b/src/com/google/gson/FieldNamingStrategy.java new file mode 100644 index 0000000..f9b02ef --- /dev/null +++ b/src/com/google/gson/FieldNamingStrategy.java @@ -0,0 +1,10 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.gson; + +import java.lang.reflect.Field; + +public interface FieldNamingStrategy { + public String translateName(Field var1); +} diff --git a/src/com/google/gson/Gson.java b/src/com/google/gson/Gson.java new file mode 100644 index 0000000..08ca301 --- /dev/null +++ b/src/com/google/gson/Gson.java @@ -0,0 +1,514 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.gson; + +import com.google.gson.FieldNamingPolicy; +import com.google.gson.FieldNamingStrategy; +import com.google.gson.InstanceCreator; +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonElement; +import com.google.gson.JsonIOException; +import com.google.gson.JsonNull; +import com.google.gson.JsonParseException; +import com.google.gson.JsonSerializationContext; +import com.google.gson.JsonSyntaxException; +import com.google.gson.LongSerializationPolicy; +import com.google.gson.TypeAdapter; +import com.google.gson.TypeAdapterFactory; +import com.google.gson.internal.ConstructorConstructor; +import com.google.gson.internal.Excluder; +import com.google.gson.internal.Primitives; +import com.google.gson.internal.Streams; +import com.google.gson.internal.bind.ArrayTypeAdapter; +import com.google.gson.internal.bind.CollectionTypeAdapterFactory; +import com.google.gson.internal.bind.DateTypeAdapter; +import com.google.gson.internal.bind.JsonTreeReader; +import com.google.gson.internal.bind.JsonTreeWriter; +import com.google.gson.internal.bind.MapTypeAdapterFactory; +import com.google.gson.internal.bind.ObjectTypeAdapter; +import com.google.gson.internal.bind.ReflectiveTypeAdapterFactory; +import com.google.gson.internal.bind.SqlDateTypeAdapter; +import com.google.gson.internal.bind.TimeTypeAdapter; +import com.google.gson.internal.bind.TypeAdapters; +import com.google.gson.reflect.TypeToken; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonToken; +import com.google.gson.stream.JsonWriter; +import com.google.gson.stream.MalformedJsonException; +import java.io.EOFException; +import java.io.IOException; +import java.io.Reader; +import java.io.StringReader; +import java.io.StringWriter; +import java.io.Writer; +import java.lang.reflect.Type; +import java.math.BigDecimal; +import java.math.BigInteger; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/* + * This class specifies class file version 49.0 but uses Java 6 signatures. Assumed Java 6. + */ +public final class Gson { + static final boolean DEFAULT_JSON_NON_EXECUTABLE = false; + private static final String JSON_NON_EXECUTABLE_PREFIX = ")]}'\n"; + private final ThreadLocal, FutureTypeAdapter>> calls = new ThreadLocal(); + private final Map, TypeAdapter> typeTokenCache = Collections.synchronizedMap(new HashMap()); + private final List factories; + private final ConstructorConstructor constructorConstructor; + private final boolean serializeNulls; + private final boolean htmlSafe; + private final boolean generateNonExecutableJson; + private final boolean prettyPrinting; + final JsonDeserializationContext deserializationContext = new JsonDeserializationContext(){ + + @Override + public T deserialize(JsonElement json, Type typeOfT) throws JsonParseException { + return Gson.this.fromJson(json, typeOfT); + } + }; + final JsonSerializationContext serializationContext = new JsonSerializationContext(){ + + public JsonElement serialize(Object src) { + return Gson.this.toJsonTree(src); + } + + public JsonElement serialize(Object src, Type typeOfSrc) { + return Gson.this.toJsonTree(src, typeOfSrc); + } + }; + + public Gson() { + this(Excluder.DEFAULT, FieldNamingPolicy.IDENTITY, Collections.emptyMap(), false, false, false, true, false, false, LongSerializationPolicy.DEFAULT, Collections.emptyList()); + } + + Gson(Excluder excluder, FieldNamingStrategy fieldNamingPolicy, Map> instanceCreators, boolean serializeNulls, boolean complexMapKeySerialization, boolean generateNonExecutableGson, boolean htmlSafe, boolean prettyPrinting, boolean serializeSpecialFloatingPointValues, LongSerializationPolicy longSerializationPolicy, List typeAdapterFactories) { + this.constructorConstructor = new ConstructorConstructor(instanceCreators); + this.serializeNulls = serializeNulls; + this.generateNonExecutableJson = generateNonExecutableGson; + this.htmlSafe = htmlSafe; + this.prettyPrinting = prettyPrinting; + ArrayList factories = new ArrayList(); + factories.add(TypeAdapters.JSON_ELEMENT_FACTORY); + factories.add(ObjectTypeAdapter.FACTORY); + factories.add(excluder); + factories.addAll(typeAdapterFactories); + factories.add(TypeAdapters.STRING_FACTORY); + factories.add(TypeAdapters.INTEGER_FACTORY); + factories.add(TypeAdapters.BOOLEAN_FACTORY); + factories.add(TypeAdapters.BYTE_FACTORY); + factories.add(TypeAdapters.SHORT_FACTORY); + factories.add(TypeAdapters.newFactory(Long.TYPE, Long.class, this.longAdapter(longSerializationPolicy))); + factories.add(TypeAdapters.newFactory(Double.TYPE, Double.class, this.doubleAdapter(serializeSpecialFloatingPointValues))); + factories.add(TypeAdapters.newFactory(Float.TYPE, Float.class, this.floatAdapter(serializeSpecialFloatingPointValues))); + factories.add(TypeAdapters.NUMBER_FACTORY); + factories.add(TypeAdapters.CHARACTER_FACTORY); + factories.add(TypeAdapters.STRING_BUILDER_FACTORY); + factories.add(TypeAdapters.STRING_BUFFER_FACTORY); + factories.add(TypeAdapters.newFactory(BigDecimal.class, TypeAdapters.BIG_DECIMAL)); + factories.add(TypeAdapters.newFactory(BigInteger.class, TypeAdapters.BIG_INTEGER)); + factories.add(TypeAdapters.URL_FACTORY); + factories.add(TypeAdapters.URI_FACTORY); + factories.add(TypeAdapters.UUID_FACTORY); + factories.add(TypeAdapters.LOCALE_FACTORY); + factories.add(TypeAdapters.INET_ADDRESS_FACTORY); + factories.add(TypeAdapters.BIT_SET_FACTORY); + factories.add(DateTypeAdapter.FACTORY); + factories.add(TypeAdapters.CALENDAR_FACTORY); + factories.add(TimeTypeAdapter.FACTORY); + factories.add(SqlDateTypeAdapter.FACTORY); + factories.add(TypeAdapters.TIMESTAMP_FACTORY); + factories.add(ArrayTypeAdapter.FACTORY); + factories.add(TypeAdapters.ENUM_FACTORY); + factories.add(TypeAdapters.CLASS_FACTORY); + factories.add(new CollectionTypeAdapterFactory(this.constructorConstructor)); + factories.add(new MapTypeAdapterFactory(this.constructorConstructor, complexMapKeySerialization)); + factories.add(new ReflectiveTypeAdapterFactory(this.constructorConstructor, fieldNamingPolicy, excluder)); + this.factories = Collections.unmodifiableList(factories); + } + + private TypeAdapter doubleAdapter(boolean serializeSpecialFloatingPointValues) { + if (serializeSpecialFloatingPointValues) { + return TypeAdapters.DOUBLE; + } + return new TypeAdapter(){ + + @Override + public Double read(JsonReader in) throws IOException { + if (in.peek() == JsonToken.NULL) { + in.nextNull(); + return null; + } + return in.nextDouble(); + } + + @Override + public void write(JsonWriter out, Number value) throws IOException { + if (value == null) { + out.nullValue(); + return; + } + double doubleValue = value.doubleValue(); + Gson.this.checkValidFloatingPoint(doubleValue); + out.value(value); + } + }; + } + + private TypeAdapter floatAdapter(boolean serializeSpecialFloatingPointValues) { + if (serializeSpecialFloatingPointValues) { + return TypeAdapters.FLOAT; + } + return new TypeAdapter(){ + + @Override + public Float read(JsonReader in) throws IOException { + if (in.peek() == JsonToken.NULL) { + in.nextNull(); + return null; + } + return Float.valueOf((float)in.nextDouble()); + } + + @Override + public void write(JsonWriter out, Number value) throws IOException { + if (value == null) { + out.nullValue(); + return; + } + float floatValue = value.floatValue(); + Gson.this.checkValidFloatingPoint(floatValue); + out.value(value); + } + }; + } + + private void checkValidFloatingPoint(double value) { + if (Double.isNaN(value) || Double.isInfinite(value)) { + throw new IllegalArgumentException(value + " is not a valid double value as per JSON specification. To override this" + " behavior, use GsonBuilder.serializeSpecialFloatingPointValues() method."); + } + } + + private TypeAdapter longAdapter(LongSerializationPolicy longSerializationPolicy) { + if (longSerializationPolicy == LongSerializationPolicy.DEFAULT) { + return TypeAdapters.LONG; + } + return new TypeAdapter(){ + + @Override + public Number read(JsonReader in) throws IOException { + if (in.peek() == JsonToken.NULL) { + in.nextNull(); + return null; + } + return in.nextLong(); + } + + @Override + public void write(JsonWriter out, Number value) throws IOException { + if (value == null) { + out.nullValue(); + return; + } + out.value(value.toString()); + } + }; + } + + public TypeAdapter getAdapter(TypeToken type) { + FutureTypeAdapter ongoingCall; + TypeAdapter cached = this.typeTokenCache.get(type); + if (cached != null) { + return cached; + } + Map, FutureTypeAdapter> threadCalls = this.calls.get(); + boolean requiresThreadLocalCleanup = false; + if (threadCalls == null) { + threadCalls = new HashMap(); + this.calls.set(threadCalls); + requiresThreadLocalCleanup = true; + } + if ((ongoingCall = threadCalls.get(type)) != null) { + return ongoingCall; + } + try { + FutureTypeAdapter call = new FutureTypeAdapter(); + threadCalls.put(type, call); + for (TypeAdapterFactory factory : this.factories) { + TypeAdapter candidate = factory.create(this, type); + if (candidate == null) continue; + call.setDelegate(candidate); + this.typeTokenCache.put(type, candidate); + TypeAdapter typeAdapter = candidate; + return typeAdapter; + } + throw new IllegalArgumentException("GSON cannot handle " + type); + } + finally { + threadCalls.remove(type); + if (requiresThreadLocalCleanup) { + this.calls.remove(); + } + } + } + + public TypeAdapter getDelegateAdapter(TypeAdapterFactory skipPast, TypeToken type) { + boolean skipPastFound = false; + for (TypeAdapterFactory factory : this.factories) { + if (!skipPastFound) { + if (factory != skipPast) continue; + skipPastFound = true; + continue; + } + TypeAdapter candidate = factory.create(this, type); + if (candidate == null) continue; + return candidate; + } + throw new IllegalArgumentException("GSON cannot serialize " + type); + } + + public TypeAdapter getAdapter(Class type) { + return this.getAdapter(TypeToken.get(type)); + } + + public JsonElement toJsonTree(Object src) { + if (src == null) { + return JsonNull.INSTANCE; + } + return this.toJsonTree(src, src.getClass()); + } + + public JsonElement toJsonTree(Object src, Type typeOfSrc) { + JsonTreeWriter writer = new JsonTreeWriter(); + this.toJson(src, typeOfSrc, writer); + return writer.get(); + } + + public String toJson(Object src) { + if (src == null) { + return this.toJson(JsonNull.INSTANCE); + } + return this.toJson(src, src.getClass()); + } + + public String toJson(Object src, Type typeOfSrc) { + StringWriter writer = new StringWriter(); + this.toJson(src, typeOfSrc, writer); + return writer.toString(); + } + + public void toJson(Object src, Appendable writer) throws JsonIOException { + if (src != null) { + this.toJson(src, src.getClass(), writer); + } else { + this.toJson((JsonElement)JsonNull.INSTANCE, writer); + } + } + + public void toJson(Object src, Type typeOfSrc, Appendable writer) throws JsonIOException { + try { + JsonWriter jsonWriter = this.newJsonWriter(Streams.writerForAppendable(writer)); + this.toJson(src, typeOfSrc, jsonWriter); + } + catch (IOException e) { + throw new JsonIOException(e); + } + } + + public void toJson(Object src, Type typeOfSrc, JsonWriter writer) throws JsonIOException { + TypeAdapter adapter = this.getAdapter(TypeToken.get(typeOfSrc)); + boolean oldLenient = writer.isLenient(); + writer.setLenient(true); + boolean oldHtmlSafe = writer.isHtmlSafe(); + writer.setHtmlSafe(this.htmlSafe); + boolean oldSerializeNulls = writer.getSerializeNulls(); + writer.setSerializeNulls(this.serializeNulls); + try { + adapter.write(writer, src); + } + catch (IOException e) { + throw new JsonIOException(e); + } + finally { + writer.setLenient(oldLenient); + writer.setHtmlSafe(oldHtmlSafe); + writer.setSerializeNulls(oldSerializeNulls); + } + } + + public String toJson(JsonElement jsonElement) { + StringWriter writer = new StringWriter(); + this.toJson(jsonElement, (Appendable)writer); + return writer.toString(); + } + + public void toJson(JsonElement jsonElement, Appendable writer) throws JsonIOException { + try { + JsonWriter jsonWriter = this.newJsonWriter(Streams.writerForAppendable(writer)); + this.toJson(jsonElement, jsonWriter); + } + catch (IOException e) { + throw new RuntimeException(e); + } + } + + private JsonWriter newJsonWriter(Writer writer) throws IOException { + if (this.generateNonExecutableJson) { + writer.write(JSON_NON_EXECUTABLE_PREFIX); + } + JsonWriter jsonWriter = new JsonWriter(writer); + if (this.prettyPrinting) { + jsonWriter.setIndent(" "); + } + jsonWriter.setSerializeNulls(this.serializeNulls); + return jsonWriter; + } + + public void toJson(JsonElement jsonElement, JsonWriter writer) throws JsonIOException { + boolean oldLenient = writer.isLenient(); + writer.setLenient(true); + boolean oldHtmlSafe = writer.isHtmlSafe(); + writer.setHtmlSafe(this.htmlSafe); + boolean oldSerializeNulls = writer.getSerializeNulls(); + writer.setSerializeNulls(this.serializeNulls); + try { + Streams.write(jsonElement, writer); + } + catch (IOException e) { + throw new JsonIOException(e); + } + finally { + writer.setLenient(oldLenient); + writer.setHtmlSafe(oldHtmlSafe); + writer.setSerializeNulls(oldSerializeNulls); + } + } + + public T fromJson(String json, Class classOfT) throws JsonSyntaxException { + T object = this.fromJson(json, (Type)classOfT); + return Primitives.wrap(classOfT).cast(object); + } + + public T fromJson(String json, Type typeOfT) throws JsonSyntaxException { + if (json == null) { + return null; + } + StringReader reader = new StringReader(json); + T target = this.fromJson((Reader)reader, typeOfT); + return target; + } + + public T fromJson(Reader json, Class classOfT) throws JsonSyntaxException, JsonIOException { + JsonReader jsonReader = new JsonReader(json); + T object = this.fromJson(jsonReader, classOfT); + Gson.assertFullConsumption(object, jsonReader); + return Primitives.wrap(classOfT).cast(object); + } + + public T fromJson(Reader json, Type typeOfT) throws JsonIOException, JsonSyntaxException { + JsonReader jsonReader = new JsonReader(json); + T object = this.fromJson(jsonReader, typeOfT); + Gson.assertFullConsumption(object, jsonReader); + return object; + } + + private static void assertFullConsumption(Object obj, JsonReader reader) { + try { + if (obj != null && reader.peek() != JsonToken.END_DOCUMENT) { + throw new JsonIOException("JSON document was not fully consumed."); + } + } + catch (MalformedJsonException e) { + throw new JsonSyntaxException(e); + } + catch (IOException e) { + throw new JsonIOException(e); + } + } + + public T fromJson(JsonReader reader, Type typeOfT) throws JsonIOException, JsonSyntaxException { + boolean isEmpty = true; + boolean oldLenient = reader.isLenient(); + reader.setLenient(true); + try { + Object object; + reader.peek(); + isEmpty = false; + TypeToken typeToken = TypeToken.get(typeOfT); + TypeAdapter typeAdapter = this.getAdapter(typeToken); + Object obj = object = typeAdapter.read(reader); + return (T)obj; + } + catch (EOFException e) { + if (isEmpty) { + T t = null; + return t; + } + throw new JsonSyntaxException(e); + } + catch (IllegalStateException e) { + throw new JsonSyntaxException(e); + } + catch (IOException e) { + throw new JsonSyntaxException(e); + } + finally { + reader.setLenient(oldLenient); + } + } + + public T fromJson(JsonElement json, Class classOfT) throws JsonSyntaxException { + T object = this.fromJson(json, (Type)classOfT); + return Primitives.wrap(classOfT).cast(object); + } + + public T fromJson(JsonElement json, Type typeOfT) throws JsonSyntaxException { + if (json == null) { + return null; + } + return this.fromJson(new JsonTreeReader(json), typeOfT); + } + + public String toString() { + return "{serializeNulls:" + this.serializeNulls + "factories:" + this.factories + ",instanceCreators:" + this.constructorConstructor + "}"; + } + + /* + * This class specifies class file version 49.0 but uses Java 6 signatures. Assumed Java 6. + */ + static class FutureTypeAdapter + extends TypeAdapter { + private TypeAdapter delegate; + + FutureTypeAdapter() { + } + + public void setDelegate(TypeAdapter typeAdapter) { + if (this.delegate != null) { + throw new AssertionError(); + } + this.delegate = typeAdapter; + } + + @Override + public T read(JsonReader in) throws IOException { + if (this.delegate == null) { + throw new IllegalStateException(); + } + return this.delegate.read(in); + } + + @Override + public void write(JsonWriter out, T value) throws IOException { + if (this.delegate == null) { + throw new IllegalStateException(); + } + this.delegate.write(out, value); + } + } +} diff --git a/src/com/google/gson/GsonBuilder.java b/src/com/google/gson/GsonBuilder.java new file mode 100644 index 0000000..ac1f54e --- /dev/null +++ b/src/com/google/gson/GsonBuilder.java @@ -0,0 +1,204 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.gson; + +import com.google.gson.DefaultDateTypeAdapter; +import com.google.gson.ExclusionStrategy; +import com.google.gson.FieldNamingPolicy; +import com.google.gson.FieldNamingStrategy; +import com.google.gson.Gson; +import com.google.gson.InstanceCreator; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonSerializer; +import com.google.gson.LongSerializationPolicy; +import com.google.gson.TreeTypeAdapter; +import com.google.gson.TypeAdapter; +import com.google.gson.TypeAdapterFactory; +import com.google.gson.internal.$Gson$Preconditions; +import com.google.gson.internal.Excluder; +import com.google.gson.internal.bind.TypeAdapters; +import com.google.gson.reflect.TypeToken; +import java.lang.reflect.Type; +import java.sql.Date; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/* + * This class specifies class file version 49.0 but uses Java 6 signatures. Assumed Java 6. + */ +public final class GsonBuilder { + private Excluder excluder = Excluder.DEFAULT; + private LongSerializationPolicy longSerializationPolicy = LongSerializationPolicy.DEFAULT; + private FieldNamingStrategy fieldNamingPolicy = FieldNamingPolicy.IDENTITY; + private final Map> instanceCreators = new HashMap(); + private final List factories = new ArrayList(); + private final List hierarchyFactories = new ArrayList(); + private boolean serializeNulls; + private String datePattern; + private int dateStyle = 2; + private int timeStyle = 2; + private boolean complexMapKeySerialization; + private boolean serializeSpecialFloatingPointValues; + private boolean escapeHtmlChars = true; + private boolean prettyPrinting; + private boolean generateNonExecutableJson; + + public GsonBuilder setVersion(double ignoreVersionsAfter) { + this.excluder = this.excluder.withVersion(ignoreVersionsAfter); + return this; + } + + public GsonBuilder excludeFieldsWithModifiers(int ... modifiers) { + this.excluder = this.excluder.withModifiers(modifiers); + return this; + } + + public GsonBuilder generateNonExecutableJson() { + this.generateNonExecutableJson = true; + return this; + } + + public GsonBuilder excludeFieldsWithoutExposeAnnotation() { + this.excluder = this.excluder.excludeFieldsWithoutExposeAnnotation(); + return this; + } + + public GsonBuilder serializeNulls() { + this.serializeNulls = true; + return this; + } + + public GsonBuilder enableComplexMapKeySerialization() { + this.complexMapKeySerialization = true; + return this; + } + + public GsonBuilder disableInnerClassSerialization() { + this.excluder = this.excluder.disableInnerClassSerialization(); + return this; + } + + public GsonBuilder setLongSerializationPolicy(LongSerializationPolicy serializationPolicy) { + this.longSerializationPolicy = serializationPolicy; + return this; + } + + public GsonBuilder setFieldNamingPolicy(FieldNamingPolicy namingConvention) { + this.fieldNamingPolicy = namingConvention; + return this; + } + + public GsonBuilder setFieldNamingStrategy(FieldNamingStrategy fieldNamingStrategy) { + this.fieldNamingPolicy = fieldNamingStrategy; + return this; + } + + public GsonBuilder setExclusionStrategies(ExclusionStrategy ... strategies) { + for (ExclusionStrategy strategy : strategies) { + this.excluder = this.excluder.withExclusionStrategy(strategy, true, true); + } + return this; + } + + public GsonBuilder addSerializationExclusionStrategy(ExclusionStrategy strategy) { + this.excluder = this.excluder.withExclusionStrategy(strategy, true, false); + return this; + } + + public GsonBuilder addDeserializationExclusionStrategy(ExclusionStrategy strategy) { + this.excluder = this.excluder.withExclusionStrategy(strategy, false, true); + return this; + } + + public GsonBuilder setPrettyPrinting() { + this.prettyPrinting = true; + return this; + } + + public GsonBuilder disableHtmlEscaping() { + this.escapeHtmlChars = false; + return this; + } + + public GsonBuilder setDateFormat(String pattern) { + this.datePattern = pattern; + return this; + } + + public GsonBuilder setDateFormat(int style) { + this.dateStyle = style; + this.datePattern = null; + return this; + } + + public GsonBuilder setDateFormat(int dateStyle, int timeStyle) { + this.dateStyle = dateStyle; + this.timeStyle = timeStyle; + this.datePattern = null; + return this; + } + + public GsonBuilder registerTypeAdapter(Type type, Object typeAdapter) { + $Gson$Preconditions.checkArgument(typeAdapter instanceof JsonSerializer || typeAdapter instanceof JsonDeserializer || typeAdapter instanceof InstanceCreator || typeAdapter instanceof TypeAdapter); + if (typeAdapter instanceof InstanceCreator) { + this.instanceCreators.put(type, (InstanceCreator)typeAdapter); + } + if (typeAdapter instanceof JsonSerializer || typeAdapter instanceof JsonDeserializer) { + TypeToken typeToken = TypeToken.get(type); + this.factories.add(TreeTypeAdapter.newFactoryWithMatchRawType(typeToken, typeAdapter)); + } + if (typeAdapter instanceof TypeAdapter) { + this.factories.add(TypeAdapters.newFactory(TypeToken.get(type), (TypeAdapter)typeAdapter)); + } + return this; + } + + public GsonBuilder registerTypeAdapterFactory(TypeAdapterFactory factory) { + this.factories.add(factory); + return this; + } + + public GsonBuilder registerTypeHierarchyAdapter(Class baseType, Object typeAdapter) { + $Gson$Preconditions.checkArgument(typeAdapter instanceof JsonSerializer || typeAdapter instanceof JsonDeserializer || typeAdapter instanceof TypeAdapter); + if (typeAdapter instanceof JsonDeserializer || typeAdapter instanceof JsonSerializer) { + this.hierarchyFactories.add(0, TreeTypeAdapter.newTypeHierarchyFactory(baseType, typeAdapter)); + } + if (typeAdapter instanceof TypeAdapter) { + this.factories.add(TypeAdapters.newTypeHierarchyFactory(baseType, (TypeAdapter)typeAdapter)); + } + return this; + } + + public GsonBuilder serializeSpecialFloatingPointValues() { + this.serializeSpecialFloatingPointValues = true; + return this; + } + + public Gson create() { + ArrayList factories = new ArrayList(); + factories.addAll(this.factories); + Collections.reverse(factories); + factories.addAll(this.hierarchyFactories); + this.addTypeAdaptersForDate(this.datePattern, this.dateStyle, this.timeStyle, factories); + return new Gson(this.excluder, this.fieldNamingPolicy, this.instanceCreators, this.serializeNulls, this.complexMapKeySerialization, this.generateNonExecutableJson, this.escapeHtmlChars, this.prettyPrinting, this.serializeSpecialFloatingPointValues, this.longSerializationPolicy, factories); + } + + private void addTypeAdaptersForDate(String datePattern, int dateStyle, int timeStyle, List factories) { + DefaultDateTypeAdapter dateTypeAdapter; + if (datePattern != null && !"".equals(datePattern.trim())) { + dateTypeAdapter = new DefaultDateTypeAdapter(datePattern); + } else if (dateStyle != 2 && timeStyle != 2) { + dateTypeAdapter = new DefaultDateTypeAdapter(dateStyle, timeStyle); + } else { + return; + } + factories.add(TreeTypeAdapter.newFactory(TypeToken.get(java.util.Date.class), dateTypeAdapter)); + factories.add(TreeTypeAdapter.newFactory(TypeToken.get(Timestamp.class), dateTypeAdapter)); + factories.add(TreeTypeAdapter.newFactory(TypeToken.get(Date.class), dateTypeAdapter)); + } +} diff --git a/src/com/google/gson/InstanceCreator.java b/src/com/google/gson/InstanceCreator.java new file mode 100644 index 0000000..493d36e --- /dev/null +++ b/src/com/google/gson/InstanceCreator.java @@ -0,0 +1,13 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.gson; + +import java.lang.reflect.Type; + +/* + * This class specifies class file version 49.0 but uses Java 6 signatures. Assumed Java 6. + */ +public interface InstanceCreator { + public T createInstance(Type var1); +} diff --git a/src/com/google/gson/JsonArray.java b/src/com/google/gson/JsonArray.java new file mode 100644 index 0000000..6a8c45a --- /dev/null +++ b/src/com/google/gson/JsonArray.java @@ -0,0 +1,158 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.gson; + +import com.google.gson.JsonElement; +import com.google.gson.JsonNull; +import java.math.BigDecimal; +import java.math.BigInteger; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +/* + * This class specifies class file version 49.0 but uses Java 6 signatures. Assumed Java 6. + */ +public final class JsonArray +extends JsonElement +implements Iterable { + private final List elements = new ArrayList(); + + @Override + JsonArray deepCopy() { + JsonArray result = new JsonArray(); + for (JsonElement element : this.elements) { + result.add(element.deepCopy()); + } + return result; + } + + public void add(JsonElement element) { + if (element == null) { + element = JsonNull.INSTANCE; + } + this.elements.add(element); + } + + public void addAll(JsonArray array) { + this.elements.addAll(array.elements); + } + + public int size() { + return this.elements.size(); + } + + @Override + public Iterator iterator() { + return this.elements.iterator(); + } + + public JsonElement get(int i) { + return this.elements.get(i); + } + + @Override + public Number getAsNumber() { + if (this.elements.size() == 1) { + return this.elements.get(0).getAsNumber(); + } + throw new IllegalStateException(); + } + + @Override + public String getAsString() { + if (this.elements.size() == 1) { + return this.elements.get(0).getAsString(); + } + throw new IllegalStateException(); + } + + @Override + public double getAsDouble() { + if (this.elements.size() == 1) { + return this.elements.get(0).getAsDouble(); + } + throw new IllegalStateException(); + } + + @Override + public BigDecimal getAsBigDecimal() { + if (this.elements.size() == 1) { + return this.elements.get(0).getAsBigDecimal(); + } + throw new IllegalStateException(); + } + + @Override + public BigInteger getAsBigInteger() { + if (this.elements.size() == 1) { + return this.elements.get(0).getAsBigInteger(); + } + throw new IllegalStateException(); + } + + @Override + public float getAsFloat() { + if (this.elements.size() == 1) { + return this.elements.get(0).getAsFloat(); + } + throw new IllegalStateException(); + } + + @Override + public long getAsLong() { + if (this.elements.size() == 1) { + return this.elements.get(0).getAsLong(); + } + throw new IllegalStateException(); + } + + @Override + public int getAsInt() { + if (this.elements.size() == 1) { + return this.elements.get(0).getAsInt(); + } + throw new IllegalStateException(); + } + + @Override + public byte getAsByte() { + if (this.elements.size() == 1) { + return this.elements.get(0).getAsByte(); + } + throw new IllegalStateException(); + } + + @Override + public char getAsCharacter() { + if (this.elements.size() == 1) { + return this.elements.get(0).getAsCharacter(); + } + throw new IllegalStateException(); + } + + @Override + public short getAsShort() { + if (this.elements.size() == 1) { + return this.elements.get(0).getAsShort(); + } + throw new IllegalStateException(); + } + + @Override + public boolean getAsBoolean() { + if (this.elements.size() == 1) { + return this.elements.get(0).getAsBoolean(); + } + throw new IllegalStateException(); + } + + public boolean equals(Object o) { + return o == this || o instanceof JsonArray && ((JsonArray)o).elements.equals(this.elements); + } + + public int hashCode() { + return this.elements.hashCode(); + } +} diff --git a/src/com/google/gson/JsonDeserializationContext.java b/src/com/google/gson/JsonDeserializationContext.java new file mode 100644 index 0000000..37f3269 --- /dev/null +++ b/src/com/google/gson/JsonDeserializationContext.java @@ -0,0 +1,15 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.gson; + +import com.google.gson.JsonElement; +import com.google.gson.JsonParseException; +import java.lang.reflect.Type; + +/* + * This class specifies class file version 49.0 but uses Java 6 signatures. Assumed Java 6. + */ +public interface JsonDeserializationContext { + public T deserialize(JsonElement var1, Type var2) throws JsonParseException; +} diff --git a/src/com/google/gson/JsonDeserializer.java b/src/com/google/gson/JsonDeserializer.java new file mode 100644 index 0000000..3900279 --- /dev/null +++ b/src/com/google/gson/JsonDeserializer.java @@ -0,0 +1,16 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.gson; + +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonElement; +import com.google.gson.JsonParseException; +import java.lang.reflect.Type; + +/* + * This class specifies class file version 49.0 but uses Java 6 signatures. Assumed Java 6. + */ +public interface JsonDeserializer { + public T deserialize(JsonElement var1, Type var2, JsonDeserializationContext var3) throws JsonParseException; +} diff --git a/src/com/google/gson/JsonElement.java b/src/com/google/gson/JsonElement.java new file mode 100644 index 0000000..dfda1f4 --- /dev/null +++ b/src/com/google/gson/JsonElement.java @@ -0,0 +1,128 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.gson; + +import com.google.gson.JsonArray; +import com.google.gson.JsonNull; +import com.google.gson.JsonObject; +import com.google.gson.JsonPrimitive; +import com.google.gson.internal.Streams; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; +import java.io.StringWriter; +import java.math.BigDecimal; +import java.math.BigInteger; + +public abstract class JsonElement { + abstract JsonElement deepCopy(); + + public boolean isJsonArray() { + return this instanceof JsonArray; + } + + public boolean isJsonObject() { + return this instanceof JsonObject; + } + + public boolean isJsonPrimitive() { + return this instanceof JsonPrimitive; + } + + public boolean isJsonNull() { + return this instanceof JsonNull; + } + + public JsonObject getAsJsonObject() { + if (this.isJsonObject()) { + return (JsonObject)this; + } + throw new IllegalStateException("Not a JSON Object: " + this); + } + + public JsonArray getAsJsonArray() { + if (this.isJsonArray()) { + return (JsonArray)this; + } + throw new IllegalStateException("This is not a JSON Array."); + } + + public JsonPrimitive getAsJsonPrimitive() { + if (this.isJsonPrimitive()) { + return (JsonPrimitive)this; + } + throw new IllegalStateException("This is not a JSON Primitive."); + } + + public JsonNull getAsJsonNull() { + if (this.isJsonNull()) { + return (JsonNull)this; + } + throw new IllegalStateException("This is not a JSON Null."); + } + + public boolean getAsBoolean() { + throw new UnsupportedOperationException(this.getClass().getSimpleName()); + } + + Boolean getAsBooleanWrapper() { + throw new UnsupportedOperationException(this.getClass().getSimpleName()); + } + + public Number getAsNumber() { + throw new UnsupportedOperationException(this.getClass().getSimpleName()); + } + + public String getAsString() { + throw new UnsupportedOperationException(this.getClass().getSimpleName()); + } + + public double getAsDouble() { + throw new UnsupportedOperationException(this.getClass().getSimpleName()); + } + + public float getAsFloat() { + throw new UnsupportedOperationException(this.getClass().getSimpleName()); + } + + public long getAsLong() { + throw new UnsupportedOperationException(this.getClass().getSimpleName()); + } + + public int getAsInt() { + throw new UnsupportedOperationException(this.getClass().getSimpleName()); + } + + public byte getAsByte() { + throw new UnsupportedOperationException(this.getClass().getSimpleName()); + } + + public char getAsCharacter() { + throw new UnsupportedOperationException(this.getClass().getSimpleName()); + } + + public BigDecimal getAsBigDecimal() { + throw new UnsupportedOperationException(this.getClass().getSimpleName()); + } + + public BigInteger getAsBigInteger() { + throw new UnsupportedOperationException(this.getClass().getSimpleName()); + } + + public short getAsShort() { + throw new UnsupportedOperationException(this.getClass().getSimpleName()); + } + + public String toString() { + try { + StringWriter stringWriter = new StringWriter(); + JsonWriter jsonWriter = new JsonWriter(stringWriter); + jsonWriter.setLenient(true); + Streams.write(this, jsonWriter); + return stringWriter.toString(); + } + catch (IOException e) { + throw new AssertionError((Object)e); + } + } +} diff --git a/src/com/google/gson/JsonIOException.java b/src/com/google/gson/JsonIOException.java new file mode 100644 index 0000000..6bf264b --- /dev/null +++ b/src/com/google/gson/JsonIOException.java @@ -0,0 +1,23 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.gson; + +import com.google.gson.JsonParseException; + +public final class JsonIOException +extends JsonParseException { + private static final long serialVersionUID = 1L; + + public JsonIOException(String msg) { + super(msg); + } + + public JsonIOException(String msg, Throwable cause) { + super(msg, cause); + } + + public JsonIOException(Throwable cause) { + super(cause); + } +} diff --git a/src/com/google/gson/JsonNull.java b/src/com/google/gson/JsonNull.java new file mode 100644 index 0000000..01c8851 --- /dev/null +++ b/src/com/google/gson/JsonNull.java @@ -0,0 +1,27 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.gson; + +import com.google.gson.JsonElement; + +public final class JsonNull +extends JsonElement { + public static final JsonNull INSTANCE = new JsonNull(); + + @Deprecated + public JsonNull() { + } + + JsonNull deepCopy() { + return INSTANCE; + } + + public int hashCode() { + return JsonNull.class.hashCode(); + } + + public boolean equals(Object other) { + return this == other || other instanceof JsonNull; + } +} diff --git a/src/com/google/gson/JsonObject.java b/src/com/google/gson/JsonObject.java new file mode 100644 index 0000000..641ca24 --- /dev/null +++ b/src/com/google/gson/JsonObject.java @@ -0,0 +1,92 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.gson; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonNull; +import com.google.gson.JsonPrimitive; +import com.google.gson.internal.LinkedTreeMap; +import java.util.Map; +import java.util.Set; + +/* + * This class specifies class file version 49.0 but uses Java 6 signatures. Assumed Java 6. + */ +public final class JsonObject +extends JsonElement { + private final LinkedTreeMap members = new LinkedTreeMap(); + + @Override + JsonObject deepCopy() { + JsonObject result = new JsonObject(); + for (Map.Entry entry : this.members.entrySet()) { + result.add(entry.getKey(), entry.getValue().deepCopy()); + } + return result; + } + + public void add(String property, JsonElement value) { + if (value == null) { + value = JsonNull.INSTANCE; + } + this.members.put(property, value); + } + + public JsonElement remove(String property) { + return this.members.remove(property); + } + + public void addProperty(String property, String value) { + this.add(property, this.createJsonElement(value)); + } + + public void addProperty(String property, Number value) { + this.add(property, this.createJsonElement(value)); + } + + public void addProperty(String property, Boolean value) { + this.add(property, this.createJsonElement(value)); + } + + public void addProperty(String property, Character value) { + this.add(property, this.createJsonElement(value)); + } + + private JsonElement createJsonElement(Object value) { + return value == null ? JsonNull.INSTANCE : new JsonPrimitive(value); + } + + public Set> entrySet() { + return this.members.entrySet(); + } + + public boolean has(String memberName) { + return this.members.containsKey(memberName); + } + + public JsonElement get(String memberName) { + return this.members.get(memberName); + } + + public JsonPrimitive getAsJsonPrimitive(String memberName) { + return (JsonPrimitive)this.members.get(memberName); + } + + public JsonArray getAsJsonArray(String memberName) { + return (JsonArray)this.members.get(memberName); + } + + public JsonObject getAsJsonObject(String memberName) { + return (JsonObject)this.members.get(memberName); + } + + public boolean equals(Object o) { + return o == this || o instanceof JsonObject && ((JsonObject)o).members.equals(this.members); + } + + public int hashCode() { + return this.members.hashCode(); + } +} diff --git a/src/com/google/gson/JsonParseException.java b/src/com/google/gson/JsonParseException.java new file mode 100644 index 0000000..4a3b8c4 --- /dev/null +++ b/src/com/google/gson/JsonParseException.java @@ -0,0 +1,21 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.gson; + +public class JsonParseException +extends RuntimeException { + static final long serialVersionUID = -4086729973971783390L; + + public JsonParseException(String msg) { + super(msg); + } + + public JsonParseException(String msg, Throwable cause) { + super(msg, cause); + } + + public JsonParseException(Throwable cause) { + super(cause); + } +} diff --git a/src/com/google/gson/JsonParser.java b/src/com/google/gson/JsonParser.java new file mode 100644 index 0000000..7988ab6 --- /dev/null +++ b/src/com/google/gson/JsonParser.java @@ -0,0 +1,60 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.gson; + +import com.google.gson.JsonElement; +import com.google.gson.JsonIOException; +import com.google.gson.JsonParseException; +import com.google.gson.JsonSyntaxException; +import com.google.gson.internal.Streams; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonToken; +import com.google.gson.stream.MalformedJsonException; +import java.io.IOException; +import java.io.Reader; +import java.io.StringReader; + +public final class JsonParser { + public JsonElement parse(String json) throws JsonSyntaxException { + return this.parse(new StringReader(json)); + } + + public JsonElement parse(Reader json) throws JsonIOException, JsonSyntaxException { + try { + JsonReader jsonReader = new JsonReader(json); + JsonElement element = this.parse(jsonReader); + if (!element.isJsonNull() && jsonReader.peek() != JsonToken.END_DOCUMENT) { + throw new JsonSyntaxException("Did not consume the entire document."); + } + return element; + } + catch (MalformedJsonException e) { + throw new JsonSyntaxException(e); + } + catch (IOException e) { + throw new JsonIOException(e); + } + catch (NumberFormatException e) { + throw new JsonSyntaxException(e); + } + } + + public JsonElement parse(JsonReader json) throws JsonIOException, JsonSyntaxException { + boolean lenient = json.isLenient(); + json.setLenient(true); + try { + JsonElement jsonElement = Streams.parse(json); + return jsonElement; + } + catch (StackOverflowError e) { + throw new JsonParseException("Failed parsing JSON source: " + json + " to Json", e); + } + catch (OutOfMemoryError e) { + throw new JsonParseException("Failed parsing JSON source: " + json + " to Json", e); + } + finally { + json.setLenient(lenient); + } + } +} diff --git a/src/com/google/gson/JsonPrimitive.java b/src/com/google/gson/JsonPrimitive.java new file mode 100644 index 0000000..522ba8c --- /dev/null +++ b/src/com/google/gson/JsonPrimitive.java @@ -0,0 +1,180 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.gson; + +import com.google.gson.JsonElement; +import com.google.gson.internal.$Gson$Preconditions; +import com.google.gson.internal.LazilyParsedNumber; +import java.math.BigDecimal; +import java.math.BigInteger; + +public final class JsonPrimitive +extends JsonElement { + private static final Class[] PRIMITIVE_TYPES = new Class[]{Integer.TYPE, Long.TYPE, Short.TYPE, Float.TYPE, Double.TYPE, Byte.TYPE, Boolean.TYPE, Character.TYPE, Integer.class, Long.class, Short.class, Float.class, Double.class, Byte.class, Boolean.class, Character.class}; + private Object value; + + public JsonPrimitive(Boolean bool) { + this.setValue(bool); + } + + public JsonPrimitive(Number number) { + this.setValue(number); + } + + public JsonPrimitive(String string) { + this.setValue(string); + } + + public JsonPrimitive(Character c) { + this.setValue(c); + } + + JsonPrimitive(Object primitive) { + this.setValue(primitive); + } + + JsonPrimitive deepCopy() { + return this; + } + + void setValue(Object primitive) { + if (primitive instanceof Character) { + char c = ((Character)primitive).charValue(); + this.value = String.valueOf(c); + } else { + $Gson$Preconditions.checkArgument(primitive instanceof Number || JsonPrimitive.isPrimitiveOrString(primitive)); + this.value = primitive; + } + } + + public boolean isBoolean() { + return this.value instanceof Boolean; + } + + Boolean getAsBooleanWrapper() { + return (Boolean)this.value; + } + + public boolean getAsBoolean() { + if (this.isBoolean()) { + return this.getAsBooleanWrapper(); + } + return Boolean.parseBoolean(this.getAsString()); + } + + public boolean isNumber() { + return this.value instanceof Number; + } + + public Number getAsNumber() { + return this.value instanceof String ? new LazilyParsedNumber((String)this.value) : (Number)this.value; + } + + public boolean isString() { + return this.value instanceof String; + } + + public String getAsString() { + if (this.isNumber()) { + return this.getAsNumber().toString(); + } + if (this.isBoolean()) { + return this.getAsBooleanWrapper().toString(); + } + return (String)this.value; + } + + public double getAsDouble() { + return this.isNumber() ? this.getAsNumber().doubleValue() : Double.parseDouble(this.getAsString()); + } + + public BigDecimal getAsBigDecimal() { + return this.value instanceof BigDecimal ? (BigDecimal)this.value : new BigDecimal(this.value.toString()); + } + + public BigInteger getAsBigInteger() { + return this.value instanceof BigInteger ? (BigInteger)this.value : new BigInteger(this.value.toString()); + } + + public float getAsFloat() { + return this.isNumber() ? this.getAsNumber().floatValue() : Float.parseFloat(this.getAsString()); + } + + public long getAsLong() { + return this.isNumber() ? this.getAsNumber().longValue() : Long.parseLong(this.getAsString()); + } + + public short getAsShort() { + return this.isNumber() ? this.getAsNumber().shortValue() : Short.parseShort(this.getAsString()); + } + + public int getAsInt() { + return this.isNumber() ? this.getAsNumber().intValue() : Integer.parseInt(this.getAsString()); + } + + public byte getAsByte() { + return this.isNumber() ? this.getAsNumber().byteValue() : Byte.parseByte(this.getAsString()); + } + + public char getAsCharacter() { + return this.getAsString().charAt(0); + } + + private static boolean isPrimitiveOrString(Object target) { + if (target instanceof String) { + return true; + } + Class classOfPrimitive = target.getClass(); + for (Class standardPrimitive : PRIMITIVE_TYPES) { + if (!standardPrimitive.isAssignableFrom(classOfPrimitive)) continue; + return true; + } + return false; + } + + public int hashCode() { + if (this.value == null) { + return 31; + } + if (JsonPrimitive.isIntegral(this)) { + long value = this.getAsNumber().longValue(); + return (int)(value ^ value >>> 32); + } + if (this.value instanceof Number) { + long value = Double.doubleToLongBits(this.getAsNumber().doubleValue()); + return (int)(value ^ value >>> 32); + } + return this.value.hashCode(); + } + + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null || this.getClass() != obj.getClass()) { + return false; + } + JsonPrimitive other = (JsonPrimitive)obj; + if (this.value == null) { + return other.value == null; + } + if (JsonPrimitive.isIntegral(this) && JsonPrimitive.isIntegral(other)) { + return this.getAsNumber().longValue() == other.getAsNumber().longValue(); + } + if (this.value instanceof Number && other.value instanceof Number) { + double b; + double a = this.getAsNumber().doubleValue(); + return a == (b = other.getAsNumber().doubleValue()) || Double.isNaN(a) && Double.isNaN(b); + } + return this.value.equals(other.value); + } + + private static boolean isIntegral(JsonPrimitive primitive) { + if (primitive.value instanceof Number) { + Number number = (Number)primitive.value; + return number instanceof BigInteger || number instanceof Long || number instanceof Integer || number instanceof Short || number instanceof Byte; + } + return false; + } +} diff --git a/src/com/google/gson/JsonSerializationContext.java b/src/com/google/gson/JsonSerializationContext.java new file mode 100644 index 0000000..3be2d84 --- /dev/null +++ b/src/com/google/gson/JsonSerializationContext.java @@ -0,0 +1,13 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.gson; + +import com.google.gson.JsonElement; +import java.lang.reflect.Type; + +public interface JsonSerializationContext { + public JsonElement serialize(Object var1); + + public JsonElement serialize(Object var1, Type var2); +} diff --git a/src/com/google/gson/JsonSerializer.java b/src/com/google/gson/JsonSerializer.java new file mode 100644 index 0000000..2e9dfcd --- /dev/null +++ b/src/com/google/gson/JsonSerializer.java @@ -0,0 +1,15 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.gson; + +import com.google.gson.JsonElement; +import com.google.gson.JsonSerializationContext; +import java.lang.reflect.Type; + +/* + * This class specifies class file version 49.0 but uses Java 6 signatures. Assumed Java 6. + */ +public interface JsonSerializer { + public JsonElement serialize(T var1, Type var2, JsonSerializationContext var3); +} diff --git a/src/com/google/gson/JsonStreamParser.java b/src/com/google/gson/JsonStreamParser.java new file mode 100644 index 0000000..c1a5593 --- /dev/null +++ b/src/com/google/gson/JsonStreamParser.java @@ -0,0 +1,78 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.gson; + +import com.google.gson.JsonElement; +import com.google.gson.JsonIOException; +import com.google.gson.JsonParseException; +import com.google.gson.JsonSyntaxException; +import com.google.gson.internal.Streams; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonToken; +import com.google.gson.stream.MalformedJsonException; +import java.io.EOFException; +import java.io.IOException; +import java.io.Reader; +import java.io.StringReader; +import java.util.Iterator; +import java.util.NoSuchElementException; + +/* + * This class specifies class file version 49.0 but uses Java 6 signatures. Assumed Java 6. + */ +public final class JsonStreamParser +implements Iterator { + private final JsonReader parser; + private final Object lock; + + public JsonStreamParser(String json) { + this(new StringReader(json)); + } + + public JsonStreamParser(Reader reader) { + this.parser = new JsonReader(reader); + this.parser.setLenient(true); + this.lock = new Object(); + } + + @Override + public JsonElement next() throws JsonParseException { + if (!this.hasNext()) { + throw new NoSuchElementException(); + } + try { + return Streams.parse(this.parser); + } + catch (StackOverflowError e) { + throw new JsonParseException("Failed parsing JSON source to Json", e); + } + catch (OutOfMemoryError e) { + throw new JsonParseException("Failed parsing JSON source to Json", e); + } + catch (JsonParseException e) { + throw e.getCause() instanceof EOFException ? new NoSuchElementException() : e; + } + } + + @Override + public boolean hasNext() { + Object object = this.lock; + synchronized (object) { + try { + return this.parser.peek() != JsonToken.END_DOCUMENT; + } + catch (MalformedJsonException e) { + throw new JsonSyntaxException(e); + } + catch (IOException e) { + throw new JsonIOException(e); + } + } + } + + @Override + public void remove() { + throw new UnsupportedOperationException(); + } +} diff --git a/src/com/google/gson/JsonSyntaxException.java b/src/com/google/gson/JsonSyntaxException.java new file mode 100644 index 0000000..dda0719 --- /dev/null +++ b/src/com/google/gson/JsonSyntaxException.java @@ -0,0 +1,23 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.gson; + +import com.google.gson.JsonParseException; + +public final class JsonSyntaxException +extends JsonParseException { + private static final long serialVersionUID = 1L; + + public JsonSyntaxException(String msg) { + super(msg); + } + + public JsonSyntaxException(String msg, Throwable cause) { + super(msg, cause); + } + + public JsonSyntaxException(Throwable cause) { + super(cause); + } +} diff --git a/src/com/google/gson/LongSerializationPolicy.java b/src/com/google/gson/LongSerializationPolicy.java new file mode 100644 index 0000000..87eecd7 --- /dev/null +++ b/src/com/google/gson/LongSerializationPolicy.java @@ -0,0 +1,29 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.gson; + +import com.google.gson.JsonElement; +import com.google.gson.JsonPrimitive; + +/* + * This class specifies class file version 49.0 but uses Java 6 signatures. Assumed Java 6. + */ +public enum LongSerializationPolicy { + DEFAULT{ + + public JsonElement serialize(Long value) { + return new JsonPrimitive(value); + } + } + , + STRING{ + + public JsonElement serialize(Long value) { + return new JsonPrimitive(String.valueOf(value)); + } + }; + + + public abstract JsonElement serialize(Long var1); +} diff --git a/src/com/google/gson/TreeTypeAdapter.java b/src/com/google/gson/TreeTypeAdapter.java new file mode 100644 index 0000000..6ce3241 --- /dev/null +++ b/src/com/google/gson/TreeTypeAdapter.java @@ -0,0 +1,109 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.gson; + +import com.google.gson.Gson; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonSerializer; +import com.google.gson.TypeAdapter; +import com.google.gson.TypeAdapterFactory; +import com.google.gson.internal.$Gson$Preconditions; +import com.google.gson.internal.Streams; +import com.google.gson.reflect.TypeToken; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; + +/* + * This class specifies class file version 49.0 but uses Java 6 signatures. Assumed Java 6. + */ +final class TreeTypeAdapter +extends TypeAdapter { + private final JsonSerializer serializer; + private final JsonDeserializer deserializer; + private final Gson gson; + private final TypeToken typeToken; + private final TypeAdapterFactory skipPast; + private TypeAdapter delegate; + + private TreeTypeAdapter(JsonSerializer serializer, JsonDeserializer deserializer, Gson gson, TypeToken typeToken, TypeAdapterFactory skipPast) { + this.serializer = serializer; + this.deserializer = deserializer; + this.gson = gson; + this.typeToken = typeToken; + this.skipPast = skipPast; + } + + @Override + public T read(JsonReader in) throws IOException { + if (this.deserializer == null) { + return this.delegate().read(in); + } + JsonElement value = Streams.parse(in); + if (value.isJsonNull()) { + return null; + } + return this.deserializer.deserialize(value, this.typeToken.getType(), this.gson.deserializationContext); + } + + @Override + public void write(JsonWriter out, T value) throws IOException { + if (this.serializer == null) { + this.delegate().write(out, value); + return; + } + if (value == null) { + out.nullValue(); + return; + } + JsonElement tree = this.serializer.serialize(value, this.typeToken.getType(), this.gson.serializationContext); + Streams.write(tree, out); + } + + private TypeAdapter delegate() { + TypeAdapter d = this.delegate; + return d != null ? d : (this.delegate = this.gson.getDelegateAdapter(this.skipPast, this.typeToken)); + } + + public static TypeAdapterFactory newFactory(TypeToken exactType, Object typeAdapter) { + return new SingleTypeFactory(typeAdapter, exactType, false, null); + } + + public static TypeAdapterFactory newFactoryWithMatchRawType(TypeToken exactType, Object typeAdapter) { + boolean matchRawType = exactType.getType() == exactType.getRawType(); + return new SingleTypeFactory(typeAdapter, exactType, matchRawType, null); + } + + public static TypeAdapterFactory newTypeHierarchyFactory(Class hierarchyType, Object typeAdapter) { + return new SingleTypeFactory(typeAdapter, null, false, hierarchyType); + } + + /* + * This class specifies class file version 49.0 but uses Java 6 signatures. Assumed Java 6. + */ + private static class SingleTypeFactory + implements TypeAdapterFactory { + private final TypeToken exactType; + private final boolean matchRawType; + private final Class hierarchyType; + private final JsonSerializer serializer; + private final JsonDeserializer deserializer; + + private SingleTypeFactory(Object typeAdapter, TypeToken exactType, boolean matchRawType, Class hierarchyType) { + this.serializer = typeAdapter instanceof JsonSerializer ? (JsonSerializer)typeAdapter : null; + this.deserializer = typeAdapter instanceof JsonDeserializer ? (JsonDeserializer)typeAdapter : null; + $Gson$Preconditions.checkArgument(this.serializer != null || this.deserializer != null); + this.exactType = exactType; + this.matchRawType = matchRawType; + this.hierarchyType = hierarchyType; + } + + @Override + public TypeAdapter create(Gson gson, TypeToken type) { + boolean matches = this.exactType != null ? this.exactType.equals(type) || this.matchRawType && this.exactType.getType() == type.getRawType() : this.hierarchyType.isAssignableFrom(type.getRawType()); + return matches ? new TreeTypeAdapter(this.serializer, this.deserializer, gson, type, this) : null; + } + } +} diff --git a/src/com/google/gson/TypeAdapter.java b/src/com/google/gson/TypeAdapter.java new file mode 100644 index 0000000..cc516cf --- /dev/null +++ b/src/com/google/gson/TypeAdapter.java @@ -0,0 +1,90 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.gson; + +import com.google.gson.JsonElement; +import com.google.gson.JsonIOException; +import com.google.gson.internal.bind.JsonTreeReader; +import com.google.gson.internal.bind.JsonTreeWriter; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonToken; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; +import java.io.Reader; +import java.io.StringReader; +import java.io.StringWriter; +import java.io.Writer; + +/* + * This class specifies class file version 49.0 but uses Java 6 signatures. Assumed Java 6. + */ +public abstract class TypeAdapter { + public abstract void write(JsonWriter var1, T var2) throws IOException; + + public final void toJson(Writer out, T value) throws IOException { + JsonWriter writer = new JsonWriter(out); + this.write(writer, value); + } + + public final TypeAdapter nullSafe() { + return new TypeAdapter(){ + + @Override + public void write(JsonWriter out, T value) throws IOException { + if (value == null) { + out.nullValue(); + } else { + TypeAdapter.this.write(out, value); + } + } + + @Override + public T read(JsonReader reader) throws IOException { + if (reader.peek() == JsonToken.NULL) { + reader.nextNull(); + return null; + } + return TypeAdapter.this.read(reader); + } + }; + } + + public final String toJson(T value) throws IOException { + StringWriter stringWriter = new StringWriter(); + this.toJson(stringWriter, value); + return stringWriter.toString(); + } + + public final JsonElement toJsonTree(T value) { + try { + JsonTreeWriter jsonWriter = new JsonTreeWriter(); + this.write(jsonWriter, value); + return jsonWriter.get(); + } + catch (IOException e) { + throw new JsonIOException(e); + } + } + + public abstract T read(JsonReader var1) throws IOException; + + public final T fromJson(Reader in) throws IOException { + JsonReader reader = new JsonReader(in); + return this.read(reader); + } + + public final T fromJson(String json) throws IOException { + return this.fromJson(new StringReader(json)); + } + + public final T fromJsonTree(JsonElement jsonTree) { + try { + JsonTreeReader jsonReader = new JsonTreeReader(jsonTree); + return this.read(jsonReader); + } + catch (IOException e) { + throw new JsonIOException(e); + } + } +} diff --git a/src/com/google/gson/TypeAdapterFactory.java b/src/com/google/gson/TypeAdapterFactory.java new file mode 100644 index 0000000..2d8bec8 --- /dev/null +++ b/src/com/google/gson/TypeAdapterFactory.java @@ -0,0 +1,15 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.gson; + +import com.google.gson.Gson; +import com.google.gson.TypeAdapter; +import com.google.gson.reflect.TypeToken; + +/* + * This class specifies class file version 49.0 but uses Java 6 signatures. Assumed Java 6. + */ +public interface TypeAdapterFactory { + public TypeAdapter create(Gson var1, TypeToken var2); +} diff --git a/src/com/google/gson/annotations/Expose.java b/src/com/google/gson/annotations/Expose.java new file mode 100644 index 0000000..6ff01ec --- /dev/null +++ b/src/com/google/gson/annotations/Expose.java @@ -0,0 +1,17 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.gson.annotations; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(value=RetentionPolicy.RUNTIME) +@Target(value={ElementType.FIELD}) +public @interface Expose { + public boolean serialize() default true; + + public boolean deserialize() default true; +} diff --git a/src/com/google/gson/annotations/SerializedName.java b/src/com/google/gson/annotations/SerializedName.java new file mode 100644 index 0000000..e86c478 --- /dev/null +++ b/src/com/google/gson/annotations/SerializedName.java @@ -0,0 +1,15 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.gson.annotations; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(value=RetentionPolicy.RUNTIME) +@Target(value={ElementType.FIELD}) +public @interface SerializedName { + public String value(); +} diff --git a/src/com/google/gson/annotations/Since.java b/src/com/google/gson/annotations/Since.java new file mode 100644 index 0000000..978afcb --- /dev/null +++ b/src/com/google/gson/annotations/Since.java @@ -0,0 +1,15 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.gson.annotations; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(value=RetentionPolicy.RUNTIME) +@Target(value={ElementType.FIELD, ElementType.TYPE}) +public @interface Since { + public double value(); +} diff --git a/src/com/google/gson/annotations/Until.java b/src/com/google/gson/annotations/Until.java new file mode 100644 index 0000000..426cf2c --- /dev/null +++ b/src/com/google/gson/annotations/Until.java @@ -0,0 +1,15 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.gson.annotations; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(value=RetentionPolicy.RUNTIME) +@Target(value={ElementType.FIELD, ElementType.TYPE}) +public @interface Until { + public double value(); +} diff --git a/src/com/google/gson/internal/ConstructorConstructor.java b/src/com/google/gson/internal/ConstructorConstructor.java new file mode 100644 index 0000000..2ce7100 --- /dev/null +++ b/src/com/google/gson/internal/ConstructorConstructor.java @@ -0,0 +1,208 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.gson.internal; + +import com.google.gson.InstanceCreator; +import com.google.gson.JsonIOException; +import com.google.gson.internal.LinkedTreeMap; +import com.google.gson.internal.ObjectConstructor; +import com.google.gson.internal.UnsafeAllocator; +import com.google.gson.reflect.TypeToken; +import java.lang.reflect.Constructor; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.ParameterizedType; +import java.lang.reflect.Type; +import java.util.ArrayList; +import java.util.Collection; +import java.util.EnumSet; +import java.util.LinkedHashMap; +import java.util.LinkedHashSet; +import java.util.LinkedList; +import java.util.Map; +import java.util.Queue; +import java.util.Set; +import java.util.SortedMap; +import java.util.SortedSet; +import java.util.TreeMap; +import java.util.TreeSet; + +/* + * This class specifies class file version 49.0 but uses Java 6 signatures. Assumed Java 6. + */ +public final class ConstructorConstructor { + private final Map> instanceCreators; + + public ConstructorConstructor(Map> instanceCreators) { + this.instanceCreators = instanceCreators; + } + + public ObjectConstructor get(TypeToken typeToken) { + final Type type = typeToken.getType(); + Class rawType = typeToken.getRawType(); + final InstanceCreator typeCreator = this.instanceCreators.get(type); + if (typeCreator != null) { + return new ObjectConstructor(){ + + @Override + public T construct() { + return typeCreator.createInstance(type); + } + }; + } + final InstanceCreator rawTypeCreator = this.instanceCreators.get(rawType); + if (rawTypeCreator != null) { + return new ObjectConstructor(){ + + @Override + public T construct() { + return rawTypeCreator.createInstance(type); + } + }; + } + ObjectConstructor defaultConstructor = this.newDefaultConstructor(rawType); + if (defaultConstructor != null) { + return defaultConstructor; + } + ObjectConstructor defaultImplementation = this.newDefaultImplementationConstructor(type, rawType); + if (defaultImplementation != null) { + return defaultImplementation; + } + return this.newUnsafeAllocator(type, rawType); + } + + private ObjectConstructor newDefaultConstructor(Class rawType) { + try { + final Constructor constructor = rawType.getDeclaredConstructor(new Class[0]); + if (!constructor.isAccessible()) { + constructor.setAccessible(true); + } + return new ObjectConstructor(){ + + @Override + public T construct() { + try { + Object[] args = null; + return constructor.newInstance(args); + } + catch (InstantiationException e) { + throw new RuntimeException("Failed to invoke " + constructor + " with no args", e); + } + catch (InvocationTargetException e) { + throw new RuntimeException("Failed to invoke " + constructor + " with no args", e.getTargetException()); + } + catch (IllegalAccessException e) { + throw new AssertionError((Object)e); + } + } + }; + } + catch (NoSuchMethodException e) { + return null; + } + } + + private ObjectConstructor newDefaultImplementationConstructor(final Type type, Class rawType) { + if (Collection.class.isAssignableFrom(rawType)) { + if (SortedSet.class.isAssignableFrom(rawType)) { + return new ObjectConstructor(){ + + @Override + public T construct() { + return new TreeSet(); + } + }; + } + if (EnumSet.class.isAssignableFrom(rawType)) { + return new ObjectConstructor(){ + + @Override + public T construct() { + if (type instanceof ParameterizedType) { + Type elementType = ((ParameterizedType)type).getActualTypeArguments()[0]; + if (elementType instanceof Class) { + return EnumSet.noneOf((Class)elementType); + } + throw new JsonIOException("Invalid EnumSet type: " + type.toString()); + } + throw new JsonIOException("Invalid EnumSet type: " + type.toString()); + } + }; + } + if (Set.class.isAssignableFrom(rawType)) { + return new ObjectConstructor(){ + + @Override + public T construct() { + return new LinkedHashSet(); + } + }; + } + if (Queue.class.isAssignableFrom(rawType)) { + return new ObjectConstructor(){ + + @Override + public T construct() { + return new LinkedList(); + } + }; + } + return new ObjectConstructor(){ + + @Override + public T construct() { + return new ArrayList(); + } + }; + } + if (Map.class.isAssignableFrom(rawType)) { + if (SortedMap.class.isAssignableFrom(rawType)) { + return new ObjectConstructor(){ + + @Override + public T construct() { + return new TreeMap(); + } + }; + } + if (type instanceof ParameterizedType && !String.class.isAssignableFrom(TypeToken.get(((ParameterizedType)type).getActualTypeArguments()[0]).getRawType())) { + return new ObjectConstructor(){ + + @Override + public T construct() { + return new LinkedHashMap(); + } + }; + } + return new ObjectConstructor(){ + + @Override + public T construct() { + return new LinkedTreeMap(); + } + }; + } + return null; + } + + private ObjectConstructor newUnsafeAllocator(final Type type, final Class rawType) { + return new ObjectConstructor(){ + private final UnsafeAllocator unsafeAllocator = UnsafeAllocator.create(); + + @Override + public T construct() { + try { + Object newInstance = this.unsafeAllocator.newInstance(rawType); + return newInstance; + } + catch (Exception e) { + throw new RuntimeException("Unable to invoke no-args constructor for " + type + ". " + "Register an InstanceCreator with Gson for this type may fix this problem.", e); + } + } + }; + } + + public String toString() { + return this.instanceCreators.toString(); + } +} diff --git a/src/com/google/gson/internal/Excluder.java b/src/com/google/gson/internal/Excluder.java new file mode 100644 index 0000000..3f1bb96 --- /dev/null +++ b/src/com/google/gson/internal/Excluder.java @@ -0,0 +1,198 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.gson.internal; + +import com.google.gson.ExclusionStrategy; +import com.google.gson.FieldAttributes; +import com.google.gson.Gson; +import com.google.gson.TypeAdapter; +import com.google.gson.TypeAdapterFactory; +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.Since; +import com.google.gson.annotations.Until; +import com.google.gson.reflect.TypeToken; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +/* + * This class specifies class file version 49.0 but uses Java 6 signatures. Assumed Java 6. + */ +public final class Excluder +implements TypeAdapterFactory, +Cloneable { + private static final double IGNORE_VERSIONS = -1.0; + public static final Excluder DEFAULT = new Excluder(); + private double version = -1.0; + private int modifiers = 136; + private boolean serializeInnerClasses = true; + private boolean requireExpose; + private List serializationStrategies = Collections.emptyList(); + private List deserializationStrategies = Collections.emptyList(); + + protected Excluder clone() { + try { + return (Excluder)super.clone(); + } + catch (CloneNotSupportedException e) { + throw new AssertionError(); + } + } + + public Excluder withVersion(double ignoreVersionsAfter) { + Excluder result = this.clone(); + result.version = ignoreVersionsAfter; + return result; + } + + public Excluder withModifiers(int ... modifiers) { + Excluder result = this.clone(); + result.modifiers = 0; + for (int modifier : modifiers) { + result.modifiers |= modifier; + } + return result; + } + + public Excluder disableInnerClassSerialization() { + Excluder result = this.clone(); + result.serializeInnerClasses = false; + return result; + } + + public Excluder excludeFieldsWithoutExposeAnnotation() { + Excluder result = this.clone(); + result.requireExpose = true; + return result; + } + + public Excluder withExclusionStrategy(ExclusionStrategy exclusionStrategy, boolean serialization, boolean deserialization) { + Excluder result = this.clone(); + if (serialization) { + result.serializationStrategies = new ArrayList(this.serializationStrategies); + result.serializationStrategies.add(exclusionStrategy); + } + if (deserialization) { + result.deserializationStrategies = new ArrayList(this.deserializationStrategies); + result.deserializationStrategies.add(exclusionStrategy); + } + return result; + } + + @Override + public TypeAdapter create(final Gson gson, final TypeToken type) { + Class rawType = type.getRawType(); + final boolean skipSerialize = this.excludeClass(rawType, true); + final boolean skipDeserialize = this.excludeClass(rawType, false); + if (!skipSerialize && !skipDeserialize) { + return null; + } + return new TypeAdapter(){ + private TypeAdapter delegate; + + @Override + public T read(JsonReader in) throws IOException { + if (skipDeserialize) { + in.skipValue(); + return null; + } + return this.delegate().read(in); + } + + @Override + public void write(JsonWriter out, T value) throws IOException { + if (skipSerialize) { + out.nullValue(); + return; + } + this.delegate().write(out, value); + } + + private TypeAdapter delegate() { + TypeAdapter d = this.delegate; + return d != null ? d : (this.delegate = gson.getDelegateAdapter(Excluder.this, type)); + } + }; + } + + public boolean excludeField(Field field, boolean serialize) { + List list; + Expose annotation; + if ((this.modifiers & field.getModifiers()) != 0) { + return true; + } + if (this.version != -1.0 && !this.isValidVersion(field.getAnnotation(Since.class), field.getAnnotation(Until.class))) { + return true; + } + if (field.isSynthetic()) { + return true; + } + if (this.requireExpose && ((annotation = field.getAnnotation(Expose.class)) == null || (serialize ? !annotation.serialize() : !annotation.deserialize()))) { + return true; + } + if (!this.serializeInnerClasses && this.isInnerClass(field.getType())) { + return true; + } + if (this.isAnonymousOrLocal(field.getType())) { + return true; + } + List list2 = list = serialize ? this.serializationStrategies : this.deserializationStrategies; + if (!list.isEmpty()) { + FieldAttributes fieldAttributes = new FieldAttributes(field); + for (ExclusionStrategy exclusionStrategy : list) { + if (!exclusionStrategy.shouldSkipField(fieldAttributes)) continue; + return true; + } + } + return false; + } + + public boolean excludeClass(Class clazz, boolean serialize) { + if (this.version != -1.0 && !this.isValidVersion(clazz.getAnnotation(Since.class), clazz.getAnnotation(Until.class))) { + return true; + } + if (!this.serializeInnerClasses && this.isInnerClass(clazz)) { + return true; + } + if (this.isAnonymousOrLocal(clazz)) { + return true; + } + List list = serialize ? this.serializationStrategies : this.deserializationStrategies; + for (ExclusionStrategy exclusionStrategy : list) { + if (!exclusionStrategy.shouldSkipClass(clazz)) continue; + return true; + } + return false; + } + + private boolean isAnonymousOrLocal(Class clazz) { + return !Enum.class.isAssignableFrom(clazz) && (clazz.isAnonymousClass() || clazz.isLocalClass()); + } + + private boolean isInnerClass(Class clazz) { + return clazz.isMemberClass() && !this.isStatic(clazz); + } + + private boolean isStatic(Class clazz) { + return (clazz.getModifiers() & 8) != 0; + } + + private boolean isValidVersion(Since since, Until until) { + return this.isValidSince(since) && this.isValidUntil(until); + } + + private boolean isValidSince(Since annotation) { + double annotationVersion; + return annotation == null || !((annotationVersion = annotation.value()) > this.version); + } + + private boolean isValidUntil(Until annotation) { + double annotationVersion; + return annotation == null || !((annotationVersion = annotation.value()) <= this.version); + } +} diff --git a/src/com/google/gson/internal/JsonReaderInternalAccess.java b/src/com/google/gson/internal/JsonReaderInternalAccess.java new file mode 100644 index 0000000..0ead530 --- /dev/null +++ b/src/com/google/gson/internal/JsonReaderInternalAccess.java @@ -0,0 +1,13 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.gson.internal; + +import com.google.gson.stream.JsonReader; +import java.io.IOException; + +public abstract class JsonReaderInternalAccess { + public static JsonReaderInternalAccess INSTANCE; + + public abstract void promoteNameToValue(JsonReader var1) throws IOException; +} diff --git a/src/com/google/gson/internal/LazilyParsedNumber.java b/src/com/google/gson/internal/LazilyParsedNumber.java new file mode 100644 index 0000000..5c8ce74 --- /dev/null +++ b/src/com/google/gson/internal/LazilyParsedNumber.java @@ -0,0 +1,55 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.gson.internal; + +import java.io.ObjectStreamException; +import java.math.BigDecimal; + +public final class LazilyParsedNumber +extends Number { + private final String value; + + public LazilyParsedNumber(String value) { + this.value = value; + } + + public int intValue() { + try { + return Integer.parseInt(this.value); + } + catch (NumberFormatException e) { + try { + return (int)Long.parseLong(this.value); + } + catch (NumberFormatException nfe) { + return new BigDecimal(this.value).intValue(); + } + } + } + + public long longValue() { + try { + return Long.parseLong(this.value); + } + catch (NumberFormatException e) { + return new BigDecimal(this.value).longValue(); + } + } + + public float floatValue() { + return Float.parseFloat(this.value); + } + + public double doubleValue() { + return Double.parseDouble(this.value); + } + + public String toString() { + return this.value; + } + + private Object writeReplace() throws ObjectStreamException { + return new BigDecimal(this.value); + } +} diff --git a/src/com/google/gson/internal/LinkedTreeMap.java b/src/com/google/gson/internal/LinkedTreeMap.java new file mode 100644 index 0000000..f8643df --- /dev/null +++ b/src/com/google/gson/internal/LinkedTreeMap.java @@ -0,0 +1,540 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.gson.internal; + +import java.io.ObjectStreamException; +import java.io.Serializable; +import java.util.AbstractMap; +import java.util.AbstractSet; +import java.util.Comparator; +import java.util.ConcurrentModificationException; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.NoSuchElementException; +import java.util.Set; + +/* + * This class specifies class file version 49.0 but uses Java 6 signatures. Assumed Java 6. + */ +public final class LinkedTreeMap +extends AbstractMap +implements Serializable { + private static final Comparator NATURAL_ORDER = new Comparator(){ + + @Override + public int compare(Comparable a, Comparable b) { + return a.compareTo(b); + } + }; + Comparator comparator; + Node root; + int size = 0; + int modCount = 0; + final Node header = new Node(); + private EntrySet entrySet; + private KeySet keySet; + + public LinkedTreeMap() { + this(NATURAL_ORDER); + } + + public LinkedTreeMap(Comparator comparator) { + this.comparator = comparator != null ? comparator : NATURAL_ORDER; + } + + @Override + public int size() { + return this.size; + } + + @Override + public V get(Object key) { + Node node = this.findByObject(key); + return node != null ? (V)node.value : null; + } + + @Override + public boolean containsKey(Object key) { + return this.findByObject(key) != null; + } + + @Override + public V put(K key, V value) { + if (key == null) { + throw new NullPointerException("key == null"); + } + Node created = this.find(key, true); + Object result = created.value; + created.value = value; + return result; + } + + @Override + public void clear() { + this.root = null; + this.size = 0; + ++this.modCount; + Node header = this.header; + header.prev = header; + header.next = header.prev; + } + + @Override + public V remove(Object key) { + Node node = this.removeInternalByKey(key); + return node != null ? (V)node.value : null; + } + + Node find(K key, boolean create) { + Node created; + Comparator comparator = this.comparator; + Node nearest = this.root; + int comparison = 0; + if (nearest != null) { + Comparable comparableKey = comparator == NATURAL_ORDER ? (Comparable)key : null; + while (true) { + Node child; + int n = comparison = comparableKey != null ? comparableKey.compareTo(nearest.key) : comparator.compare(key, nearest.key); + if (comparison == 0) { + return nearest; + } + Node node = child = comparison < 0 ? nearest.left : nearest.right; + if (child == null) break; + nearest = child; + } + } + if (!create) { + return null; + } + Node header = this.header; + if (nearest == null) { + if (comparator == NATURAL_ORDER && !(key instanceof Comparable)) { + throw new ClassCastException(key.getClass().getName() + " is not Comparable"); + } + created = new Node(nearest, key, header, header.prev); + this.root = created; + } else { + created = new Node(nearest, key, header, header.prev); + if (comparison < 0) { + nearest.left = created; + } else { + nearest.right = created; + } + this.rebalance(nearest, true); + } + ++this.size; + ++this.modCount; + return created; + } + + Node findByObject(Object key) { + try { + return key != null ? this.find(key, false) : null; + } + catch (ClassCastException e) { + return null; + } + } + + Node findByEntry(Map.Entry entry) { + Node mine = this.findByObject(entry.getKey()); + boolean valuesEqual = mine != null && this.equal(mine.value, entry.getValue()); + return valuesEqual ? mine : null; + } + + private boolean equal(Object a, Object b) { + return a == b || a != null && a.equals(b); + } + + void removeInternal(Node node, boolean unlink) { + if (unlink) { + node.prev.next = node.next; + node.next.prev = node.prev; + } + Node left = node.left; + Node right = node.right; + Node originalParent = node.parent; + if (left != null && right != null) { + Node adjacent = left.height > right.height ? left.last() : right.first(); + this.removeInternal(adjacent, false); + int leftHeight = 0; + left = node.left; + if (left != null) { + leftHeight = left.height; + adjacent.left = left; + left.parent = adjacent; + node.left = null; + } + int rightHeight = 0; + right = node.right; + if (right != null) { + rightHeight = right.height; + adjacent.right = right; + right.parent = adjacent; + node.right = null; + } + adjacent.height = Math.max(leftHeight, rightHeight) + 1; + this.replaceInParent(node, adjacent); + return; + } + if (left != null) { + this.replaceInParent(node, left); + node.left = null; + } else if (right != null) { + this.replaceInParent(node, right); + node.right = null; + } else { + this.replaceInParent(node, null); + } + this.rebalance(originalParent, false); + --this.size; + ++this.modCount; + } + + Node removeInternalByKey(Object key) { + Node node = this.findByObject(key); + if (node != null) { + this.removeInternal(node, true); + } + return node; + } + + private void replaceInParent(Node node, Node replacement) { + Node parent = node.parent; + node.parent = null; + if (replacement != null) { + replacement.parent = parent; + } + if (parent != null) { + if (parent.left == node) { + parent.left = replacement; + } else { + assert (parent.right == node); + parent.right = replacement; + } + } else { + this.root = replacement; + } + } + + private void rebalance(Node unbalanced, boolean insert) { + Node node = unbalanced; + while (node != null) { + Node right; + int rightHeight; + Node left = node.left; + int leftHeight = left != null ? left.height : 0; + int delta = leftHeight - (rightHeight = (right = node.right) != null ? right.height : 0); + if (delta == -2) { + Node rightRight; + int rightRightHeight; + Node rightLeft = right.left; + int rightLeftHeight = rightLeft != null ? rightLeft.height : 0; + int rightDelta = rightLeftHeight - (rightRightHeight = (rightRight = right.right) != null ? rightRight.height : 0); + if (rightDelta == -1 || rightDelta == 0 && !insert) { + this.rotateLeft(node); + } else { + assert (rightDelta == 1); + this.rotateRight(right); + this.rotateLeft(node); + } + if (insert) { + break; + } + } else if (delta == 2) { + Node leftRight; + int leftRightHeight; + Node leftLeft = left.left; + int leftLeftHeight = leftLeft != null ? leftLeft.height : 0; + int leftDelta = leftLeftHeight - (leftRightHeight = (leftRight = left.right) != null ? leftRight.height : 0); + if (leftDelta == 1 || leftDelta == 0 && !insert) { + this.rotateRight(node); + } else { + assert (leftDelta == -1); + this.rotateLeft(left); + this.rotateRight(node); + } + if (insert) { + break; + } + } else if (delta == 0) { + node.height = leftHeight + 1; + if (insert) { + break; + } + } else { + assert (delta == -1 || delta == 1); + node.height = Math.max(leftHeight, rightHeight) + 1; + if (!insert) break; + } + node = node.parent; + } + } + + private void rotateLeft(Node root) { + Node left = root.left; + Node pivot = root.right; + Node pivotLeft = pivot.left; + Node pivotRight = pivot.right; + root.right = pivotLeft; + if (pivotLeft != null) { + pivotLeft.parent = root; + } + this.replaceInParent(root, pivot); + pivot.left = root; + root.parent = pivot; + root.height = Math.max(left != null ? left.height : 0, pivotLeft != null ? pivotLeft.height : 0) + 1; + pivot.height = Math.max(root.height, pivotRight != null ? pivotRight.height : 0) + 1; + } + + private void rotateRight(Node root) { + Node pivot = root.left; + Node right = root.right; + Node pivotLeft = pivot.left; + Node pivotRight = pivot.right; + root.left = pivotRight; + if (pivotRight != null) { + pivotRight.parent = root; + } + this.replaceInParent(root, pivot); + pivot.right = root; + root.parent = pivot; + root.height = Math.max(right != null ? right.height : 0, pivotRight != null ? pivotRight.height : 0) + 1; + pivot.height = Math.max(root.height, pivotLeft != null ? pivotLeft.height : 0) + 1; + } + + @Override + public Set> entrySet() { + EntrySet result = this.entrySet; + return result != null ? result : (this.entrySet = new EntrySet()); + } + + @Override + public Set keySet() { + KeySet result = this.keySet; + return result != null ? result : (this.keySet = new KeySet()); + } + + private Object writeReplace() throws ObjectStreamException { + return new LinkedHashMap(this); + } + + /* + * This class specifies class file version 49.0 but uses Java 6 signatures. Assumed Java 6. + */ + class KeySet + extends AbstractSet { + KeySet() { + } + + @Override + public int size() { + return LinkedTreeMap.this.size; + } + + @Override + public Iterator iterator() { + return new LinkedTreeMapIterator(){ + + @Override + public K next() { + return this.nextNode().key; + } + }; + } + + @Override + public boolean contains(Object o) { + return LinkedTreeMap.this.containsKey(o); + } + + @Override + public boolean remove(Object key) { + return LinkedTreeMap.this.removeInternalByKey(key) != null; + } + + @Override + public void clear() { + LinkedTreeMap.this.clear(); + } + } + + /* + * This class specifies class file version 49.0 but uses Java 6 signatures. Assumed Java 6. + */ + class EntrySet + extends AbstractSet> { + EntrySet() { + } + + @Override + public int size() { + return LinkedTreeMap.this.size; + } + + @Override + public Iterator> iterator() { + return new LinkedTreeMapIterator>(){ + + @Override + public Map.Entry next() { + return this.nextNode(); + } + }; + } + + @Override + public boolean contains(Object o) { + return o instanceof Map.Entry && LinkedTreeMap.this.findByEntry((Map.Entry)o) != null; + } + + @Override + public boolean remove(Object o) { + if (!(o instanceof Map.Entry)) { + return false; + } + Node node = LinkedTreeMap.this.findByEntry((Map.Entry)o); + if (node == null) { + return false; + } + LinkedTreeMap.this.removeInternal(node, true); + return true; + } + + @Override + public void clear() { + LinkedTreeMap.this.clear(); + } + } + + /* + * This class specifies class file version 49.0 but uses Java 6 signatures. Assumed Java 6. + */ + private abstract class LinkedTreeMapIterator + implements Iterator { + Node next; + Node lastReturned; + int expectedModCount; + + private LinkedTreeMapIterator() { + this.next = LinkedTreeMap.this.header.next; + this.lastReturned = null; + this.expectedModCount = LinkedTreeMap.this.modCount; + } + + @Override + public final boolean hasNext() { + return this.next != LinkedTreeMap.this.header; + } + + final Node nextNode() { + Node e = this.next; + if (e == LinkedTreeMap.this.header) { + throw new NoSuchElementException(); + } + if (LinkedTreeMap.this.modCount != this.expectedModCount) { + throw new ConcurrentModificationException(); + } + this.next = e.next; + this.lastReturned = e; + return this.lastReturned; + } + + @Override + public final void remove() { + if (this.lastReturned == null) { + throw new IllegalStateException(); + } + LinkedTreeMap.this.removeInternal(this.lastReturned, true); + this.lastReturned = null; + this.expectedModCount = LinkedTreeMap.this.modCount; + } + } + + /* + * This class specifies class file version 49.0 but uses Java 6 signatures. Assumed Java 6. + */ + static final class Node + implements Map.Entry { + Node parent; + Node left; + Node right; + Node next; + Node prev; + final K key; + V value; + int height; + + Node() { + this.key = null; + this.next = this.prev = this; + } + + Node(Node parent, K key, Node next, Node prev) { + this.parent = parent; + this.key = key; + this.height = 1; + this.next = next; + this.prev = prev; + prev.next = this; + next.prev = this; + } + + @Override + public K getKey() { + return this.key; + } + + @Override + public V getValue() { + return this.value; + } + + @Override + public V setValue(V value) { + V oldValue = this.value; + this.value = value; + return oldValue; + } + + @Override + public boolean equals(Object o) { + if (o instanceof Map.Entry) { + Map.Entry other = (Map.Entry)o; + return (this.key == null ? other.getKey() == null : this.key.equals(other.getKey())) && (this.value == null ? other.getValue() == null : this.value.equals(other.getValue())); + } + return false; + } + + @Override + public int hashCode() { + return (this.key == null ? 0 : this.key.hashCode()) ^ (this.value == null ? 0 : this.value.hashCode()); + } + + public String toString() { + return this.key + "=" + this.value; + } + + public Node first() { + Node node = this; + Node child = node.left; + while (child != null) { + node = child; + child = node.left; + } + return node; + } + + public Node last() { + Node node = this; + Node child = node.right; + while (child != null) { + node = child; + child = node.right; + } + return node; + } + } +} diff --git a/src/com/google/gson/internal/ObjectConstructor.java b/src/com/google/gson/internal/ObjectConstructor.java new file mode 100644 index 0000000..5c0e763 --- /dev/null +++ b/src/com/google/gson/internal/ObjectConstructor.java @@ -0,0 +1,11 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.gson.internal; + +/* + * This class specifies class file version 49.0 but uses Java 6 signatures. Assumed Java 6. + */ +public interface ObjectConstructor { + public T construct(); +} diff --git a/src/com/google/gson/internal/Primitives.java b/src/com/google/gson/internal/Primitives.java new file mode 100644 index 0000000..8b82a70 --- /dev/null +++ b/src/com/google/gson/internal/Primitives.java @@ -0,0 +1,60 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.gson.internal; + +import com.google.gson.internal.$Gson$Preconditions; +import java.lang.reflect.Type; +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; + +/* + * This class specifies class file version 49.0 but uses Java 6 signatures. Assumed Java 6. + */ +public final class Primitives { + private static final Map, Class> PRIMITIVE_TO_WRAPPER_TYPE; + private static final Map, Class> WRAPPER_TO_PRIMITIVE_TYPE; + + private Primitives() { + } + + private static void add(Map, Class> forward, Map, Class> backward, Class key, Class value) { + forward.put(key, value); + backward.put(value, key); + } + + public static boolean isPrimitive(Type type) { + return PRIMITIVE_TO_WRAPPER_TYPE.containsKey(type); + } + + public static boolean isWrapperType(Type type) { + return WRAPPER_TO_PRIMITIVE_TYPE.containsKey($Gson$Preconditions.checkNotNull(type)); + } + + public static Class wrap(Class type) { + Class wrapped = PRIMITIVE_TO_WRAPPER_TYPE.get($Gson$Preconditions.checkNotNull(type)); + return wrapped == null ? type : wrapped; + } + + public static Class unwrap(Class type) { + Class unwrapped = WRAPPER_TO_PRIMITIVE_TYPE.get($Gson$Preconditions.checkNotNull(type)); + return unwrapped == null ? type : unwrapped; + } + + static { + HashMap primToWrap = new HashMap(16); + HashMap wrapToPrim = new HashMap(16); + Primitives.add(primToWrap, wrapToPrim, Boolean.TYPE, Boolean.class); + Primitives.add(primToWrap, wrapToPrim, Byte.TYPE, Byte.class); + Primitives.add(primToWrap, wrapToPrim, Character.TYPE, Character.class); + Primitives.add(primToWrap, wrapToPrim, Double.TYPE, Double.class); + Primitives.add(primToWrap, wrapToPrim, Float.TYPE, Float.class); + Primitives.add(primToWrap, wrapToPrim, Integer.TYPE, Integer.class); + Primitives.add(primToWrap, wrapToPrim, Long.TYPE, Long.class); + Primitives.add(primToWrap, wrapToPrim, Short.TYPE, Short.class); + Primitives.add(primToWrap, wrapToPrim, Void.TYPE, Void.class); + PRIMITIVE_TO_WRAPPER_TYPE = Collections.unmodifiableMap(primToWrap); + WRAPPER_TO_PRIMITIVE_TYPE = Collections.unmodifiableMap(wrapToPrim); + } +} diff --git a/src/com/google/gson/internal/Streams.java b/src/com/google/gson/internal/Streams.java new file mode 100644 index 0000000..94cfd1f --- /dev/null +++ b/src/com/google/gson/internal/Streams.java @@ -0,0 +1,96 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.gson.internal; + +import com.google.gson.JsonElement; +import com.google.gson.JsonIOException; +import com.google.gson.JsonNull; +import com.google.gson.JsonParseException; +import com.google.gson.JsonSyntaxException; +import com.google.gson.internal.bind.TypeAdapters; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import com.google.gson.stream.MalformedJsonException; +import java.io.EOFException; +import java.io.IOException; +import java.io.Writer; + +public final class Streams { + public static JsonElement parse(JsonReader reader) throws JsonParseException { + boolean isEmpty = true; + try { + reader.peek(); + isEmpty = false; + return TypeAdapters.JSON_ELEMENT.read(reader); + } + catch (EOFException e) { + if (isEmpty) { + return JsonNull.INSTANCE; + } + throw new JsonSyntaxException(e); + } + catch (MalformedJsonException e) { + throw new JsonSyntaxException(e); + } + catch (IOException e) { + throw new JsonIOException(e); + } + catch (NumberFormatException e) { + throw new JsonSyntaxException(e); + } + } + + public static void write(JsonElement element, JsonWriter writer) throws IOException { + TypeAdapters.JSON_ELEMENT.write(writer, element); + } + + public static Writer writerForAppendable(Appendable appendable) { + return appendable instanceof Writer ? (Writer)appendable : new AppendableWriter(appendable); + } + + private static final class AppendableWriter + extends Writer { + private final Appendable appendable; + private final CurrentWrite currentWrite = new CurrentWrite(); + + private AppendableWriter(Appendable appendable) { + this.appendable = appendable; + } + + public void write(char[] chars, int offset, int length) throws IOException { + this.currentWrite.chars = chars; + this.appendable.append(this.currentWrite, offset, offset + length); + } + + public void write(int i) throws IOException { + this.appendable.append((char)i); + } + + public void flush() { + } + + public void close() { + } + + static class CurrentWrite + implements CharSequence { + char[] chars; + + CurrentWrite() { + } + + public int length() { + return this.chars.length; + } + + public char charAt(int i) { + return this.chars[i]; + } + + public CharSequence subSequence(int start, int end) { + return new String(this.chars, start, end - start); + } + } + } +} diff --git a/src/com/google/gson/internal/UnsafeAllocator.java b/src/com/google/gson/internal/UnsafeAllocator.java new file mode 100644 index 0000000..6b79a89 --- /dev/null +++ b/src/com/google/gson/internal/UnsafeAllocator.java @@ -0,0 +1,71 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.gson.internal; + +import java.io.ObjectInputStream; +import java.io.ObjectStreamClass; +import java.lang.reflect.Field; +import java.lang.reflect.Method; + +/* + * This class specifies class file version 49.0 but uses Java 6 signatures. Assumed Java 6. + */ +public abstract class UnsafeAllocator { + public abstract T newInstance(Class var1) throws Exception; + + public static UnsafeAllocator create() { + try { + Class unsafeClass = Class.forName("sun.misc.Unsafe"); + Field f = unsafeClass.getDeclaredField("theUnsafe"); + f.setAccessible(true); + final Object unsafe = f.get(null); + final Method allocateInstance = unsafeClass.getMethod("allocateInstance", Class.class); + return new UnsafeAllocator(){ + + @Override + public T newInstance(Class c) throws Exception { + return (T)allocateInstance.invoke(unsafe, c); + } + }; + } + catch (Exception ignored) { + try { + final Method newInstance = ObjectInputStream.class.getDeclaredMethod("newInstance", Class.class, Class.class); + newInstance.setAccessible(true); + return new UnsafeAllocator(){ + + @Override + public T newInstance(Class c) throws Exception { + return (T)newInstance.invoke(null, c, Object.class); + } + }; + } + catch (Exception ignored2) { + try { + Method getConstructorId = ObjectStreamClass.class.getDeclaredMethod("getConstructorId", Class.class); + getConstructorId.setAccessible(true); + final int constructorId = (Integer)getConstructorId.invoke(null, Object.class); + final Method newInstance = ObjectStreamClass.class.getDeclaredMethod("newInstance", Class.class, Integer.TYPE); + newInstance.setAccessible(true); + return new UnsafeAllocator(){ + + @Override + public T newInstance(Class c) throws Exception { + return (T)newInstance.invoke(null, c, constructorId); + } + }; + } + catch (Exception exception) { + return new UnsafeAllocator(){ + + @Override + public T newInstance(Class c) { + throw new UnsupportedOperationException("Cannot allocate " + c); + } + }; + } + } + } + } +} diff --git a/src/com/google/gson/internal/bind/ArrayTypeAdapter.java b/src/com/google/gson/internal/bind/ArrayTypeAdapter.java new file mode 100644 index 0000000..4cb3b47 --- /dev/null +++ b/src/com/google/gson/internal/bind/ArrayTypeAdapter.java @@ -0,0 +1,81 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.gson.internal.bind; + +import com.google.gson.Gson; +import com.google.gson.TypeAdapter; +import com.google.gson.TypeAdapterFactory; +import com.google.gson.internal.$Gson$Types; +import com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper; +import com.google.gson.reflect.TypeToken; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonToken; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; +import java.lang.reflect.Array; +import java.lang.reflect.GenericArrayType; +import java.lang.reflect.Type; +import java.util.ArrayList; + +/* + * This class specifies class file version 49.0 but uses Java 6 signatures. Assumed Java 6. + */ +public final class ArrayTypeAdapter +extends TypeAdapter { + public static final TypeAdapterFactory FACTORY = new TypeAdapterFactory(){ + + @Override + public TypeAdapter create(Gson gson, TypeToken typeToken) { + Type type = typeToken.getType(); + if (!(type instanceof GenericArrayType || type instanceof Class && ((Class)type).isArray())) { + return null; + } + Type componentType = $Gson$Types.getArrayComponentType(type); + TypeAdapter componentTypeAdapter = gson.getAdapter(TypeToken.get(componentType)); + return new ArrayTypeAdapter(gson, componentTypeAdapter, $Gson$Types.getRawType(componentType)); + } + }; + private final Class componentType; + private final TypeAdapter componentTypeAdapter; + + public ArrayTypeAdapter(Gson context, TypeAdapter componentTypeAdapter, Class componentType) { + this.componentTypeAdapter = new TypeAdapterRuntimeTypeWrapper(context, componentTypeAdapter, componentType); + this.componentType = componentType; + } + + @Override + public Object read(JsonReader in) throws IOException { + if (in.peek() == JsonToken.NULL) { + in.nextNull(); + return null; + } + ArrayList list = new ArrayList(); + in.beginArray(); + while (in.hasNext()) { + E instance = this.componentTypeAdapter.read(in); + list.add(instance); + } + in.endArray(); + Object array = Array.newInstance(this.componentType, list.size()); + for (int i = 0; i < list.size(); ++i) { + Array.set(array, i, list.get(i)); + } + return array; + } + + @Override + public void write(JsonWriter out, Object array) throws IOException { + if (array == null) { + out.nullValue(); + return; + } + out.beginArray(); + int length = Array.getLength(array); + for (int i = 0; i < length; ++i) { + Object value = Array.get(array, i); + this.componentTypeAdapter.write(out, value); + } + out.endArray(); + } +} diff --git a/src/com/google/gson/internal/bind/CollectionTypeAdapterFactory.java b/src/com/google/gson/internal/bind/CollectionTypeAdapterFactory.java new file mode 100644 index 0000000..0129abb --- /dev/null +++ b/src/com/google/gson/internal/bind/CollectionTypeAdapterFactory.java @@ -0,0 +1,88 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.gson.internal.bind; + +import com.google.gson.Gson; +import com.google.gson.TypeAdapter; +import com.google.gson.TypeAdapterFactory; +import com.google.gson.internal.$Gson$Types; +import com.google.gson.internal.ConstructorConstructor; +import com.google.gson.internal.ObjectConstructor; +import com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper; +import com.google.gson.reflect.TypeToken; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonToken; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; +import java.lang.reflect.Type; +import java.util.Collection; + +/* + * This class specifies class file version 49.0 but uses Java 6 signatures. Assumed Java 6. + */ +public final class CollectionTypeAdapterFactory +implements TypeAdapterFactory { + private final ConstructorConstructor constructorConstructor; + + public CollectionTypeAdapterFactory(ConstructorConstructor constructorConstructor) { + this.constructorConstructor = constructorConstructor; + } + + @Override + public TypeAdapter create(Gson gson, TypeToken typeToken) { + Type type = typeToken.getType(); + Class rawType = typeToken.getRawType(); + if (!Collection.class.isAssignableFrom(rawType)) { + return null; + } + Type elementType = $Gson$Types.getCollectionElementType(type, rawType); + TypeAdapter elementTypeAdapter = gson.getAdapter(TypeToken.get(elementType)); + ObjectConstructor constructor = this.constructorConstructor.get(typeToken); + Adapter result = new Adapter(gson, elementType, elementTypeAdapter, constructor); + return result; + } + + /* + * This class specifies class file version 49.0 but uses Java 6 signatures. Assumed Java 6. + */ + private static final class Adapter + extends TypeAdapter> { + private final TypeAdapter elementTypeAdapter; + private final ObjectConstructor> constructor; + + public Adapter(Gson context, Type elementType, TypeAdapter elementTypeAdapter, ObjectConstructor> constructor) { + this.elementTypeAdapter = new TypeAdapterRuntimeTypeWrapper(context, elementTypeAdapter, elementType); + this.constructor = constructor; + } + + @Override + public Collection read(JsonReader in) throws IOException { + if (in.peek() == JsonToken.NULL) { + in.nextNull(); + return null; + } + Collection collection = this.constructor.construct(); + in.beginArray(); + while (in.hasNext()) { + E instance = this.elementTypeAdapter.read(in); + collection.add(instance); + } + in.endArray(); + return collection; + } + + @Override + public void write(JsonWriter out, Collection collection) throws IOException { + if (collection == null) { + out.nullValue(); + return; + } + out.beginArray(); + for (E element : collection) { + this.elementTypeAdapter.write(out, element); + } + out.endArray(); + } + } +} diff --git a/src/com/google/gson/internal/bind/DateTypeAdapter.java b/src/com/google/gson/internal/bind/DateTypeAdapter.java new file mode 100644 index 0000000..84274c4 --- /dev/null +++ b/src/com/google/gson/internal/bind/DateTypeAdapter.java @@ -0,0 +1,81 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.gson.internal.bind; + +import com.google.gson.Gson; +import com.google.gson.JsonSyntaxException; +import com.google.gson.TypeAdapter; +import com.google.gson.TypeAdapterFactory; +import com.google.gson.reflect.TypeToken; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonToken; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Locale; +import java.util.TimeZone; + +/* + * This class specifies class file version 49.0 but uses Java 6 signatures. Assumed Java 6. + */ +public final class DateTypeAdapter +extends TypeAdapter { + public static final TypeAdapterFactory FACTORY = new TypeAdapterFactory(){ + + @Override + public TypeAdapter create(Gson gson, TypeToken typeToken) { + return typeToken.getRawType() == Date.class ? new DateTypeAdapter() : null; + } + }; + private final DateFormat enUsFormat = DateFormat.getDateTimeInstance(2, 2, Locale.US); + private final DateFormat localFormat = DateFormat.getDateTimeInstance(2, 2); + private final DateFormat iso8601Format = DateTypeAdapter.buildIso8601Format(); + + private static DateFormat buildIso8601Format() { + SimpleDateFormat iso8601Format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.US); + iso8601Format.setTimeZone(TimeZone.getTimeZone("UTC")); + return iso8601Format; + } + + @Override + public Date read(JsonReader in) throws IOException { + if (in.peek() == JsonToken.NULL) { + in.nextNull(); + return null; + } + return this.deserializeToDate(in.nextString()); + } + + private synchronized Date deserializeToDate(String json) { + try { + return this.localFormat.parse(json); + } + catch (ParseException ignored) { + try { + return this.enUsFormat.parse(json); + } + catch (ParseException ignored2) { + try { + return this.iso8601Format.parse(json); + } + catch (ParseException e) { + throw new JsonSyntaxException(json, e); + } + } + } + } + + @Override + public synchronized void write(JsonWriter out, Date value) throws IOException { + if (value == null) { + out.nullValue(); + return; + } + String dateFormatAsString = this.enUsFormat.format(value); + out.value(dateFormatAsString); + } +} diff --git a/src/com/google/gson/internal/bind/JsonTreeReader.java b/src/com/google/gson/internal/bind/JsonTreeReader.java new file mode 100644 index 0000000..0f999cf --- /dev/null +++ b/src/com/google/gson/internal/bind/JsonTreeReader.java @@ -0,0 +1,211 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.gson.internal.bind; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonNull; +import com.google.gson.JsonObject; +import com.google.gson.JsonPrimitive; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonToken; +import java.io.IOException; +import java.io.Reader; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +public final class JsonTreeReader +extends JsonReader { + private static final Reader UNREADABLE_READER = new Reader(){ + + public int read(char[] buffer, int offset, int count) throws IOException { + throw new AssertionError(); + } + + public void close() throws IOException { + throw new AssertionError(); + } + }; + private static final Object SENTINEL_CLOSED = new Object(); + private final List stack = new ArrayList(); + + public JsonTreeReader(JsonElement element) { + super(UNREADABLE_READER); + this.stack.add(element); + } + + public void beginArray() throws IOException { + this.expect(JsonToken.BEGIN_ARRAY); + JsonArray array = (JsonArray)this.peekStack(); + this.stack.add(array.iterator()); + } + + public void endArray() throws IOException { + this.expect(JsonToken.END_ARRAY); + this.popStack(); + this.popStack(); + } + + public void beginObject() throws IOException { + this.expect(JsonToken.BEGIN_OBJECT); + JsonObject object = (JsonObject)this.peekStack(); + this.stack.add(object.entrySet().iterator()); + } + + public void endObject() throws IOException { + this.expect(JsonToken.END_OBJECT); + this.popStack(); + this.popStack(); + } + + public boolean hasNext() throws IOException { + JsonToken token = this.peek(); + return token != JsonToken.END_OBJECT && token != JsonToken.END_ARRAY; + } + + public JsonToken peek() throws IOException { + if (this.stack.isEmpty()) { + return JsonToken.END_DOCUMENT; + } + Object o = this.peekStack(); + if (o instanceof Iterator) { + boolean isObject = this.stack.get(this.stack.size() - 2) instanceof JsonObject; + Iterator iterator = (Iterator)o; + if (iterator.hasNext()) { + if (isObject) { + return JsonToken.NAME; + } + this.stack.add(iterator.next()); + return this.peek(); + } + return isObject ? JsonToken.END_OBJECT : JsonToken.END_ARRAY; + } + if (o instanceof JsonObject) { + return JsonToken.BEGIN_OBJECT; + } + if (o instanceof JsonArray) { + return JsonToken.BEGIN_ARRAY; + } + if (o instanceof JsonPrimitive) { + JsonPrimitive primitive = (JsonPrimitive)o; + if (primitive.isString()) { + return JsonToken.STRING; + } + if (primitive.isBoolean()) { + return JsonToken.BOOLEAN; + } + if (primitive.isNumber()) { + return JsonToken.NUMBER; + } + throw new AssertionError(); + } + if (o instanceof JsonNull) { + return JsonToken.NULL; + } + if (o == SENTINEL_CLOSED) { + throw new IllegalStateException("JsonReader is closed"); + } + throw new AssertionError(); + } + + private Object peekStack() { + return this.stack.get(this.stack.size() - 1); + } + + private Object popStack() { + return this.stack.remove(this.stack.size() - 1); + } + + private void expect(JsonToken expected) throws IOException { + if (this.peek() != expected) { + throw new IllegalStateException("Expected " + (Object)((Object)expected) + " but was " + (Object)((Object)this.peek())); + } + } + + public String nextName() throws IOException { + this.expect(JsonToken.NAME); + Iterator i = (Iterator)this.peekStack(); + Map.Entry entry = (Map.Entry)i.next(); + this.stack.add(entry.getValue()); + return (String)entry.getKey(); + } + + public String nextString() throws IOException { + JsonToken token = this.peek(); + if (token != JsonToken.STRING && token != JsonToken.NUMBER) { + throw new IllegalStateException("Expected " + (Object)((Object)JsonToken.STRING) + " but was " + (Object)((Object)token)); + } + return ((JsonPrimitive)this.popStack()).getAsString(); + } + + public boolean nextBoolean() throws IOException { + this.expect(JsonToken.BOOLEAN); + return ((JsonPrimitive)this.popStack()).getAsBoolean(); + } + + public void nextNull() throws IOException { + this.expect(JsonToken.NULL); + this.popStack(); + } + + public double nextDouble() throws IOException { + JsonToken token = this.peek(); + if (token != JsonToken.NUMBER && token != JsonToken.STRING) { + throw new IllegalStateException("Expected " + (Object)((Object)JsonToken.NUMBER) + " but was " + (Object)((Object)token)); + } + double result = ((JsonPrimitive)this.peekStack()).getAsDouble(); + if (!this.isLenient() && (Double.isNaN(result) || Double.isInfinite(result))) { + throw new NumberFormatException("JSON forbids NaN and infinities: " + result); + } + this.popStack(); + return result; + } + + public long nextLong() throws IOException { + JsonToken token = this.peek(); + if (token != JsonToken.NUMBER && token != JsonToken.STRING) { + throw new IllegalStateException("Expected " + (Object)((Object)JsonToken.NUMBER) + " but was " + (Object)((Object)token)); + } + long result = ((JsonPrimitive)this.peekStack()).getAsLong(); + this.popStack(); + return result; + } + + public int nextInt() throws IOException { + JsonToken token = this.peek(); + if (token != JsonToken.NUMBER && token != JsonToken.STRING) { + throw new IllegalStateException("Expected " + (Object)((Object)JsonToken.NUMBER) + " but was " + (Object)((Object)token)); + } + int result = ((JsonPrimitive)this.peekStack()).getAsInt(); + this.popStack(); + return result; + } + + public void close() throws IOException { + this.stack.clear(); + this.stack.add(SENTINEL_CLOSED); + } + + public void skipValue() throws IOException { + if (this.peek() == JsonToken.NAME) { + this.nextName(); + } else { + this.popStack(); + } + } + + public String toString() { + return this.getClass().getSimpleName(); + } + + public void promoteNameToValue() throws IOException { + this.expect(JsonToken.NAME); + Iterator i = (Iterator)this.peekStack(); + Map.Entry entry = (Map.Entry)i.next(); + this.stack.add(entry.getValue()); + this.stack.add(new JsonPrimitive((String)entry.getKey())); + } +} diff --git a/src/com/google/gson/internal/bind/JsonTreeWriter.java b/src/com/google/gson/internal/bind/JsonTreeWriter.java new file mode 100644 index 0000000..8ffb081 --- /dev/null +++ b/src/com/google/gson/internal/bind/JsonTreeWriter.java @@ -0,0 +1,174 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.gson.internal.bind; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonNull; +import com.google.gson.JsonObject; +import com.google.gson.JsonPrimitive; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; +import java.io.Writer; +import java.util.ArrayList; +import java.util.List; + +public final class JsonTreeWriter +extends JsonWriter { + private static final Writer UNWRITABLE_WRITER = new Writer(){ + + public void write(char[] buffer, int offset, int counter) { + throw new AssertionError(); + } + + public void flush() throws IOException { + throw new AssertionError(); + } + + public void close() throws IOException { + throw new AssertionError(); + } + }; + private static final JsonPrimitive SENTINEL_CLOSED = new JsonPrimitive("closed"); + private final List stack = new ArrayList(); + private String pendingName; + private JsonElement product = JsonNull.INSTANCE; + + public JsonTreeWriter() { + super(UNWRITABLE_WRITER); + } + + public JsonElement get() { + if (!this.stack.isEmpty()) { + throw new IllegalStateException("Expected one JSON element but was " + this.stack); + } + return this.product; + } + + private JsonElement peek() { + return this.stack.get(this.stack.size() - 1); + } + + private void put(JsonElement value) { + if (this.pendingName != null) { + if (!value.isJsonNull() || this.getSerializeNulls()) { + JsonObject object = (JsonObject)this.peek(); + object.add(this.pendingName, value); + } + this.pendingName = null; + } else if (this.stack.isEmpty()) { + this.product = value; + } else { + JsonElement element = this.peek(); + if (element instanceof JsonArray) { + ((JsonArray)element).add(value); + } else { + throw new IllegalStateException(); + } + } + } + + public JsonWriter beginArray() throws IOException { + JsonArray array = new JsonArray(); + this.put(array); + this.stack.add(array); + return this; + } + + public JsonWriter endArray() throws IOException { + if (this.stack.isEmpty() || this.pendingName != null) { + throw new IllegalStateException(); + } + JsonElement element = this.peek(); + if (element instanceof JsonArray) { + this.stack.remove(this.stack.size() - 1); + return this; + } + throw new IllegalStateException(); + } + + public JsonWriter beginObject() throws IOException { + JsonObject object = new JsonObject(); + this.put(object); + this.stack.add(object); + return this; + } + + public JsonWriter endObject() throws IOException { + if (this.stack.isEmpty() || this.pendingName != null) { + throw new IllegalStateException(); + } + JsonElement element = this.peek(); + if (element instanceof JsonObject) { + this.stack.remove(this.stack.size() - 1); + return this; + } + throw new IllegalStateException(); + } + + public JsonWriter name(String name) throws IOException { + if (this.stack.isEmpty() || this.pendingName != null) { + throw new IllegalStateException(); + } + JsonElement element = this.peek(); + if (element instanceof JsonObject) { + this.pendingName = name; + return this; + } + throw new IllegalStateException(); + } + + public JsonWriter value(String value) throws IOException { + if (value == null) { + return this.nullValue(); + } + this.put(new JsonPrimitive(value)); + return this; + } + + public JsonWriter nullValue() throws IOException { + this.put(JsonNull.INSTANCE); + return this; + } + + public JsonWriter value(boolean value) throws IOException { + this.put(new JsonPrimitive(value)); + return this; + } + + public JsonWriter value(double value) throws IOException { + if (!this.isLenient() && (Double.isNaN(value) || Double.isInfinite(value))) { + throw new IllegalArgumentException("JSON forbids NaN and infinities: " + value); + } + this.put(new JsonPrimitive(value)); + return this; + } + + public JsonWriter value(long value) throws IOException { + this.put(new JsonPrimitive(value)); + return this; + } + + public JsonWriter value(Number value) throws IOException { + double d; + if (value == null) { + return this.nullValue(); + } + if (!this.isLenient() && (Double.isNaN(d = value.doubleValue()) || Double.isInfinite(d))) { + throw new IllegalArgumentException("JSON forbids NaN and infinities: " + value); + } + this.put(new JsonPrimitive(value)); + return this; + } + + public void flush() throws IOException { + } + + public void close() throws IOException { + if (!this.stack.isEmpty()) { + throw new IOException("Incomplete document"); + } + this.stack.add(SENTINEL_CLOSED); + } +} diff --git a/src/com/google/gson/internal/bind/MapTypeAdapterFactory.java b/src/com/google/gson/internal/bind/MapTypeAdapterFactory.java new file mode 100644 index 0000000..afdd323 --- /dev/null +++ b/src/com/google/gson/internal/bind/MapTypeAdapterFactory.java @@ -0,0 +1,176 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.gson.internal.bind; + +import com.google.gson.Gson; +import com.google.gson.JsonElement; +import com.google.gson.JsonPrimitive; +import com.google.gson.JsonSyntaxException; +import com.google.gson.TypeAdapter; +import com.google.gson.TypeAdapterFactory; +import com.google.gson.internal.$Gson$Types; +import com.google.gson.internal.ConstructorConstructor; +import com.google.gson.internal.JsonReaderInternalAccess; +import com.google.gson.internal.ObjectConstructor; +import com.google.gson.internal.Streams; +import com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper; +import com.google.gson.internal.bind.TypeAdapters; +import com.google.gson.reflect.TypeToken; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonToken; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; +import java.lang.reflect.Type; +import java.util.ArrayList; +import java.util.Map; + +/* + * This class specifies class file version 49.0 but uses Java 6 signatures. Assumed Java 6. + */ +public final class MapTypeAdapterFactory +implements TypeAdapterFactory { + private final ConstructorConstructor constructorConstructor; + private final boolean complexMapKeySerialization; + + public MapTypeAdapterFactory(ConstructorConstructor constructorConstructor, boolean complexMapKeySerialization) { + this.constructorConstructor = constructorConstructor; + this.complexMapKeySerialization = complexMapKeySerialization; + } + + @Override + public TypeAdapter create(Gson gson, TypeToken typeToken) { + Type type = typeToken.getType(); + Class rawType = typeToken.getRawType(); + if (!Map.class.isAssignableFrom(rawType)) { + return null; + } + Class rawTypeOfSrc = $Gson$Types.getRawType(type); + Type[] keyAndValueTypes = $Gson$Types.getMapKeyAndValueTypes(type, rawTypeOfSrc); + TypeAdapter keyAdapter = this.getKeyAdapter(gson, keyAndValueTypes[0]); + TypeAdapter valueAdapter = gson.getAdapter(TypeToken.get(keyAndValueTypes[1])); + ObjectConstructor constructor = this.constructorConstructor.get(typeToken); + Adapter result = new Adapter(gson, keyAndValueTypes[0], keyAdapter, keyAndValueTypes[1], valueAdapter, constructor); + return result; + } + + private TypeAdapter getKeyAdapter(Gson context, Type keyType) { + return keyType == Boolean.TYPE || keyType == Boolean.class ? TypeAdapters.BOOLEAN_AS_STRING : context.getAdapter(TypeToken.get(keyType)); + } + + /* + * This class specifies class file version 49.0 but uses Java 6 signatures. Assumed Java 6. + */ + private final class Adapter + extends TypeAdapter> { + private final TypeAdapter keyTypeAdapter; + private final TypeAdapter valueTypeAdapter; + private final ObjectConstructor> constructor; + + public Adapter(Gson context, Type keyType, TypeAdapter keyTypeAdapter, Type valueType, TypeAdapter valueTypeAdapter, ObjectConstructor> constructor) { + this.keyTypeAdapter = new TypeAdapterRuntimeTypeWrapper(context, keyTypeAdapter, keyType); + this.valueTypeAdapter = new TypeAdapterRuntimeTypeWrapper(context, valueTypeAdapter, valueType); + this.constructor = constructor; + } + + @Override + public Map read(JsonReader in) throws IOException { + JsonToken peek = in.peek(); + if (peek == JsonToken.NULL) { + in.nextNull(); + return null; + } + Map map = this.constructor.construct(); + if (peek == JsonToken.BEGIN_ARRAY) { + in.beginArray(); + while (in.hasNext()) { + in.beginArray(); + K key = this.keyTypeAdapter.read(in); + V value = this.valueTypeAdapter.read(in); + V replaced = map.put(key, value); + if (replaced != null) { + throw new JsonSyntaxException("duplicate key: " + key); + } + in.endArray(); + } + in.endArray(); + } else { + in.beginObject(); + while (in.hasNext()) { + V value; + JsonReaderInternalAccess.INSTANCE.promoteNameToValue(in); + K key = this.keyTypeAdapter.read(in); + V replaced = map.put(key, value = this.valueTypeAdapter.read(in)); + if (replaced == null) continue; + throw new JsonSyntaxException("duplicate key: " + key); + } + in.endObject(); + } + return map; + } + + @Override + public void write(JsonWriter out, Map map) throws IOException { + if (map == null) { + out.nullValue(); + return; + } + if (!MapTypeAdapterFactory.this.complexMapKeySerialization) { + out.beginObject(); + for (Map.Entry entry : map.entrySet()) { + out.name(String.valueOf(entry.getKey())); + this.valueTypeAdapter.write(out, entry.getValue()); + } + out.endObject(); + return; + } + boolean hasComplexKeys = false; + ArrayList keys = new ArrayList(map.size()); + ArrayList values = new ArrayList(map.size()); + for (Map.Entry entry : map.entrySet()) { + JsonElement keyElement = this.keyTypeAdapter.toJsonTree(entry.getKey()); + keys.add(keyElement); + values.add(entry.getValue()); + hasComplexKeys |= keyElement.isJsonArray() || keyElement.isJsonObject(); + } + if (hasComplexKeys) { + out.beginArray(); + for (int i = 0; i < keys.size(); ++i) { + out.beginArray(); + Streams.write((JsonElement)keys.get(i), out); + this.valueTypeAdapter.write(out, values.get(i)); + out.endArray(); + } + out.endArray(); + } else { + out.beginObject(); + for (int i = 0; i < keys.size(); ++i) { + JsonElement keyElement = (JsonElement)keys.get(i); + out.name(this.keyToString(keyElement)); + this.valueTypeAdapter.write(out, values.get(i)); + } + out.endObject(); + } + } + + private String keyToString(JsonElement keyElement) { + if (keyElement.isJsonPrimitive()) { + JsonPrimitive primitive = keyElement.getAsJsonPrimitive(); + if (primitive.isNumber()) { + return String.valueOf(primitive.getAsNumber()); + } + if (primitive.isBoolean()) { + return Boolean.toString(primitive.getAsBoolean()); + } + if (primitive.isString()) { + return primitive.getAsString(); + } + throw new AssertionError(); + } + if (keyElement.isJsonNull()) { + return "null"; + } + throw new AssertionError(); + } + } +} diff --git a/src/com/google/gson/internal/bind/ObjectTypeAdapter.java b/src/com/google/gson/internal/bind/ObjectTypeAdapter.java new file mode 100644 index 0000000..fdb697c --- /dev/null +++ b/src/com/google/gson/internal/bind/ObjectTypeAdapter.java @@ -0,0 +1,91 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.gson.internal.bind; + +import com.google.gson.Gson; +import com.google.gson.TypeAdapter; +import com.google.gson.TypeAdapterFactory; +import com.google.gson.internal.LinkedTreeMap; +import com.google.gson.reflect.TypeToken; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonToken; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; +import java.util.ArrayList; + +/* + * This class specifies class file version 49.0 but uses Java 6 signatures. Assumed Java 6. + */ +public final class ObjectTypeAdapter +extends TypeAdapter { + public static final TypeAdapterFactory FACTORY = new TypeAdapterFactory(){ + + @Override + public TypeAdapter create(Gson gson, TypeToken type) { + if (type.getRawType() == Object.class) { + return new ObjectTypeAdapter(gson); + } + return null; + } + }; + private final Gson gson; + + private ObjectTypeAdapter(Gson gson) { + this.gson = gson; + } + + @Override + public Object read(JsonReader in) throws IOException { + JsonToken token = in.peek(); + switch (token) { + case BEGIN_ARRAY: { + ArrayList list = new ArrayList(); + in.beginArray(); + while (in.hasNext()) { + list.add(this.read(in)); + } + in.endArray(); + return list; + } + case BEGIN_OBJECT: { + LinkedTreeMap map = new LinkedTreeMap(); + in.beginObject(); + while (in.hasNext()) { + map.put(in.nextName(), this.read(in)); + } + in.endObject(); + return map; + } + case STRING: { + return in.nextString(); + } + case NUMBER: { + return in.nextDouble(); + } + case BOOLEAN: { + return in.nextBoolean(); + } + case NULL: { + in.nextNull(); + return null; + } + } + throw new IllegalStateException(); + } + + @Override + public void write(JsonWriter out, Object value) throws IOException { + if (value == null) { + out.nullValue(); + return; + } + TypeAdapter typeAdapter = this.gson.getAdapter(value.getClass()); + if (typeAdapter instanceof ObjectTypeAdapter) { + out.beginObject(); + out.endObject(); + return; + } + typeAdapter.write(out, value); + } +} diff --git a/src/com/google/gson/internal/bind/ReflectiveTypeAdapterFactory.java b/src/com/google/gson/internal/bind/ReflectiveTypeAdapterFactory.java new file mode 100644 index 0000000..d78f5e5 --- /dev/null +++ b/src/com/google/gson/internal/bind/ReflectiveTypeAdapterFactory.java @@ -0,0 +1,189 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.gson.internal.bind; + +import com.google.gson.FieldNamingStrategy; +import com.google.gson.Gson; +import com.google.gson.JsonSyntaxException; +import com.google.gson.TypeAdapter; +import com.google.gson.TypeAdapterFactory; +import com.google.gson.annotations.SerializedName; +import com.google.gson.internal.$Gson$Types; +import com.google.gson.internal.ConstructorConstructor; +import com.google.gson.internal.Excluder; +import com.google.gson.internal.ObjectConstructor; +import com.google.gson.internal.Primitives; +import com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper; +import com.google.gson.reflect.TypeToken; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonToken; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; +import java.lang.reflect.Field; +import java.lang.reflect.Type; +import java.util.LinkedHashMap; +import java.util.Map; + +/* + * This class specifies class file version 49.0 but uses Java 6 signatures. Assumed Java 6. + */ +public final class ReflectiveTypeAdapterFactory +implements TypeAdapterFactory { + private final ConstructorConstructor constructorConstructor; + private final FieldNamingStrategy fieldNamingPolicy; + private final Excluder excluder; + + public ReflectiveTypeAdapterFactory(ConstructorConstructor constructorConstructor, FieldNamingStrategy fieldNamingPolicy, Excluder excluder) { + this.constructorConstructor = constructorConstructor; + this.fieldNamingPolicy = fieldNamingPolicy; + this.excluder = excluder; + } + + public boolean excludeField(Field f, boolean serialize) { + return !this.excluder.excludeClass(f.getType(), serialize) && !this.excluder.excludeField(f, serialize); + } + + private String getFieldName(Field f) { + SerializedName serializedName = f.getAnnotation(SerializedName.class); + return serializedName == null ? this.fieldNamingPolicy.translateName(f) : serializedName.value(); + } + + @Override + public TypeAdapter create(Gson gson, TypeToken type) { + Class raw = type.getRawType(); + if (!Object.class.isAssignableFrom(raw)) { + return null; + } + ObjectConstructor constructor = this.constructorConstructor.get(type); + return new Adapter(constructor, this.getBoundFields(gson, type, raw)); + } + + private BoundField createBoundField(final Gson context, final Field field, String name, final TypeToken fieldType, boolean serialize, boolean deserialize) { + final boolean isPrimitive = Primitives.isPrimitive(fieldType.getRawType()); + return new BoundField(name, serialize, deserialize){ + final TypeAdapter typeAdapter; + { + super(x0, x1, x2); + this.typeAdapter = context.getAdapter(fieldType); + } + + void write(JsonWriter writer, Object value) throws IOException, IllegalAccessException { + Object fieldValue = field.get(value); + TypeAdapterRuntimeTypeWrapper t = new TypeAdapterRuntimeTypeWrapper(context, this.typeAdapter, fieldType.getType()); + ((TypeAdapter)t).write(writer, fieldValue); + } + + void read(JsonReader reader, Object value) throws IOException, IllegalAccessException { + Object fieldValue = this.typeAdapter.read(reader); + if (fieldValue != null || !isPrimitive) { + field.set(value, fieldValue); + } + } + }; + } + + private Map getBoundFields(Gson context, TypeToken type, Class raw) { + LinkedHashMap result = new LinkedHashMap(); + if (raw.isInterface()) { + return result; + } + Type declaredType = type.getType(); + while (raw != Object.class) { + Field[] fields; + for (Field field : fields = raw.getDeclaredFields()) { + boolean serialize = this.excludeField(field, true); + boolean deserialize = this.excludeField(field, false); + if (!serialize && !deserialize) continue; + field.setAccessible(true); + Type fieldType = $Gson$Types.resolve(type.getType(), raw, field.getGenericType()); + BoundField boundField = this.createBoundField(context, field, this.getFieldName(field), TypeToken.get(fieldType), serialize, deserialize); + BoundField previous = result.put(boundField.name, boundField); + if (previous == null) continue; + throw new IllegalArgumentException(declaredType + " declares multiple JSON fields named " + previous.name); + } + type = TypeToken.get($Gson$Types.resolve(type.getType(), raw, raw.getGenericSuperclass())); + raw = type.getRawType(); + } + return result; + } + + /* + * This class specifies class file version 49.0 but uses Java 6 signatures. Assumed Java 6. + */ + public static final class Adapter + extends TypeAdapter { + private final ObjectConstructor constructor; + private final Map boundFields; + + private Adapter(ObjectConstructor constructor, Map boundFields) { + this.constructor = constructor; + this.boundFields = boundFields; + } + + @Override + public T read(JsonReader in) throws IOException { + if (in.peek() == JsonToken.NULL) { + in.nextNull(); + return null; + } + T instance = this.constructor.construct(); + try { + in.beginObject(); + while (in.hasNext()) { + String name = in.nextName(); + BoundField field = this.boundFields.get(name); + if (field == null || !field.deserialized) { + in.skipValue(); + continue; + } + field.read(in, instance); + } + } + catch (IllegalStateException e) { + throw new JsonSyntaxException(e); + } + catch (IllegalAccessException e) { + throw new AssertionError((Object)e); + } + in.endObject(); + return instance; + } + + @Override + public void write(JsonWriter out, T value) throws IOException { + if (value == null) { + out.nullValue(); + return; + } + out.beginObject(); + try { + for (BoundField boundField : this.boundFields.values()) { + if (!boundField.serialized) continue; + out.name(boundField.name); + boundField.write(out, value); + } + } + catch (IllegalAccessException e) { + throw new AssertionError(); + } + out.endObject(); + } + } + + static abstract class BoundField { + final String name; + final boolean serialized; + final boolean deserialized; + + protected BoundField(String name, boolean serialized, boolean deserialized) { + this.name = name; + this.serialized = serialized; + this.deserialized = deserialized; + } + + abstract void write(JsonWriter var1, Object var2) throws IOException, IllegalAccessException; + + abstract void read(JsonReader var1, Object var2) throws IOException, IllegalAccessException; + } +} diff --git a/src/com/google/gson/internal/bind/SqlDateTypeAdapter.java b/src/com/google/gson/internal/bind/SqlDateTypeAdapter.java new file mode 100644 index 0000000..e2a8eff --- /dev/null +++ b/src/com/google/gson/internal/bind/SqlDateTypeAdapter.java @@ -0,0 +1,53 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.gson.internal.bind; + +import com.google.gson.Gson; +import com.google.gson.JsonSyntaxException; +import com.google.gson.TypeAdapter; +import com.google.gson.TypeAdapterFactory; +import com.google.gson.reflect.TypeToken; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonToken; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; +import java.sql.Date; +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; + +/* + * This class specifies class file version 49.0 but uses Java 6 signatures. Assumed Java 6. + */ +public final class SqlDateTypeAdapter +extends TypeAdapter { + public static final TypeAdapterFactory FACTORY = new TypeAdapterFactory(){ + + @Override + public TypeAdapter create(Gson gson, TypeToken typeToken) { + return typeToken.getRawType() == Date.class ? new SqlDateTypeAdapter() : null; + } + }; + private final DateFormat format = new SimpleDateFormat("MMM d, yyyy"); + + @Override + public synchronized Date read(JsonReader in) throws IOException { + if (in.peek() == JsonToken.NULL) { + in.nextNull(); + return null; + } + try { + long utilDate = this.format.parse(in.nextString()).getTime(); + return new Date(utilDate); + } + catch (ParseException e) { + throw new JsonSyntaxException(e); + } + } + + @Override + public synchronized void write(JsonWriter out, Date value) throws IOException { + out.value(value == null ? null : this.format.format(value)); + } +} diff --git a/src/com/google/gson/internal/bind/TimeTypeAdapter.java b/src/com/google/gson/internal/bind/TimeTypeAdapter.java new file mode 100644 index 0000000..bcb5163 --- /dev/null +++ b/src/com/google/gson/internal/bind/TimeTypeAdapter.java @@ -0,0 +1,54 @@ +/* + * Decompiled with CFR 0.152. + */ +package com.google.gson.internal.bind; + +import com.google.gson.Gson; +import com.google.gson.JsonSyntaxException; +import com.google.gson.TypeAdapter; +import com.google.gson.TypeAdapterFactory; +import com.google.gson.reflect.TypeToken; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonToken; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; +import java.sql.Time; +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; + +/* + * This class specifies class file version 49.0 but uses Java 6 signatures. Assumed Java 6. + */ +public final class TimeTypeAdapter +extends TypeAdapter

    By>$WYL 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