From be139a2dd1a7b10424b88c4ba40eacc05691d264 Mon Sep 17 00:00:00 2001 From: Ari Archer Date: Tue, 23 Jan 2024 19:19:19 +0200 Subject: [PATCH] [docx] split commit for file 5600 Signed-off-by: Ari Archer --- .../TweetypieContentFeaturesProvider.docx | Bin 0 -> 37927 bytes .../TweetypieContentFeaturesProvider.scala | 114 ---- .../twitter/timelineranker/visibility/BUILD | 17 - .../timelineranker/visibility/BUILD.docx | Bin 0 -> 36883 bytes .../visibility/FollowGraphDataProvider.docx | Bin 0 -> 37023 bytes .../visibility/FollowGraphDataProvider.scala | 25 - .../RealGraphFollowGraphDataProvider.docx | Bin 0 -> 38603 bytes .../RealGraphFollowGraphDataProvider.scala | 134 ---- .../SgsFollowGraphDataProvider.docx | Bin 0 -> 39018 bytes .../SgsFollowGraphDataProvider.scala | 266 -------- .../earlybird_ranking/earlybird_ranking/BUILD | 8 - .../earlybird_ranking/BUILD.docx | Bin 0 -> 36754 bytes .../earlybird_ranking/common/BUILD | 24 - .../earlybird_ranking/common/BUILD.docx | Bin 0 -> 36917 bytes .../EarlybirdTrainingConfiguration.docx | Bin 0 -> 39803 bytes .../EarlybirdTrainingConfiguration.scala | 271 -------- .../EarlybirdTrainingRecapConfiguration.docx | Bin 0 -> 37010 bytes .../EarlybirdTrainingRecapConfiguration.scala | 17 - ...arlybirdTrainingRectweetConfiguration.docx | Bin 0 -> 37998 bytes ...rlybirdTrainingRectweetConfiguration.scala | 100 --- .../earlybird_ranking/model_evaluation/BUILD | 36 -- .../model_evaluation/BUILD.docx | Bin 0 -> 37107 bytes .../EarlybirdEvaluationMetric.docx | Bin 0 -> 38716 bytes .../EarlybirdEvaluationMetric.scala | 203 ------ .../EarlybirdModelEvaluationJob.docx | Bin 0 -> 39447 bytes .../EarlybirdModelEvaluationJob.scala | 214 ------- .../training_data_generation/BUILD | 89 --- .../training_data_generation/BUILD.docx | Bin 0 -> 37308 bytes .../EarlybirdExampleSampler.docx | Bin 0 -> 37665 bytes .../EarlybirdExampleSampler.scala | 65 -- .../EarlybirdStatsJob.docx | Bin 0 -> 37612 bytes .../EarlybirdStatsJob.scala | 63 -- .../EarlybirdTrainingDataJob.docx | Bin 0 -> 38142 bytes .../EarlybirdTrainingDataJob.scala | 92 --- .../aggregation_framework/AggregateGroup.docx | Bin 0 -> 38498 bytes .../AggregateGroup.scala | 124 ---- .../AggregateSource.docx | Bin 0 -> 36807 bytes .../AggregateSource.scala | 9 - .../aggregation_framework/AggregateStore.docx | Bin 0 -> 36740 bytes .../AggregateStore.scala | 5 - .../AggregationConfig.docx | Bin 0 -> 36749 bytes .../AggregationConfig.scala | 5 - .../aggregation_framework/AggregationKey.docx | Bin 0 -> 37683 bytes .../AggregationKey.scala | 50 -- .../ml_util/aggregation_framework/BUILD | 101 --- .../ml_util/aggregation_framework/BUILD.docx | Bin 0 -> 37335 bytes .../DataRecordAggregationMonoid.docx | Bin 0 -> 37769 bytes .../DataRecordAggregationMonoid.scala | 92 --- .../aggregation_framework/KeyedRecord.docx | Bin 0 -> 37016 bytes .../aggregation_framework/KeyedRecord.scala | 27 - .../OfflineAggregateInjections.docx | Bin 0 -> 37311 bytes .../OfflineAggregateInjections.scala | 46 -- .../OfflineAggregateSource.docx | Bin 0 -> 37124 bytes .../OfflineAggregateSource.scala | 21 - .../OfflineAggregateStore.docx | Bin 0 -> 38263 bytes .../OfflineAggregateStore.scala | 128 ---- .../ml_util/aggregation_framework/README.docx | Bin 0 -> 37681 bytes .../ml_util/aggregation_framework/README.md | 39 -- .../aggregation_framework/StoreConfig.docx | Bin 0 -> 37735 bytes .../aggregation_framework/StoreConfig.scala | 68 -- .../aggregation_framework/StoreRegister.docx | Bin 0 -> 36873 bytes .../aggregation_framework/StoreRegister.scala | 13 - .../TypedAggregateGroup.docx | Bin 0 -> 43191 bytes .../TypedAggregateGroup.scala | 486 --------------- .../ml_util/aggregation_framework/Utils.docx | Bin 0 -> 38295 bytes .../ml_util/aggregation_framework/Utils.scala | 122 ---- .../conversion/AggregatesV2Adapter.docx | Bin 0 -> 38785 bytes .../conversion/AggregatesV2Adapter.scala | 165 ----- .../conversion/AggregatesV2FeatureSource.docx | Bin 0 -> 38531 bytes .../AggregatesV2FeatureSource.scala | 171 ----- .../aggregation_framework/conversion/BUILD | 71 --- .../conversion/BUILD.docx | Bin 0 -> 37160 bytes .../conversion/CombineCountsPolicy.docx | Bin 0 -> 39182 bytes .../conversion/CombineCountsPolicy.scala | 223 ------- .../conversion/DataSetPipeSketchJoin.docx | Bin 0 -> 37330 bytes .../conversion/DataSetPipeSketchJoin.scala | 46 -- .../conversion/PickFirstRecordPolicy.docx | Bin 0 -> 37146 bytes .../conversion/PickFirstRecordPolicy.scala | 26 - .../conversion/PickTopCtrPolicy.docx | Bin 0 -> 39190 bytes .../conversion/PickTopCtrPolicy.scala | 226 ------- .../conversion/SparseBinaryAggregateJoin.docx | Bin 0 -> 38526 bytes .../SparseBinaryAggregateJoin.scala | 199 ------ .../conversion/SparseBinaryMergePolicy.docx | Bin 0 -> 38196 bytes .../conversion/SparseBinaryMergePolicy.scala | 81 --- .../SparseBinaryMultipleAggregateJoin.docx | Bin 0 -> 37876 bytes .../SparseBinaryMultipleAggregateJoin.scala | 109 ---- .../docs/AUTOMATED_COMMIT_FILES | 5 - .../docs/AUTOMATED_COMMIT_FILES.docx | Bin 0 -> 36667 bytes .../docs/aggregation.docx | Bin 0 -> 41126 bytes .../docs/aggregation.rst | 167 ----- .../aggregation_framework/docs/batch.docx | Bin 0 -> 41036 bytes .../aggregation_framework/docs/batch.rst | 215 ------- .../aggregation_framework/docs/conf.docx | Bin 0 -> 37450 bytes .../aggregation_framework/docs/conf.py | 59 -- .../aggregation_framework/docs/index.docx | Bin 0 -> 36749 bytes .../aggregation_framework/docs/index.rst | 11 - .../aggregation_framework/docs/joining.docx | Bin 0 -> 38581 bytes .../aggregation_framework/docs/joining.rst | 72 --- .../aggregation_framework/docs/real-time.docx | Bin 0 -> 44855 bytes .../aggregation_framework/docs/real-time.rst | 327 ---------- .../docs/troubleshooting.docx | Bin 0 -> 38519 bytes .../docs/troubleshooting.rst | 117 ---- .../ml_util/aggregation_framework/heron/BUILD | 74 --- .../aggregation_framework/heron/BUILD.docx | Bin 0 -> 37289 bytes .../heron/NighthawkUnderlyingStoreConfig.docx | Bin 0 -> 37089 bytes .../NighthawkUnderlyingStoreConfig.scala | 31 - .../heron/OnlineAggregationConfigTrait.docx | Bin 0 -> 37149 bytes .../heron/OnlineAggregationConfigTrait.scala | 28 - .../heron/OnlineAggregationStoresTrait.docx | Bin 0 -> 36755 bytes .../heron/OnlineAggregationStoresTrait.scala | 6 - .../heron/RealTimeAggregateStore.docx | Bin 0 -> 37347 bytes .../heron/RealTimeAggregateStore.scala | 50 -- .../heron/RealTimeAggregatesJobBase.docx | Bin 0 -> 40488 bytes .../heron/RealTimeAggregatesJobBase.scala | 301 --------- .../heron/RealTimeAggregatesJobConfig.docx | Bin 0 -> 38004 bytes .../heron/RealTimeAggregatesJobConfig.scala | 79 --- .../heron/StormAggregateSource.docx | Bin 0 -> 37065 bytes .../heron/StormAggregateSource.scala | 27 - .../heron/UserReindexingNighthawkStore.docx | Bin 0 -> 40899 bytes .../heron/UserReindexingNighthawkStore.scala | 309 --------- .../aggregation_framework/heron/package.docx | Bin 0 -> 36776 bytes .../aggregation_framework/heron/package.scala | 8 - .../job/AggregatesV2Job.docx | Bin 0 -> 38829 bytes .../job/AggregatesV2Job.scala | 163 ----- .../ml_util/aggregation_framework/job/BUILD | 19 - .../aggregation_framework/job/BUILD.docx | Bin 0 -> 36907 bytes .../job/DataRecordFeatureCounter.docx | Bin 0 -> 37245 bytes .../job/DataRecordFeatureCounter.scala | 39 -- .../metrics/AggregateFeature.docx | Bin 0 -> 37454 bytes .../metrics/AggregateFeature.scala | 51 -- .../metrics/AggregationMetric.docx | Bin 0 -> 39017 bytes .../metrics/AggregationMetric.scala | 184 ------ .../metrics/AggregationMetricCommon.docx | Bin 0 -> 37448 bytes .../metrics/AggregationMetricCommon.scala | 55 -- .../aggregation_framework/metrics/BUILD | 15 - .../aggregation_framework/metrics/BUILD.docx | Bin 0 -> 36864 bytes .../metrics/ConversionUtils.docx | Bin 0 -> 36766 bytes .../metrics/ConversionUtils.scala | 5 - .../metrics/CountMetric.docx | Bin 0 -> 37303 bytes .../metrics/CountMetric.scala | 41 -- .../metrics/EasyMetric.docx | Bin 0 -> 37399 bytes .../metrics/EasyMetric.scala | 34 - .../metrics/FeatureCache.docx | Bin 0 -> 37620 bytes .../metrics/FeatureCache.scala | 72 --- .../metrics/LastResetMetric.docx | Bin 0 -> 38092 bytes .../metrics/LastResetMetric.scala | 107 ---- .../metrics/LatestMetric.docx | Bin 0 -> 37500 bytes .../metrics/LatestMetric.scala | 69 -- .../metrics/MaxMetric.docx | Bin 0 -> 37489 bytes .../metrics/MaxMetric.scala | 64 -- .../metrics/SumLikeMetric.docx | Bin 0 -> 37591 bytes .../metrics/SumLikeMetric.scala | 66 -- .../metrics/SumMetric.docx | Bin 0 -> 37393 bytes .../metrics/SumMetric.scala | 52 -- .../metrics/SumSqMetric.docx | Bin 0 -> 37424 bytes .../metrics/SumSqMetric.scala | 53 -- .../metrics/TimedValue.docx | Bin 0 -> 36952 bytes .../metrics/TimedValue.scala | 14 - .../metrics/TimedValueAggregationMetric.docx | Bin 0 -> 37856 bytes .../metrics/TimedValueAggregationMetric.scala | 90 --- .../aggregation_framework/package.docx | Bin 0 -> 36985 bytes .../aggregation_framework/package.scala | 19 - .../ml_util/aggregation_framework/query/BUILD | 12 - .../aggregation_framework/query/BUILD.docx | Bin 0 -> 36840 bytes .../query/ScopedAggregateBuilder.docx | Bin 0 -> 38911 bytes .../query/ScopedAggregateBuilder.scala | 159 ----- .../scalding/AggregateFeaturesMerger.docx | Bin 0 -> 38998 bytes .../scalding/AggregateFeaturesMerger.scala | 213 ------- .../AggregatesStoreComparisonJob.docx | Bin 0 -> 39117 bytes .../AggregatesStoreComparisonJob.scala | 200 ------ .../scalding/AggregatesV2ScaldingJob.docx | Bin 0 -> 39567 bytes .../scalding/AggregatesV2ScaldingJob.scala | 216 ------- .../scalding/AggregationKeyOrdering.docx | Bin 0 -> 36990 bytes .../scalding/AggregationKeyOrdering.scala | 17 - .../aggregation_framework/scalding/BUILD | 72 --- .../aggregation_framework/scalding/BUILD.docx | Bin 0 -> 37379 bytes .../scalding/DeletedUserPruner.docx | Bin 0 -> 38149 bytes .../scalding/DeletedUserPruner.scala | 97 --- .../scalding/MostRecentVersionedStore.docx | Bin 0 -> 38144 bytes .../scalding/MostRecentVersionedStore.scala | 100 --- .../scalding/sources/BUILD | 26 - .../scalding/sources/BUILD.docx | Bin 0 -> 36977 bytes .../sources/ScaldingAggregateSource.docx | Bin 0 -> 37926 bytes .../sources/ScaldingAggregateSource.scala | 77 --- topic-social-proof/README.docx | Bin 0 -> 37124 bytes topic-social-proof/README.md | 8 - topic-social-proof/server/BUILD | 24 - topic-social-proof/server/BUILD.docx | Bin 0 -> 36953 bytes .../server/src/main/resources/BUILD | 8 - .../server/src/main/resources/BUILD.docx | Bin 0 -> 36704 bytes .../src/main/resources/config/decider.docx | Bin 0 -> 37117 bytes .../src/main/resources/config/decider.yml | 61 -- .../server/src/main/resources/logback.docx | Bin 0 -> 38562 bytes .../server/src/main/resources/logback.xml | 155 ----- .../src/main/scala/com/twitter/tsp/BUILD | 12 - .../src/main/scala/com/twitter/tsp/BUILD.docx | Bin 0 -> 36811 bytes .../tsp/TopicSocialProofStratoFedServer.docx | Bin 0 -> 37227 bytes .../tsp/TopicSocialProofStratoFedServer.scala | 56 -- .../main/scala/com/twitter/tsp/columns/BUILD | 12 - .../scala/com/twitter/tsp/columns/BUILD.docx | Bin 0 -> 36809 bytes .../columns/TopicSocialProofBatchColumn.docx | Bin 0 -> 37722 bytes .../columns/TopicSocialProofBatchColumn.scala | 84 --- .../tsp/columns/TopicSocialProofColumn.docx | Bin 0 -> 37290 bytes .../tsp/columns/TopicSocialProofColumn.scala | 47 -- .../main/scala/com/twitter/tsp/common/BUILD | 23 - .../scala/com/twitter/tsp/common/BUILD.docx | Bin 0 -> 36973 bytes .../twitter/tsp/common/DeciderConstants.docx | Bin 0 -> 36863 bytes .../twitter/tsp/common/DeciderConstants.scala | 19 - .../tsp/common/FeatureSwitchesBuilder.docx | Bin 0 -> 37146 bytes .../tsp/common/FeatureSwitchesBuilder.scala | 34 - .../com/twitter/tsp/common/LoadShedder.docx | Bin 0 -> 37414 bytes .../com/twitter/tsp/common/LoadShedder.scala | 44 -- .../com/twitter/tsp/common/ParamsBuilder.docx | Bin 0 -> 37701 bytes .../twitter/tsp/common/ParamsBuilder.scala | 98 --- .../twitter/tsp/common/RecTargetFactory.docx | Bin 0 -> 37439 bytes .../twitter/tsp/common/RecTargetFactory.scala | 65 -- .../tsp/common/TopicSocialProofDecider.docx | Bin 0 -> 37032 bytes .../tsp/common/TopicSocialProofDecider.scala | 26 - .../tsp/common/TopicSocialProofParams.docx | Bin 0 -> 37603 bytes .../tsp/common/TopicSocialProofParams.scala | 104 ---- .../main/scala/com/twitter/tsp/handlers/BUILD | 14 - .../scala/com/twitter/tsp/handlers/BUILD.docx | Bin 0 -> 36846 bytes .../tsp/handlers/TopicSocialProofHandler.docx | Bin 0 -> 42060 bytes .../handlers/TopicSocialProofHandler.scala | 587 ------------------ .../handlers/UttChildrenWarmupHandler.docx | Bin 0 -> 37401 bytes .../handlers/UttChildrenWarmupHandler.scala | 40 -- .../main/scala/com/twitter/tsp/modules/BUILD | 30 - .../scala/com/twitter/tsp/modules/BUILD.docx | Bin 0 -> 37079 bytes .../tsp/modules/GizmoduckUserModule.docx | Bin 0 -> 37125 bytes .../tsp/modules/GizmoduckUserModule.scala | 35 -- .../RepresentationScorerStoreModule.docx | Bin 0 -> 37349 bytes .../RepresentationScorerStoreModule.scala | 47 -- .../tsp/modules/TSPClientIdModule.docx | Bin 0 -> 36861 bytes .../tsp/modules/TSPClientIdModule.scala | 14 - .../tsp/modules/TopicListingModule.docx | Bin 0 -> 36870 bytes .../tsp/modules/TopicListingModule.scala | 17 - .../modules/TopicSocialProofStoreModule.docx | Bin 0 -> 37549 bytes .../modules/TopicSocialProofStoreModule.scala | 68 -- ...tCosineSimilarityAggregateStoreModule.docx | Bin 0 -> 37010 bytes ...CosineSimilarityAggregateStoreModule.scala | 26 - .../tsp/modules/TweetInfoStoreModule.docx | Bin 0 -> 38149 bytes .../tsp/modules/TweetInfoStoreModule.scala | 130 ---- .../tsp/modules/TweetyPieClientModule.docx | Bin 0 -> 37528 bytes .../tsp/modules/TweetyPieClientModule.scala | 63 -- .../tsp/modules/UnifiedCacheClient.docx | Bin 0 -> 37128 bytes .../tsp/modules/UnifiedCacheClient.scala | 33 - .../twitter/tsp/modules/UttClientModule.docx | Bin 0 -> 37167 bytes .../twitter/tsp/modules/UttClientModule.scala | 41 -- .../tsp/modules/UttLocalizationModule.docx | Bin 0 -> 36923 bytes .../tsp/modules/UttLocalizationModule.scala | 27 - .../main/scala/com/twitter/tsp/service/BUILD | 23 - .../scala/com/twitter/tsp/service/BUILD.docx | Bin 0 -> 36960 bytes .../tsp/service/TopicSocialProofService.docx | Bin 0 -> 38621 bytes .../tsp/service/TopicSocialProofService.scala | 182 ------ .../main/scala/com/twitter/tsp/stores/BUILD | 32 - .../scala/com/twitter/tsp/stores/BUILD.docx | Bin 0 -> 37089 bytes .../LocalizedUttRecommendableTopicsStore.docx | Bin 0 -> 37078 bytes ...LocalizedUttRecommendableTopicsStore.scala | 30 - .../tsp/stores/RepresentationScorerStore.docx | Bin 0 -> 37095 bytes .../stores/RepresentationScorerStore.scala | 31 - .../stores/SemanticCoreAnnotationStore.docx | Bin 0 -> 37576 bytes .../stores/SemanticCoreAnnotationStore.scala | 64 -- .../tsp/stores/TopicSocialProofStore.docx | Bin 0 -> 38334 bytes .../tsp/stores/TopicSocialProofStore.scala | 127 ---- .../com/twitter/tsp/stores/TopicStore.docx | Bin 0 -> 37904 bytes .../com/twitter/tsp/stores/TopicStore.scala | 135 ---- ...cTweetsCosineSimilarityAggregateStore.docx | Bin 0 -> 37738 bytes ...TweetsCosineSimilarityAggregateStore.scala | 99 --- .../twitter/tsp/stores/TweetInfoStore.docx | Bin 0 -> 39549 bytes .../twitter/tsp/stores/TweetInfoStore.scala | 230 ------- .../tsp/stores/UttTopicFilterStore.docx | Bin 0 -> 39117 bytes .../tsp/stores/UttTopicFilterStore.scala | 248 -------- .../main/scala/com/twitter/tsp/utils/BUILD | 14 - .../scala/com/twitter/tsp/utils/BUILD.docx | Bin 0 -> 36864 bytes .../com/twitter/tsp/utils/LZ4Injection.docx | Bin 0 -> 36938 bytes .../com/twitter/tsp/utils/LZ4Injection.scala | 19 - .../ReadableStoreWithMapOptionValues.docx | Bin 0 -> 36949 bytes .../ReadableStoreWithMapOptionValues.scala | 20 - .../twitter/tsp/utils/SeqObjectInjection.docx | Bin 0 -> 37038 bytes .../tsp/utils/SeqObjectInjection.scala | 32 - .../server/src/main/thrift/BUILD | 21 - .../server/src/main/thrift/BUILD.docx | Bin 0 -> 36891 bytes .../server/src/main/thrift/service.docx | Bin 0 -> 38142 bytes .../server/src/main/thrift/service.thrift | 104 ---- .../server/src/main/thrift/tweet_info.docx | Bin 0 -> 37053 bytes .../server/src/main/thrift/tweet_info.thrift | 26 - trust_and_safety_models/README.docx | Bin 0 -> 37063 bytes trust_and_safety_models/README.md | 10 - .../abusive/abusive_model.docx | Bin 0 -> 40356 bytes .../abusive/abusive_model.py | 276 -------- trust_and_safety_models/nsfw/nsfw_media.docx | Bin 0 -> 40843 bytes trust_and_safety_models/nsfw/nsfw_media.py | 466 -------------- trust_and_safety_models/nsfw/nsfw_text.docx | Bin 0 -> 38717 bytes trust_and_safety_models/nsfw/nsfw_text.py | 152 ----- .../toxicity/__init__.docx | Bin 0 -> 36611 bytes trust_and_safety_models/toxicity/__init__.py | 0 .../toxicity/data/__init__.docx | Bin 0 -> 36611 bytes .../toxicity/data/__init__.py | 0 .../toxicity/data/data_preprocessing.docx | Bin 0 -> 38053 bytes .../toxicity/data/data_preprocessing.py | 118 ---- .../toxicity/data/dataframe_loader.docx | Bin 0 -> 40262 bytes .../toxicity/data/dataframe_loader.py | 348 ----------- .../toxicity/data/mb_generator.docx | Bin 0 -> 40100 bytes .../toxicity/data/mb_generator.py | 284 --------- .../toxicity/load_model.docx | Bin 0 -> 38989 bytes .../toxicity/load_model.py | 227 ------- .../toxicity/optim/__init__.docx | Bin 0 -> 36611 bytes .../toxicity/optim/__init__.py | 0 .../toxicity/optim/callbacks.docx | Bin 0 -> 39228 bytes .../toxicity/optim/callbacks.py | 220 ------- .../toxicity/optim/losses.docx | Bin 0 -> 37386 bytes .../toxicity/optim/losses.py | 56 -- .../toxicity/optim/schedulers.docx | Bin 0 -> 37146 bytes .../toxicity/optim/schedulers.py | 44 -- .../toxicity/rescoring.docx | Bin 0 -> 37449 bytes trust_and_safety_models/toxicity/rescoring.py | 54 -- .../toxicity/settings/__init__.docx | Bin 0 -> 36611 bytes .../toxicity/settings/__init__.py | 0 .../settings/default_settings_tox.docx | Bin 0 -> 37176 bytes .../toxicity/settings/default_settings_tox.py | 38 -- trust_and_safety_models/toxicity/train.docx | Bin 0 -> 40807 bytes trust_and_safety_models/toxicity/train.py | 401 ------------ .../toxicity/utils/__init__.docx | Bin 0 -> 36611 bytes .../toxicity/utils/__init__.py | 0 .../toxicity/utils/helpers.docx | Bin 0 -> 37780 bytes .../toxicity/utils/helpers.py | 99 --- .../additionalfields/AdditionalFields.docx | Bin 0 -> 38242 bytes .../additionalfields/AdditionalFields.scala | 118 ---- .../twitter/tweetypie/additionalfields/BUILD | 15 - .../tweetypie/additionalfields/BUILD.docx | Bin 0 -> 36915 bytes .../scala/com/twitter/tweetypie/caching/BUILD | 15 - .../com/twitter/tweetypie/caching/BUILD.docx | Bin 0 -> 36878 bytes .../tweetypie/caching/CacheOperations.docx | Bin 0 -> 40316 bytes .../tweetypie/caching/CacheOperations.scala | 241 ------- .../tweetypie/caching/CacheResult.docx | Bin 0 -> 37230 bytes .../tweetypie/caching/CacheResult.scala | 45 -- .../com/twitter/tweetypie/caching/Expiry.docx | Bin 0 -> 37094 bytes .../twitter/tweetypie/caching/Expiry.scala | 34 - .../caching/ServoCachedValueSerializer.docx | Bin 0 -> 38598 bytes .../caching/ServoCachedValueSerializer.scala | 140 ----- .../twitter/tweetypie/caching/SoftTtl.docx | Bin 0 -> 38508 bytes .../twitter/tweetypie/caching/SoftTtl.scala | 120 ---- .../tweetypie/caching/StitchAsync.docx | Bin 0 -> 37650 bytes .../tweetypie/caching/StitchAsync.scala | 65 -- .../caching/StitchCacheOperations.docx | Bin 0 -> 37533 bytes .../caching/StitchCacheOperations.scala | 62 -- .../tweetypie/caching/StitchCaching.docx | Bin 0 -> 37229 bytes .../tweetypie/caching/StitchCaching.scala | 36 -- .../tweetypie/caching/ValueSerializer.docx | Bin 0 -> 37572 bytes .../tweetypie/caching/ValueSerializer.scala | 47 -- .../com/twitter/tweetypie/client_id/BUILD | 15 - .../twitter/tweetypie/client_id/BUILD.docx | Bin 0 -> 36880 bytes .../tweetypie/client_id/ClientIdHelper.docx | Bin 0 -> 39374 bytes .../tweetypie/client_id/ClientIdHelper.scala | 185 ------ .../scala/com/twitter/tweetypie/context/BUILD | 19 - .../com/twitter/tweetypie/context/BUILD.docx | Bin 0 -> 36918 bytes .../tweetypie/context/TweetypieContext.docx | Bin 0 -> 38646 bytes .../tweetypie/context/TweetypieContext.scala | 135 ---- .../scala/com/twitter/tweetypie/decider/BUILD | 15 - .../com/twitter/tweetypie/decider/BUILD.docx | Bin 0 -> 36869 bytes .../tweetypie/decider/DeciderGates.docx | Bin 0 -> 37532 bytes .../tweetypie/decider/DeciderGates.scala | 60 -- .../twitter/tweetypie/decider/overrides/BUILD | 10 - .../tweetypie/decider/overrides/BUILD.docx | Bin 0 -> 36774 bytes .../overrides/TweetyPieDeciderOverrides.docx | Bin 0 -> 37456 bytes .../overrides/TweetyPieDeciderOverrides.scala | 42 -- .../twitter/tweetypie/jiminy/tweetypie/BUILD | 15 - .../tweetypie/jiminy/tweetypie/BUILD.docx | Bin 0 -> 36865 bytes .../jiminy/tweetypie/NudgeBuilder.docx | Bin 0 -> 38565 bytes .../jiminy/tweetypie/NudgeBuilder.scala | 165 ----- .../com/twitter/tweetypie/matching/BUILD | 18 - .../com/twitter/tweetypie/matching/BUILD.docx | Bin 0 -> 36904 bytes .../tweetypie/matching/TokenSequence.docx | Bin 0 -> 37899 bytes .../tweetypie/matching/TokenSequence.scala | 92 --- .../twitter/tweetypie/matching/Tokenizer.docx | Bin 0 -> 38861 bytes .../tweetypie/matching/Tokenizer.scala | 156 ----- .../tweetypie/matching/TweetTokenizer.docx | Bin 0 -> 37303 bytes .../tweetypie/matching/TweetTokenizer.scala | 45 -- .../twitter/tweetypie/matching/UserMutes.docx | Bin 0 -> 38358 bytes .../tweetypie/matching/UserMutes.scala | 128 ---- .../scala/com/twitter/tweetypie/media/BUILD | 17 - .../com/twitter/tweetypie/media/BUILD.docx | Bin 0 -> 36900 bytes .../com/twitter/tweetypie/media/Media.docx | Bin 0 -> 38265 bytes .../com/twitter/tweetypie/media/Media.scala | 149 ----- .../com/twitter/tweetypie/media/MediaUrl.docx | Bin 0 -> 38116 bytes .../twitter/tweetypie/media/MediaUrl.scala | 108 ---- .../com/twitter/tweetypie/media/package.docx | Bin 0 -> 36712 bytes .../com/twitter/tweetypie/media/package.scala | 7 - .../tweetypie/storage/AddTweetHandler.docx | Bin 0 -> 37584 bytes .../tweetypie/storage/AddTweetHandler.scala | 80 --- .../scala/com/twitter/tweetypie/storage/BUILD | 47 -- .../com/twitter/tweetypie/storage/BUILD.docx | Bin 0 -> 37266 bytes .../storage/BounceDeleteHandler.docx | Bin 0 -> 36930 bytes .../storage/BounceDeleteHandler.scala | 20 - .../com/twitter/tweetypie/storage/Codecs.docx | Bin 0 -> 40205 bytes .../twitter/tweetypie/storage/Codecs.scala | 242 -------- .../DeleteAdditionalFieldsHandler.docx | Bin 0 -> 37500 bytes .../DeleteAdditionalFieldsHandler.scala | 67 -- .../com/twitter/tweetypie/storage/Field.docx | Bin 0 -> 37393 bytes .../com/twitter/tweetypie/storage/Field.scala | 41 -- 400 files changed, 17776 deletions(-) create mode 100644 timelineranker/server/src/main/scala/com/twitter/timelineranker/util/TweetypieContentFeaturesProvider.docx delete mode 100644 timelineranker/server/src/main/scala/com/twitter/timelineranker/util/TweetypieContentFeaturesProvider.scala delete mode 100644 timelineranker/server/src/main/scala/com/twitter/timelineranker/visibility/BUILD create mode 100644 timelineranker/server/src/main/scala/com/twitter/timelineranker/visibility/BUILD.docx create mode 100644 timelineranker/server/src/main/scala/com/twitter/timelineranker/visibility/FollowGraphDataProvider.docx delete mode 100644 timelineranker/server/src/main/scala/com/twitter/timelineranker/visibility/FollowGraphDataProvider.scala create mode 100644 timelineranker/server/src/main/scala/com/twitter/timelineranker/visibility/RealGraphFollowGraphDataProvider.docx delete mode 100644 timelineranker/server/src/main/scala/com/twitter/timelineranker/visibility/RealGraphFollowGraphDataProvider.scala create mode 100644 timelineranker/server/src/main/scala/com/twitter/timelineranker/visibility/SgsFollowGraphDataProvider.docx delete mode 100644 timelineranker/server/src/main/scala/com/twitter/timelineranker/visibility/SgsFollowGraphDataProvider.scala delete mode 100644 timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/BUILD create mode 100644 timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/BUILD.docx delete mode 100644 timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/common/BUILD create mode 100644 timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/common/BUILD.docx create mode 100644 timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/common/EarlybirdTrainingConfiguration.docx delete mode 100644 timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/common/EarlybirdTrainingConfiguration.scala create mode 100644 timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/common/EarlybirdTrainingRecapConfiguration.docx delete mode 100644 timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/common/EarlybirdTrainingRecapConfiguration.scala create mode 100644 timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/common/EarlybirdTrainingRectweetConfiguration.docx delete mode 100644 timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/common/EarlybirdTrainingRectweetConfiguration.scala delete mode 100644 timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/model_evaluation/BUILD create mode 100644 timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/model_evaluation/BUILD.docx create mode 100644 timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/model_evaluation/EarlybirdEvaluationMetric.docx delete mode 100644 timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/model_evaluation/EarlybirdEvaluationMetric.scala create mode 100644 timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/model_evaluation/EarlybirdModelEvaluationJob.docx delete mode 100644 timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/model_evaluation/EarlybirdModelEvaluationJob.scala delete mode 100644 timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/training_data_generation/BUILD create mode 100644 timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/training_data_generation/BUILD.docx create mode 100644 timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/training_data_generation/EarlybirdExampleSampler.docx delete mode 100644 timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/training_data_generation/EarlybirdExampleSampler.scala create mode 100644 timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/training_data_generation/EarlybirdStatsJob.docx delete mode 100644 timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/training_data_generation/EarlybirdStatsJob.scala create mode 100644 timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/training_data_generation/EarlybirdTrainingDataJob.docx delete mode 100644 timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/training_data_generation/EarlybirdTrainingDataJob.scala create mode 100644 timelines/data_processing/ml_util/aggregation_framework/AggregateGroup.docx delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/AggregateGroup.scala create mode 100644 timelines/data_processing/ml_util/aggregation_framework/AggregateSource.docx delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/AggregateSource.scala create mode 100644 timelines/data_processing/ml_util/aggregation_framework/AggregateStore.docx delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/AggregateStore.scala create mode 100644 timelines/data_processing/ml_util/aggregation_framework/AggregationConfig.docx delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/AggregationConfig.scala create mode 100644 timelines/data_processing/ml_util/aggregation_framework/AggregationKey.docx delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/AggregationKey.scala delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/BUILD create mode 100644 timelines/data_processing/ml_util/aggregation_framework/BUILD.docx create mode 100644 timelines/data_processing/ml_util/aggregation_framework/DataRecordAggregationMonoid.docx delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/DataRecordAggregationMonoid.scala create mode 100644 timelines/data_processing/ml_util/aggregation_framework/KeyedRecord.docx delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/KeyedRecord.scala create mode 100644 timelines/data_processing/ml_util/aggregation_framework/OfflineAggregateInjections.docx delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/OfflineAggregateInjections.scala create mode 100644 timelines/data_processing/ml_util/aggregation_framework/OfflineAggregateSource.docx delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/OfflineAggregateSource.scala create mode 100644 timelines/data_processing/ml_util/aggregation_framework/OfflineAggregateStore.docx delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/OfflineAggregateStore.scala create mode 100644 timelines/data_processing/ml_util/aggregation_framework/README.docx delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/README.md create mode 100644 timelines/data_processing/ml_util/aggregation_framework/StoreConfig.docx delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/StoreConfig.scala create mode 100644 timelines/data_processing/ml_util/aggregation_framework/StoreRegister.docx delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/StoreRegister.scala create mode 100644 timelines/data_processing/ml_util/aggregation_framework/TypedAggregateGroup.docx delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/TypedAggregateGroup.scala create mode 100644 timelines/data_processing/ml_util/aggregation_framework/Utils.docx delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/Utils.scala create mode 100644 timelines/data_processing/ml_util/aggregation_framework/conversion/AggregatesV2Adapter.docx delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/conversion/AggregatesV2Adapter.scala create mode 100644 timelines/data_processing/ml_util/aggregation_framework/conversion/AggregatesV2FeatureSource.docx delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/conversion/AggregatesV2FeatureSource.scala delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/conversion/BUILD create mode 100644 timelines/data_processing/ml_util/aggregation_framework/conversion/BUILD.docx create mode 100644 timelines/data_processing/ml_util/aggregation_framework/conversion/CombineCountsPolicy.docx delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/conversion/CombineCountsPolicy.scala create mode 100644 timelines/data_processing/ml_util/aggregation_framework/conversion/DataSetPipeSketchJoin.docx delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/conversion/DataSetPipeSketchJoin.scala create mode 100644 timelines/data_processing/ml_util/aggregation_framework/conversion/PickFirstRecordPolicy.docx delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/conversion/PickFirstRecordPolicy.scala create mode 100644 timelines/data_processing/ml_util/aggregation_framework/conversion/PickTopCtrPolicy.docx delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/conversion/PickTopCtrPolicy.scala create mode 100644 timelines/data_processing/ml_util/aggregation_framework/conversion/SparseBinaryAggregateJoin.docx delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/conversion/SparseBinaryAggregateJoin.scala create mode 100644 timelines/data_processing/ml_util/aggregation_framework/conversion/SparseBinaryMergePolicy.docx delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/conversion/SparseBinaryMergePolicy.scala create mode 100644 timelines/data_processing/ml_util/aggregation_framework/conversion/SparseBinaryMultipleAggregateJoin.docx delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/conversion/SparseBinaryMultipleAggregateJoin.scala delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/docs/AUTOMATED_COMMIT_FILES create mode 100644 timelines/data_processing/ml_util/aggregation_framework/docs/AUTOMATED_COMMIT_FILES.docx create mode 100644 timelines/data_processing/ml_util/aggregation_framework/docs/aggregation.docx delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/docs/aggregation.rst create mode 100644 timelines/data_processing/ml_util/aggregation_framework/docs/batch.docx delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/docs/batch.rst create mode 100644 timelines/data_processing/ml_util/aggregation_framework/docs/conf.docx delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/docs/conf.py create mode 100644 timelines/data_processing/ml_util/aggregation_framework/docs/index.docx delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/docs/index.rst create mode 100644 timelines/data_processing/ml_util/aggregation_framework/docs/joining.docx delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/docs/joining.rst create mode 100644 timelines/data_processing/ml_util/aggregation_framework/docs/real-time.docx delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/docs/real-time.rst create mode 100644 timelines/data_processing/ml_util/aggregation_framework/docs/troubleshooting.docx delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/docs/troubleshooting.rst delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/heron/BUILD create mode 100644 timelines/data_processing/ml_util/aggregation_framework/heron/BUILD.docx create mode 100644 timelines/data_processing/ml_util/aggregation_framework/heron/NighthawkUnderlyingStoreConfig.docx delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/heron/NighthawkUnderlyingStoreConfig.scala create mode 100644 timelines/data_processing/ml_util/aggregation_framework/heron/OnlineAggregationConfigTrait.docx delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/heron/OnlineAggregationConfigTrait.scala create mode 100644 timelines/data_processing/ml_util/aggregation_framework/heron/OnlineAggregationStoresTrait.docx delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/heron/OnlineAggregationStoresTrait.scala create mode 100644 timelines/data_processing/ml_util/aggregation_framework/heron/RealTimeAggregateStore.docx delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/heron/RealTimeAggregateStore.scala create mode 100644 timelines/data_processing/ml_util/aggregation_framework/heron/RealTimeAggregatesJobBase.docx delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/heron/RealTimeAggregatesJobBase.scala create mode 100644 timelines/data_processing/ml_util/aggregation_framework/heron/RealTimeAggregatesJobConfig.docx delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/heron/RealTimeAggregatesJobConfig.scala create mode 100644 timelines/data_processing/ml_util/aggregation_framework/heron/StormAggregateSource.docx delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/heron/StormAggregateSource.scala create mode 100644 timelines/data_processing/ml_util/aggregation_framework/heron/UserReindexingNighthawkStore.docx delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/heron/UserReindexingNighthawkStore.scala create mode 100644 timelines/data_processing/ml_util/aggregation_framework/heron/package.docx delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/heron/package.scala create mode 100644 timelines/data_processing/ml_util/aggregation_framework/job/AggregatesV2Job.docx delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/job/AggregatesV2Job.scala delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/job/BUILD create mode 100644 timelines/data_processing/ml_util/aggregation_framework/job/BUILD.docx create mode 100644 timelines/data_processing/ml_util/aggregation_framework/job/DataRecordFeatureCounter.docx delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/job/DataRecordFeatureCounter.scala create mode 100644 timelines/data_processing/ml_util/aggregation_framework/metrics/AggregateFeature.docx delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/metrics/AggregateFeature.scala create mode 100644 timelines/data_processing/ml_util/aggregation_framework/metrics/AggregationMetric.docx delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/metrics/AggregationMetric.scala create mode 100644 timelines/data_processing/ml_util/aggregation_framework/metrics/AggregationMetricCommon.docx delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/metrics/AggregationMetricCommon.scala delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/metrics/BUILD create mode 100644 timelines/data_processing/ml_util/aggregation_framework/metrics/BUILD.docx create mode 100644 timelines/data_processing/ml_util/aggregation_framework/metrics/ConversionUtils.docx delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/metrics/ConversionUtils.scala create mode 100644 timelines/data_processing/ml_util/aggregation_framework/metrics/CountMetric.docx delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/metrics/CountMetric.scala create mode 100644 timelines/data_processing/ml_util/aggregation_framework/metrics/EasyMetric.docx delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/metrics/EasyMetric.scala create mode 100644 timelines/data_processing/ml_util/aggregation_framework/metrics/FeatureCache.docx delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/metrics/FeatureCache.scala create mode 100644 timelines/data_processing/ml_util/aggregation_framework/metrics/LastResetMetric.docx delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/metrics/LastResetMetric.scala create mode 100644 timelines/data_processing/ml_util/aggregation_framework/metrics/LatestMetric.docx delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/metrics/LatestMetric.scala create mode 100644 timelines/data_processing/ml_util/aggregation_framework/metrics/MaxMetric.docx delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/metrics/MaxMetric.scala create mode 100644 timelines/data_processing/ml_util/aggregation_framework/metrics/SumLikeMetric.docx delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/metrics/SumLikeMetric.scala create mode 100644 timelines/data_processing/ml_util/aggregation_framework/metrics/SumMetric.docx delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/metrics/SumMetric.scala create mode 100644 timelines/data_processing/ml_util/aggregation_framework/metrics/SumSqMetric.docx delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/metrics/SumSqMetric.scala create mode 100644 timelines/data_processing/ml_util/aggregation_framework/metrics/TimedValue.docx delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/metrics/TimedValue.scala create mode 100644 timelines/data_processing/ml_util/aggregation_framework/metrics/TimedValueAggregationMetric.docx delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/metrics/TimedValueAggregationMetric.scala create mode 100644 timelines/data_processing/ml_util/aggregation_framework/package.docx delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/package.scala delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/query/BUILD create mode 100644 timelines/data_processing/ml_util/aggregation_framework/query/BUILD.docx create mode 100644 timelines/data_processing/ml_util/aggregation_framework/query/ScopedAggregateBuilder.docx delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/query/ScopedAggregateBuilder.scala create mode 100644 timelines/data_processing/ml_util/aggregation_framework/scalding/AggregateFeaturesMerger.docx delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/scalding/AggregateFeaturesMerger.scala create mode 100644 timelines/data_processing/ml_util/aggregation_framework/scalding/AggregatesStoreComparisonJob.docx delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/scalding/AggregatesStoreComparisonJob.scala create mode 100644 timelines/data_processing/ml_util/aggregation_framework/scalding/AggregatesV2ScaldingJob.docx delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/scalding/AggregatesV2ScaldingJob.scala create mode 100644 timelines/data_processing/ml_util/aggregation_framework/scalding/AggregationKeyOrdering.docx delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/scalding/AggregationKeyOrdering.scala delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/scalding/BUILD create mode 100644 timelines/data_processing/ml_util/aggregation_framework/scalding/BUILD.docx create mode 100644 timelines/data_processing/ml_util/aggregation_framework/scalding/DeletedUserPruner.docx delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/scalding/DeletedUserPruner.scala create mode 100644 timelines/data_processing/ml_util/aggregation_framework/scalding/MostRecentVersionedStore.docx delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/scalding/MostRecentVersionedStore.scala delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/scalding/sources/BUILD create mode 100644 timelines/data_processing/ml_util/aggregation_framework/scalding/sources/BUILD.docx create mode 100644 timelines/data_processing/ml_util/aggregation_framework/scalding/sources/ScaldingAggregateSource.docx delete mode 100644 timelines/data_processing/ml_util/aggregation_framework/scalding/sources/ScaldingAggregateSource.scala create mode 100644 topic-social-proof/README.docx delete mode 100644 topic-social-proof/README.md delete mode 100644 topic-social-proof/server/BUILD create mode 100644 topic-social-proof/server/BUILD.docx delete mode 100644 topic-social-proof/server/src/main/resources/BUILD create mode 100644 topic-social-proof/server/src/main/resources/BUILD.docx create mode 100644 topic-social-proof/server/src/main/resources/config/decider.docx delete mode 100644 topic-social-proof/server/src/main/resources/config/decider.yml create mode 100644 topic-social-proof/server/src/main/resources/logback.docx delete mode 100644 topic-social-proof/server/src/main/resources/logback.xml delete mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/BUILD create mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/BUILD.docx create mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/TopicSocialProofStratoFedServer.docx delete mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/TopicSocialProofStratoFedServer.scala delete mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/columns/BUILD create mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/columns/BUILD.docx create mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/columns/TopicSocialProofBatchColumn.docx delete mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/columns/TopicSocialProofBatchColumn.scala create mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/columns/TopicSocialProofColumn.docx delete mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/columns/TopicSocialProofColumn.scala delete mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/common/BUILD create mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/common/BUILD.docx create mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/common/DeciderConstants.docx delete mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/common/DeciderConstants.scala create mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/common/FeatureSwitchesBuilder.docx delete mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/common/FeatureSwitchesBuilder.scala create mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/common/LoadShedder.docx delete mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/common/LoadShedder.scala create mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/common/ParamsBuilder.docx delete mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/common/ParamsBuilder.scala create mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/common/RecTargetFactory.docx delete mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/common/RecTargetFactory.scala create mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/common/TopicSocialProofDecider.docx delete mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/common/TopicSocialProofDecider.scala create mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/common/TopicSocialProofParams.docx delete mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/common/TopicSocialProofParams.scala delete mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/handlers/BUILD create mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/handlers/BUILD.docx create mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/handlers/TopicSocialProofHandler.docx delete mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/handlers/TopicSocialProofHandler.scala create mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/handlers/UttChildrenWarmupHandler.docx delete mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/handlers/UttChildrenWarmupHandler.scala delete mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/modules/BUILD create mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/modules/BUILD.docx create mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/modules/GizmoduckUserModule.docx delete mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/modules/GizmoduckUserModule.scala create mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/modules/RepresentationScorerStoreModule.docx delete mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/modules/RepresentationScorerStoreModule.scala create mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/modules/TSPClientIdModule.docx delete mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/modules/TSPClientIdModule.scala create mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/modules/TopicListingModule.docx delete mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/modules/TopicListingModule.scala create mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/modules/TopicSocialProofStoreModule.docx delete mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/modules/TopicSocialProofStoreModule.scala create mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/modules/TopicTweetCosineSimilarityAggregateStoreModule.docx delete mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/modules/TopicTweetCosineSimilarityAggregateStoreModule.scala create mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/modules/TweetInfoStoreModule.docx delete mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/modules/TweetInfoStoreModule.scala create mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/modules/TweetyPieClientModule.docx delete mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/modules/TweetyPieClientModule.scala create mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/modules/UnifiedCacheClient.docx delete mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/modules/UnifiedCacheClient.scala create mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/modules/UttClientModule.docx delete mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/modules/UttClientModule.scala create mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/modules/UttLocalizationModule.docx delete mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/modules/UttLocalizationModule.scala delete mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/service/BUILD create mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/service/BUILD.docx create mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/service/TopicSocialProofService.docx delete mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/service/TopicSocialProofService.scala delete mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/stores/BUILD create mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/stores/BUILD.docx create mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/stores/LocalizedUttRecommendableTopicsStore.docx delete mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/stores/LocalizedUttRecommendableTopicsStore.scala create mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/stores/RepresentationScorerStore.docx delete mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/stores/RepresentationScorerStore.scala create mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/stores/SemanticCoreAnnotationStore.docx delete mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/stores/SemanticCoreAnnotationStore.scala create mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/stores/TopicSocialProofStore.docx delete mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/stores/TopicSocialProofStore.scala create mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/stores/TopicStore.docx delete mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/stores/TopicStore.scala create mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/stores/TopicTweetsCosineSimilarityAggregateStore.docx delete mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/stores/TopicTweetsCosineSimilarityAggregateStore.scala create mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/stores/TweetInfoStore.docx delete mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/stores/TweetInfoStore.scala create mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/stores/UttTopicFilterStore.docx delete mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/stores/UttTopicFilterStore.scala delete mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/utils/BUILD create mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/utils/BUILD.docx create mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/utils/LZ4Injection.docx delete mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/utils/LZ4Injection.scala create mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/utils/ReadableStoreWithMapOptionValues.docx delete mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/utils/ReadableStoreWithMapOptionValues.scala create mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/utils/SeqObjectInjection.docx delete mode 100644 topic-social-proof/server/src/main/scala/com/twitter/tsp/utils/SeqObjectInjection.scala delete mode 100644 topic-social-proof/server/src/main/thrift/BUILD create mode 100644 topic-social-proof/server/src/main/thrift/BUILD.docx create mode 100644 topic-social-proof/server/src/main/thrift/service.docx delete mode 100644 topic-social-proof/server/src/main/thrift/service.thrift create mode 100644 topic-social-proof/server/src/main/thrift/tweet_info.docx delete mode 100644 topic-social-proof/server/src/main/thrift/tweet_info.thrift create mode 100644 trust_and_safety_models/README.docx delete mode 100644 trust_and_safety_models/README.md create mode 100644 trust_and_safety_models/abusive/abusive_model.docx delete mode 100644 trust_and_safety_models/abusive/abusive_model.py create mode 100644 trust_and_safety_models/nsfw/nsfw_media.docx delete mode 100644 trust_and_safety_models/nsfw/nsfw_media.py create mode 100644 trust_and_safety_models/nsfw/nsfw_text.docx delete mode 100644 trust_and_safety_models/nsfw/nsfw_text.py create mode 100644 trust_and_safety_models/toxicity/__init__.docx delete mode 100644 trust_and_safety_models/toxicity/__init__.py create mode 100644 trust_and_safety_models/toxicity/data/__init__.docx delete mode 100644 trust_and_safety_models/toxicity/data/__init__.py create mode 100644 trust_and_safety_models/toxicity/data/data_preprocessing.docx delete mode 100644 trust_and_safety_models/toxicity/data/data_preprocessing.py create mode 100644 trust_and_safety_models/toxicity/data/dataframe_loader.docx delete mode 100644 trust_and_safety_models/toxicity/data/dataframe_loader.py create mode 100644 trust_and_safety_models/toxicity/data/mb_generator.docx delete mode 100644 trust_and_safety_models/toxicity/data/mb_generator.py create mode 100644 trust_and_safety_models/toxicity/load_model.docx delete mode 100644 trust_and_safety_models/toxicity/load_model.py create mode 100644 trust_and_safety_models/toxicity/optim/__init__.docx delete mode 100644 trust_and_safety_models/toxicity/optim/__init__.py create mode 100644 trust_and_safety_models/toxicity/optim/callbacks.docx delete mode 100644 trust_and_safety_models/toxicity/optim/callbacks.py create mode 100644 trust_and_safety_models/toxicity/optim/losses.docx delete mode 100644 trust_and_safety_models/toxicity/optim/losses.py create mode 100644 trust_and_safety_models/toxicity/optim/schedulers.docx delete mode 100644 trust_and_safety_models/toxicity/optim/schedulers.py create mode 100644 trust_and_safety_models/toxicity/rescoring.docx delete mode 100644 trust_and_safety_models/toxicity/rescoring.py create mode 100644 trust_and_safety_models/toxicity/settings/__init__.docx delete mode 100644 trust_and_safety_models/toxicity/settings/__init__.py create mode 100644 trust_and_safety_models/toxicity/settings/default_settings_tox.docx delete mode 100644 trust_and_safety_models/toxicity/settings/default_settings_tox.py create mode 100644 trust_and_safety_models/toxicity/train.docx delete mode 100644 trust_and_safety_models/toxicity/train.py create mode 100644 trust_and_safety_models/toxicity/utils/__init__.docx delete mode 100644 trust_and_safety_models/toxicity/utils/__init__.py create mode 100644 trust_and_safety_models/toxicity/utils/helpers.docx delete mode 100644 trust_and_safety_models/toxicity/utils/helpers.py create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/additionalfields/AdditionalFields.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/additionalfields/AdditionalFields.scala delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/additionalfields/BUILD create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/additionalfields/BUILD.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/caching/BUILD create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/caching/BUILD.docx create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/caching/CacheOperations.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/caching/CacheOperations.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/caching/CacheResult.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/caching/CacheResult.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/caching/Expiry.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/caching/Expiry.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/caching/ServoCachedValueSerializer.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/caching/ServoCachedValueSerializer.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/caching/SoftTtl.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/caching/SoftTtl.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/caching/StitchAsync.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/caching/StitchAsync.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/caching/StitchCacheOperations.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/caching/StitchCacheOperations.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/caching/StitchCaching.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/caching/StitchCaching.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/caching/ValueSerializer.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/caching/ValueSerializer.scala delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/client_id/BUILD create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/client_id/BUILD.docx create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/client_id/ClientIdHelper.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/client_id/ClientIdHelper.scala delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/context/BUILD create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/context/BUILD.docx create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/context/TweetypieContext.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/context/TweetypieContext.scala delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/decider/BUILD create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/decider/BUILD.docx create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/decider/DeciderGates.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/decider/DeciderGates.scala delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/decider/overrides/BUILD create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/decider/overrides/BUILD.docx create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/decider/overrides/TweetyPieDeciderOverrides.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/decider/overrides/TweetyPieDeciderOverrides.scala delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/jiminy/tweetypie/BUILD create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/jiminy/tweetypie/BUILD.docx create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/jiminy/tweetypie/NudgeBuilder.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/jiminy/tweetypie/NudgeBuilder.scala delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/matching/BUILD create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/matching/BUILD.docx create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/matching/TokenSequence.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/matching/TokenSequence.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/matching/Tokenizer.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/matching/Tokenizer.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/matching/TweetTokenizer.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/matching/TweetTokenizer.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/matching/UserMutes.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/matching/UserMutes.scala delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/media/BUILD create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/media/BUILD.docx create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/media/Media.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/media/Media.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/media/MediaUrl.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/media/MediaUrl.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/media/package.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/media/package.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/storage/AddTweetHandler.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/storage/AddTweetHandler.scala delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/storage/BUILD create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/storage/BUILD.docx create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/storage/BounceDeleteHandler.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/storage/BounceDeleteHandler.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/storage/Codecs.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/storage/Codecs.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/storage/DeleteAdditionalFieldsHandler.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/storage/DeleteAdditionalFieldsHandler.scala create mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/storage/Field.docx delete mode 100644 tweetypie/common/src/scala/com/twitter/tweetypie/storage/Field.scala diff --git a/timelineranker/server/src/main/scala/com/twitter/timelineranker/util/TweetypieContentFeaturesProvider.docx b/timelineranker/server/src/main/scala/com/twitter/timelineranker/util/TweetypieContentFeaturesProvider.docx new file mode 100644 index 0000000000000000000000000000000000000000..d591d595e153349ced44760d5617475c8a48b1f7 GIT binary patch literal 37927 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

z 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 TTweet} -import com.twitter.util.Future - -object TweetypieContentFeaturesProvider { - val DefaultTweetyPieFieldsToHydrate: Set[TweetInclude] = TweetyPieClient.CoreTweetFields ++ - TweetyPieClient.MediaFields ++ - TweetyPieClient.SelfThreadFields ++ - Set[TweetInclude](TweetInclude.MediaEntityFieldId(MediaEntity.AdditionalMetadataField.id)) - - //add Tweet fields from semantic core - val TweetyPieFieldsToHydrate: Set[TweetInclude] = DefaultTweetyPieFieldsToHydrate ++ - Set[TweetInclude](TweetInclude.TweetFieldId(TTweet.EscherbirdEntityAnnotationsField.id)) - val EmptyHydratedTweets: HydratedTweets = - HydratedTweets(Seq.empty[HydratedTweet], Seq.empty[HydratedTweet]) - val EmptyHydratedTweetsFuture: Future[HydratedTweets] = Future.value(EmptyHydratedTweets) -} - -class TweetypieContentFeaturesProvider( - tweetHydrator: TweetHydrator, - enableContentFeaturesGate: Gate[RecapQuery], - enableTokensInContentFeaturesGate: Gate[RecapQuery], - enableTweetTextInContentFeaturesGate: Gate[RecapQuery], - enableConversationControlContentFeaturesGate: Gate[RecapQuery], - enableTweetMediaHydrationGate: Gate[RecapQuery], - statsReceiver: StatsReceiver) - extends ContentFeaturesProvider { - val scopedStatsReceiver: StatsReceiver = statsReceiver.scope("TweetypieContentFeaturesProvider") - - override def apply( - query: RecapQuery, - tweetIds: Seq[TweetId] - ): Future[Map[TweetId, ContentFeatures]] = { - import TweetypieContentFeaturesProvider._ - - val tweetypieHydrationHandler = new FailOpenHandler(scopedStatsReceiver) - val hydratePenguinTextFeatures = enableContentFeaturesGate(query) - val hydrateSemanticCoreFeatures = enableContentFeaturesGate(query) - val hydrateTokens = enableTokensInContentFeaturesGate(query) - val hydrateTweetText = enableTweetTextInContentFeaturesGate(query) - val hydrateConversationControl = enableConversationControlContentFeaturesGate(query) - - val userId = query.userId - - val hydratedTweetsFuture = tweetypieHydrationHandler { - // tweetyPie fields to hydrate given hydrateSemanticCoreFeatures - val fieldsToHydrateWithSemanticCore = if (hydrateSemanticCoreFeatures) { - TweetyPieFieldsToHydrate - } else { - DefaultTweetyPieFieldsToHydrate - } - - // tweetyPie fields to hydrate given hydrateSemanticCoreFeatures & hydrateConversationControl - val fieldsToHydrateWithConversationControl = if (hydrateConversationControl) { - fieldsToHydrateWithSemanticCore ++ TweetyPieClient.ConversationControlField - } else { - fieldsToHydrateWithSemanticCore - } - - tweetHydrator.hydrate(Some(userId), tweetIds, fieldsToHydrateWithConversationControl) - - } { e: Throwable => EmptyHydratedTweetsFuture } - - hydratedTweetsFuture.map[Map[TweetId, ContentFeatures]] { hydratedTweets => - hydratedTweets.outerTweets.map { hydratedTweet => - val contentFeaturesFromTweet = ContentFeatures.Empty.copy( - selfThreadMetadata = hydratedTweet.tweet.selfThreadMetadata - ) - - val contentFeaturesWithText = TweetTextFeaturesExtractor.addTextFeaturesFromTweet( - contentFeaturesFromTweet, - hydratedTweet.tweet, - hydratePenguinTextFeatures, - hydrateTokens, - hydrateTweetText - ) - val contentFeaturesWithMedia = TweetMediaFeaturesExtractor.addMediaFeaturesFromTweet( - contentFeaturesWithText, - hydratedTweet.tweet, - enableTweetMediaHydrationGate(query) - ) - val contentFeaturesWithAnnotations = TweetAnnotationFeaturesExtractor - .addAnnotationFeaturesFromTweet( - contentFeaturesWithMedia, - hydratedTweet.tweet, - hydrateSemanticCoreFeatures - ) - // add conversationControl to content features if hydrateConversationControl is true - if (hydrateConversationControl) { - val contentFeaturesWithConversationControl = contentFeaturesWithAnnotations.copy( - conversationControl = hydratedTweet.tweet.conversationControl - ) - hydratedTweet.tweetId -> contentFeaturesWithConversationControl - } else { - hydratedTweet.tweetId -> contentFeaturesWithAnnotations - } - - }.toMap - } - } -} diff --git a/timelineranker/server/src/main/scala/com/twitter/timelineranker/visibility/BUILD b/timelineranker/server/src/main/scala/com/twitter/timelineranker/visibility/BUILD deleted file mode 100644 index 29e1c63cb..000000000 --- a/timelineranker/server/src/main/scala/com/twitter/timelineranker/visibility/BUILD +++ /dev/null @@ -1,17 +0,0 @@ -scala_library( - sources = ["*.scala"], - compiler_option_sets = ["fatal_warnings"], - tags = ["bazel-compatible"], - dependencies = [ - "servo/repo/src/main/scala", - "src/thrift/com/twitter/wtf/candidate:wtf-candidate-scala", - "timelineranker/server/src/main/scala/com/twitter/timelineranker/core", - "timelines:visibility", - "timelines/src/main/scala/com/twitter/timelines/clients/socialgraph", - "timelines/src/main/scala/com/twitter/timelines/util", - "timelines/src/main/scala/com/twitter/timelines/util/stats", - "util/util-core:util-core-util", - "util/util-logging/src/main/scala", - "util/util-stats/src/main/scala", - ], -) diff --git a/timelineranker/server/src/main/scala/com/twitter/timelineranker/visibility/BUILD.docx b/timelineranker/server/src/main/scala/com/twitter/timelineranker/visibility/BUILD.docx new file mode 100644 index 0000000000000000000000000000000000000000..ba379e07c104292868706c704de4e3513ffb09d2 GIT binary patch literal 36883 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 z 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 NAVVTBdua54cmQ&FC@TN} literal 0 HcmV?d00001 diff --git a/timelineranker/server/src/main/scala/com/twitter/timelineranker/visibility/FollowGraphDataProvider.scala b/timelineranker/server/src/main/scala/com/twitter/timelineranker/visibility/FollowGraphDataProvider.scala deleted file mode 100644 index 4db2c4216..000000000 --- a/timelineranker/server/src/main/scala/com/twitter/timelineranker/visibility/FollowGraphDataProvider.scala +++ /dev/null @@ -1,25 +0,0 @@ -package com.twitter.timelineranker.visibility - -import com.twitter.timelineranker.core.FollowGraphData -import com.twitter.timelineranker.core.FollowGraphDataFuture -import com.twitter.timelines.model.UserId -import com.twitter.util.Future - -trait FollowGraphDataProvider { - - /** - * Gets follow graph data for the given user. - * - * @param userId user whose follow graph details are to be obtained. - * @param maxFollowingCount Maximum number of followed user IDs to fetch. - * If the given user follows more than these many users, - * then the most recent maxFollowingCount users are returned. - */ - def get(userId: UserId, maxFollowingCount: Int): Future[FollowGraphData] - - def getAsync(userId: UserId, maxFollowingCount: Int): FollowGraphDataFuture - - def getFollowing(userId: UserId, maxFollowingCount: Int): Future[Seq[UserId]] - - def getMutuallyFollowingUserIds(userId: UserId, followingIds: Seq[UserId]): Future[Set[UserId]] -} diff --git a/timelineranker/server/src/main/scala/com/twitter/timelineranker/visibility/RealGraphFollowGraphDataProvider.docx b/timelineranker/server/src/main/scala/com/twitter/timelineranker/visibility/RealGraphFollowGraphDataProvider.docx new file mode 100644 index 0000000000000000000000000000000000000000..6e579cc292242d4b30b40d27e12ae3dba052c9ca GIT binary patch literal 38603 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 sc@+1fSGFZyU_Ce<+|oNI{W8S1M~CJn9KZ= the max requested following - * count, which implies that there were additional followings beyond the max requested count. If so, - * fetches the full set of followings from RealGraph (go/realgraph), which will be at most 2000. - * - * Because the RealGraph dataset is not realtime and thus can potentially include stale followings, - * the provider confirms that the followings fetched from RealGraph are valid using SGS's - * getFollowOverlap method, and then merges the valid RealGraph followings with the underlying - * followings. - * - * Note that this supplementing is expected to be very rare as most users do not have more than - * the max followings we fetch from SGS. Also note that this class is mainly intended for use - * in the home timeline materialization path, with the goal of preventing a case where users - * who follow a very large number of accounts may not see Tweets from their earlier follows if we - * used SGS-based follow fetching alone. - */ -class RealGraphFollowGraphDataProvider( - underlying: FollowGraphDataProvider, - realGraphClient: KeyValueRepository[Seq[UserId], UserId, CandidateSeq], - socialGraphClient: SocialGraphClient, - supplementFollowsWithRealGraphGate: Gate[UserId], - statsReceiver: StatsReceiver) - extends FollowGraphDataProvider { - import RealGraphFollowGraphDataProvider._ - - private[this] val scopedStatsReceiver = statsReceiver.scope("realGraphFollowGraphDataProvider") - private[this] val requestCounter = scopedStatsReceiver.counter("requests") - private[this] val atMaxCounter = scopedStatsReceiver.counter("followsAtMax") - private[this] val totalLatencyStat = scopedStatsReceiver.stat("totalLatencyWhenSupplementing") - private[this] val supplementLatencyStat = scopedStatsReceiver.stat("supplementFollowsLatency") - private[this] val realGraphResponseSizeStat = scopedStatsReceiver.stat("realGraphFollows") - private[this] val realGraphEmptyCounter = scopedStatsReceiver.counter("realGraphEmpty") - private[this] val nonOverlappingSizeStat = scopedStatsReceiver.stat("nonOverlappingFollows") - - private[this] val failOpenHandler = new FailOpenHandler(scopedStatsReceiver) - - override def get(userId: UserId, maxFollowingCount: Int): Future[FollowGraphData] = { - getAsync(userId, maxFollowingCount).get() - } - - override def getAsync(userId: UserId, maxFollowingCount: Int): FollowGraphDataFuture = { - val startTime = Stopwatch.timeMillis() - val underlyingResult = underlying.getAsync(userId, maxFollowingCount) - if (supplementFollowsWithRealGraphGate(userId)) { - val supplementedFollows = underlyingResult.followedUserIdsFuture.flatMap { sgsFollows => - supplementFollowsWithRealGraph(userId, maxFollowingCount, sgsFollows, startTime) - } - underlyingResult.copy(followedUserIdsFuture = supplementedFollows) - } else { - underlyingResult - } - } - - override def getFollowing(userId: UserId, maxFollowingCount: Int): Future[Seq[UserId]] = { - val startTime = Stopwatch.timeMillis() - val underlyingFollows = underlying.getFollowing(userId, maxFollowingCount) - if (supplementFollowsWithRealGraphGate(userId)) { - underlying.getFollowing(userId, maxFollowingCount).flatMap { sgsFollows => - supplementFollowsWithRealGraph(userId, maxFollowingCount, sgsFollows, startTime) - } - } else { - underlyingFollows - } - } - - private[this] def supplementFollowsWithRealGraph( - userId: UserId, - maxFollowingCount: Int, - sgsFollows: Seq[Long], - startTime: Long - ): Future[Seq[UserId]] = { - requestCounter.incr() - if (sgsFollows.size >= maxFollowingCount) { - atMaxCounter.incr() - val supplementedFollowsFuture = realGraphClient(Seq(userId)) - .map(_.getOrElse(userId, EmptyRealGraphResponse)) - .map(_.candidates.map(_.userId)) - .flatMap { - case realGraphFollows if realGraphFollows.nonEmpty => - realGraphResponseSizeStat.add(realGraphFollows.size) - // Filter out "stale" follows from realgraph by checking them against SGS - val verifiedRealGraphFollows = - socialGraphClient.getFollowOverlap(userId, realGraphFollows) - verifiedRealGraphFollows.map { follows => - val combinedFollows = (sgsFollows ++ follows).distinct - val additionalFollows = combinedFollows.size - sgsFollows.size - if (additionalFollows > 0) nonOverlappingSizeStat.add(additionalFollows) - combinedFollows - } - case _ => - realGraphEmptyCounter.incr() - Future.value(sgsFollows) - } - .onSuccess { _ => totalLatencyStat.add(Stopwatch.timeMillis() - startTime) } - - Stat.timeFuture(supplementLatencyStat) { - failOpenHandler(supplementedFollowsFuture) { _ => Future.value(sgsFollows) } - } - } else { - Future.value(sgsFollows) - } - } - - override def getMutuallyFollowingUserIds( - userId: UserId, - followingIds: Seq[UserId] - ): Future[Set[UserId]] = { - underlying.getMutuallyFollowingUserIds(userId, followingIds) - } -} diff --git a/timelineranker/server/src/main/scala/com/twitter/timelineranker/visibility/SgsFollowGraphDataProvider.docx b/timelineranker/server/src/main/scala/com/twitter/timelineranker/visibility/SgsFollowGraphDataProvider.docx new file mode 100644 index 0000000000000000000000000000000000000000..a834b7b6dedffb45eb6ddd5a198ce3d81f3918e4 GIT binary patch literal 39018 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 literal 0 HcmV?d00001 diff --git a/timelineranker/server/src/main/scala/com/twitter/timelineranker/visibility/SgsFollowGraphDataProvider.scala b/timelineranker/server/src/main/scala/com/twitter/timelineranker/visibility/SgsFollowGraphDataProvider.scala deleted file mode 100644 index 99497fc8b..000000000 --- a/timelineranker/server/src/main/scala/com/twitter/timelineranker/visibility/SgsFollowGraphDataProvider.scala +++ /dev/null @@ -1,266 +0,0 @@ -package com.twitter.timelineranker.visibility - -import com.twitter.finagle.stats.Stat -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.timelineranker.core.FollowGraphData -import com.twitter.timelineranker.core.FollowGraphDataFuture -import com.twitter.timelines.clients.socialgraph.ScopedSocialGraphClientFactory -import com.twitter.timelines.model._ -import com.twitter.timelines.util.FailOpenHandler -import com.twitter.timelines.util.stats._ -import com.twitter.timelines.visibility._ -import com.twitter.util.Future - -object SgsFollowGraphDataProvider { - val EmptyUserIdsSet: Set[UserId] = Set.empty[UserId] - val EmptyUserIdsSetFuture: Future[Set[UserId]] = Future.value(EmptyUserIdsSet) - val EmptyUserIdsSeq: Seq[UserId] = Seq.empty[UserId] - val EmptyUserIdsSeqFuture: Future[Seq[UserId]] = Future.value(EmptyUserIdsSeq) - val EmptyVisibilityProfiles: Map[UserId, VisibilityProfile] = Map.empty[UserId, VisibilityProfile] - val EmptyVisibilityProfilesFuture: Future[Map[UserId, VisibilityProfile]] = - Future.value(EmptyVisibilityProfiles) -} - -object SgsFollowGraphDataFields extends Enumeration { - val FollowedUserIds: Value = Value - val MutuallyFollowingUserIds: Value = Value - val MutedUserIds: Value = Value - val RetweetsMutedUserIds: Value = Value - - val None: ValueSet = SgsFollowGraphDataFields.ValueSet() - - def throwIfInvalid(fields: SgsFollowGraphDataFields.ValueSet): Unit = { - if (fields.contains(MutuallyFollowingUserIds) && !fields.contains(FollowedUserIds)) { - throw new IllegalArgumentException( - "MutuallyFollowingUserIds field requires FollowedUserIds field to be defined." - ) - } - } -} - -/** - * Provides information on the follow graph of a given user. - */ -class SgsFollowGraphDataProvider( - socialGraphClientFactory: ScopedSocialGraphClientFactory, - visibilityProfileHydratorFactory: VisibilityProfileHydratorFactory, - fieldsToFetch: SgsFollowGraphDataFields.ValueSet, - scope: RequestScope, - statsReceiver: StatsReceiver) - extends FollowGraphDataProvider - with RequestStats { - - SgsFollowGraphDataFields.throwIfInvalid(fieldsToFetch) - - private[this] val stats = scope.stats("followGraphDataProvider", statsReceiver) - private[this] val scopedStatsReceiver = stats.scopedStatsReceiver - - private[this] val followingScope = scopedStatsReceiver.scope("following") - private[this] val followingLatencyStat = followingScope.stat(LatencyMs) - private[this] val followingSizeStat = followingScope.stat(Size) - private[this] val followingTruncatedCounter = followingScope.counter("numTruncated") - - private[this] val mutuallyFollowingScope = scopedStatsReceiver.scope("mutuallyFollowing") - private[this] val mutuallyFollowingLatencyStat = mutuallyFollowingScope.stat(LatencyMs) - private[this] val mutuallyFollowingSizeStat = mutuallyFollowingScope.stat(Size) - - private[this] val visibilityScope = scopedStatsReceiver.scope("visibility") - private[this] val visibilityLatencyStat = visibilityScope.stat(LatencyMs) - private[this] val mutedStat = visibilityScope.stat("muted") - private[this] val retweetsMutedStat = visibilityScope.stat("retweetsMuted") - - private[this] val socialGraphClient = socialGraphClientFactory.scope(scope) - private[this] val visibilityProfileHydrator = - createVisibilityProfileHydrator(visibilityProfileHydratorFactory, scope, fieldsToFetch) - - private[this] val failOpenScope = scopedStatsReceiver.scope("failOpen") - private[this] val mutuallyFollowingHandler = - new FailOpenHandler(failOpenScope, "mutuallyFollowing") - - private[this] val obtainVisibilityProfiles = fieldsToFetch.contains( - SgsFollowGraphDataFields.MutedUserIds - ) || fieldsToFetch.contains(SgsFollowGraphDataFields.RetweetsMutedUserIds) - - /** - * Gets follow graph data for the given user. - * - * @param userId user whose follow graph details are to be obtained. - * @param maxFollowingCount Maximum number of followed user IDs to fetch. - * If the given user follows more than these many users, - * then the most recent maxFollowingCount users are returned. - */ - def get( - userId: UserId, - maxFollowingCount: Int - ): Future[FollowGraphData] = { - getAsync( - userId, - maxFollowingCount - ).get() - } - - def getAsync( - userId: UserId, - maxFollowingCount: Int - ): FollowGraphDataFuture = { - - stats.statRequest() - val followedUserIdsFuture = - if (fieldsToFetch.contains(SgsFollowGraphDataFields.FollowedUserIds)) { - getFollowing(userId, maxFollowingCount) - } else { - SgsFollowGraphDataProvider.EmptyUserIdsSeqFuture - } - - val mutuallyFollowingUserIdsFuture = - if (fieldsToFetch.contains(SgsFollowGraphDataFields.MutuallyFollowingUserIds)) { - followedUserIdsFuture.flatMap { followedUserIds => - getMutuallyFollowingUserIds(userId, followedUserIds) - } - } else { - SgsFollowGraphDataProvider.EmptyUserIdsSetFuture - } - - val visibilityProfilesFuture = if (obtainVisibilityProfiles) { - followedUserIdsFuture.flatMap { followedUserIds => - getVisibilityProfiles(userId, followedUserIds) - } - } else { - SgsFollowGraphDataProvider.EmptyVisibilityProfilesFuture - } - - val mutedUserIdsFuture = if (fieldsToFetch.contains(SgsFollowGraphDataFields.MutedUserIds)) { - getMutedUsers(visibilityProfilesFuture).map { mutedUserIds => - mutedStat.add(mutedUserIds.size) - mutedUserIds - } - } else { - SgsFollowGraphDataProvider.EmptyUserIdsSetFuture - } - - val retweetsMutedUserIdsFuture = - if (fieldsToFetch.contains(SgsFollowGraphDataFields.RetweetsMutedUserIds)) { - getRetweetsMutedUsers(visibilityProfilesFuture).map { retweetsMutedUserIds => - retweetsMutedStat.add(retweetsMutedUserIds.size) - retweetsMutedUserIds - } - } else { - SgsFollowGraphDataProvider.EmptyUserIdsSetFuture - } - - FollowGraphDataFuture( - userId, - followedUserIdsFuture, - mutuallyFollowingUserIdsFuture, - mutedUserIdsFuture, - retweetsMutedUserIdsFuture - ) - } - - private[this] def getVisibilityProfiles( - userId: UserId, - followingIds: Seq[UserId] - ): Future[Map[UserId, VisibilityProfile]] = { - Stat.timeFuture(visibilityLatencyStat) { - visibilityProfileHydrator(Some(userId), Future.value(followingIds.toSeq)) - } - } - - def getFollowing(userId: UserId, maxFollowingCount: Int): Future[Seq[UserId]] = { - Stat.timeFuture(followingLatencyStat) { - // We fetch 1 more than the limit so that we can decide if we ended up - // truncating the followings. - val followingIdsFuture = socialGraphClient.getFollowing(userId, Some(maxFollowingCount + 1)) - followingIdsFuture.map { followingIds => - followingSizeStat.add(followingIds.length) - if (followingIds.length > maxFollowingCount) { - followingTruncatedCounter.incr() - followingIds.take(maxFollowingCount) - } else { - followingIds - } - } - } - } - - def getMutuallyFollowingUserIds( - userId: UserId, - followingIds: Seq[UserId] - ): Future[Set[UserId]] = { - Stat.timeFuture(mutuallyFollowingLatencyStat) { - mutuallyFollowingHandler { - val mutuallyFollowingIdsFuture = - socialGraphClient.getFollowOverlap(followingIds.toSeq, userId) - mutuallyFollowingIdsFuture.map { mutuallyFollowingIds => - mutuallyFollowingSizeStat.add(mutuallyFollowingIds.size) - } - mutuallyFollowingIdsFuture - } { e: Throwable => SgsFollowGraphDataProvider.EmptyUserIdsSetFuture } - } - } - - private[this] def getRetweetsMutedUsers( - visibilityProfilesFuture: Future[Map[UserId, VisibilityProfile]] - ): Future[Set[UserId]] = { - // If the hydrator is not able to fetch retweets-muted status, we default to true. - getUsersMatchingVisibilityPredicate( - visibilityProfilesFuture, - (visibilityProfile: VisibilityProfile) => visibilityProfile.areRetweetsMuted.getOrElse(true) - ) - } - - private[this] def getMutedUsers( - visibilityProfilesFuture: Future[Map[UserId, VisibilityProfile]] - ): Future[Set[UserId]] = { - // If the hydrator is not able to fetch muted status, we default to true. - getUsersMatchingVisibilityPredicate( - visibilityProfilesFuture, - (visibilityProfile: VisibilityProfile) => visibilityProfile.isMuted.getOrElse(true) - ) - } - - private[this] def getUsersMatchingVisibilityPredicate( - visibilityProfilesFuture: Future[Map[UserId, VisibilityProfile]], - predicate: (VisibilityProfile => Boolean) - ): Future[Set[UserId]] = { - visibilityProfilesFuture.map { visibilityProfiles => - visibilityProfiles - .filter { - case (_, visibilityProfile) => - predicate(visibilityProfile) - } - .collect { case (userId, _) => userId } - .toSet - } - } - - private[this] def createVisibilityProfileHydrator( - factory: VisibilityProfileHydratorFactory, - scope: RequestScope, - fieldsToFetch: SgsFollowGraphDataFields.ValueSet - ): VisibilityProfileHydrator = { - val hydrationProfileRequest = HydrationProfileRequest( - getMuted = fieldsToFetch.contains(SgsFollowGraphDataFields.MutedUserIds), - getRetweetsMuted = fieldsToFetch.contains(SgsFollowGraphDataFields.RetweetsMutedUserIds) - ) - factory(hydrationProfileRequest, scope) - } -} - -class ScopedSgsFollowGraphDataProviderFactory( - socialGraphClientFactory: ScopedSocialGraphClientFactory, - visibilityProfileHydratorFactory: VisibilityProfileHydratorFactory, - fieldsToFetch: SgsFollowGraphDataFields.ValueSet, - statsReceiver: StatsReceiver) - extends ScopedFactory[SgsFollowGraphDataProvider] { - - override def scope(scope: RequestScope): SgsFollowGraphDataProvider = { - new SgsFollowGraphDataProvider( - socialGraphClientFactory, - visibilityProfileHydratorFactory, - fieldsToFetch, - scope, - statsReceiver - ) - } -} diff --git a/timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/BUILD b/timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/BUILD deleted file mode 100644 index 5ce990999..000000000 --- a/timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/BUILD +++ /dev/null @@ -1,8 +0,0 @@ -target( - name = "earlybird_ranking", - dependencies = [ - "timelines/data_processing/ad_hoc/earlybird_ranking/common", - "timelines/data_processing/ad_hoc/earlybird_ranking/model_evaluation", - "timelines/data_processing/ad_hoc/earlybird_ranking/training_data_generation", - ], -) diff --git a/timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/BUILD.docx b/timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/BUILD.docx new file mode 100644 index 0000000000000000000000000000000000000000..f1e19d7d6bb8e258a4c0f54447c359196e1f7754 GIT binary patch literal 36754 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 literal 0 HcmV?d00001 diff --git a/timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/common/BUILD b/timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/common/BUILD deleted file mode 100644 index f7dcdcfd5..000000000 --- a/timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/common/BUILD +++ /dev/null @@ -1,24 +0,0 @@ -scala_library( - name = "common", - sources = ["*.scala"], - platform = "java8", - tags = [ - "bazel-compatible", - "bazel-compatible:migrated", - ], - dependencies = [ - "src/java/com/twitter/ml/api:api-base", - "src/java/com/twitter/ml/api/constant", - "src/java/com/twitter/ml/api/transform", - "src/java/com/twitter/search/modeling/tweet_ranking", - "src/scala/com/twitter/ml/api/util", - "src/scala/com/twitter/timelines/prediction/features/common", - "src/scala/com/twitter/timelines/prediction/features/itl", - "src/scala/com/twitter/timelines/prediction/features/real_graph", - "src/scala/com/twitter/timelines/prediction/features/recap", - "src/scala/com/twitter/timelines/prediction/features/request_context", - "src/scala/com/twitter/timelines/prediction/features/time_features", - "src/thrift/com/twitter/ml/api:data-java", - "src/thrift/com/twitter/ml/api:transform-java", - ], -) diff --git a/timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/common/BUILD.docx b/timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/common/BUILD.docx new file mode 100644 index 0000000000000000000000000000000000000000..14c70492912b796bebeef0a6328f3b1a564edbae GIT binary patch literal 36917 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 literal 0 HcmV?d00001 diff --git a/timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/common/EarlybirdTrainingConfiguration.scala b/timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/common/EarlybirdTrainingConfiguration.scala deleted file mode 100644 index 201864038..000000000 --- a/timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/common/EarlybirdTrainingConfiguration.scala +++ /dev/null @@ -1,271 +0,0 @@ -package com.twitter.timelines.data_processing.ad_hoc.earlybird_ranking.common - -import com.twitter.ml.api.DataRecord -import com.twitter.ml.api.Feature -import com.twitter.ml.api.FeatureContext -import com.twitter.ml.api.ITransform -import com.twitter.ml.api.transform.CascadeTransform -import com.twitter.ml.api.transform.TransformFactory -import com.twitter.ml.api.util.SRichDataRecord -import com.twitter.ml.api.constant.SharedFeatures -import com.twitter.search.common.features.SearchResultFeature -import com.twitter.search.common.features.ExternalTweetFeature -import com.twitter.search.common.features.TweetFeature -import com.twitter.timelines.prediction.features.recap.RecapFeatures -import com.twitter.timelines.prediction.features.request_context.RequestContextFeatures -import com.twitter.timelines.prediction.features.time_features.TimeDataRecordFeatures -import com.twitter.timelines.prediction.features.common.TimelinesSharedFeatures -import com.twitter.timelines.prediction.features.real_graph.RealGraphDataRecordFeatures -import scala.collection.JavaConverters._ -import java.lang.{Boolean => JBoolean} - -case class LabelInfo(name: String, downsampleFraction: Double, importance: Double) - -case class LabelInfoWithFeature(info: LabelInfo, feature: Feature[JBoolean]) - -trait EarlybirdTrainingConfiguration { - - protected def labels: Map[String, Feature.Binary] - - protected def weights: Map[String, Double] = Map( - "detail_expanded" -> 0.3, - "favorited" -> 1.0, - "open_linked" -> 0.1, - "photo_expanded" -> 0.03, - "profile_clicked" -> 1.0, - "replied" -> 9.0, - "retweeted" -> 1.0, - "video_playback50" -> 0.01 - ) - - // we basically should not downsample any of the precious positive data. - // importance are currently set to match the full model's weights. - protected def PositiveSamplingRate: Double = 1.0 - private def NegativeSamplingRate: Double = PositiveSamplingRate * 0.08 - - // we basically should not downsample any of the precious positive data. - // importance are currently set to match the full model's weights. - final lazy val LabelInfos: List[LabelInfoWithFeature] = { - assert(labels.keySet == weights.keySet) - labels.keySet.map(makeLabelInfoWithFeature).toList - } - - def makeLabelInfoWithFeature(labelName: String): LabelInfoWithFeature = { - LabelInfoWithFeature( - LabelInfo(labelName, PositiveSamplingRate, weights(labelName)), - labels(labelName)) - } - - final lazy val NegativeInfo: LabelInfo = LabelInfo("negative", NegativeSamplingRate, 1.0) - - // example of features available in schema based namespace: - protected def featureToSearchResultFeatureMap: Map[Feature[_], SearchResultFeature] = Map( - RecapFeatures.TEXT_SCORE -> TweetFeature.TEXT_SCORE, - RecapFeatures.REPLY_COUNT -> TweetFeature.REPLY_COUNT, - RecapFeatures.RETWEET_COUNT -> TweetFeature.RETWEET_COUNT, - RecapFeatures.FAV_COUNT -> TweetFeature.FAVORITE_COUNT, - RecapFeatures.HAS_CARD -> TweetFeature.HAS_CARD_FLAG, - RecapFeatures.HAS_CONSUMER_VIDEO -> TweetFeature.HAS_CONSUMER_VIDEO_FLAG, - RecapFeatures.HAS_PRO_VIDEO -> TweetFeature.HAS_PRO_VIDEO_FLAG, - // no corresponding HAS_NATIVE_VIDEO feature in TweetFeature - RecapFeatures.HAS_VINE -> TweetFeature.HAS_VINE_FLAG, - RecapFeatures.HAS_PERISCOPE -> TweetFeature.HAS_PERISCOPE_FLAG, - RecapFeatures.HAS_NATIVE_IMAGE -> TweetFeature.HAS_NATIVE_IMAGE_FLAG, - RecapFeatures.HAS_IMAGE -> TweetFeature.HAS_IMAGE_URL_FLAG, - RecapFeatures.HAS_NEWS -> TweetFeature.HAS_NEWS_URL_FLAG, - RecapFeatures.HAS_VIDEO -> TweetFeature.HAS_VIDEO_URL_FLAG, - RecapFeatures.HAS_TREND -> TweetFeature.HAS_TREND_FLAG, - RecapFeatures.HAS_MULTIPLE_HASHTAGS_OR_TRENDS -> TweetFeature.HAS_MULTIPLE_HASHTAGS_OR_TRENDS_FLAG, - RecapFeatures.IS_OFFENSIVE -> TweetFeature.IS_OFFENSIVE_FLAG, - RecapFeatures.IS_REPLY -> TweetFeature.IS_REPLY_FLAG, - RecapFeatures.IS_RETWEET -> TweetFeature.IS_RETWEET_FLAG, - RecapFeatures.IS_AUTHOR_BOT -> TweetFeature.IS_USER_BOT_FLAG, - RecapFeatures.FROM_VERIFIED_ACCOUNT -> TweetFeature.FROM_VERIFIED_ACCOUNT_FLAG, - RecapFeatures.USER_REP -> TweetFeature.USER_REPUTATION, - RecapFeatures.EMBEDS_IMPRESSION_COUNT -> TweetFeature.EMBEDS_IMPRESSION_COUNT, - RecapFeatures.EMBEDS_URL_COUNT -> TweetFeature.EMBEDS_URL_COUNT, - // RecapFeatures.VIDEO_VIEW_COUNT deprecated - RecapFeatures.FAV_COUNT_V2 -> TweetFeature.FAVORITE_COUNT_V2, - RecapFeatures.RETWEET_COUNT_V2 -> TweetFeature.RETWEET_COUNT_V2, - RecapFeatures.REPLY_COUNT_V2 -> TweetFeature.REPLY_COUNT_V2, - RecapFeatures.IS_SENSITIVE -> TweetFeature.IS_SENSITIVE_CONTENT, - RecapFeatures.HAS_MULTIPLE_MEDIA -> TweetFeature.HAS_MULTIPLE_MEDIA_FLAG, - RecapFeatures.IS_AUTHOR_PROFILE_EGG -> TweetFeature.PROFILE_IS_EGG_FLAG, - RecapFeatures.IS_AUTHOR_NEW -> TweetFeature.IS_USER_NEW_FLAG, - RecapFeatures.NUM_MENTIONS -> TweetFeature.NUM_MENTIONS, - RecapFeatures.NUM_HASHTAGS -> TweetFeature.NUM_HASHTAGS, - RecapFeatures.HAS_VISIBLE_LINK -> TweetFeature.HAS_VISIBLE_LINK_FLAG, - RecapFeatures.HAS_LINK -> TweetFeature.HAS_LINK_FLAG, - //note: DISCRETE features are not supported by the modelInterpreter tool. - // for the following features, we will create separate CONTINUOUS features instead of renaming - //RecapFeatures.LINK_LANGUAGE - //RecapFeatures.LANGUAGE - TimelinesSharedFeatures.HAS_QUOTE -> TweetFeature.HAS_QUOTE_FLAG, - TimelinesSharedFeatures.QUOTE_COUNT -> TweetFeature.QUOTE_COUNT, - TimelinesSharedFeatures.WEIGHTED_FAV_COUNT -> TweetFeature.WEIGHTED_FAVORITE_COUNT, - TimelinesSharedFeatures.WEIGHTED_QUOTE_COUNT -> TweetFeature.WEIGHTED_QUOTE_COUNT, - TimelinesSharedFeatures.WEIGHTED_REPLY_COUNT -> TweetFeature.WEIGHTED_REPLY_COUNT, - TimelinesSharedFeatures.WEIGHTED_RETWEET_COUNT -> TweetFeature.WEIGHTED_RETWEET_COUNT, - TimelinesSharedFeatures.DECAYED_FAVORITE_COUNT -> TweetFeature.DECAYED_FAVORITE_COUNT, - TimelinesSharedFeatures.DECAYED_RETWEET_COUNT -> TweetFeature.DECAYED_RETWEET_COUNT, - TimelinesSharedFeatures.DECAYED_REPLY_COUNT -> TweetFeature.DECAYED_RETWEET_COUNT, - TimelinesSharedFeatures.DECAYED_QUOTE_COUNT -> TweetFeature.DECAYED_QUOTE_COUNT, - TimelinesSharedFeatures.FAKE_FAVORITE_COUNT -> TweetFeature.FAKE_FAVORITE_COUNT, - TimelinesSharedFeatures.FAKE_RETWEET_COUNT -> TweetFeature.FAKE_RETWEET_COUNT, - TimelinesSharedFeatures.FAKE_REPLY_COUNT -> TweetFeature.FAKE_REPLY_COUNT, - TimelinesSharedFeatures.FAKE_QUOTE_COUNT -> TweetFeature.FAKE_QUOTE_COUNT, - TimelinesSharedFeatures.EMBEDS_IMPRESSION_COUNT_V2 -> TweetFeature.EMBEDS_IMPRESSION_COUNT_V2, - TimelinesSharedFeatures.EMBEDS_URL_COUNT_V2 -> TweetFeature.EMBEDS_URL_COUNT_V2, - TimelinesSharedFeatures.LABEL_ABUSIVE_FLAG -> TweetFeature.LABEL_ABUSIVE_FLAG, - TimelinesSharedFeatures.LABEL_ABUSIVE_HI_RCL_FLAG -> TweetFeature.LABEL_ABUSIVE_HI_RCL_FLAG, - TimelinesSharedFeatures.LABEL_DUP_CONTENT_FLAG -> TweetFeature.LABEL_DUP_CONTENT_FLAG, - TimelinesSharedFeatures.LABEL_NSFW_HI_PRC_FLAG -> TweetFeature.LABEL_NSFW_HI_PRC_FLAG, - TimelinesSharedFeatures.LABEL_NSFW_HI_RCL_FLAG -> TweetFeature.LABEL_NSFW_HI_RCL_FLAG, - TimelinesSharedFeatures.LABEL_SPAM_FLAG -> TweetFeature.LABEL_SPAM_FLAG, - TimelinesSharedFeatures.LABEL_SPAM_HI_RCL_FLAG -> TweetFeature.LABEL_SPAM_HI_RCL_FLAG - ) - - protected def derivedFeaturesAdder: ITransform = - new ITransform { - private val hasEnglishTweetDiffUiLangFeature = - featureInstanceFromSearchResultFeature(ExternalTweetFeature.HAS_ENGLISH_TWEET_DIFF_UI_LANG) - .asInstanceOf[Feature.Binary] - private val hasEnglishUiDiffTweetLangFeature = - featureInstanceFromSearchResultFeature(ExternalTweetFeature.HAS_ENGLISH_UI_DIFF_TWEET_LANG) - .asInstanceOf[Feature.Binary] - private val hasDiffLangFeature = - featureInstanceFromSearchResultFeature(ExternalTweetFeature.HAS_DIFF_LANG) - .asInstanceOf[Feature.Binary] - private val isSelfTweetFeature = - featureInstanceFromSearchResultFeature(ExternalTweetFeature.IS_SELF_TWEET) - .asInstanceOf[Feature.Binary] - private val tweetAgeInSecsFeature = - featureInstanceFromSearchResultFeature(ExternalTweetFeature.TWEET_AGE_IN_SECS) - .asInstanceOf[Feature.Continuous] - private val authorSpecificScoreFeature = - featureInstanceFromSearchResultFeature(ExternalTweetFeature.AUTHOR_SPECIFIC_SCORE) - .asInstanceOf[Feature.Continuous] - - // see comments above - private val linkLanguageFeature = new Feature.Continuous(TweetFeature.LINK_LANGUAGE.getName) - private val languageFeature = new Feature.Continuous(TweetFeature.LANGUAGE.getName) - - override def transformContext(featureContext: FeatureContext): FeatureContext = - featureContext.addFeatures( - authorSpecificScoreFeature, - // used when training against the full scoreEarlybirdModelEvaluationJob.scala - // TimelinesSharedFeatures.PREDICTED_SCORE_LOG, - hasEnglishTweetDiffUiLangFeature, - hasEnglishUiDiffTweetLangFeature, - hasDiffLangFeature, - isSelfTweetFeature, - tweetAgeInSecsFeature, - linkLanguageFeature, - languageFeature - ) - - override def transform(record: DataRecord): Unit = { - val srecord = SRichDataRecord(record) - - srecord.getFeatureValueOpt(RealGraphDataRecordFeatures.WEIGHT).map { realgraphWeight => - srecord.setFeatureValue(authorSpecificScoreFeature, realgraphWeight) - } - - // use this when training against the log of the full score - // srecord.getFeatureValueOpt(TimelinesSharedFeatures.PREDICTED_SCORE).map { score => - // if (score > 0.0) { - // srecord.setFeatureValue(TimelinesSharedFeatures.PREDICTED_SCORE_LOG, Math.log(score)) - // } - // } - - if (srecord.hasFeature(RequestContextFeatures.LANGUAGE_CODE) && srecord.hasFeature( - RecapFeatures.LANGUAGE)) { - val uilangIsEnglish = srecord - .getFeatureValue(RequestContextFeatures.LANGUAGE_CODE).toString == "en" - val tweetIsEnglish = srecord.getFeatureValue(RecapFeatures.LANGUAGE) == 5 - srecord.setFeatureValue( - hasEnglishTweetDiffUiLangFeature, - tweetIsEnglish && !uilangIsEnglish - ) - srecord.setFeatureValue( - hasEnglishUiDiffTweetLangFeature, - uilangIsEnglish && !tweetIsEnglish - ) - } - srecord.getFeatureValueOpt(RecapFeatures.MATCH_UI_LANG).map { match_ui_lang => - srecord.setFeatureValue( - hasDiffLangFeature, - !match_ui_lang - ) - } - - for { - author_id <- srecord.getFeatureValueOpt(SharedFeatures.AUTHOR_ID) - user_id <- srecord.getFeatureValueOpt(SharedFeatures.USER_ID) - } srecord.setFeatureValue( - isSelfTweetFeature, - author_id == user_id - ) - - srecord.getFeatureValueOpt(TimeDataRecordFeatures.TIME_SINCE_TWEET_CREATION).map { - time_since_tweet_creation => - srecord.setFeatureValue( - tweetAgeInSecsFeature, - time_since_tweet_creation / 1000.0 - ) - } - - srecord.getFeatureValueOpt(RecapFeatures.LINK_LANGUAGE).map { link_language => - srecord.setFeatureValue( - linkLanguageFeature, - link_language.toDouble - ) - } - srecord.getFeatureValueOpt(RecapFeatures.LANGUAGE).map { language => - srecord.setFeatureValue( - languageFeature, - language.toDouble - ) - } - } - } - - protected def featureInstanceFromSearchResultFeature( - tweetFeature: SearchResultFeature - ): Feature[_] = { - val featureType = tweetFeature.getType - val featureName = tweetFeature.getName - - require( - !tweetFeature.isDiscrete && ( - featureType == com.twitter.search.common.features.thrift.ThriftSearchFeatureType.BOOLEAN_VALUE || - featureType == com.twitter.search.common.features.thrift.ThriftSearchFeatureType.DOUBLE_VALUE || - featureType == com.twitter.search.common.features.thrift.ThriftSearchFeatureType.INT32_VALUE - ) - ) - - if (featureType == com.twitter.search.common.features.thrift.ThriftSearchFeatureType.BOOLEAN_VALUE) - new Feature.Binary(featureName) - else - new Feature.Continuous(featureName) - } - - lazy val EarlybirdFeatureRenamer: ITransform = { - val earlybirdFeatureRenameMap: Map[Feature[_], Feature[_]] = - featureToSearchResultFeatureMap.map { - case (originalFeature, tweetFeature) => - originalFeature -> featureInstanceFromSearchResultFeature(tweetFeature) - }.toMap - - new CascadeTransform( - List( - derivedFeaturesAdder, - TransformFactory.produceTransform( - TransformFactory.produceFeatureRenameTransformSpec( - earlybirdFeatureRenameMap.asJava - ) - ) - ).asJava - ) - } -} diff --git a/timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/common/EarlybirdTrainingRecapConfiguration.docx b/timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/common/EarlybirdTrainingRecapConfiguration.docx new file mode 100644 index 0000000000000000000000000000000000000000..62347cd51633a44aae08611878a5db979a78806c GIT binary patch literal 37010 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 E0Bb`bGXMYp literal 0 HcmV?d00001 diff --git a/timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/common/EarlybirdTrainingRecapConfiguration.scala b/timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/common/EarlybirdTrainingRecapConfiguration.scala deleted file mode 100644 index 59e046235..000000000 --- a/timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/common/EarlybirdTrainingRecapConfiguration.scala +++ /dev/null @@ -1,17 +0,0 @@ -package com.twitter.timelines.data_processing.ad_hoc.earlybird_ranking.common - -import com.twitter.ml.api.Feature -import com.twitter.timelines.prediction.features.recap.RecapFeatures - -class EarlybirdTrainingRecapConfiguration extends EarlybirdTrainingConfiguration { - override val labels: Map[String, Feature.Binary] = Map( - "detail_expanded" -> RecapFeatures.IS_CLICKED, - "favorited" -> RecapFeatures.IS_FAVORITED, - "open_linked" -> RecapFeatures.IS_OPEN_LINKED, - "photo_expanded" -> RecapFeatures.IS_PHOTO_EXPANDED, - "profile_clicked" -> RecapFeatures.IS_PROFILE_CLICKED, - "replied" -> RecapFeatures.IS_REPLIED, - "retweeted" -> RecapFeatures.IS_RETWEETED, - "video_playback50" -> RecapFeatures.IS_VIDEO_PLAYBACK_50 - ) -} diff --git a/timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/common/EarlybirdTrainingRectweetConfiguration.docx b/timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/common/EarlybirdTrainingRectweetConfiguration.docx new file mode 100644 index 0000000000000000000000000000000000000000..1f2b4639be7e7de488d037239beada85916927a2 GIT binary patch literal 37998 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 literal 0 HcmV?d00001 diff --git a/timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/common/EarlybirdTrainingRectweetConfiguration.scala b/timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/common/EarlybirdTrainingRectweetConfiguration.scala deleted file mode 100644 index fbe61ef4d..000000000 --- a/timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/common/EarlybirdTrainingRectweetConfiguration.scala +++ /dev/null @@ -1,100 +0,0 @@ -package com.twitter.timelines.data_processing.ad_hoc.earlybird_ranking.common - -import com.twitter.ml.api.DataRecord -import com.twitter.ml.api.Feature -import com.twitter.ml.api.FeatureContext -import com.twitter.ml.api.ITransform -import com.twitter.ml.api.transform.CascadeTransform -import com.twitter.ml.api.util.SRichDataRecord -import com.twitter.search.common.features.SearchResultFeature -import com.twitter.search.common.features.TweetFeature -import com.twitter.timelines.prediction.features.itl.ITLFeatures._ -import scala.collection.JavaConverters._ - -class EarlybirdTrainingRectweetConfiguration extends EarlybirdTrainingConfiguration { - - override val labels: Map[String, Feature.Binary] = Map( - "detail_expanded" -> IS_CLICKED, - "favorited" -> IS_FAVORITED, - "open_linked" -> IS_OPEN_LINKED, - "photo_expanded" -> IS_PHOTO_EXPANDED, - "profile_clicked" -> IS_PROFILE_CLICKED, - "replied" -> IS_REPLIED, - "retweeted" -> IS_RETWEETED, - "video_playback50" -> IS_VIDEO_PLAYBACK_50 - ) - - override val PositiveSamplingRate: Double = 0.5 - - override def featureToSearchResultFeatureMap: Map[Feature[_], SearchResultFeature] = - super.featureToSearchResultFeatureMap ++ Map( - TEXT_SCORE -> TweetFeature.TEXT_SCORE, - REPLY_COUNT -> TweetFeature.REPLY_COUNT, - RETWEET_COUNT -> TweetFeature.RETWEET_COUNT, - FAV_COUNT -> TweetFeature.FAVORITE_COUNT, - HAS_CARD -> TweetFeature.HAS_CARD_FLAG, - HAS_CONSUMER_VIDEO -> TweetFeature.HAS_CONSUMER_VIDEO_FLAG, - HAS_PRO_VIDEO -> TweetFeature.HAS_PRO_VIDEO_FLAG, - HAS_VINE -> TweetFeature.HAS_VINE_FLAG, - HAS_PERISCOPE -> TweetFeature.HAS_PERISCOPE_FLAG, - HAS_NATIVE_IMAGE -> TweetFeature.HAS_NATIVE_IMAGE_FLAG, - HAS_IMAGE -> TweetFeature.HAS_IMAGE_URL_FLAG, - HAS_NEWS -> TweetFeature.HAS_NEWS_URL_FLAG, - HAS_VIDEO -> TweetFeature.HAS_VIDEO_URL_FLAG, - // some features that exist for recap are not available in rectweet - // HAS_TREND - // HAS_MULTIPLE_HASHTAGS_OR_TRENDS - // IS_OFFENSIVE - // IS_REPLY - // IS_RETWEET - IS_AUTHOR_BOT -> TweetFeature.IS_USER_BOT_FLAG, - IS_AUTHOR_SPAM -> TweetFeature.IS_USER_SPAM_FLAG, - IS_AUTHOR_NSFW -> TweetFeature.IS_USER_NSFW_FLAG, - // FROM_VERIFIED_ACCOUNT - USER_REP -> TweetFeature.USER_REPUTATION, - // EMBEDS_IMPRESSION_COUNT - // EMBEDS_URL_COUNT - // VIDEO_VIEW_COUNT - FAV_COUNT_V2 -> TweetFeature.FAVORITE_COUNT_V2, - RETWEET_COUNT_V2 -> TweetFeature.RETWEET_COUNT_V2, - REPLY_COUNT_V2 -> TweetFeature.REPLY_COUNT_V2, - IS_SENSITIVE -> TweetFeature.IS_SENSITIVE_CONTENT, - HAS_MULTIPLE_MEDIA -> TweetFeature.HAS_MULTIPLE_MEDIA_FLAG, - IS_AUTHOR_PROFILE_EGG -> TweetFeature.PROFILE_IS_EGG_FLAG, - IS_AUTHOR_NEW -> TweetFeature.IS_USER_NEW_FLAG, - NUM_MENTIONS -> TweetFeature.NUM_MENTIONS, - NUM_HASHTAGS -> TweetFeature.NUM_HASHTAGS, - HAS_VISIBLE_LINK -> TweetFeature.HAS_VISIBLE_LINK_FLAG, - HAS_LINK -> TweetFeature.HAS_LINK_FLAG - ) - - override def derivedFeaturesAdder: CascadeTransform = { - // only LINK_LANGUAGE availabe in rectweet. no LANGUAGE feature - val linkLanguageTransform = new ITransform { - private val linkLanguageFeature = new Feature.Continuous(TweetFeature.LINK_LANGUAGE.getName) - - override def transformContext(featureContext: FeatureContext): FeatureContext = - featureContext.addFeatures( - linkLanguageFeature - ) - - override def transform(record: DataRecord): Unit = { - val srecord = SRichDataRecord(record) - - srecord.getFeatureValueOpt(LINK_LANGUAGE).map { link_language => - srecord.setFeatureValue( - linkLanguageFeature, - link_language.toDouble - ) - } - } - } - - new CascadeTransform( - List( - super.derivedFeaturesAdder, - linkLanguageTransform - ).asJava - ) - } -} diff --git a/timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/model_evaluation/BUILD b/timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/model_evaluation/BUILD deleted file mode 100644 index 5fb8ef7f6..000000000 --- a/timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/model_evaluation/BUILD +++ /dev/null @@ -1,36 +0,0 @@ -scala_library( - name = "model_evaluation", - sources = ["*.scala"], - platform = "java8", - strict_deps = False, - dependencies = [ - "3rdparty/src/jvm/com/twitter/scalding:json", - "src/scala/com/twitter/ml/api:api-base", - "src/scala/com/twitter/ml/api/prediction_engine", - "src/scala/com/twitter/ml/api/util", - "src/scala/com/twitter/scalding_internal/job", - "src/scala/com/twitter/timelines/prediction/adapters/recap", - "src/scala/com/twitter/timelines/prediction/features/recap", - "timelines/data_processing/ad_hoc/earlybird_ranking/common", - "timelines/data_processing/util:rich-request", - "timelines/data_processing/util/example", - "timelines/data_processing/util/execution", - "twadoop_config/configuration/log_categories/group/timelines:timelineservice_injection_request_log-scala", - ], -) - -hadoop_binary( - name = "bin", - basename = "earlybird_model_evaluation-deploy", - main = "com.twitter.timelines.data_processing.ad_hoc.earlybird_ranking.model_evaluation.EarlybirdModelEvaluationJob", - platform = "java8", - runtime_platform = "java8", - tags = [ - "bazel-compatible", - "bazel-compatible:migrated", - "bazel-only", - ], - dependencies = [ - ":model_evaluation", - ], -) diff --git a/timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/model_evaluation/BUILD.docx b/timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/model_evaluation/BUILD.docx new file mode 100644 index 0000000000000000000000000000000000000000..9eafd60fd42d6a987a496f47ced2e059d010dbe8 GIT binary patch literal 37107 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 literal 0 HcmV?d00001 diff --git a/timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/model_evaluation/EarlybirdEvaluationMetric.docx b/timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/model_evaluation/EarlybirdEvaluationMetric.docx new file mode 100644 index 0000000000000000000000000000000000000000..d46ed5757bec6be6ca1be5f686bbe9fe5b7285ca GIT binary patch literal 38716 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 literal 0 HcmV?d00001 diff --git a/timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/model_evaluation/EarlybirdEvaluationMetric.scala b/timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/model_evaluation/EarlybirdEvaluationMetric.scala deleted file mode 100644 index 3885fdc61..000000000 --- a/timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/model_evaluation/EarlybirdEvaluationMetric.scala +++ /dev/null @@ -1,203 +0,0 @@ -package com.twitter.timelines.data_processing.ad_hoc.earlybird_ranking.model_evaluation - -import scala.collection.GenTraversableOnce - -case class CandidateRecord(tweetId: Long, fullScore: Double, earlyScore: Double, served: Boolean) - -/** - * A metric that compares scores generated by a "full" prediction - * model to a "light" (Earlybird) model. The metric is calculated for candidates - * from a single request. - */ -sealed trait EarlybirdEvaluationMetric { - def name: String - def apply(candidates: Seq[CandidateRecord]): Option[Double] -} - -/** - * Picks the set of `k` top candidates using light scores, and calculates - * recall of these light-score based candidates among set of `k` top candidates - * using full scores. - * - * If there are fewer than `k` candidates, then we can choose to filter out requests (will - * lower value of recall) or keep them by trivially computing recall as 1.0. - */ -case class TopKRecall(k: Int, filterFewerThanK: Boolean) extends EarlybirdEvaluationMetric { - override val name: String = s"top_${k}_recall${if (filterFewerThanK) "_filtered" else ""}" - override def apply(candidates: Seq[CandidateRecord]): Option[Double] = { - if (candidates.size <= k) { - if (filterFewerThanK) None else Some(1.0) - } else { - val topFull = candidates.sortBy(-_.fullScore).take(k) - val topLight = candidates.sortBy(-_.earlyScore).take(k) - val overlap = topFull.map(_.tweetId).intersect(topLight.map(_.tweetId)) - val truePos = overlap.size.toDouble - Some(truePos / k.toDouble) - } - } -} - -/** - * Calculates the probability that a random pair of candidates will be ordered the same by the - * full and earlybird models. - * - * Note: A pair with same scores for one model and different for the other will contribute 1 - * to the sum. Pairs that are strictly ordered the same, will contribute 2. - * It follows that the score for a constant model is 0.5, which is approximately equal to a - * random model as expected. - */ -case object ProbabilityOfCorrectOrdering extends EarlybirdEvaluationMetric { - - def fractionOf[A](trav: GenTraversableOnce[A])(p: A => Boolean): Double = { - if (trav.isEmpty) - 0.0 - else { - val (numPos, numElements) = trav.foldLeft((0, 0)) { - case ((numPosAcc, numElementsAcc), elem) => - (if (p(elem)) numPosAcc + 1 else numPosAcc, numElementsAcc + 1) - } - numPos.toDouble / numElements - } - } - - override def name: String = "probability_of_correct_ordering" - - override def apply(candidates: Seq[CandidateRecord]): Option[Double] = { - if (candidates.size < 2) - None - else { - val pairs = for { - left <- candidates.iterator - right <- candidates.iterator - if left != right - } yield (left, right) - - val probabilityOfCorrect = fractionOf(pairs) { - case (left, right) => - (left.fullScore > right.fullScore) == (left.earlyScore > right.earlyScore) - } - - Some(probabilityOfCorrect) - } - } -} - -/** - * Like `TopKRecall`, but uses `n` % of top candidates instead. - */ -case class TopNPercentRecall(percent: Double) extends EarlybirdEvaluationMetric { - override val name: String = s"top_${percent}_pct_recall" - override def apply(candidates: Seq[CandidateRecord]): Option[Double] = { - val k = Math.floor(candidates.size * percent).toInt - if (k > 0) { - val topFull = candidates.sortBy(-_.fullScore).take(k) - val topLight = candidates.sortBy(-_.earlyScore).take(k) - val overlap = topFull.map(_.tweetId).intersect(topLight.map(_.tweetId)) - val truePos = overlap.size.toDouble - Some(truePos / k.toDouble) - } else { - None - } - } -} - -/** - * Picks the set of `k` top candidates using light scores, and calculates - * recall of selected light-score based candidates among set of actual - * shown candidates. - */ -case class ShownTweetRecall(k: Int) extends EarlybirdEvaluationMetric { - override val name: String = s"shown_tweet_recall_$k" - override def apply(candidates: Seq[CandidateRecord]): Option[Double] = { - if (candidates.size <= k) { - None - } else { - val topLight = candidates.sortBy(-_.earlyScore).take(k) - val truePos = topLight.count(_.served).toDouble - val allPos = candidates.count(_.served).toDouble - if (allPos > 0) Some(truePos / allPos) - else None - } - } -} - -/** - * Like `ShownTweetRecall`, but uses `n` % of top candidates instead. - */ -case class ShownTweetPercentRecall(percent: Double) extends EarlybirdEvaluationMetric { - override val name: String = s"shown_tweet_recall_${percent}_pct" - override def apply(candidates: Seq[CandidateRecord]): Option[Double] = { - val k = Math.floor(candidates.size * percent).toInt - val topLight = candidates.sortBy(-_.earlyScore).take(k) - val truePos = topLight.count(_.served).toDouble - val allPos = candidates.count(_.served).toDouble - if (allPos > 0) Some(truePos / allPos) - else None - } -} - -/** - * Like `ShownTweetRecall`, but calculated using *full* scores. This is a sanity metric, - * because by definition the top full-scored candidates will be served. If the value is - * < 1, this is due to the ranked section being smaller than k. - */ -case class ShownTweetRecallWithFullScores(k: Int) extends EarlybirdEvaluationMetric { - override val name: String = s"shown_tweet_recall_with_full_scores_$k" - override def apply(candidates: Seq[CandidateRecord]): Option[Double] = { - if (candidates.size <= k) { - None - } else { - val topFull = candidates.sortBy(-_.fullScore).take(k) - val truePos = topFull.count(_.served).toDouble - val allPos = candidates.count(_.served).toDouble - if (allPos > 0) Some(truePos / allPos) - else None - } - } -} - -/** - * Picks the set of `k` top candidates using the light scores, and calculates - * average full score for the candidates. - */ -case class AverageFullScoreForTopLight(k: Int) extends EarlybirdEvaluationMetric { - override val name: String = s"average_full_score_for_top_light_$k" - override def apply(candidates: Seq[CandidateRecord]): Option[Double] = { - if (candidates.size <= k) { - None - } else { - val topLight = candidates.sortBy(-_.earlyScore).take(k) - Some(topLight.map(_.fullScore).sum / topLight.size) - } - } -} - -/** - * Picks the set of `k` top candidates using the light scores, and calculates - * sum of full scores for those. Divides that by sum of `k` top full scores, - * overall, to get a "score recall". - */ -case class SumScoreRecallForTopLight(k: Int) extends EarlybirdEvaluationMetric { - override val name: String = s"sum_score_recall_for_top_light_$k" - override def apply(candidates: Seq[CandidateRecord]): Option[Double] = { - if (candidates.size <= k) { - None - } else { - val sumFullScoresForTopLight = candidates.sortBy(-_.earlyScore).take(k).map(_.fullScore).sum - val sumScoresForTopFull = candidates.sortBy(-_.fullScore).take(k).map(_.fullScore).sum - Some(sumFullScoresForTopLight / sumScoresForTopFull) - } - } -} - -case class HasFewerThanKCandidates(k: Int) extends EarlybirdEvaluationMetric { - override val name: String = s"has_fewer_than_${k}_candidates" - override def apply(candidates: Seq[CandidateRecord]): Option[Double] = - Some(if (candidates.size <= k) 1.0 else 0.0) -} - -case object NumberOfCandidates extends EarlybirdEvaluationMetric { - override val name: String = s"number_of_candidates" - override def apply(candidates: Seq[CandidateRecord]): Option[Double] = - Some(candidates.size.toDouble) -} diff --git a/timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/model_evaluation/EarlybirdModelEvaluationJob.docx b/timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/model_evaluation/EarlybirdModelEvaluationJob.docx new file mode 100644 index 0000000000000000000000000000000000000000..dfca26f08bd66e28dccf25504052d49f9c8cfda2 GIT binary patch literal 39447 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 - (model, scoreCandidatesUsingModel(logs, s"$modelBasePath/$model")) - } - functionScoredCandidates = List( - ("random", scoreCandidatesUsingFunction(logs, _ => Some(random.nextDouble()))), - ("original_earlybird", scoreCandidatesUsingFunction(logs, extractOriginalEarlybirdScore)), - ("blender", scoreCandidatesUsingFunction(logs, extractBlenderScore)) - ) - allCandidates = modelScoredCandidates ++ functionScoredCandidates - statsExecutions = allCandidates.map { - case (name, pipe) => - for { - saved <- pipe.forceToDiskExecution - stats <- computeMetrics(saved, metrics, parallelism) - } yield (name, stats) - } - stats <- Execution.withParallelism(statsExecutions, parallelism) - _ <- TypedPipe.from(stats).writeExecution(TypedJson(args("output"))) - } yield () - } - - private[this] def computeMetrics( - requests: TypedPipe[Seq[CandidateRecord]], - metricsToCompute: Seq[EarlybirdEvaluationMetric], - parallelism: Int - ): Execution[Map[String, Double]] = { - val metricExecutions = metricsToCompute.map { metric => - val metricEx = requests.flatMap(metric(_)).aggregate(averager).toOptionExecution - metricEx.map { value => value.map((metric.name, _)) } - } - Execution.withParallelism(metricExecutions, parallelism).map(_.flatten.toMap) - } - - private[this] def getMetrics(args: Args): Seq[EarlybirdEvaluationMetric] = { - val topKs = args.list("topks").map(_.toInt) - val topNFractions = args.list("topn_fractions").map(_.toDouble) - val topKMetrics = topKs.flatMap { topK => - Seq( - TopKRecall(topK, filterFewerThanK = false), - TopKRecall(topK, filterFewerThanK = true), - ShownTweetRecall(topK), - AverageFullScoreForTopLight(topK), - SumScoreRecallForTopLight(topK), - HasFewerThanKCandidates(topK), - ShownTweetRecallWithFullScores(topK), - ProbabilityOfCorrectOrdering - ) - } - val topNPercentMetrics = topNFractions.flatMap { topNPercent => - Seq( - TopNPercentRecall(topNPercent), - ShownTweetPercentRecall(topNPercent) - ) - } - topKMetrics ++ topNPercentMetrics ++ Seq(NumberOfCandidates) - } - - private[this] def buildRandom(args: Args): Random = { - val seedOpt = args.optional("seed").map(_.toLong) - seedOpt.map(new Random(_)).getOrElse(new Random()) - } - - private[this] def logsHavingCandidates(dateRange: DateRange): TypedPipe[SuggestsRequestLog] = - DAL - .read(TimelineserviceInjectionRequestLogScalaDataset, dateRange) - .toTypedPipe - .filter(_.recapCandidates.exists(_.nonEmpty)) - - /** - * Uses a model defined at `earlybirdModelPath` to score candidates and - * returns a Seq[CandidateRecord] for each request. - */ - private[this] def scoreCandidatesUsingModel( - logs: TypedPipe[SuggestsRequestLog], - earlybirdModelPath: String - ): TypedPipe[Seq[CandidateRecord]] = { - logs - .usingScorer(earlybirdModelPath) - .map { - case (scorer: PredictionEngineScorer, log: SuggestsRequestLog) => - val suggestionRecords = - RecapTweetExample - .extractCandidateTweetExamples(log) - .map(_.asSuggestionRecord) - val servedTweetIds = log.servedHighlightTweets.flatMap(_.tweetId).toSet - val renamer = (new EarlybirdTrainingRecapConfiguration).EarlybirdFeatureRenamer - suggestionRecords.flatMap { suggestionRecord => - val dataRecordOpt = recapAdapter.adaptToDataRecords(suggestionRecord).asScala.headOption - dataRecordOpt.foreach(renamer.transform) - for { - tweetId <- suggestionRecord.itemId - fullScore <- suggestionRecord.recapFeatures.flatMap(_.combinedModelScore) - earlybirdScore <- dataRecordOpt.flatMap(calculateLightScore(_, scorer)) - } yield CandidateRecord( - tweetId = tweetId, - fullScore = fullScore, - earlyScore = earlybirdScore, - served = servedTweetIds.contains(tweetId) - ) - } - } - } - - /** - * Uses a simple function to score candidates and returns a Seq[CandidateRecord] for each - * request. - */ - private[this] def scoreCandidatesUsingFunction( - logs: TypedPipe[SuggestsRequestLog], - earlyScoreExtractor: HighlightTweet => Option[Double] - ): TypedPipe[Seq[CandidateRecord]] = { - logs - .map { log => - val tweetCandidates = log.recapTweetCandidates.getOrElse(Nil) - val servedTweetIds = log.servedHighlightTweets.flatMap(_.tweetId).toSet - for { - candidate <- tweetCandidates - tweetId <- candidate.tweetId - fullScore <- candidate.recapFeatures.flatMap(_.combinedModelScore) - earlyScore <- earlyScoreExtractor(candidate) - } yield CandidateRecord( - tweetId = tweetId, - fullScore = fullScore, - earlyScore = earlyScore, - served = servedTweetIds.contains(tweetId) - ) - } - } - - private[this] def extractOriginalEarlybirdScore(candidate: HighlightTweet): Option[Double] = - for { - recapFeatures <- candidate.recapFeatures - tweetFeatures <- recapFeatures.tweetFeatures - } yield tweetFeatures.earlybirdScore - - private[this] def extractBlenderScore(candidate: HighlightTweet): Option[Double] = - for { - recapFeatures <- candidate.recapFeatures - tweetFeatures <- recapFeatures.tweetFeatures - } yield tweetFeatures.blenderScore - - private[this] def calculateLightScore( - dataRecord: DataRecord, - scorer: PredictionEngineScorer - ): Option[Double] = { - val scoredRecord = scorer(dataRecord) - if (scoredRecord.hasFeature(RecapFeatures.PREDICTED_IS_UNIFIED_ENGAGEMENT)) { - Some(scoredRecord.getFeatureValue(RecapFeatures.PREDICTED_IS_UNIFIED_ENGAGEMENT).toDouble) - } else { - None - } - } -} diff --git a/timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/training_data_generation/BUILD b/timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/training_data_generation/BUILD deleted file mode 100644 index e49e08758..000000000 --- a/timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/training_data_generation/BUILD +++ /dev/null @@ -1,89 +0,0 @@ -create_datarecord_datasets( - base_name = "earlybird_recap_data_records", - platform = "java8", - role = "timelines", - segment_type = "partitioned", - tags = [ - "bazel-compatible", - "bazel-compatible:migrated", - ], -) - -create_datarecord_datasets( - base_name = "earlybird_rectweet_data_records", - platform = "java8", - role = "timelines", - segment_type = "partitioned", - tags = [ - "bazel-compatible", - "bazel-compatible:migrated", - ], -) - -scala_library( - name = "training_data_generation", - sources = ["*.scala"], - platform = "java8", - strict_deps = True, - tags = [ - "bazel-compatible", - "bazel-compatible:migrated", - ], - dependencies = [ - ":earlybird_recap_data_records-java", - ":earlybird_rectweet_data_records-java", - "3rdparty/jvm/com/ibm/icu:icu4j", - "3rdparty/src/jvm/com/twitter/scalding:json", - "src/java/com/twitter/ml/api:api-base", - "src/java/com/twitter/ml/api/constant", - "src/java/com/twitter/ml/api/matcher", - "src/java/com/twitter/search/common/features", - "src/scala/com/twitter/ml/api:api-base", - "src/scala/com/twitter/ml/api/analytics", - "src/scala/com/twitter/ml/api/util", - "src/scala/com/twitter/scalding_internal/dalv2", - "src/scala/com/twitter/scalding_internal/dalv2/dataset", - "src/scala/com/twitter/scalding_internal/job", - "src/scala/com/twitter/scalding_internal/job/analytics_batch", - "src/scala/com/twitter/timelines/prediction/features/common", - "src/scala/com/twitter/timelines/prediction/features/recap", - "src/thrift/com/twitter/ml/api:data-java", - "src/thrift/com/twitter/ml/api:dataset-analytics-java", - "timelines/data_processing/ad_hoc/earlybird_ranking/common", - "timelines/data_processing/ad_hoc/recap/dataset_utils", - "timelines/data_processing/ad_hoc/recap/offline_execution", - "timelines/data_processing/util/execution", - ], -) - -hadoop_binary( - name = "bin", - basename = "earlybird_training_data_generation-deploy", - main = "com.twitter.scalding.Tool", - platform = "java8", - runtime_platform = "java8", - tags = [ - "bazel-compatible", - "bazel-compatible:migrated", - "bazel-only", - ], - dependencies = [ - ":training_data_generation", - ], -) - -hadoop_binary( - name = "earlybird_training_data_generation_prod", - basename = "earlybird_training_data_generation_prod-deploy", - main = "com.twitter.timelines.data_processing.ad_hoc.earlybird_ranking.training_data_generation.EarlybirdTrainingDataProdJob", - platform = "java8", - runtime_platform = "java8", - tags = [ - "bazel-compatible", - "bazel-compatible:migrated", - "bazel-only", - ], - dependencies = [ - ":training_data_generation", - ], -) diff --git a/timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/training_data_generation/BUILD.docx b/timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/training_data_generation/BUILD.docx new file mode 100644 index 0000000000000000000000000000000000000000..9aa9e3f81c78d0e22a59eece4cd41662270ecea2 GIT binary patch literal 37308 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 BvD*Lu literal 0 HcmV?d00001 diff --git a/timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/training_data_generation/EarlybirdExampleSampler.docx b/timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/training_data_generation/EarlybirdExampleSampler.docx new file mode 100644 index 0000000000000000000000000000000000000000..ac4ee9b26bbd86a6103cac6464f8b8483eb6b5d0 GIT binary patch literal 37665 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𝔇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%0D3~ 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 JDouble} -import scala.util.Random - -/** - * Adds an IsGlobalEngagement label to records containing any recap label, and adjusts - * weights accordingly. See [[weightAndSample]] for details on operation. - */ -class EarlybirdExampleSampler( - random: Random, - labelInfos: List[LabelInfoWithFeature], - negativeInfo: LabelInfo) { - - import com.twitter.ml.api.util.FDsl._ - - private[this] val ImportanceFeature: Feature[JDouble] = - SharedFeatures.RECORD_WEIGHT_FEATURE_BUILDER - .extensionBuilder() - .addExtension("type", "earlybird") - .build() - - private[this] def uniformSample(labelInfo: LabelInfo) = - random.nextDouble() < labelInfo.downsampleFraction - - private[this] def weightedImportance(labelInfo: LabelInfo) = - labelInfo.importance / labelInfo.downsampleFraction - - /** - * Generates a IsGlobalEngagement label for records that contain any - * recap label. Adds an "importance" value per recap label found - * in the record. Simultaneously, downsamples positive and negative examples based on provided - * downsample rates. - */ - def weightAndSample(data: DataSetPipe): DataSetPipe = { - val updatedRecords = data.records.flatMap { record => - val featuresOn = labelInfos.filter(labelInfo => record.hasFeature(labelInfo.feature)) - if (featuresOn.nonEmpty) { - val sampled = featuresOn.map(_.info).filter(uniformSample) - if (sampled.nonEmpty) { - record.setFeatureValue(RecapFeatures.IS_EARLYBIRD_UNIFIED_ENGAGEMENT, true) - Some(record.setFeatureValue(ImportanceFeature, sampled.map(weightedImportance).sum)) - } else { - None - } - } else if (uniformSample(negativeInfo)) { - Some(record.setFeatureValue(ImportanceFeature, weightedImportance(negativeInfo))) - } else { - None - } - } - - DataSetPipe( - updatedRecords, - data.featureContext - .addFeatures(ImportanceFeature, RecapFeatures.IS_EARLYBIRD_UNIFIED_ENGAGEMENT) - ) - } -} diff --git a/timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/training_data_generation/EarlybirdStatsJob.docx b/timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/training_data_generation/EarlybirdStatsJob.docx new file mode 100644 index 0000000000000000000000000000000000000000..528dad97becd7cae999fadc4cecfd8beefaafadd GIT binary patch literal 37612 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 record.hasFeature(labelInfo.feature) }) { - record.setFeatureValue(IS_EARLYBIRD_UNIFIED_ENGAGEMENT, true) - } - record - } - - private[this] def labelFeatureMatcher: IMatcher = { - val allLabels = - (IS_EARLYBIRD_UNIFIED_ENGAGEMENT :: constants.LabelInfos.map(_.feature)).map(_.getFeatureName) - FeatureMatcher.names(allLabels.asJava) - } - - private[this] def computeStats(data: DataSetPipe): TypedPipe[FeatureStats] = { - data - .viaRecords { _.map(addGlobalEngagementLabel) } - .project(labelFeatureMatcher) - .collectFeatureStats() - } - - override def job: Execution[Unit] = { - for { - args <- Execution.getArgs - dateRange <- dateRangeEx - data = DailySuffixFeatureSource(args("input"))(dateRange).read - _ <- computeStats(data).writeExecution(TypedJson(args("output"))) - } yield () - } -} diff --git a/timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/training_data_generation/EarlybirdTrainingDataJob.docx b/timelines/data_processing/ad_hoc/earlybird_ranking/earlybird_ranking/training_data_generation/EarlybirdTrainingDataJob.docx new file mode 100644 index 0000000000000000000000000000000000000000..87a3662e83dc1a63bb0ec08870ab08f6a0f48f79 GIT binary patch literal 38142 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 - - def isEligibleForEarlybirdScoring(record: IRecord): Boolean = { - // The rationale behind this logic is available in TQ-9678. - record.getFeatureValue(TimelinesSharedFeatures.EARLYBIRD_SCORE) <= 100.0 - } - - override def executionFromParams(args: Args)(implicit dateRange: DateRange): Execution[Unit] = { - val seedOpt = args.optional("seed").map(_.toLong) - val parallelism = args.int("parallelism", 1) - val rectweet = args.boolean("rectweet") - - ExecutionUtil - .runDateRangeWithParallelism(Days(1), parallelism) { splitRange => - val data = HourlySuffixFeatureSource(args("input"))(splitRange).read - .filter(isEligibleForEarlybirdScoring _) - - lazy val rng = seedOpt.map(new Random(_)).getOrElse(new Random()) - - val (constants, sink) = - if (rectweet) - (new EarlybirdTrainingRectweetConfiguration, EarlybirdRectweetDataRecordsJavaDataset) - else (new EarlybirdTrainingRecapConfiguration, EarlybirdRecapDataRecordsJavaDataset) - - val earlybirdSampler = - new EarlybirdExampleSampler( - random = rng, - labelInfos = constants.LabelInfos, - negativeInfo = constants.NegativeInfo - ) - val outputPath = args("output") - earlybirdSampler - .weightAndSample(data) - .transform(constants.EarlybirdFeatureRenamer) - // shuffle row-wise in order to get rid of clustered replies - // also keep number of part files small - .viaRecords { record => - record - .groupRandomly(partitions = 500) - .sortBy { _ => rng.nextDouble() } - .values - } - .writeDALExecution( - sink, - D.Daily, - D.Suffix(outputPath), - D.EBLzo() - )(splitRange) - }(dateRange).unit - } -} - -object EarlybirdTrainingDataAdHocJob - extends OfflineAdhocExecution - with GenerateEarlybirdTrainingData - -object EarlybirdTrainingDataProdJob - extends OfflineAnalyticsBatchExecution - with GenerateEarlybirdTrainingData diff --git a/timelines/data_processing/ml_util/aggregation_framework/AggregateGroup.docx b/timelines/data_processing/ml_util/aggregation_framework/AggregateGroup.docx new file mode 100644 index 0000000000000000000000000000000000000000..3fe70c3230a58857e78caa686289f3de2fea53f2 GIT binary patch literal 38498 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 literal 0 HcmV?d00001 diff --git a/timelines/data_processing/ml_util/aggregation_framework/AggregateGroup.scala b/timelines/data_processing/ml_util/aggregation_framework/AggregateGroup.scala deleted file mode 100644 index 6797d838a..000000000 --- a/timelines/data_processing/ml_util/aggregation_framework/AggregateGroup.scala +++ /dev/null @@ -1,124 +0,0 @@ -package com.twitter.timelines.data_processing.ml_util.aggregation_framework - -import com.twitter.ml.api._ -import com.twitter.timelines.data_processing.ml_util.aggregation_framework.metrics.AggregationMetric -import com.twitter.timelines.data_processing.ml_util.aggregation_framework.metrics.EasyMetric -import com.twitter.timelines.data_processing.ml_util.aggregation_framework.metrics.MaxMetric -import com.twitter.timelines.data_processing.ml_util.transforms.OneToSomeTransform -import com.twitter.util.Duration -import java.lang.{Boolean => JBoolean} -import java.lang.{Long => JLong} -import scala.language.existentials - -/** - * A wrapper for [[com.twitter.timelines.data_processing.ml_util.aggregation_framework.TypedAggregateGroup]] - * (see TypedAggregateGroup.scala) with some convenient syntactic sugar that avoids - * the user having to specify different groups for different types of features. - * Gets translated into multiple strongly typed TypedAggregateGroup(s) - * by the buildTypedAggregateGroups() method defined below. - * - * @param inputSource Source to compute this aggregate over - * @param preTransforms Sequence of [[ITransform]] that is applied to - * data records pre-aggregation (e.g. discretization, renaming) - * @param samplingTransformOpt Optional [[OneToSomeTransform]] that samples data record - * @param aggregatePrefix Prefix to use for naming resultant aggregate features - * @param keys Features to group by when computing the aggregates - * (e.g. USER_ID, AUTHOR_ID). These must be either discrete, string or sparse binary. - * Grouping by a sparse binary feature is different than grouping by a discrete or string - * feature. For example, if you have a sparse binary feature WORDS_IN_TWEET which is - * a set of all words in a tweet, then grouping by this feature generates a - * separate aggregate mean/count/etc for each value of the feature (each word), and - * not just a single aggregate count for different "sets of words" - * @param features Features to aggregate (e.g. blender_score or is_photo). - * @param labels Labels to cross the features with to make pair features, if any. - * @param metrics Aggregation metrics to compute (e.g. count, mean) - * @param halfLives Half lives to use for the aggregations, to be crossed with the above. - * use Duration.Top for "forever" aggregations over an infinite time window (no decay). - * @param outputStore Store to output this aggregate to - * @param includeAnyFeature Aggregate label counts for any feature value - * @param includeAnyLabel Aggregate feature counts for any label value (e.g. all impressions) - * @param includeTimestampFeature compute max aggregate on timestamp feature - * @param aggExclusionRegex Sequence of Regexes, which define features to - */ -case class AggregateGroup( - inputSource: AggregateSource, - aggregatePrefix: String, - keys: Set[Feature[_]], - features: Set[Feature[_]], - labels: Set[_ <: Feature[JBoolean]], - metrics: Set[EasyMetric], - halfLives: Set[Duration], - outputStore: AggregateStore, - preTransforms: Seq[OneToSomeTransform] = Seq.empty, - includeAnyFeature: Boolean = true, - includeAnyLabel: Boolean = true, - includeTimestampFeature: Boolean = false, - aggExclusionRegex: Seq[String] = Seq.empty) { - - private def toStrongType[T]( - metrics: Set[EasyMetric], - features: Set[Feature[_]], - featureType: FeatureType - ): TypedAggregateGroup[_] = { - val underlyingMetrics: Set[AggregationMetric[T, _]] = - metrics.flatMap(_.forFeatureType[T](featureType)) - val underlyingFeatures: Set[Feature[T]] = features - .map(_.asInstanceOf[Feature[T]]) - - TypedAggregateGroup[T]( - inputSource = inputSource, - aggregatePrefix = aggregatePrefix, - keysToAggregate = keys, - featuresToAggregate = underlyingFeatures, - labels = labels, - metrics = underlyingMetrics, - halfLives = halfLives, - outputStore = outputStore, - preTransforms = preTransforms, - includeAnyFeature, - includeAnyLabel, - aggExclusionRegex - ) - } - - private def timestampTypedAggregateGroup: TypedAggregateGroup[_] = { - val metrics: Set[AggregationMetric[JLong, _]] = - Set(MaxMetric.forFeatureType[JLong](TypedAggregateGroup.timestampFeature.getFeatureType).get) - - TypedAggregateGroup[JLong]( - inputSource = inputSource, - aggregatePrefix = aggregatePrefix, - keysToAggregate = keys, - featuresToAggregate = Set(TypedAggregateGroup.timestampFeature), - labels = Set.empty, - metrics = metrics, - halfLives = Set(Duration.Top), - outputStore = outputStore, - preTransforms = preTransforms, - includeAnyFeature = false, - includeAnyLabel = true, - aggExclusionRegex = Seq.empty - ) - } - - def buildTypedAggregateGroups(): List[TypedAggregateGroup[_]] = { - val typedAggregateGroupsList = { - if (features.isEmpty) { - List(toStrongType(metrics, features, FeatureType.BINARY)) - } else { - features - .groupBy(_.getFeatureType()) - .toList - .map { - case (featureType, features) => - toStrongType(metrics, features, featureType) - } - } - } - - val optionalTimestampTypedAggregateGroup = - if (includeTimestampFeature) List(timestampTypedAggregateGroup) else List() - - typedAggregateGroupsList ++ optionalTimestampTypedAggregateGroup - } -} diff --git a/timelines/data_processing/ml_util/aggregation_framework/AggregateSource.docx b/timelines/data_processing/ml_util/aggregation_framework/AggregateSource.docx new file mode 100644 index 0000000000000000000000000000000000000000..a4cc03894b8246068846f0b8f01fe48d9dba03e6 GIT binary patch literal 36807 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 z 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 JLong} - -trait AggregateSource extends Serializable { - def name: String - def timestampFeature: Feature[JLong] -} diff --git a/timelines/data_processing/ml_util/aggregation_framework/AggregateStore.docx b/timelines/data_processing/ml_util/aggregation_framework/AggregateStore.docx new file mode 100644 index 0000000000000000000000000000000000000000..d7a225b5af6e8d635ed5327d0bcfc5ae272db9af GIT binary patch literal 36740 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

S>}&01F7rqNoerA&Z7z*K{9< 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 literal 0 HcmV?d00001 diff --git a/timelines/data_processing/ml_util/aggregation_framework/AggregateStore.scala b/timelines/data_processing/ml_util/aggregation_framework/AggregateStore.scala deleted file mode 100644 index 1c09b33f0..000000000 --- a/timelines/data_processing/ml_util/aggregation_framework/AggregateStore.scala +++ /dev/null @@ -1,5 +0,0 @@ -package com.twitter.timelines.data_processing.ml_util.aggregation_framework - -trait AggregateStore extends Serializable { - def name: String -} diff --git a/timelines/data_processing/ml_util/aggregation_framework/AggregationConfig.docx b/timelines/data_processing/ml_util/aggregation_framework/AggregationConfig.docx new file mode 100644 index 0000000000000000000000000000000000000000..b0e1cc431c93ded2d54767d5ff1850f9faa97143 GIT binary patch literal 36749 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 z�GN_9AFQJ7m^r0}$;DkT`SB`4TcD75$a52ixcU1tg;!H+rGeudj&?2_Gw~LoF$D8SSV2d);Ey;krTp0m z>)rBMy!3FRF!9{AI>;fdg$ebi1J|(P#73n?I8^)qK@F6xlQUNf*?P%;z!ay zBQQdto=SXa#C2j1pOFS-Vo1X58FXWo*a^rl zW_=bE!P^8LDfFf*4jUm;q!a>@0K<-dic1bz>7joLcY*!G;sx;=%0JKT8+ioG@^XTK zIaR}e;r;X6zNV$~XGwE&GZW`OkMR5Gr{qi3ojg5YH69HrW+#J@j*k0Gp+gKAjPG8g z-QEk8m(S^^SH&NFq-zG9;up#BLm!Ee9tk=DrqYVMk8Ndl8b%JifAxKJ_vm`^Xt8Fx! zt^Q{~Uk@R}j?%VU_x$2F-Z$fMr-b30pp1~_lzmU%mQJ_TeJ98MjGI%-8_yH&<%ReJ z#X~7NVxFrSL&K2lmE4fk!Non_Dx}M`*WHT`%+tgC)pia%TexuzVdKp1cBFtSZ))vx zpQPh-n?s<+@oG1K8&JKtpkY<{((>wPNv{nfvBDRnd^_W6#eKDHd66!cn-X#ceD2t= z!6D8`;Q#3P%p|$@;`_F^u3sl0Xh+nyUp%;a1xz90C0Ko}6C~s(;v*J#b9v_9sJLry zuij*IMJb=J9(|##?5;o;7oJ#XpZ9SzZ(TaEXrCwZV&fx}ofa;{Ve@^cS+zihEgznL zY0tb_Hyl;(X3pN+eW<$LyE1-x@OEr{z1<|PyG!G}W@UYN1=haY_WxSxyE|iB zw|^vGR1Wjk)Y$CAezd!5bJrrYGrh3vmRo2ty;m)tF304US`vP{sBU(izy>_YzcLxr zyTx&*5z)Ro+HSoYCA-~j!J))q5PoU!xUchmu2EFz=oZ#eM1Fl5Hf$=N1q3+?`HPM;o&Vi`Pla?Ic9P94WIbnt#mMCa@Et0BvAqu7(G4ktM{rYxm{+OH~BhJq%AMT1q zF3N@j7JMAQFs0Qnxs`>)T(sicRBA~UyfVM)pzCc$2)RnVZHsDl&bmnSnFTl8?$a_- z?mf^okhm*ny(bvd^kWOugbQk7zr7Lm(js{6df1kJ$Jt$VJ3YQ~V=G;onSGnqZiu}) zczCjN^OI>Gn!D&I{o(x9VcKn0JRsw>X46jPR@Y?Q0nSE}xmqz|-AWS>Wy}MV*WOs) zY%U+x@yd^XsT}HKo{k9FpFIE_73_R+c^Eb*i_775BaS900rtRq?ibG=7Qg8Cg%Eo% zJW@jTn(Y!QBcCf#~{t-=e2qgkLnnV!p(iKS)}Wg5OFEAYN0De8Q0%* zUb|MZ;G6GT&e%GdZ?V_okAC+ zw8)oqp)1gA>L3;{-E@Jn6022yq5&_OJ$SuR3`SA*9}c#B)cDy#Xv+xG`Y}(UCqBix zey|$~L9db8l7rVGUxVPOK(hm%yw`?U2yOE7lpW9o3lZ&O^y|ml#_stPWskUZK33WU zhODXv>Y!Z#b&#BZI$}W`HBv3m_Wy<;Sb%E=dr8Odrrh~$^e^we_zfl@~ z!~cQucZ0v9{O>AoIh&#FQ@^f2@W{>BffK-3HiIDt27$mh|Dp9SNh=UXjA#Im89d0$ z`Y*E{fF0r%i)7<(oOKAEci(^G{N3PhG1o{nK+oxtZGg0L$-D-mw80Ky}FEk z3f?E(*QI){mPzOU1A5Q-G72*`kKaHJA2VWVOi$ApCGQ|z8`VEJ4&TZ6=>`z6dX>ja zmrrgNmIwphMOtqfy&XQEhV1WWjrHAOMB>W`yN?4mTzOm{Px)HC-wv(6A6egWRu1oS zBNn@jqu{*WyFb94IC}kjS2jy1>4ka8lGK6^lqnB*k$(^i70Yzb9vuD zL6F6CbMgkisr)4-!nESGm8o<4<}$|T=jh@5uNgDl<#VKw8?3V$LR&}_m{0_hAQFk zVpu5R75-mXXJ$tPL?++tQg>tem6-o)ZpT@m9~JBR1Z7zah%NFj)-WNL0VQnMPc6(DEo3HO`iF|C#2p&DATFNS%6z8e3sysJHaf(d^Jp2HChR9 z)1QxxxMa=Rx}1baGtj*PZD6-6aOn&+v{Ur48g9qudz2>JTieGg3Fra1Y&CNCuV}pq zUF7aILILx^UqrVhq(0+*6Z6nP+Ao!&QG7z)4|`BrXv4LZd=ZDJ8Wd+k#_~^7jV>K8 zz72V&I`NY`P5rQdyQ(M&D?=pX-;JR}nEOeNg@%*yOm*ruo z*xR+6An;l{g5=`3?EUck93v@|u@Ah`d70fEt9xz`HsB(VD`R?YSw7=tCSbHf0o=}U zq(!S=bSVzIZ?yuw9$MD2jpGU(`o-;%<7)+|?DB}D(kk~3CwUJwmMgQTucmMsp`WP` zk3Kah@+x(X6F2iJu^-p;>|CBV$=bVwqTzgC!MQYbokBSbJ=Xuk&G4&fqOi=-i_j5J z$(dz6WoPOFr;5t1AZSkDIKd-0B=>|SDjL*s1LrV`wgW*r52x%r9$l@<3VY-JF;Lj` zbIZbeeDlpK)zw_Xz+r*ecBT6Mvsr?xVz;r^kDUeWyUE#IiB7mvCf!$4i*6oX48Sd9 z_xFA9n8$Oq9=ZZK?ok(ZddNfl4t0VX&U%j$3hN8*KU+G;fR1s^I1C%VGE;JR3K0)R zW}1u)zzu|Ie`t*D2vnwhT&PGOghuls?AnVmCp&P|=(qB=YX^!JU8SM}8kA&=ZzkN& zj+c_sA|~}OJ{z(dfxGe0`4{gd_03*1R66i3sRbn46`IHeg8m0qzvKcV{A-_aKDz3? zRGK}lDe1o9Pdm~rPgDB&BNFPObi>Ds@!T5G`AfF6E(ER^Un2DH?CrFIUK5(ro8rs7 z&UT$bxP4bEW?jq{_5Y8sw*Zb~TbhK$%*@QpY%#-#Sr#*+EwY%InVFfHSr(JU%(B=P z@A%&L-hTJ}yZgt4IzkaMS($md&(x`&(`Cd1`{dS;Kj;~oZT@ZIlZBh&Jfl)-{{GeK zEs~l)U>yH!g&NC4D*M5Y;AcKJcy1)V+p|vrX+GyRvRk$Savk2TywHHGK2EP-(-{4J z74?BTV^=j~ga~0x=V_f@0sdLy$!)g=H^;quRs8Ai>s7#yMQl$Xf~)kkXLMY~KcghDw;Z5_53P0MDKHplss;wjT5owht_P0JSj z>vwkz#?D*WOe~eZ?A>Ax#$r>qQ{f4xT`iV2KIt26VAPx{mmU&TXZ$E7;Q^eL<$}UXlY_y&ruC?@;;8)$wPC?JkAbQZfnyaAoJ)0XT?b3;j(LJB@ zn7_Av(?Emdbv->qYwT#6a5J5M2ytI%@2og_d&1i{?@=n{D*A5D-)wzmz_-*i&b(L- zJ+UoZ`)+bmx0w{V#e8~-2D^8wN*JK5U~q*^{I%VUgV*uh>4*O*dyoB>@fM-)wyMdR zNTF+vE)T`~wqqT)Dx-w%U8#TuF@2Bn^JsVCNjY~_AKmuHY-u&_Y0Afz&xDZmVojHx z6t&2o^}xQ>K54=@d#JIAd}|Bh0ddNfO7Pr3+)*Gxc+_#Ox*NT?-KTwjNPD4-5F2cU zk1I^Dq7y>dxY_I96?zP1>*({njJ{RQ8}xQkvU%?2-^`j+8n`&U^J*u0@@m(A088YZ zd`20{SYZ=9dS@YP3?t!_d^o|0FEm+1cIC*}7k1oudv^LYKDzmHv<*M;mnaJQzNdWD zI4dg@RfZfnDNLBmClaayzqEUBln^sB6!DQJB3xBxQ~4Kv1g}JbI>M``y||~0=#>XEx~wW^%ik~HIuo}`AwhGQdYx4|x2GaG7e6pu|cVMEw+ zqgBenX($P6SMgKfK&IZ?vM4W5lbI>o?~#Tf_tb!OfHZzhj9IE#GlzVQQWxFl`^AOd zr?mWLaqP6QZ}OXB!7*ZA67~%yD${op#u25@>Sag$ofCubvoX%IS;Z1x+Ach_yW_Ab zyJo9P2eC|_#|@o5I~!uo$|oQsnlyjiDrn;m*vTDwsZ{!ZtIkvnzBpHR{dP6~@Wixc zn~Q#Cu$6z;Z@H7~YWbdc);i!L4R@Wf)x&5mzPkCNo$g6V&4;PhB5S?_faxL4W|j*h zHDc#rI?|M$XyvfN>L{y3xjK1?5BJ9*viRj|$^3WPZ>B~UJwMHSrq;`S%UZqYMztSvEJ_yZ zp22qDf4gO1`Mr*eyah}??I?idOvPxl^bru;_}cYA0au!#O9rXm39(Ys27|-be!#mi zXeTDX4&VGh9wjSU^z1cvLPG4dWv=$tvHSW00sJu`(wKb000(cR(bL76w@V3&O~hS^ zFsy^jZs#5czkn`M7IN^>BQm$)65L8=_1A9C9^P8SS;(%WEny>S#@>V01UaNWx-XYE zJIo#z*|QpueaDd3(67y*y@OzB0<)h$8HSX$+vZ|n!ExSOHm-ikDCt2rrT97OvE?u^ zT>#2~UG^YJ;3kQnJ`P22N=hP2bkXf(NR-3Y~J)%Ih6cw&w>XjOk#pznmDHwq23R1rkGHvZIY(e+w(j zO36wUpX(q`1YA|e*wW61mH-08m4cNIdWe^5{8179)%2pvw-tJ?^}^mO#A98S`A(Lf zx?GM9J6lR(8u-l^o#2yYlpFYlb#@2?-KU(jF~BDm8E9*#XdcH7bl1D$z-(mB%LgL- zDk0l7?k)|&Y%##MCjpzzLC6vRfRE!P5| zgZs*HPXYYV-qB6z<#@}z-&XL~|35nbN90}Z*9~XRHf}6raDT6T_%`k}IOS|t2eOr1 zWZ44l6@>!dD+Pg^XZ>*|Z3Z&>MtGMN9XfnT+ zI6IPw_6B{2mEYUkf8Tm^ddRh8dvS&CYy`BW-husSuwqGWoyp-xjLmF~T{*p~tfur_ z5!s~AUv5UR4!$f#=K6MsfKf?hILR73~h};*hD-ADb;t~t=2xRHbTPTgZ}Zj3=);% zpMO@ZULrN)X@k)|w_9z-Y$M>({`;Ptg1O^jQS67CyN!aU4RG(2>hOTB&46yAqD&3> zuKOVEbUF5CcN+~)n>6r{@BS^_oFIi}hGm{M$!lAUTX+%`U)^oiCh-)9m~O}#aILn? zN{JfA26b)jJDUZzZqprr6nCq~EwonRg}QeUE*B%2x;W{(Ij2Cyj)m8^@cic3Sk$_k zCk`I89iquxK6N!;m_;8aW9RyWm{zA|drC(jJ5j=Pd(i>*XbN*q3Xa*c=vRek2w4bJnFsl11!$JF8UVz78eV;qkN?}hV3$uv(G##rGE7j9PmjD(Jm_<<+ zyh9cZzpm*%5Mg_vF}F|{I=KjQF$fGw2~@H%{g8x$kR%MVr_&Au7$zc`hz#A|C}ee? z(d$YpK3j$LWi@=!fgJf#!9*rLyN4mUq(5aC1cO2bLRja-c&Zi#(l?8M!1}-uA;xWr z?K)0;2?+b2AyGj89rAqD0vOWm;;)c=k0Fco7XJ#F1%*N;9M*@V(3hh!QA`TvVohs< ziL*}o5RD=dshY+tZa9N6f?#h1MJ{f5Lmr5<+L_`?Ck|q02^Es(c_yXI15{g4YJX+< zRTM%v4=ZDVCbS;xz%B#^#Q8;}hF^T=CIqJ8`I9KbND$2L$nME0$M|KlqgLq`v_{<` zk8%|MHqidzzy%Od2pH7Wd|1aBoK1R-%M5iqG8FcFm$i91mfKo87*tnNxVvDOi}ZoC ze#So@F!-3xf_kka0D@sa5T^T3R22t#vcwZ3tE)WE4r9Jhi-SN|=krE8p%=Zi8m(Q z;0lL(jaep?4|k zUX6;*d>ma(96fCu-CfcXp}}%6Wp_K*2L61+KMm5!@iEa@)RRV|E?%P+X~$a0!WZz9 z)fn4T+n-3@M)i&wMx!wM% z4xuQUPwCSW*KU&$WNm-TJ{EQPXh&W@?>=zvJxnTwk6@=`rKBHWa#pxW83iw|(H}ineEQ=4Hsb!~&!4L( zdnVVGjGwevQfmq@pVVZdso$kvOT2wHV;ndSUD*y>VHTpqGceWBGS4uujLLUdAc2w8 zJf@M`)^jU?s?8ld|6AC~cF)RB;1x`#ecd3n`;fT;WV%4~IMnrCC5KeIjZ^E3r)Vw` z&Ty%2ucVUMlfawKXfU2P6jE!dIB}lZ3{y+2?@O-V`QFxpB|w&D>m|q zxV}-ks1QGt<0L&5DGujse0@v6+I;}x4V|avqD3>aF*2}EGjoj0wu;6Nc)Q8FzX4rK z%j{0iynbH)^;})+VK>lXHnhV4CxSFzyF_l9DH%*$XgK4&na|H9`4L;3Z=JFANF<+ z;CY`08xUy~HLbs@eE+f|G7w1dK+=BWB_^mXM*}(l4^p9Btqfj`8g@+L{j$I8P3xBw z*m>GG8xbJ42bi2&Vl*>kE@Fp`RKx1wl7C;@lL06EMg4)F)g*ngI$a z8E)Q_X8DEoE0E8h_)r|A8Aib?MUqjaJ)@75uV7Q88R2^v1-Q6>i*f$Him}w>c(H1( zq)kuP7g3>Nf6>w5Khq*=;JwDK(8=w~rMJlj@1EAt#r?ti>}SG8+l=(NMn09EX>;AZ zaqH(iZ@rgRwU0vQ{oC8*o>1l`a-*q}jDuA=%g361^H@$4V08XY@ichKK=9%*eX#$` zX(=MN4AFcDpHa+6#koGDo|`bV%EA$ED-hFbtwLE1!{ByZOzetRSQr6JhFFKB(&M>y zrs5ts$r_0{d=~= z6xbB4sCoWJbZi7yJ}tHsB5t5Tk|*{jAx;>q;QB3S`q8mP0FO%e_9I$m2~16;t%2YY zWzjy6ea!dk0Kr-9{8YmG__<4yH^&Il4wcT!j?g|l1>9CYimQdQkVH%c*HW< zw;HKNldAd=c(!?6!SD)&UBP%b?PkN2d0knTfwuv-TwokZ`Vu9Bn=>iV6g13!vj~R| zg){`LPx&_VhfBYt&yrd@!en!9Rn(L~4;l3=@eUbH>%KG66M-Hc+7c&WC;d@zOUFj| zw+au?Aai}&ut6EM*Z133r7tS~(xIAn4Ak-N@^2mQ;~NcZWd9EmZUx#|zQYgCN+~M( z-~O@!J?)Pbk1GF$cq{{2f&TxnV#Memc=!P7IJ6=0*4mrGV`B1V4R3hGy2l8i^^*_C zm+H7ThD__(j45kg*{CKvyLO1q-tU_~F$|{G-Z;1G0bJ5Y>Is&7Id}pNpw`v^qc@Ko z+#1O}Aruokywfi#ANXuDHd4_<8gDo*AyR8&ap!=ap;r2Q2V--->*p;8;uOl# ztT4rEr?l!wm*^hUPA_{P2`ZBqt~l>g=}2Zr@-XZu=F$ycA{q(AoC78jtcwVOg$KiD zRs1Cx+Ve4!8qU$8SK~yA{G|&awcc>t8qM&M7n{<~iUX1ILvA{%IM=-S8JC(^5KwG* zNEQ>c2JdbW%)VQMaiZ8r-zr495Q;TuPbSzGrNhR`N-Md&-3mctNnhw#EUb^MlMmAQ4Rlxd*@%Jun9P;7AM{5dhzIvAHZ zg#N=-*%${0~5n%JqvL>iJ*+c_Fc0w@Mmhi*A6S+qVtrUO~*N9&qbg-Ys^m6L~>qDV;Me}EKXzDsL8SzSEM5G4dI2z z8Y(PJ*hg|sBZCj&A;C0LEITf8xzX5UiULg&Q_)n%9IR!`9@q+uAs0|cc+a2g*{ zSLY>v#K`=%f!ei_^8!gLZTrR^v9#LZ^bPeN-(r+!{C(DawB zC82%iu>YKSnpLoiIPYt#e(ZhC^EHqMnx)(@ri-;aRrO$cd-%Y8bq%YHZYEh`LLfI(Bp9)U~-C~~v>4`cGQCxYSyj*qoEW*^ILRvWfa*rCqM3S{~J+%ZTECZa1gmz?J#B-&LAD#KNm?S3V z5l&e_yc%ni#eVwCr+(YKh(GfeoyLmTxT-{iCrw_&+N5-u@y_?-#Dpn1`v)=_G0fzt zaU}`LKr}Vw@f-|wiaHu;Of$v+y0aNG#EP_jWL$N%G?TmtNtIy_oRCJ|Ul5J{bikRw ztwJk1`ja9iZ9{z^ojG$MEf4meOs)4qojE`SQcrD4Cb>wJl}1%ndibBHMX>)wB|!?I zBwnneN<&opmj!xtKnvpGvHn;v-5HViL~_3xxl`ten&hdeJe;-I89@hSwxzCCPyMT= zphIHrD<`fQYd2b z3R>j0{)Fu{{ghy0 z$`!?$WHE_)F`9ZXkHageLXCXBL(SRD|Iw_07M_DSRZx4?&$7o<5FEvhFaGVj^cq!E zcG_D#R1iK4_p<;U47aH8dHqksU8tS-S`0$*!UXOqyJY)|aUof{EyqMBkEf8_pOxT^ z!O9oWL4$V@h-M>N(mZjF6L)DylHj$b%1&@mB4kU|!sjaKc91_(WlZU3yY#knjKB-5 zte+5s2TsK`bkHfY+|h!S$2JY(97%TdLbe=73DA(@z+g*%?l=vQApCyvgG7t@$#Jqcb_YKUh{^_rn@#CBMQwK<}&}aaU`7z)^gOc`s1I#3DjGk_`Lk&;)kJ1o0 zpi&Aopi+R6Ab6Z3Up(WMG^_=NqU@HA@dGvmfizEQKKBM|Xb^Z2kP@%^JVPugzj*%v zIF>Zed(ah=q7NAVx2agO2{sR@olh%mA|Sx_Xqt_2a1@n|vV!>s%`Lubr?oMIAlXfpxQ zm-Y`@aJd#QWQkeLVM|2TBH3M4m5Njw*rnRPMMDzW)`T{PFI>fk4K2J)7t?-1KtrO) zx;3T!Q^;M5oG9zVp>W=XX<|x-m&*H=uEzs5J$X2Q%0-d^A36g=`ILuoTDdFjw2TEN!~Ni3~`PZw0L3gH*FU=_%W)XGRYTj3@Ix?E6cp6oJD z>w+M3sd`PcV$=Vx&;0HKmUs+n^r2Yp_%`R3z9Y+YkW*e5JSL&QSMNZ zzHmvywYk81d%`;{K;>=Pj3ffD;u)HUh&wGd8?>Q9Zzk?qf5;8?R!Gm;rfH_I;)>}7CDD-CI?Zg+ha##M=)pFn0C`{a8(4)Mv4I`E#jw9zgP z30Vz4#=6@ap>*wsd8(-2?tRQj9QmxHkJSBh0~r}o7!S#wUzk`c8B#v}2xa*ystX9e z*i^r;wR+ilc5Y)BAIaJ5=TtZsET>Q`DmC9dq~~8LIRhB+&~hvhtKc-jUtnfNL zH^T%$R>B0+SbG=ukz<5kcU6XPZ=i>WQGD|_0)7XA-h|R1ZN|Nk5>}Q8>>=-1gb6jt z*Bk}T^_jeEBMHS;%!jd9p!)V@HCucqd-wYth{z-H3VH**z#8!z80CFq^~P4fB=x6h z`(~IBFp$vSfds-+zTZHb>WKp18_GXK+=1tNT}U&f`I(1#@oAnkOvo>n^xY7mJp)RF z#n>X4QW_-kH~1cMTH}{#?LXY=Kug1fNZt+kBvE}qif4&M;RhW@nDmC6JAwb#p!%|y z_>_+l3;6#Q=Fx2Pwf&KMR2)(6j#`h1~!5Ak5#63BTr7-au1l z3_m5g9|!Y&s6+hi7>-CymmybfqYx9}&0QH?G>i+@4fK?@*Ac@XVyk|tez)7L<2aWtwi?{#pz}WvNnfomUEPBc0@yuKU1q+G2_QN=1#{OBt^?vgqQZGg| z`ZF55HZyIPb);VZ($TR33$GZv0B2`Q|u+)rk#l`CMbI-~&3mo(f)^0I)ub)9IF;8xzO!&@c z(43CIc}Z20aPMhb)*cVpXGy{qL{0@oU_;m#!8$|qa^2*vHy@{ya&0ztUrQ)qXW57h z2MUUT^FsyR8gZB9(OEf9I6x4x)L$KRu*{&YkHs2CQoHx}y~&1!+*dco9hyPq zmLcWGy>S*p&8m<}1WnwU1_sBf%}~Ob=x>i+sg5bQ`>R$KYY$R4N!bt(SI#pVhg@|a zq3v?uu&HY~{%Wongn-gD{{`SB#Z~Gdh=VB5vT$Jti9*_CJ+?h@-_Pi2vhn8ru1)^&w$b=l}W-spVQ4cvO<9m0GH70BjpQ)QFb4eKC7#mg$*dI9geS7B)c5z>~RqQ7n%G!{L=KiG2TB? z5PcV>lp&G+1C-rwxfd&^0l_o<=A5y)JCq6aY6ukhxwIXT0f;s)JYdygL4uimlyH{C z4PX~B1Mo~cW@Nf$c*v&q0f`}$wlnkJxL!mqf;>zkWuiC2L54(h4TU8{b67%q-os8RA#{@1ffNoG{ z_3fT`;pcZE{$)4<0O{f^v*cr)-vEX{K(RN}yfkNldc$Fmsh#^|;V`wfNb`gp0vC67 zMJ$7yJ1tVRk(dS4w&wQk3^Z&NLuh&Cor&}hLk7{qbR}Bn___GOP38$cjJ{+}#f#6T7GH?$) z&ef_X6l9ljG?Zl1V)Uo!8fYVcDF8K8bC83E7^ALrYCoJxN3TCnPm6B=2deGn!%n3tgp!dnc?YufH?cp*VtrIUV(WJ^Rq$0fSSzPM8v8ibafT4HKxed( z#+#@&51RA%ysWhRtfWO822}u!ETSkct)69;vkDD+966%Cy+^7t0518%xwSDP7EUy99tRocP6XKa%7f$RMMrP{;Uj;oO3_G+HS3(34=U5aQ>lo zSj18k{O#SlP2#W!aY}?YK2VPz68eu7hZOhZ+&kq0ma)!k$iO-NLz-*?Hd<0iMWtSz zJg=+@COXeC-wDq@44#XHy_LJqTMh|^F^uuQ&t3CF%wLsMR~e5p)Qny2bs&68$=!q%Vv)ruCrAFm=`)? z)I%~YlZ)`Oit*CY*608!Eoue-O-Wpw07VlZ?uv_hC|>jp7I^TWp?*^V?9n`uacPeC zh6B$ME#6)Iq>KC(B|t|(7R37)aUJZZMl_OtvcO7C1Uhpl{vT(Y(V+9O>s<01a8eK_ zWC*4#*jtX>25i`MTBL?iOxfUN~JYmtBgWDct-gN z@EdrGq&>S$jgsEYhtubG>@R=4cW4!({H$Pv1v%PEoPZQ8CJ4q$6Lnq`)xTe#B}L>p zQU2V*Oh}4vQCVOKle~%hh|i!bb!#qYI7li`!WgsK6^&aE#JU3Ih5YNaWQK8|2F@G3 z7nIXr0BUGQ!xgu%3LD6><6C4tZuOZrhJm-ZY#7v8rw!$xDYh9^7$70Zrj1IZl=EU@^A9ai}|gRTxmHEr75FhIIEA0gs)=gCsIofqxO8 zI)viI#2t6y$o2x0P?V=A4YnAIU&x#nBPk^*m6a3$xCK4zJE|negf{1Ei2$UG^b*AV zo}{M}7CO{AwVh?-EwB%o97)Hli0^U&vLf1XO}?_2#8BK#TKq+-;tts_Dvv)szcX4i9J;E!3|N-rb?xK2q~`(?d<>-4N5Ee@4iY%han%IJ-Y zi)^6ExZ3zmjX-wk{MMB^H8%&so|4c1O3X|MoNH|(snN1dUfRtLqjwWhiuTD zE2qAf$ZQ%DU#n=Ot zghu?4Su@9h37Wmy$VgaL($qSWWKzH~c%v!;OJd_=xdKZHl2U)VDxO4 z8n*44!?rld@6(=A)NLtH*#aLD0MhUc#O|Iu0U=*;n|wWDJjFci@&fbr>3eUF%h0GI za~9&4Jj7&UK{)1sIS_GLdOEJVxs_7eS0fIVl&}aET0=oTKiqE}@0a_6oQ90n>7bq{ zRELM&ZOt0RiQ%-Zec|nKa1a4D<-GO3%em13_b$~V#Rm~uI!cn4Mre>CY!@42Pj$;= zmwHjWjLjU*cG)s?D>gc!zxEmLd7X3g>Isa18ti?JmIz~uJp~MNq9!gh?ix6~t4J=$)#m4ERuXhSQGMdeLoq!M3#NK@%z|WI=!}lbz(6<>n=*Hgj(Vn|B)(W66gh^($yDag;sJ?_Ki@!uhrx%8 z;`Kz5gM!GuT!^M3NI#^ER)DloVSf>i*pNNk{9ce3Jjpm$)RgBUA$#8vH()*9rBC^h z^2MKFX?19MAdXPLdR2K6gT(o?VwC%u0?knVgiL=uxaFhb%tB_ zDc^u<>kCn{5N`&eyG=bw*K87khCM$ZOEN##q5Rq%w2gTOXZ(C1aNh|Y2Y@r_sP_q_ z={5qdImpe$oW6j&dmA8@o3v-$=KG*drYQVTZdR@1S{rVCy01RKbHz|zhn(cqULLuj z3%lVcrNmeluKm7~5WZj&1dzZC3>4aPU2xGv4N&>$zj zY?Bk4(Vq~3u&)+h8`n=`3Q~g?S`LrH>szBtXWaoZIlW$@YX-9#JkRsVQhvW(kF=$S z`yTFX0qYdLci_y=$A<-sk;;LQ^1E`T#gD+$5^F@u)g!bpv{aI4SOg7H<~Llc$Q938 zpURxR6CT8--*d0!$~Ndfw^yF%9IAoan^bnbGIa`CwF$(Ze$>X?D zc?5*3S_E_WsK#g1_CZ3~n}7l*vNC-u%$nC48lw5=n^qd07}){#iAGTTWsfTnDOASk ziMiO8jRM9K=woFt<*v~ahZz_%-}KveV$-C1X`T=PqDH$W6{jwS<*}0_TA= z0YUq>W9GodsA@*WwtuyY+)U}W|G`2q^7C5+O=^~`ZDKP9D&0s((d~BkC`XqkNY=5oz|}m4OHTEbZtNT z@EjQiz*&pD5BQ0nyC*|TXrrG{qyo^l(@_sMT9|bf%xT&*QrfdCso=f6s@yhQKVwG0 z4pvYZ4@Bd@jn{FdIv=nx2vOabk!VG663&L5rALCaHMrn=ghj%L;l*i^N#pGDb#EtA zu*C#avPLgW*m;JntBn~kNC+pf>6$Aajj|lt;GbOLu;NMQiVlkKgKjM*D#X?*{l!NqG{^6oPNMJ8LU7R8DkAzY~Fc(9&#VA6TM){i46 zaqr1RXGv<#kx@;NWvPr}QW1C~n`tPMTFGz{5fhbB2D)0+|DA5Ob@vP86aa z>kEU(=Qnqyqs#^$%Gg|w3kg>4+;rF-%;@vE!=}iCaa-|5ZYBeW!m}VNX3?-85GbEo zSvz?OsI1gQ&WoeN=Et(BE$bL8v+ZSOku1l0;eHsuyRd#VxAhuK_2vrN%Oixp&fHR= z$%I!;;Inw}$8B2OrUn zMzZ4D&3`q@OcEh$8v*v{?W6+%!Tk3r>1t_aXU6>3k@c?*XF9;1h+H^5zcf)g4i=x+ z-6A?9E>OAygo#bTSpb!};sNlqzx5HFqj{ERm12H`GR2J5PY;VKv+gAd+mCAU%#=HhTrW4=>~G zfITBoEJ|HA)9%@<)P8P*tA)Y#fRS#SsqJeyghSP%O>SchCG8alKbUMsH6y~fjgOW? z3WQErCNH*b-(c`SdBM8Q5B;&cIR~>2gMd-&b_oXJ@=g>_+_PiNK+p`k-aMF{C{3S% ztjXh*{G|GOslpinlG z2#T!M(&?%@&Yk-6!^32zl~qLs2jsPW?aHP4d?)qpY)i2O{S(H6PvyLfOdQxS2V{cl zWVG|9bYgNzielr|sVm+&RfbMTNsi(I9rroDI=aFqu?3ns1&hLUy9`S_+zfL;g^yd$ zM*AWwDoee9w{CAV%;r-A;-HJWGu07+xPjR)u30;4@G9^ zyf*jkW^e7>LGa@)lv<(<5h_$>1H>yVkpBeaLP?R%potQ%fifQ)dym3(kl5u!43a6} zA*izdN}kkT!VhVl&@p%1SU0SV)uW8I`Me=qdNd`Z?a&j?I8tRkziJhvH3>&%UE%cx ztbLUNcGcgpSE=mMjC?zAxNQzg}aO zTxQIUW2Ib?Yr4&ZW+xF-yZG`_v9vy~;JEd;c?#3S zE4R-lki(uv+X?}KdtPj+B&#I_T7nhFb)G3P!S8!v9kKCR4WgTaCMyI{*5(6nE||*Q zA@bue1w&sdNX-}?AALz;|?8cJW*MTI*m-Dq8| zL+2K`c89hl+5Bg`et0PI|Fp6wD`l*bt^8@~xe{^Zd)K)+=QgA3x{hxo`eisNZ(Yy9 zPcLKSbaJh5&QjnYlDWX2zSsIkQj}IW0Xq&7nB*|ER$C_%LXkWsee+kgR=XMlQ)c%6eMiU`(ILg#2C7Z;mb=CN5T08ci&X^Qj)sb=@u84sf#5qZ>`Fe z!*LX)V`cZ#JP&?f8l0j=7Y)c~KOdwkrbyE&G~!uNH=>~(l(8s4J_%&aI7ewZXAz-x z%!-U^r`Gute`zT!V<}Ia{nb=Z-9__bAi$w)Gh&$=%XKd>u%&scjEli=FwZXffKbZk z0j!-^vl=y_e!IoCe}2yT0&?_My#0%tOF=1kwXIHy&0|&#`aD!rq{7%{7>{0Z3)2l^ zNd?#01Z8Ejy48}-qE7NJ^~jTPlwC^>(H0g-4`aG!Hx3iJPFFINb+>GA77Fwh@M5_j5{^l6Qk%f&>H}~fDtMY0CxYb6I^p$ff2DUVq^TuofHb7h zf`f>@T?>i5l#lSHQt!>!${nc7U+l0NYH=CuvIVsaPi=kJugEUB=fS|Q+9t{ePyG

Lyvv2U@cL1z)RPMTfadB3yEbq2`^md~yZy%N`spk76gzk9Gsna>3 z=n65~Deg_>DiwLkx2oeqN?i349f8y6ab)gqt7O!1=_sQXn>Ve2-| z6CooNN9$-;FK$^!{`yH~tu%5{(D;->hHAt6YumOeJBW-vtT}{q5#i}um$a%$i4Uqi zpnGUinltXnER7EokysX%dkzL5y?1OZ5GNL%GZbj2AuE7f&b}lC6YHt%9A$xIHMA{4 z?w2hlMpjf{^te!dacFuh-LN{#YGcQ{j2pTujLWW>Y7(REntoVLXO6T@!E8tkl};XG zN<)D_lr3S*9MWRYu9(_12bPO?c)34KVb=ZNS(!d;b~L3!6uP?s<7 z)DU`GdHb)9xXqpN3cEnT#z5gX{}BF1@?Txq{~FcoxO)3Q77U56Jp;FUs*0^3R@e>Fg2H6`{&C*fNQBlCCRr2SDWOem& za*&Vl)$j>gLGrc-QjU`GxPIAo8m(S{VnU+0B|1!>zB$?GvY2Wim$v8jggPA5#~;rY zn(lMmj>MwdWI{_aal)ah`rIYwGX_ik6AQSj)cIAN+bP3LS@hgxewJO?M0gTrp` zvv#hcax-JE6Dmm);Q7)!c&p|hyn1Um>;tJQ;+*2%@VCGgs~1N@=>+ueyA-nD|Fues zn+*-O0oG)~f!W=E)*SY3cE)DTz^crj>~30X(|(T!r+d3pI9^h(IXsaAf}^QGSmSfF zBzf~42o+AU7e zK;6=9F@__#spb9mU#TZl7r#_s*U-?u&$jsrTYc=l$IiTOw_j5@4*CjuU>xC7HB7^QaoK+=gyX%CW0i-<#0Y3^cVS))$5-$`{T zpOsv_&r(Vzed^r#PBb!KJWMWPiji+C}=ZUWYYAh)Tc zxHe)g!@D)~D$rk%G9>3pf}SAfZG{DcX!c>Y=E|t8|s-N}uaDQ@2SM`_;d8 z6nArfRh+CpG^J%2mcv{ZVQVS4U{BL&iJ4`L{|*0x^wwEgDZLPziYD{>0)>J!ZkA_X zy5cwP*tl#YL(ZhgawfsbK?@qS#b%iO*<0Z^LGaik@TFK^|jkI_kv^QVJND4 zi|FB;7XXi|-iKJ^E@|pGOXYy(E~S?6WcXesrVv^oOHxd;vq~Gd)w#Y04W; zL7|wTd%OGT`~HE{L>z7$#*5Ip>PVU6{6sjz`_ndV=S{P^ z#Vbq=l6*}_^yh5e#J+D+FRPda?wa1)gx~m%D`LKU^uQ}fBH-iiB0+;H>FfP+|9s=x ze7h^e_nCn`G5g)#bKkbTwl2@a!mtJxYq3v&{h|iy@oMxD^=PHg+wH+YTuBY*1y{-0k#1!Kz=-H;$4K_nm`*uWVJ*tq+zX$rXV0$!i? zMpm{=){bTtml`&X=;|1PonG9ucGD;{j2O@ZooszYjH2{lTvk6ylDLW(Yn?)55*5%h zsEocYqyVzxpFti%1-w7%G1OeMoRsDQ_*5i>rJzyZF>pr6tZz64Fbu$NHa3f3m4f08 zzF%yvz4c_>ZMw|xdL7#rj20LS&fcPV!LlHLo4JeJH}y=~H`h4wRLWjpa=C(>w6+iI zg4lprB1{xCE*k4}*tW}T!!tw$aEyg;r0T+9^AceC1zPWRIGw_(63rapsp6P`m+q7@#jCqb4ZN?fKBdKD!bBd`I4E{IXD6I&KZ&Y zmo6T0t)#gcsiw7xd)7!3V>Fln0ViKGEtv_7$Ig*qWKOq+zC{+YqJ-CSL;Z9u&-Vm1 zMylSVPT@7_8oX>!C(jM@_SI@pdNDl^lEAZ$j8lX(4D}dJ&{3b+T0g7Q4iG?ZA7x&* zF@9V&{A`xYmwIUn!{|7|@v@nK=>@ePpL+}Y2**i`Bp_NJ{RsbrV^G9^l}n$RQDJw( zQ!Qvyj2DWo*)c&l))-%lF7};{)1pQdCW&w9_r_M;Mc85A12lLtrnS5=3PrKxFw=|m z#A3T?N))qlwp@zW8|7nK4ZAZjRs=H7uANX29f*54%NzEu!r(ukR(LUhtxzL8&Atd_ zM^_@$C~NZIF9b*UtBeIfZy7iOqd zp^K36uoj;+v&LrP=D@FC3XZ$t6zdL`IZkQGA(W30ba*VN`LT-;9_ust7i2H zV$BS|-I6+}IXRUs|C`Q$wV?I;+J?!N?UwcXO$HP44@!IV*1#9P_3_I+L1^^W%=06` zgGXlv$DfqlmH0nn{lC^O;@75lLY+5*fCdh;{9x%<|fH*lrf=BBz69-v}| zNPB_L(S}BEIYjkaq4cXtht);O2`ATwILSDS2~((N&o$}+iR*guIIDGq&rv8Xn2U7R zKjj9~+d_$c-^7j9-wL=<1iL^Ie-UnJ{@o1%k3FwStm4PA*0-?cK4T(@e2qp0jqEs~ z?bqx>!s=yad)ct+fVqamRb!ZQva^?^UNnbpSo}d`Z!=5MiXRw$1!V#kN$VViszpAC zn|?xs6WM-SLGo^7rWJF|_iZ9>kptrb2aaLTiDB10$IxmD`~=$gAT)ZCaURj&U_RC$ zIlk3=@F)p3<#LleEA+dHyi@ElVsEgtskSIrMTs9a3vQhF;c-#v;V!Y4v8&tq&qq(5 zlz4MPW%c(7oIlSME5AD8ymF>+`Zr%IfA3(e-CGac`X8Li+^YJ@itnXNo`rIH%g=(R zUVJ4R_?I=YNo6c(#7g`(?)Y}dKERuiNrV|RJkG(8ILka@ZP3z*Q-LkiQ@}AdP`3jH z8h~O94AIWO!Qj-qlK7Cyg4E(zQ0olcfJ!xQhaW(t_kiQb+%Vlhx`FW+&(lQfhjR^<3~ zSVN(AwU~9cJ_AEsC@TX$ib-dHgYsaLic2bUQo+-e=wX0qFx_0!57lii5#Zc{N(=g~Jpie{~Ob{)Fnt(Dbfvz8Y)EJ?EMLASI z`WQ005$OGIgb@qtu=d8$4M6YcA`GakM>YUkw-?pl*Le6hXLNKz#Ih1Re}tO!0aK`4dMX+l1Zbu literal 0 HcmV?d00001 diff --git a/timelines/data_processing/ml_util/aggregation_framework/AggregationConfig.scala b/timelines/data_processing/ml_util/aggregation_framework/AggregationConfig.scala deleted file mode 100644 index 2b117ddbd..000000000 --- a/timelines/data_processing/ml_util/aggregation_framework/AggregationConfig.scala +++ /dev/null @@ -1,5 +0,0 @@ -package com.twitter.timelines.data_processing.ml_util.aggregation_framework - -trait AggregationConfig { - def aggregatesToCompute: Set[TypedAggregateGroup[_]] -} diff --git a/timelines/data_processing/ml_util/aggregation_framework/AggregationKey.docx b/timelines/data_processing/ml_util/aggregation_framework/AggregationKey.docx new file mode 100644 index 0000000000000000000000000000000000000000..909f35b7757810ba33e13928a754621e04646b6c GIT binary patch literal 37683 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�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 literal 0 HcmV?d00001 diff --git a/timelines/data_processing/ml_util/aggregation_framework/AggregationKey.scala b/timelines/data_processing/ml_util/aggregation_framework/AggregationKey.scala deleted file mode 100644 index c3aafef69..000000000 --- a/timelines/data_processing/ml_util/aggregation_framework/AggregationKey.scala +++ /dev/null @@ -1,50 +0,0 @@ -package com.twitter.timelines.data_processing.ml_util.aggregation_framework - -import com.twitter.bijection.Bufferable -import com.twitter.bijection.Injection -import scala.util.Try - -/** - * Case class that represents the "grouping" key for any aggregate feature. - * Used by Summingbird to output aggregates to the key-value "store" using sumByKey() - * - * @discreteFeaturesById All discrete featureids (+ values) that are part of this key - * @textFeaturesById All string featureids (+ values) that are part of this key - * - * Example 1: the user aggregate features in aggregatesv1 all group by USER_ID, - * which is a discrete feature. When storing these features, the key would be: - * - * discreteFeaturesById = Map(hash(USER_ID) -> ), textFeaturesById = Map() - * - * Ex 2: If aggregating grouped by USER_ID, AUTHOR_ID, tweet link url, the key would be: - * - * discreteFeaturesById = Map(hash(USER_ID) -> , hash(AUTHOR_ID) -> ), - * textFeaturesById = Map(hash(URL_FEATURE) -> ) - * - * I could have just used a DataRecord for the key, but I wanted to make it strongly typed - * and only support grouping by discrete and string features, so using a case class instead. - * - * Re: efficiency, storing the hash of the feature in addition to just the feature value - * is somewhat more inefficient than only storing the feature value in the key, but it - * adds flexibility to group multiple types of aggregates in the same output store. If we - * decide this isn't a good tradeoff to make later, we can reverse/refactor this decision. - */ -case class AggregationKey( - discreteFeaturesById: Map[Long, Long], - textFeaturesById: Map[Long, String]) - -/** - * A custom injection for the above case class, - * so that Summingbird knows how to store it in Manhattan. - */ -object AggregationKeyInjection extends Injection[AggregationKey, Array[Byte]] { - /* Injection from tuple representation of AggregationKey to Array[Byte] */ - val featureMapsInjection: Injection[(Map[Long, Long], Map[Long, String]), Array[Byte]] = - Bufferable.injectionOf[(Map[Long, Long], Map[Long, String])] - - def apply(aggregationKey: AggregationKey): Array[Byte] = - featureMapsInjection(AggregationKey.unapply(aggregationKey).get) - - def invert(ab: Array[Byte]): Try[AggregationKey] = - featureMapsInjection.invert(ab).map(AggregationKey.tupled(_)) -} diff --git a/timelines/data_processing/ml_util/aggregation_framework/BUILD b/timelines/data_processing/ml_util/aggregation_framework/BUILD deleted file mode 100644 index aff488116..000000000 --- a/timelines/data_processing/ml_util/aggregation_framework/BUILD +++ /dev/null @@ -1,101 +0,0 @@ -scala_library( - name = "common_types", - sources = ["*.scala"], - platform = "java8", - strict_deps = True, - tags = ["bazel-compatible"], - dependencies = [ - "3rdparty/jvm/com/google/guava", - "3rdparty/jvm/com/twitter/algebird:bijection", - "3rdparty/jvm/com/twitter/algebird:core", - "3rdparty/jvm/com/twitter/algebird:util", - "3rdparty/jvm/com/twitter/bijection:core", - "3rdparty/jvm/com/twitter/bijection:json", - "3rdparty/jvm/com/twitter/bijection:macros", - "3rdparty/jvm/com/twitter/bijection:netty", - "3rdparty/jvm/com/twitter/bijection:scrooge", - "3rdparty/jvm/com/twitter/bijection:thrift", - "3rdparty/jvm/com/twitter/bijection:util", - "3rdparty/jvm/org/apache/thrift:libthrift", - "3rdparty/src/jvm/com/twitter/scalding:date", - "3rdparty/src/jvm/com/twitter/summingbird:batch", - "src/java/com/twitter/ml/api:api-base", - "src/java/com/twitter/ml/api/constant", - "src/scala/com/twitter/dal/client/dataset", - "src/scala/com/twitter/ml/api/util:datarecord", - "src/scala/com/twitter/scalding_internal/dalv2/vkvs", - "src/scala/com/twitter/scalding_internal/multiformat/format/keyval", - "src/scala/com/twitter/storehaus_internal/manhattan/config", - "src/scala/com/twitter/storehaus_internal/offline", - "src/scala/com/twitter/storehaus_internal/util", - "src/scala/com/twitter/summingbird_internal/bijection:bijection-implicits", - "src/scala/com/twitter/summingbird_internal/runner/store_config", - "src/thrift/com/twitter/dal/personal_data:personal_data-java", - "src/thrift/com/twitter/dal/personal_data:personal_data-scala", - "src/thrift/com/twitter/ml/api:data-java", - "timelines/data_processing/ml_util/aggregation_framework/metrics", - "timelines/data_processing/ml_util/transforms", - "util/util-core:util-core-util", - ], -) - -target( - name = "common_online_stores", - dependencies = [ - "src/scala/com/twitter/storehaus_internal/memcache", - ], -) - -target( - name = "common_offline_stores", - dependencies = [ - "src/scala/com/twitter/storehaus_internal/manhattan", - ], -) - -target( - name = "user_job", - dependencies = [ - "timelines/data_processing/ml_util/aggregation_framework/job", - ], -) - -target( - name = "scalding", - dependencies = [ - "timelines/data_processing/ml_util/aggregation_framework/scalding", - ], -) - -target( - name = "conversion", - dependencies = [ - "timelines/data_processing/ml_util/aggregation_framework/conversion", - ], -) - -target( - name = "query", - dependencies = [ - "timelines/data_processing/ml_util/aggregation_framework/query", - ], -) - -target( - name = "heron", - dependencies = [ - "timelines/data_processing/ml_util/aggregation_framework/heron", - ], -) - -target( - dependencies = [ - ":common_offline_stores", - ":common_online_stores", - ":common_types", - ":conversion", - ":heron", - ":query", - ":scalding", - ], -) diff --git a/timelines/data_processing/ml_util/aggregation_framework/BUILD.docx b/timelines/data_processing/ml_util/aggregation_framework/BUILD.docx new file mode 100644 index 0000000000000000000000000000000000000000..296397160b76b80e1c5b968d608c0af41b78832a GIT binary patch literal 37335 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 literal 0 HcmV?d00001 diff --git a/timelines/data_processing/ml_util/aggregation_framework/DataRecordAggregationMonoid.docx b/timelines/data_processing/ml_util/aggregation_framework/DataRecordAggregationMonoid.docx new file mode 100644 index 0000000000000000000000000000000000000000..bcaeb62b3f32d9935791f5f4c5e4c05ce8e524e3 GIT binary patch literal 37769 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 - val leftTimestamp = getTimestamp(bufferSum) - val rightTimestamp = getTimestamp(value) - aggregates.foreach(_.mutatePlus(bufferSum, bufferSum, value)) - SRichDataRecord(bufferSum).setFeatureValue( - SharedFeatures.TIMESTAMP, - leftTimestamp.max(rightTimestamp) - ) - } - - buffer.clear() - buffer += bufferSum - } - - /* - * Efficient batched aggregation of datarecords using - * this monoid + a buffer, for performance. - * - * @param dataRecordIter An iterator of datarecords to sum - * @return A datarecord option containing the sum - */ - override def sumOption(dataRecordIter: TraversableOnce[DataRecord]): Option[DataRecord] = { - if (dataRecordIter.isEmpty) { - None - } else { - var buffer = mutable.ArrayBuffer[DataRecord]() - val BatchSize = 1000 - - dataRecordIter.foreach { u => - if (buffer.size > BatchSize) sumBuffer(buffer) - buffer += u - } - - if (buffer.size > 1) sumBuffer(buffer) - Some(buffer(0)) - } - } -} - -/* - * This class is used when there is no need to use sumBuffer functionality, as in the case of - * online aggregation of datarecords where using a buffer on a small number of datarecords - * would add some performance overhead. - */ -case class DataRecordAggregationMonoidNoBuffer(aggregates: Set[TypedAggregateGroup[_]]) - extends DataRecordMonoid {} diff --git a/timelines/data_processing/ml_util/aggregation_framework/KeyedRecord.docx b/timelines/data_processing/ml_util/aggregation_framework/KeyedRecord.docx new file mode 100644 index 0000000000000000000000000000000000000000..c0ddf7c0ae446bd1afef29acef7a48eb6af375b3 GIT binary patch literal 37016 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 MBm%RCVh@N10Id%kdjJ3c literal 0 HcmV?d00001 diff --git a/timelines/data_processing/ml_util/aggregation_framework/KeyedRecord.scala b/timelines/data_processing/ml_util/aggregation_framework/KeyedRecord.scala deleted file mode 100644 index bb3096767..000000000 --- a/timelines/data_processing/ml_util/aggregation_framework/KeyedRecord.scala +++ /dev/null @@ -1,27 +0,0 @@ -package com.twitter.timelines.data_processing.ml_util.aggregation_framework - -import com.twitter.ml.api.DataRecord - -/** - * Keyed record that is used to reprsent the aggregation type and its corresponding data record. - * - * @constructor creates a new keyed record. - * - * @param aggregateType the aggregate type - * @param record the data record associated with the key - **/ -case class KeyedRecord(aggregateType: AggregateType.Value, record: DataRecord) - -/** - * Keyed record map with multiple data record. - * - * @constructor creates a new keyed record map. - * - * @param aggregateType the aggregate type - * @param recordMap a map with key of type Long and value of type DataRecord - * where the key indicates the index and the value indicating the record - * - **/ -case class KeyedRecordMap( - aggregateType: AggregateType.Value, - recordMap: scala.collection.Map[Long, DataRecord]) diff --git a/timelines/data_processing/ml_util/aggregation_framework/OfflineAggregateInjections.docx b/timelines/data_processing/ml_util/aggregation_framework/OfflineAggregateInjections.docx new file mode 100644 index 0000000000000000000000000000000000000000..a3ce00d4966dad2c88f9ebae44ab873d10b0dbd8 GIT binary patch literal 37311 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 Iterable[Feature[_]] - ): Option[Set[PersonalDataType]] = { - val pdts: Set[PersonalDataType] = for { - group <- aggregateGroups.toSet[T] - feature <- featureExtractor(group) - pdtSet <- feature.getPersonalDataTypes.asSet().asScala - javaPdt <- pdtSet.asScala - scalaPdt <- PersonalDataType.get(javaPdt.getValue) - } yield { - scalaPdt - } - if (pdts.nonEmpty) Some(pdts) else None - } - - def getInjection( - aggregateGroups: Set[TypedAggregateGroup[_]] - ): KeyValInjection[AggregationKey, (BatchID, DataRecord)] = { - val keyPdts = getPdts[TypedAggregateGroup[_]](aggregateGroups, _.allOutputKeys) - val valuePdts = getPdts[TypedAggregateGroup[_]](aggregateGroups, _.allOutputFeatures) - KeyValInjection( - genericInjection(AggregationKeyInjection, keyPdts), - genericInjection(Batched(JavaCompactThrift[DataRecord]), valuePdts) - ) - } -} diff --git a/timelines/data_processing/ml_util/aggregation_framework/OfflineAggregateSource.docx b/timelines/data_processing/ml_util/aggregation_framework/OfflineAggregateSource.docx new file mode 100644 index 0000000000000000000000000000000000000000..df5bc4855730b7adf0b4aafa051b82afd4f20c2f GIT binary patch literal 37124 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 JLong} - -case class OfflineAggregateSource( - override val name: String, - override val timestampFeature: Feature[JLong], - scaldingHdfsPath: Option[String] = None, - scaldingSuffixType: Option[String] = None, - dalDataSet: Option[TimePartitionedDALDataset[DataRecord]] = None, - withValidation: Boolean = true) // context: https://jira.twitter.biz/browse/TQ-10618 - extends AggregateSource { - /* - * Th help transition callers to use DAL.read, we check that either the HDFS - * path is defined, or the dalDataset. Both options cannot be set at the same time. - */ - assert(!(scaldingHdfsPath.isDefined && dalDataSet.isDefined)) -} diff --git a/timelines/data_processing/ml_util/aggregation_framework/OfflineAggregateStore.docx b/timelines/data_processing/ml_util/aggregation_framework/OfflineAggregateStore.docx new file mode 100644 index 0000000000000000000000000000000000000000..f07d5021992577650e0a8dc55f7dba8da65effdc GIT binary patch literal 38263 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 D#)+9( literal 0 HcmV?d00001 diff --git a/timelines/data_processing/ml_util/aggregation_framework/OfflineAggregateStore.scala b/timelines/data_processing/ml_util/aggregation_framework/OfflineAggregateStore.scala deleted file mode 100644 index 0bba08a94..000000000 --- a/timelines/data_processing/ml_util/aggregation_framework/OfflineAggregateStore.scala +++ /dev/null @@ -1,128 +0,0 @@ -package com.twitter.timelines.data_processing.ml_util.aggregation_framework - -import com.twitter.dal.client.dataset.KeyValDALDataset -import com.twitter.ml.api.DataRecord -import com.twitter.scalding.DateParser -import com.twitter.scalding.RichDate -import com.twitter.scalding_internal.multiformat.format.keyval.KeyVal -import com.twitter.storehaus_internal.manhattan._ -import com.twitter.storehaus_internal.util.ApplicationID -import com.twitter.storehaus_internal.util.DatasetName -import com.twitter.storehaus_internal.util.HDFSPath -import com.twitter.summingbird.batch.BatchID -import com.twitter.summingbird.batch.Batcher -import com.twitter.summingbird_internal.runner.store_config._ -import java.util.TimeZone -import com.twitter.summingbird.batch.MillisecondBatcher - -/* - * Configuration common to all offline aggregate stores - * - * @param outputHdfsPathPrefix HDFS prefix to store all output aggregate types offline - * @param dummyAppId Dummy manhattan app id required by summingbird (unused) - * @param dummyDatasetPrefix Dummy manhattan dataset prefix required by summingbird (unused) - * @param startDate Start date for summingbird job to begin computing aggregates - */ -case class OfflineAggregateStoreCommonConfig( - outputHdfsPathPrefix: String, - dummyAppId: String, - dummyDatasetPrefix: String, - startDate: String) - -/** - * A trait inherited by any object that defines - * a HDFS prefix to write output data to. E.g. timelines has its own - * output prefix to write aggregates_v2 results, your team can create - * its own. - */ -trait OfflineStoreCommonConfig extends Serializable { - /* - * @param startDate Date to create config for - * @return OfflineAggregateStoreCommonConfig object with all config details for output populated - */ - def apply(startDate: String): OfflineAggregateStoreCommonConfig -} - -/** - * @param name Uniquely identifiable human-readable name for this output store - * @param startDate Start date for this output store from which aggregates should be computed - * @param commonConfig Provider of other common configuration details - * @param batchesToKeep Retention policy on output (number of batches to keep) - */ -abstract class OfflineAggregateStoreBase - extends OfflineStoreOnlyConfig[ManhattanROConfig] - with AggregateStore { - - override def name: String - def startDate: String - def commonConfig: OfflineStoreCommonConfig - def batchesToKeep: Int - def maxKvSourceFailures: Int - - val datedCommonConfig: OfflineAggregateStoreCommonConfig = commonConfig.apply(startDate) - val manhattan: ManhattanROConfig = ManhattanROConfig( - /* This is a sample config, will be replaced with production config later */ - HDFSPath(s"${datedCommonConfig.outputHdfsPathPrefix}/${name}"), - ApplicationID(datedCommonConfig.dummyAppId), - DatasetName(s"${datedCommonConfig.dummyDatasetPrefix}_${name}_1"), - com.twitter.storehaus_internal.manhattan.Adama - ) - - val batcherSize = 24 - val batcher: MillisecondBatcher = Batcher.ofHours(batcherSize) - - val startTime: RichDate = - RichDate(datedCommonConfig.startDate)(TimeZone.getTimeZone("UTC"), DateParser.default) - - val offline: ManhattanROConfig = manhattan -} - -/** - * Defines an aggregates store which is composed of DataRecords - * @param name Uniquely identifiable human-readable name for this output store - * @param startDate Start date for this output store from which aggregates should be computed - * @param commonConfig Provider of other common configuration details - * @param batchesToKeep Retention policy on output (number of batches to keep) - */ -case class OfflineAggregateDataRecordStore( - override val name: String, - override val startDate: String, - override val commonConfig: OfflineStoreCommonConfig, - override val batchesToKeep: Int = 7, - override val maxKvSourceFailures: Int = 0) - extends OfflineAggregateStoreBase { - - def toOfflineAggregateDataRecordStoreWithDAL( - dalDataset: KeyValDALDataset[KeyVal[AggregationKey, (BatchID, DataRecord)]] - ): OfflineAggregateDataRecordStoreWithDAL = - OfflineAggregateDataRecordStoreWithDAL( - name = name, - startDate = startDate, - commonConfig = commonConfig, - dalDataset = dalDataset, - maxKvSourceFailures = maxKvSourceFailures - ) -} - -trait withDALDataset { - def dalDataset: KeyValDALDataset[KeyVal[AggregationKey, (BatchID, DataRecord)]] -} - -/** - * Defines an aggregates store which is composed of DataRecords and writes using DAL. - * @param name Uniquely identifiable human-readable name for this output store - * @param startDate Start date for this output store from which aggregates should be computed - * @param commonConfig Provider of other common configuration details - * @param dalDataset The KeyValDALDataset for this output store - * @param batchesToKeep Unused, kept for interface compatibility. You must define a separate Oxpecker - * retention policy to maintain the desired number of versions. - */ -case class OfflineAggregateDataRecordStoreWithDAL( - override val name: String, - override val startDate: String, - override val commonConfig: OfflineStoreCommonConfig, - override val dalDataset: KeyValDALDataset[KeyVal[AggregationKey, (BatchID, DataRecord)]], - override val batchesToKeep: Int = -1, - override val maxKvSourceFailures: Int = 0) - extends OfflineAggregateStoreBase - with withDALDataset diff --git a/timelines/data_processing/ml_util/aggregation_framework/README.docx b/timelines/data_processing/ml_util/aggregation_framework/README.docx new file mode 100644 index 0000000000000000000000000000000000000000..3111a4a2b041e7db0565c0a002dbe489340cb8c1 GIT binary patch literal 37681 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 m9WQkK=5Ks*3mTAuU( literal 0 HcmV?d00001 diff --git a/timelines/data_processing/ml_util/aggregation_framework/StoreConfig.scala b/timelines/data_processing/ml_util/aggregation_framework/StoreConfig.scala deleted file mode 100644 index 703d5893c..000000000 --- a/timelines/data_processing/ml_util/aggregation_framework/StoreConfig.scala +++ /dev/null @@ -1,68 +0,0 @@ -package com.twitter.timelines.data_processing.ml_util.aggregation_framework - -import com.twitter.ml.api.constant.SharedFeatures -import com.twitter.ml.api.Feature -import com.twitter.ml.api.FeatureType - -/** - * Convenience class to describe the stores that make up a particular type of aggregate. - * - * For example, as of 2018/07, user aggregates are generate by merging the individual - * "user_aggregates", "rectweet_user_aggregates", and, "twitter_wide_user_aggregates". - * - * @param storeNames Name of the stores. - * @param aggregateType Type of aggregate, usually differentiated by the aggregation key. - * @param shouldHash Used at TimelineRankingAggregatesUtil.extractSecondary when extracting the - * secondary key value. - */ -case class StoreConfig[T]( - storeNames: Set[String], - aggregateType: AggregateType.Value, - shouldHash: Boolean = false -)( - implicit storeMerger: StoreMerger) { - require(storeMerger.isValidToMerge(storeNames)) - - private val representativeStore = storeNames.head - - val aggregationKeyIds: Set[Long] = storeMerger.getAggregateKeys(representativeStore) - val aggregationKeyFeatures: Set[Feature[_]] = - storeMerger.getAggregateKeyFeatures(representativeStore) - val secondaryKeyFeatureOpt: Option[Feature[_]] = storeMerger.getSecondaryKey(representativeStore) -} - -trait StoreMerger { - def aggregationConfig: AggregationConfig - - def getAggregateKeyFeatures(storeName: String): Set[Feature[_]] = - aggregationConfig.aggregatesToCompute - .filter(_.outputStore.name == storeName) - .flatMap(_.keysToAggregate) - - def getAggregateKeys(storeName: String): Set[Long] = - TypedAggregateGroup.getKeyFeatureIds(getAggregateKeyFeatures(storeName)) - - def getSecondaryKey(storeName: String): Option[Feature[_]] = { - val keys = getAggregateKeyFeatures(storeName) - require(keys.size <= 2, "Only singleton or binary aggregation keys are supported.") - require(keys.contains(SharedFeatures.USER_ID), "USER_ID must be one of the aggregation keys.") - keys - .filterNot(_ == SharedFeatures.USER_ID) - .headOption - .map { possiblySparseKey => - if (possiblySparseKey.getFeatureType != FeatureType.SPARSE_BINARY) { - possiblySparseKey - } else { - TypedAggregateGroup.sparseFeature(possiblySparseKey) - } - } - } - - /** - * Stores may only be merged if they have the same aggregation key. - */ - def isValidToMerge(storeNames: Set[String]): Boolean = { - val expectedKeyOpt = storeNames.headOption.map(getAggregateKeys) - storeNames.forall(v => getAggregateKeys(v) == expectedKeyOpt.get) - } -} diff --git a/timelines/data_processing/ml_util/aggregation_framework/StoreRegister.docx b/timelines/data_processing/ml_util/aggregation_framework/StoreRegister.docx new file mode 100644 index 0000000000000000000000000000000000000000..2c289ac0bd08ad7ad5b54a31908e081c3af76fba GIT binary patch literal 36873 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 (store.aggregateType, store)) - .toMap - - lazy val storeNameToTypeMap: Map[String, AggregateType.Value] = allStores - .flatMap(store => store.storeNames.map(name => (name, store.aggregateType))) - .toMap -} diff --git a/timelines/data_processing/ml_util/aggregation_framework/TypedAggregateGroup.docx b/timelines/data_processing/ml_util/aggregation_framework/TypedAggregateGroup.docx new file mode 100644 index 0000000000000000000000000000000000000000..3ab880c507f1717f59269c4a9f5d8cbd79b3e1ac GIT binary patch literal 43191 zcmafabDSm3mTlQ~myIrU*|u%lwrzIVRb94i+qP{RufFfjow;}B&3osMJim;Hz1LcM zM`lKz9YQ_$@^`C-fQ_}Ik+q|aqMNOegBFde zm1RSsl*}40Lh#iGY7#9szJ~xjYU!>mxh>UiOu?%32UfLZ+6zgbm#1;|Fr^vU5HOnG z8L3ZRxNEgsot}-P8UlhBT3Q(@d4#}4o_QO&G?&IK2SUFI#Fj+&aOMZVs+%)Be@rn0 z{@SbVW7k0ny5i4K_fJ%P0f;86h*3tu8w`Sw=NbhKt;(BW`O{8ht0;duOtwd9dN3;M z{4wt1Lii%!E0p!IOhc-iX^{@q>c^TArhBa<9IRU(*Y8l{JV9A!Z=z&ZyVg?x=Q;>& zgD|^q)lK6vrowOvR$CHzub{q(WFEACVPg?UT0M6RoTc(*&5?7qrc7ztuC5lX=w)^q zAd2b!BmkFj*6mM0R!5+f0G3AI9#i2N_|*6GL{Sh!%>A+)s{J%SCuKFR%%sFq zBj3gslQhD>#`0x%DnRJ8wK}LALu5xGL@j zs#&H*JP^V08j(IR8!O{;Q*I&;Xi(H$&hS<83+nu|5``-cEQv?Fhjt`aaq^;`vjMXa zmTY7SFREzSw{!`A=4o^k)%E2)jkQHoNR>9ELubv06SG6U7Z5v|iY|?9$v|s;ZIdSr~n=Pa6O-V-^bCMKFtai27H+6<8Mv7N#_|5cNGrQQ&; z>;*A0qrrUj?*R%8hE_29p5`;(0Ydx^kfDu%ti6q`1FeCLz0qHjJTq=gy6+c)(37Xo zyp(d-9Rh@q*iXRIaB)!-zvY%kMkXoCu`K3^t-X9J^&CoP+%1lwJ6rAzmWC!^gP^z| zypZ2leum-DYN(%U`e^HKSwcVADiQ;Guex97Zb?np4Mw{oJ z`fHgO=YuB+GMnWK{~YrxAWE$SEAz&Yw-UkPAD~d2`1#?6#S_KVA(k{1;sRtK7XJYZ zOX}B?oYV%HTP}kPu-~x+amK7vm)Sku)S$y$YlK~MtZscZxTW*)#!-h2JQo?zl|Rfd zBCiIc$G&iW0fm7FWZ;!cm3L`Yrr!>~aIm-AnsNr#DuZbXfq_f<@n`0uxSZGj55&5L z^QKLILCw(o{O&rn1Bow>qhT{cHS$N}7%N$_o_EH^AGjeGE|U<*%!H@=8#B7}1TmB% zz6=ntR?%6i&WYUPI-f6*&mYU!l+P?TAQ-16aM~1eE&`wLy|-BZo|pTzHT1LZyjX$& z03iHpUi55j|4xhInDyE(g!VT|5G}`WGjKjRj5z;Az8QfH%<8y|ruk7q@!udVbi3YO zFQKSx!L$!y9CaLT^`mb~e8%AQ(xytNV=uYGvUVF#4OQVohiel@gbpC3pe3lv1BhC7 zI#Z(+3t-fcj;SiLm7^Ynb^7BsxZt)9GL%z}t8l!V^&W+7(zc${??${r=gu|H{nv@I z4a=J;a=&E4%YZ+sOv~Jgr?{9z_8v~vk`iIzgn{%v7(m9{%FM`DLWR+#@UiH0JFdq~ zLCm2&93N^8PY`oVtTfO$=ZJXEaH(u>=U|@uq4v=Y^0#@tryqoE%Q7#?*8tGN>(A=& z6>3XVLT{rkV!KrNhH}`LfIkGtBS&V563z8&dhQXkRsGiOVw)f9N;qQSBp%^FUOD)e z-_Znrt_pyw9;CB0u3)aQP z-jMeDs&%sZemMO#GcLF+9M**6wysphYfh8$r3CEb93JZ_Z4AYnQyNGTMUAdT3*`N} zV>2-N@iBN&SQ5XyHy8rQ_*TMJ5Do+@>BW5e@4r879-p5vZ9?7FZsmb6@NH9>A2fS^ z$h;6I;o4O8mZm;ejegn*Y{421!?#gZwtl(3;Q8p_KF>;^b4p@x5-5U?4Rf52#}l(J zuPJP1&}tq~1)@uk6ou`L3}j_U2Ms+X(LX+QuKILVZ3)%fH_QK8uff`EEj7Svip_qk z4>~il=~~_TqVz=5`;2r7HS8B?W=p*3mD)Do4AAMvn?3%)$zYF6hv+A&{9KOyVqgu= zVTO&nY{EIV)4hca007<;f&W(9e$@sh`xf^>_=$o)AtOyS%H--n2M?h8qqHRys{LcL zsAt0MG1h}jGwqz-{d3}o`c>?lW~ab)yU6z{9gi9a_~k>!v-1m*(m!U{=Y|4bacCT$ z0(tB9=}%$g`pVJHqZHL#v1{6Mdl76O{7aoL;(L3-hG ztR7u^EXGj!h$E~eDSd4niEogI~w;u6M|) z84{O(nFvwO94Fms*TiU9_R;5B)^v4yy1g4Nud@bzcd9gK^q!j2aTg;oed+zy#j=GI zN1XcxY;n-sla+{k1>oFb22tRnbb~kM5iwsQ9Zs3up!*-U;-kK81RU>UR4-U>J>Kt$ z#?{EF{)S_N^x2`o?v#CM%m|%ZufN>YynoyfV}Wj3J0Kji_?&O zPVJhTj5@}9H|%oX>E-!iKFi)41?~l_VjH}GAyFe(SuxACG3rR#Ign!NxmYIbL-}Bo zfw-1*MPH3@d|ve%1skl=JsTjqV=VkJEThX(wr+|dfS);bK#Usc=mZHKYr6g<+O~3% zR4Q{a&A0l9B=p`qotHCGgXht}%1!XP^ME_W!OIbP4ionuuHDw6A(e3>fF98P_g>6r z>1U6FV6BaL76nJGU$XWx(%wL3Q-fv2g1)PMeco>PDa-`1ih>Nfyt@5GHAvmkg=WP{ z_6Z z62C*TSK*Y&+3C2;q6|o5R5R$st`|M}se0Wg_y)R^hd%OIZowzh=oZ&tM<<)c-s-@m znR*RRfpD9AUn-b25OJ^fh>b>EcZ5|A=od3YC0J+{w-t)X{;$u~;BL?PUc04zl=slo z4r4F$JV$m^m+p7=Nq<^W&dYjzw&fWQBdrx}4&5O5A|20a&orDkd4b{NmC(tQEt2{7 zBE8SaNHQ|caXZID8di_hdh_`<8-@Cnqnv$P-4yX)Yu_Kp$9D2uksr(zre6+fh<;CD zQAahJKer2UW9rX@BvUiq`}tFK#|4k6P-5~{yoD@es>&j-F?RL}%Fb}R9lN7@Q7wZg zmkaA#MaO-lK`kXP<`KqHe>+8D(l6zw-4Ht(bXe+F&4py=RWI0bJrLHGoQ44bp>CTh{`dOAbEx@C~ zu?7P1Xe)$TW&S`y&8D(<(sOn&jG54#kL!X((Hb+5vbJU+*{#-0nM5|0ZrD^SY-G0ws>>f^n%QS)C@)C8|NtPt1F%;v5ACr8hxv-g@_v2~7A7{6ECyM{yR*AQp8Bt5ftpM;XXv&SIaI_Fa~+BIomgfC>eU1D+T z>nrFp6!!%4*X+3V!dr@yX%t0fv;-CQsbJ7zFJ{atlLFxH(}|WRJytF#pzaFxfoghp zBzsUgXj;5#LJh(tW5hl;R1K^`SHKwH`N)>GuI2e4tn?ON_wuOUCfPWDq@NX4j?OWO zhEO5;8R;;Tx?t}HjO@|BFlG0JeUd!*tf3d^b)a4e@KRAx%wdl0{Y3!fvgd7Ag&x2v zOsLqE!`ea@k$}9b-!qgvfLZr;+U91Sk2eOQCxSKAJQBmZSrTDZ`IIOgW|fU-71k|{ zFpiBedj7!UHm_P(8lb22#pn@Vo&w7ILyJM~c|5${TWYx&$Bh2-! z+M}v#@Iv+j>IT$(CX^0EV~nUg$Oy3v#-!3WuU(Zz*3Z=)Yw0Eg;lNUVmYk>U!$%XO z5~4@{qdg(-c?msT&LXm-fBE`@)E4k3y9=~ji#wkYXZlBZ-fdo5-Vb|P zptWjGw1}`i3k0F-a4&cFSBQupKJ}w0q*YHOM6U1;W}Gl!yCQzDM!*w~HA&DL4a~1*o?0ii4fneX4tAdTe z4H%h71a259r39wFq<^<$xtW~oljJdr6T@V!y%BnlV&7$3{kpjLDMD32k@S9S3BV zbZ749?#96RqdKqb=IQ9UF=`{0x|j4EWy~li0|Xn3c#9mq1ojMSUWzd}%o2FHJJYwb zXEP1maHK}D)yM#mWT+gly}_2p7OjPl=72Gj!l4hfz;@QLYR4hk9{^l)B;keroYXRG zKO4AW$8jP-l%UixLD}exs7o2i+BlIbHFyNzvP}=`jNK*RM8gic?1`%#c;IUhL1$1f z&K%29Rjiq92P{4(BZX-yjWfQ=#+f^iA?bH;RX{oVystFqXuDV|L=hoMF zjT&vj_)%8dX;aNBsgOnB5B2f)nA(ATtA+bi!Ny!Yy#N4j6yuuW+?M(kq+k#$thH*> zHFt?Mp(a4yj&zA_qu6->M%i>jiMp^~l)_ZkJFd<+1s&q0$Y+~Zyd#B0bg{QoTk%X4 zcs7)OY8T}>X9tLyfhue*j1BNnI_gmdv{dzp~-IN!-!MSGND(p-Q@s}u`<>P8Pv9?J^6^6{EX z%khOX-bugQ6u+@!c396kt3^swCk(R;y7ezq-{31qZ(E{aUY+&>h2xv8DXcnJ?^FT+6JJiTWwxRtM_ zenH41Kz6tK;$3qvRz zv!QbF9IvB?mPqVI?M2FWz*HUI%Apl zO^BLDvM^nbW>JUvZGIH9q>KEMCsG1$z0sHugU>qU*H5lbQZPwK6PcU16&peSJoxuH zutGSV7wk4y1JUq_19=W&FFY@Ey7;kaX}@_PCdr@R>3+8%5-ZF-iia>t1l|$~aQwaPTIVl1+||fvu^nO-T1bmuqd|Z8a=YX<>@(L(z{p ztXr=%Mud{k4A1Ugh%$g)?fVwIVOT?Us_+*mBz{ty%7qmZo#7-JaAw_6VGZrmPD+gs z;H%K!$#bT%%uD2c4N1B!mrJX{tJwV>!_SxK8~K~rX_h^J61fKk@a!-u@R}&PABF*rrJ&Gx@hwL85}$!5NXk!{!sBACR$(0x+&mG zC(2McbiZ0|B#se5!=Ln*DGFDvsgp|M{W0qpVc1HQRB5$%_N#gx<^znj2W|59{Z+jA zN9A-CdOxA>M>_0+v5faT4#-);0rqOEl>MG0p!uQ90Ls^reJS%*Wqw-5ckw@6NFJfv zjk^Lq>!t>num>AwHZMA zJ+s&H(%~=Vfh@o)+0X2%5^_qP&ly`xS=@U1BzADbRq5o8(n+*T5sufX;qvSjfn7Tcx4+t^=F!4&O?svl^>Ad6+K*EFQIim$aLO_e%ZSU(P12t|obKM0zS4D+lx*2&@HSB<c(l&wQnKiG2Xs(hgJUdxJD6z1)DW?4}Lx;~=nVSzP2{Wge>o)PG$^%Sq zRUMJj{OD#g;^97THgLbrE^;%H+5DYstE=po(8ZhFEbT!RdKE}Xi-uUu7uz;Jlw|&s zUPC4x+U_aSziWDNR6ay7Jpv%E;AUU7g9h+1jVxNa(BN;sHhQZew; z0Dt_fzr&tyJ6SF`%(GH@zyL(6OmsunhsihYUcRCM)9MSbk!{(Q#%!o{K! z{J4aX$ni3TF(6o48hQnsMoA6-FAm`}Cnyv98J_v)W8acdh$_S5Omh=rYE?VT$`(B} znJS#d7)4W!RVY|=_#Dj~nV09?@E%n$0ETOBSz#4~euZk&S}Lc#%|=zs>S%FvoD1{w z<7+FCHtq_Z-<_mU&G97GUHTqO#SM!?*N7V~o>Eg?PogWoFZJ5_5zh}(^p#og!8*J&`+1cm ziR*T}0)q8nwgO!16hWCqDh7MmKjfh-MiVJ;EV;W`)MiF;kH96H2ix*wV=g~u%a8(D_xy$Z9EYMs( zNC_p4N}^c}VXCkmaetHd{H!`C;-xt@$`hcw}EGSgCD&a3iNjlZn?#YfRU zM&nda$2z_t-bh?CrDTG3v{BD4Q7&yOcuXuY89#~dPy?h1{?PXK%RVU;i$%``RNNN1 zKZc{a#13#<-VUpb?w#u(GFODiAso@dR0?2*^8|e>k>9IUU8-F=+)M*?84Aj<< zghm;3g_tc8 zH^PPw7*7xdv!Q-_8lXuaGY!<%ehO%7l!04mDgcX~aIUQ{T4o2(M&ABc z^2@cXP|O7RFX|uMhX!0dMwnP|=pzs8q8Uzk)bCU_q$!YQdM=0SZIv?*hmNv1gRPyf@*$xw8e{t4FZ~C`Z6FJ5d^z zo{xj09eH*y-|u=mYM$RVCcm;}kb z?Pn0t3Z0H{>SIY?L5vVHrw^upx1F}*mXu+!%A0LY+tXK`c0Fil#Ia%KipmR*$Jkw;V{Xal*5k{-cqY10J{o?d zSGD^|7@_p`sodK#LkR^ea+eEmu<;vd%^EI!uZDzmqU09Kc!uoTI*NLH@7S1BJVcpYV(tq z;Y-}rEz?i+k$cO4wUkFvF26~Fn-w7+!E<#Ln##H}=i4L^S2&vyt$2q5ZhH|4R~~bx zYSdYeln&Ot5mv0`*{D5k<{P7oD{BL6rU?m?$fK}qb_NGo(QeWFfN6rCc_qd89<-=1Y zDkfCbe7cnM>fi~ZiTH&e`9e>86m%@t z&M~dWnR=MdYBG3h`dt!xzCX;^8-a}E?#ico^OfX?~0@O z_jXC7uX#9=@qYeg&Vbh(ueG!tEH&3RD}?*#K=mhmlS{OZ)c!Ec_iJJIDzC8b#6o!M zV_)F^Uh%W`#X_S0E(MQ$mx8}bTL6Do{Qj|#;a}^1|Jc-!z$X*%3nTdI6RI~T9;MJa z;>UR|Y1>cXsshg-;nlcDfrBlL4MQq{UBA62X0L2AtGS6sg~d${49a?Of7VDKc$B#y zStBG)6Zqt_?mAH=K8p%`NcQR;=8k1feyN#@nncs`Bk=^Occ_{clKxsK;)Xxgye+7e zQTfNh3UR@;Eb2gNf-`X`dLh|aj_z%QHxrf3w;kmc+dLa-4n5n_b;|y|h#)n~3%XiF zOeDIyS4Yzi&xY7OAK=0)+>D?^2pkNID?OPZ_{{49~h|qkG1S1^|LCT>{Ah z^aa%!3Om5JMGO&qtR%H*3V{|uKPD_#&F^Ot`rV}=9X-H-c=os>i?Daua8xbi##BVk zxO%Tsko@q;tk4`*ij;xw11}TQQ^XX}H)0hh#9})sy zJSBN0W%1IuT8`c>aGoz)RhvG-VpH?liJApy@iv}t$Z_j_1*unYU(dUF%|kopXKK|i+5-CUlzjP04%yRwl$THB@WQ}ShcNt zb!uu{b$&buyc)|V#jKRE;f=Ce^(=s)u+ZrjcMe zwn27WZ(_D3^LV>OD7JZWTp$xvg~i@i!-E!tTq3bgh19`^R8{hPRO@)D@p!QY(YCk6 z7zLsGe0(1D8T&wd+;4n1rfI%cd#|)_adK6-TwR7Fvs`Ae$eew7Xymm9YKhcqpeLk-pIvz6Qoe6@vQ zlRoN;xoOkpVRT_BL#6FP)TZo-!|Ij6?-aw+$>a4Z;pvxi_X~Q3Qh0{Wc{@3G-Va@v z4Uj=;E53yJ&nbH6ZWASDlQ#<fN(05Y3b#hoE1+@Q5E zf8BR@cXx8x=a9ij8PtMZpc3`fcj)?k8^0r03V>djK6obaxyDIpAJO=(sLweM{pXS7f98hCeI(c>PSHVVX}$Rtpjma=!+8Q zroaoe+D?HFZM9jRnI{S%Peh62ZyVR-i=VNt#S!xxAwR3VENGj=22hQ4M1vPW`W6i# zFuomhn413b@9!K%Fsrt9Kpl`qbX8I2(kP@;ha{|}@25==u^xXpWH;bfpP{Tj}gW`X=igmxO zMDtJn9`&!poUy+7$Rm7fMXBGX#)qcCgRd({adI9uN^HIlJY)kAGhZ6EjCQFDdZfyW3z!p@U zKeTIG85*ALC(MWo~8rXPyaB9)A9`N9M?^_yo{$slAdZ+O`IG0_u<63pHz%6rh za5$2?^BlFsqt)~vh!<_WOS8h8s2P35^c(Z*%@#(0+HFb~foi=3Cu3`19slvt+j%*| z1$JPqlg4K#Th!{zKJKXHyg%HgYS*ta2BE~#i=4Cf?!}(!)b7XX^%lqCoE1wOZSvXC zZ?vhgeFGL~%}qKfXI#UMfIpa9IMRn<=5ZYcMF)FyFJA{tF1(MOan6>5UVzwE-&tO;tf8qv=uN^>0i!gZ0rp%BgQgN z=ex~9vt*+w*=5(Z!$RcsUP!#ecqL>|i5^AQVY&`WYaew@XoB!@*l~<C6MborA2AaaQ5-`947QxeO^r3*FkXEW~M*`W)6Os-`k4?QWfAqyY zL=AbO4ZjE(amXuJ|FW;^N@3osXg_Q3lCxk-Vq?Ijq;yA_oaY> zZOY~Ke(3h|c5uMG?ZeK^`{^_BYw_ZB?&ST{_LpA!XERUcBklXt5UBen0Q^e2TQfI^ z&Q@Df^3Vgpi~R35Cf)VGyy8m-2RI?AG19T@$7DFsNUYX&#mg-D7Ks3x>B@z-cjT@v zPdVQkCiQnE!Iygc7g(D&)M_-!hd8iCaac=&AIqm{epqEm5@~ZZOhr+K(rqq>f&Axp zr&;Y>lPYx8PMq>Ts&U}}9H!3RPhxvOZ#41>r$*!px(Km7U9$3XZPW}JvJ**jN5`In z*d}p9$L)WYYXur@C9N4AE`Y_GtedmKk@@@6j3*(U82`!ZpJEh1=+lBYq_EAPKVmoEmX9Zylr9As_Vsav(8VE#)ONI8r*u ze#WyxMm2+##BePE!sI4kSF&Uf11^dn~WM&r6J zJ9!XH6sHGWeE*borr@c^(B|WA*C}~CFQd4%;<{jGcOb*MxMH#ys8K%%#gUwXHeT`{(5) zQb{Y&q}MeUW*zrKOGttZj@@7ETG-E1AIg%C6A5Ely#a!X>Faxz0kA3XThCl=u1qtk zX*RKf`^HqT)?FfLbwaK;^;Uq3c5#pgY4*oCEKL;cilkZFNMCN==TUWN1v~gQ;nEpO zq%q+&D~Sc~p{A?Rwi9ii$|?6h$h=Vt7G3V-C{D8;E0`BX;M(tIXxs`itCS1yepij` z{vOqzk6UHUB(L7*2>X6^Xw!tBIyaFSn9D4z$&+qVPCy75J>nlaIjK$U;a42lHTR?n zN;^{*Wa+eUWqqv;AM%S)MvGUl^4IPbLo1j2SS00Ntjn*ph&DR3>9!TJtca=GYnqSH z#gPo*G!cIavxqTBi%+of(eLF$8(W&xrRH-L6+C7Tt~jiMdYCuwL`cP=jkrCzl~u-_ z$;S1osxs=Y$~YZuSCkVq?;W0Es9`|GbQ2iB4AarIW99a(vl<}5JvV?QUQ=i zQ9{3}E=A|RfVXw#yqn5f9RDCj!W0&hkaun&@R+0$ULl~aEPvHqYAEXF+feA}Z6mu74?8nQH~z7PkVD5vkvA}3?_SlFl7WM{;*I&5xO0@{9XyA>hP zciRp%J29@tK5Q+Lj8E`TPfNj!ms)5S#>*0sE}u&|lL{h~DOlA%g!)S<&f2rb?N#pJ z=_dv?>^{4}`1hO6!_K>wGSY&C&3C?rm~NQ@cl;_s2j(jjAMG(A-;wCD_LDtMK9`FRY+ zKfBJmCX?HW;M2P*Uw>%tF?frxa(>}pAad`pS`0Kb?_zC{fHBeivMzjmvHh4Xn%HrL zit?Cp9DqKVe4GV(CMjb~SYKWNRUS!Hs>q7X0&-5bvby{&@uDKvqM6n9sd4!#AdCl( zPR*4MJ3@EnET(*srL?CDdv)5`3zm!P&p2<8@)*)p0e_SjfqH0y39VE0$1A%E`O>^i z8~65_^!;wm7z?@M_{sbMzcVG1B+ue#H3CP|NUY@OVaJfEx4YVE5${9UYs5pvBVt4|>bazF2`;E;sE}P*k zazhq1KXg-7V;kc*ssmZt;hx#aa>?0s3)Kmt1JaWMOl&)`56OMbE*kwBte#Dq7wr#A zE!7_ugYGcA!0UZxj=~efy@{ z?uTv< z>6o$i9U~hj#Re*V8$&gIn?qmZv24&4P|X3hx}{@Sg>N?#r~)>XVaF3q8w0)y9&HB& za5+u7oK85>g-$z=?e?ntHtdr(K%2hIL(s#7_rgge_r@@+kepjLw^%>#9E`L73Q_(H z*3tHmDBk)Wo{+Bk0p!xNmy@H2l03)TgB6(k>UIcbBqQ9rJuykB&uyBwW@V=*_xV<@ zj3)(K*jeJ_bCJ3KgivAFH5o=lG@9x$S zHCv3nxg086W$uI2k&flpo~2Ieg!ph+o@VtjV=^xRNQ-hE=xzo#(^qgR)M3a$yjGH< ztu0f`cpAhKNH|}%x+HW}C|m8sHE&)TP|RYoU|E*Hou>`u`p1`SUcw<1mqzKXRl61^ z`a)5bwklZ}^Pv~Z4DnRyA|%g+fjV|cA)=BdcQZq&j@tM&(w$;E2q;UIc7njYS+S!y z*)qhC!)*Sos_!r?z<067)nW~{zT;Q zpGkrVi@g0LBzF7r09^goM3$v7(wBjtTm zf9j=RZ>;NQ(d<+xj}_NFkS5+2ulx!UaQ2>VU=<$Vg6bp<@KZOpFyaU!j5P7^yV4Pv z#D$IREH!J1@yt^yEvlJXP zV4fyB9G6str3s=~!nI6^>-1buT8Nk3!>^ZsgXdUXFpm%)R42ZNmn_os8_GWt&$V&r zGAp&C)C@89KXE{a|A`~LCx#BVQ*-{LcChN z8WpEbr$L& zL_24GF3c?-ol*kDO_}XFIH3T#g&==#hP>{BEP+t1X2X#t{x3AW@c)L!=JfwWBOiA4 zW4R$)`dxQqT2y7O4nn+Tns{n%4Vm(e-R#`;ZzPGC(!+f=CGYt^p zHL+FcLVSalI{dY;3ufEb(n2BL+bHFdtU+!S0~y|1HZIS~Xu=#yS&(*YZ%HBEKtg;R zE$aUi2ZhrhCDa{_&NUuoZH*|Ke63vO4iQ9#3b;n`zebaM7$ob;HQ;Rc#6L2<<^Phr zU*WzymD$WTw0K#`GCMeEF<{(Xp2_W%wlvp9S4@dt)+Aee_vuZ}kEYiSP$}TstF84g zvL#yTQ2Dns)F6%CvhpxW@B2To%{t@BKlF3(KS#LFs*HFTboD?131dU6Dml=uRHUFkx-QvowN7hytgb}X|cfNt%Nu*Vn42JG*SwoU%tIa)|b6--!{Ib2>9o65HI%VXCl zTMdS-6);+wN_Y!69!p#|4QHi{B!VIfd(43D`pzJ10Ht`6)vLfe1_YOxVD&$F6|_m2edUc!MF` zK;D%r6__^wZcPe5a|T%aN`}Im-E<*BD9W^7JOEoPGC80=FO{%1LQP6#HAeWjGhrPK zLM(?Gp~s=2ySm+lp=zjXJ6s7l&-T^Q0`V>>fr|3kOX$hXVy16{Qj z-K>A;fMd{rtYIT^YQsguNaNrnv((kUusjt0i=_fy{Wr@#@V{7s0M?}F54D_l{yH=i zK(~VO69sg710MFP{{jy6!!f|84po&@QH2pQ=J>6K4l(@jIPUCq@n0U-7~4xg3RTw3 zD^w*9D!reLy^Ff?gFMt{4j%nNa0;@rx@+Zh)w+phr?=Bk64r@X_>Smd8|o(7#0Kf) zuSy|#oR{xgirLdUF%(^g%S(zof0jFt3Pdk9S`O4psGv|fX~uh}U6an(h$)M9ApuT1 z-T!ce%U%1pTtw8AXTK?AxaOC()2RwKnAirnSS3x)g{`K309)>74zog9J69KvQ?oSE zM%Ld=R~;nlG|L#7-b=(Vp)Mtv6w9bv!w+CB@@`c*%vjK|EN!AB`)-V9HCd96>o>I0 z9W&j{_%@pShY{=lG)kN}pnf>K?Pm*fKsx#hDy1CO@>(hbdF;8LEsEiXdppumxlqGj z{mxj12uJfWPoo)ix8wj4ALIbL8GpA^lZZ(!f;AeDO@OnTADlxRC*BO?iGMJ3{+|qQGwwnres7gCyUYFIyD0u)KVo03 z34YuEXO?<+t}_1z!-1RPfItsiPwAo}xSFN@yFm3;X7ukZoWGvX$1htOT~uFfJnh** zau{NoAqZy9>r`{JuOkh|4@bvQ<1&@eMe_$Qhh}+^#ul}-zlw@hw3*zo!6qHgYcBhG z#V%WgqS(M|AGE)3>=V>rGd6I+Sy#WjDjMq!SDWSV4~xwcdgR0E=zcH7>$p4=%pT3(szDx< z7jz+;HjL4dx;?CrsCt4(TD-MVRqJ;MwArY7koxq({(_eH8ye{w8eHP9)%SSI<|1s8 z?%&YPhGXB*9L)cKo+Uw!fcsydZ#w%S+rzSTHa%NJI&>jVD@uEitmm?*sQg^c2~_>t z8;RS_c#tEATtijhB&z#uRS6Auto!1a4T`3!`*}O|dXWBFWf%Nt@|cJD5Aa8);csvS z@V~*E=opbBX#N-Q8C|jMm+0iJb^HGS@6{E1kym+!QfZPyneBC)1wU43`AyrQqrKJP z*TVH&&(I2$iSyNZJSv|1@VvB}(oqOfl>bJh3KxD7WmA(d=(U`~_j8p^c`naKsw1=F z^v0#}FqX=sbaM_sUGAbmQU=G#rEg88p#xs0Hf@^eA-|QY#Fogih&yRRIcTKcl{(fB z@`1m4-h%*vkNknVYHhj@r2Wdh~{R4_H4J_9TRVSt7DVQK_5ipH(dY#Yv(xS`&1mgQopf1sT zj8cp5g91hDW@(1&$Wn8mg^ID;Ze0ngOmZu%v;U-9Oe;pCVBO?2%abvCkx`|-+jc~D{s&KXYF za5|R87m5vX%`irprukk-E_m)SO1YPw7LQ>`&#hkVm9R;b>F^28@iJDlCzlp%N+g=9 zgPW%DG6;72e>SIgN2P4G3TeD34`Bgbyh9<>r9^7X%v=2+-0r?rZ`-_c@bZupnQ&DU$%u zrXXT8_U~24HgG650Kac2pdLswzE}c2Z7~@uU&VuA$Zw!=0|?4r9hS^l;91Sd4Pj`q zHcGIx|A(-*0E%PV_l0qHcXxMp3lK86y9al7ClK7--5r9vy9f8+76{H8_TKm0bMANF z`)aDXYPwhd>_5}9diCmQ`}P>KYp{-Inw=0M<^}@+VkfRq?TK1w7dh~cpGk<30FHU^ zaL^q{AX>)SR-3DOchF6!m@6^Tv!i<> z)}6DZ#xz6ZUU(E*ln#(M@E&*+R+0`7Y>IE#`;d2#%ru;P$1HmO9tb;-_bs~FN0V56 zdP`J#BAu$79X;p6iG%Q0zH-6X5nmnxN3EywV3F9*M62FFltgSSK^;kSNr2r9cTgs2 zH0BZb6IeZkQ@B~f4v<@%K6p9i4Cq@@^CpV%{}vY|`XLS{_)6^BYGl-CoA<1in6;m% z(HE2i@?!yA4_rVs`+_n^yS@fC=5}pE7M+h04#Bg;kaqOwVX)jt2|a5wC#N+1@CCh9 zTf72u3-iQc?r|$c*Q2>`%b0>T2CTFL!#ghrhIbAFJrZEu3h|%e+2rW_6JBknbyw=- zN&?G23gP2lLd`|ca42&vgNz2co38Cbbw{;Mq=q6G~lr3 zLA4Z3%jwC@m7-hh7kesJiGj09AmgjHR!=N<@alWf`WiR~b_-9{b>!72FEcR>V*h!f zCQ^#zFw7WxJj2WBx^a{2)~Z`Hp6^y!l6Ko+rzqg(2M@iSsA*YCF4^HS=plF3^bz@# zo-6*?3j`EoQ)?*^*4%8qr-}wR{H%lNv#Lte8usC`H-80J>K4tu?-?BRDebq%G!WZw zk1jJX11}0^Xm==AD@9CZT6S@dO&gK4=_Mz-$zjO225Vbw%1BJ4AgyT7ThmXz$^fgylTOs7p_ z!KV=Bk<;9w<6tyS*LZ4-2z8$*8a}^B3@2?IsdL)ur|RD_nysxK9YHDYlu#U+gS1i} zE=!W5+=|yla^Jr8V9B4_T-;i9zH;;l2}^zubxqf}R%J}RjNyB0pCEPtGw^?e+$%e^ zCtC<%6Alm+MI5dO3;B&*Lxi~m&~esTz1UIRyAOVBnqlaOx_o)**-7lt{GX+o&hb1` z!e*~(8F~3BEG_a+e)iC1x~Ii#-8Zj3S2jNLX5rb2jkH$l1D#Gwkc!lG0iwTUtiQs9 zpyA^t=b8*9e^DYc{u2ynvghfef)3?6xRPGbihvjxh;1PdH_8sfLp2QykVNt=AqUA) zK0SUax0RSDZ1Z(t%vas2nUwteBF$NeXS6x;D6dZp9EIN2k{>36&o8Ser`>?mEtVH3 z2NW*GaqVkXvAZYMH3dqB6CqXpg3VeouE<#urxcP!QQ19p|5lU4?%*u?bO}1apvinB-r}drq&(iHrw1IHGgv<|3ju`1o?prUpC4t0!h1vY}H2B~uSM$ryU(#+o z_g+-4*qgS)vcd1}z~~eGPCa{TqR?4fdY?Z8zo1avt@Ano1qc4O;J}BB0>OOwednuO+_A|cjQJwR z_>gxb;?wC5=UX~d3?!P5DaW^PH4*#|;HUvO-;{*evh7ch!idTcm@harZm%6)x>sF~ zqVkZ!-?_|Im5Ul!MIeQJI=2#OYq+O?Yn9=BfAK2lGv@+b*OhIXpZqRZ@3-5J@^;-w z9V9H>UKZUt@dWxAUWD_l*65us3M2+f`vQ!_xMS0xm-)&&>=qH~wAG33;TZF`%9VKP zLeTYs%gW1eQDDx{e--n8&BnFh(P&7MW^5M;m~XC~OXoJQqHK`Db{-Emz^O2FDv$Zt z7rW~IA)VK`X?=QZ`1I5Jh)YoX8r!%7!o1Kz#B5bMqoP4N%aNwE4&iC&8KF9XX0cT) zA|(>4x^Ou1$fer(e||S1Pmh;y!sMIK*a;f;EKyX8HgOE=Y!XaE-#kBUd2dM-- z2tApd{h|t1s?er}vr( zcnfo;^XchQ7ikAsdWUC;GyKs+Q5l8{{dwtLQY z>(wJ0#4v2M8)`Iv7k}f*mwOvE05y+ZgXqUtzhtxnDbFV6{{(Q5{{T4o_7{NtAGg3g zh~aja;qxA%=#?#ZzRFC1eTP}lcQA9l>~HwN+pX94zmN&+WYaqR_gcqP{Pza?ap3F; zyive=uZ4OYb~Y>jQJ@_(J3#0J=D+O@Z#5i-ZqA3z4b$tecRowZvzf@|1v>1IR0c8} zSrrd&Pq0pv_BZ_z$3OHX#^wUskU;Z?JFRx@k)Z8|gB<^JcUth_y@%J|SjYra{$P0B z9lmZJ;24qmu`=))0?^X&iAhovjCuA&7ng0F@uSK`T%VJR+%|JD%jrHJ!pyOtnyf+HOB2fzY z4kPq;7(fuy)k_!}7-iiJ&l6^cqKK|VOSC=YavLOQM{HpYr?e7@&U$pR$8OQ)N<2;~ zECR!F92EKYYfEv`LoowX8I>5OCrXm*{5qxaY*gw4fP>M9_-iJjOL~% z2*oRCslx`_SpnaAN!W2fUzny1AaXH-dq>E)fG&G~O&EOi0-DOs;=`s`aWtjm5sLW{ zhBQ~4QkFRhp_T4ZdiVc}iUml8^ZkR0C34VcyKb7>7-*9%)q{oD)7og{hw77_Om-3` zzxb^NZigsG9h-?-^667@n!gSW{kV(k6at@7kzS)AsaI|JCrY(qR{Gn{9>kRdg=S3i zBaJkXGc@{B8v2Hz3+svM5jOl8V0ol#cn=PXgU1ij{}?RV85o%Y3u%X(eCi?OrOaj} zX6=H!G=l$VT|fRq)yVXwvT}tab9ijqr|(-5X#*Q5fNXjUVw>#WD+(rT?|mPf_6k)6 zOtx88w6c=F()uEL9TeY_^%({I-xxhLHNl~%)QS^0XEZcf{$%pDvqJ$H6Otfr2fsT3 z_)gWnC4H-{|0O{sgc+$HGFLM`Wt*>`C6rrsUA)x<5GWev)~w2HDYKilzIX0hpKI4x z_@3m%ohT|0qIh-fdP$g zg^O57e091-DTrN}j6xo^LS6{hHwa7^IusR>QWC!&E0jRUdv&x*okc1Y7zVqG$w9j& zK&isq2_qurw$COE-EVL@j;;0zI|b73IDTYxmkq9^vF&*XDm2z#s7gf?M6pY^pSrlw zrc`ajApNiq1i8SCH!ZUi@(N3o@aTH*=}=XEL92Z2k^yYx_O0YF5qzU^YZ4DxM>Ne9 z%R?p?g$#sC7lCBHqRPy21d5zY%N2j+ds zD;lCF5`xu?{s)n6WojU!?zDIUi~3(G;F14U5z=!@2&hn0tG0Bh3OthMMbt@ai9o`9 zb6F9%CKY?3!@yk$Mi@(L1OTBfeq>5CtFUQOa93He!5A>K3lSKJ_i#;N7$?F2E#bnyd|*fg zuoE`86|i{e;6!2IxodQggIfs`>P`o(W5$V%N{w(R`P&6k6pBda0Sa@QRZ9hd`=ORR zk^b$#0GWC!@wExZi9KRg8koeOc8S9Cw@yzYrpj;(*?ZCAI52Nw3Q|ZhI2SU=rYx~@ z;C?Y1^FRmh6L_SMTdvq_giPP1;1C5Eb^}sea>&Y#0#djO?H`w~iQkd`bKbszN8mg! zCkTjB4HO98f6m)iw{ZR{X=Y|>?ELo>ejnYG0;&4*=SR$@lR^3HWDwHPai1wPupzzi zz3a652ce3J1>N-O_!C*W7T_#?ksN=tkr?Tb;B((pS`pmXHg>0Br0|C~zc+V}u4kXN zjVi9wKU)azTn~q~ZN4i4)k`^Bez%wUdv?@Y>*x28cYC`Y4SHSghtmfa8Sjsm?@w>1 zZtbr*)8iYuH_vw$?KL&XmzO#Bz^VP4ooj*ujQUvZ-JO+0%^4eq^KW*@87XcV@;PeA z<8J!gYr}3+20T13-OJ~PhHYzl`c}-5VYlxtP(d;`e=L10_U@y( zYQ|k0Z|2RO>sP4#Y=x=2SA0FZUb!r8UF!6GbOdYe{fccKQ_Ot*{N9^&{oE|~*2aAb zyC0d_0xo_1JcRT+%6{Ct7nHp7z8j4@B@E{TXN0w+9C-S*cDk({I63xb++A4Qd7g8x zF2yIvA4$;>^W4_z>xX6k%ne%`T;BJqM!Z>n+q?e6JUz@`W9z`PjT6`SZJgQNmelUn zn_BbAC+RfZ`p8%9bgkQt+pcDLNzJnAwe`)>f?g9!;wN8};{B|vCHL))#dW$|Zc5mt z?@Py~H8ych0>7;13zOtN@OGT#4c&SHL0h7}gOb6uTi+BSUV^o^dO<>dB0ge)cb6Cb z&B{OR?KNABuE-UOHKVVTRo#_n;=&V4?TbE+W^F6y=Ix7QUTl1XpQnY3u-W_`YuC(? zpeu$KU)wY9HuOhTyP31Mw)m$e%O0zL@824|K6*R0z1?pS*Z)c5{mshy_~u*pdf$Kc zv+vI(+lKuU`Lg1-0ClykPOK-}KR?_x2yIQSExP5FnoS;*E2b+jIHp#F->++0oF}mC zp1-^?={2~;ai$U2PLL7% zxY~!ivWbhb@sI@{+isZBa+uuGTw)K{v z8)ol$6*2e0*ENW^D`%r81i0$gHgFXVa25Ogov@b%!CTkkjx+*iclG`B_|H2V>AKA9 z`?Pj_thK?T^WD2+rUOXs;*<2pt9yrOw|VivjJMh?Tcvw#<8cQVYf0uB`N$1Rb-O4d z9^WsTn;Tm#6~kIy1@W&{Lw(HCkzoh(hrp?VozE_h!+Pa$Ioxi<(FCQwJ+Ph!C5uNT zueyC<#2yS!l;FLl`z4FE`gVEyd94igh}HUF8+h>V8bZ~ZdQ*afy>Z?tebLHx!^(9D zNO05r-xH(k1-{i7Q4o4(Q{&R(@3_Z*t4D3w3}2_iWNOxbINa5+ZJy?y&Nwe=F~3kX zW#B$yc6}g{vi+(5-M)&^xQ#bQJNVKJ8Tp&|7`W-;qDD{RNj-x>gqaT(i*$nmJPw6M z9c1Mwo&`^Ut7!0E9KOJuSsPMCe(UudY z^<$hzPZ-9!ezF}3L#vhAmV?zGUkBrTm=--dGgVkdg zWe>l7HCEOPf~2eh+(7#ixPjyxxFHs}p;oFD(*9o%1WPb2Ag}58-ITi@js9!zk4Em3 zHlPH>r5`AbAMk&n{Ck6cNBQ4X;BdA;+Nb9K1mlsLwFM=BvSAJ&kp z94lm=knV49qMt(!NDs8BUTS0#IzW8A7yKB78C%Bhz=uy6G1R7~=?s#05q}#rJUR~l zk@43KBw+Qbh?%aK+$ky*wnO-CwPo;r^l}k)aF8|D_XqtuzKpQ@xbLPbkL%L~Uz_*) zk=5LZ)jem`@E$jOiQ70b_S=K|Bh0y@*YWFmRu`r~R{Q4jF;g{kbGu1Ib~O>gZkw>n z-YFu{_l2$113iEsi^;fNAw2;!goXPB3l*kNCGJ$W{8=6P|CzMBZ;WMKeIgtD_tyiOOy;S5~M zd(XZ?G>}6azC4+OjL7FeI|X{Lkj8plo8SbSk}wA}>LXd?V9nWb7V1XDx;{f#l-R`< z2b8EI%FB}r2$H(%$yk_^oc=^yRlPuF-xeqjy_F`<{NxkXU@nyDRO>9jEfg_NaOO@h z54KnXRbGQy>bn)d$3|SbZe>+LLZlw#UWq!e*A=vKi4xu^`cwn6>oXUn4)gv)_ErLN z047_7+&v$)H=&E%-C8JcF(g!UM?&f=&WxCc7UDsf6pj2d(!sY!g{2=jR+6vcVAX@- zY)F^^Y0A-M<0bcD2+9+W3h`0pa2?_fS8BquLSK4St~tUmzTDLnxA(g&-U3{A&xM7K zax-3D_xQ3r^yPcI_7Vi%>P8S<99O*`UtVG)g)$C&Z?#_M_r~g98in<^2;|C{URqZ# zxtR$VZISKn7dX(7ycoo=BYkPKYu9`pFyM&`+e`3MDF>#$jJ_kuJh0I*&)! zD6>M}xyuF#yMAq5!o@e+x>a7w)ejmLm~U5T=)asNxGixTdz0-fY~M@H?n-pRnKJIa zomzJD@M7@YMsmmPgT**qsPoVk$Z?Olw$(uz>UXFY+;rA?k^pQhxgWQ7koh{swO})B zo@J)w@D#xxj?6Y2=z;19)%{W%+ZCuvlU=GzAcREqBJA3aG9x>5RO`3&wr%$nExt`f zvujk4F}j;@zdT(@N{gJ-z5c4tZUE}WLl;o8m((|Z-B{(oyP^`9Y+Gb37X-WytYO6k zO8D%6aWT3YS1Qe()`avx|Jasv+tY-8@q~oBI9>ngdOWvQbn%8QtqYDT#*YYXj=h~$ z&}%|{dP{tj*V(pH2&eD%r)d|nd4nMj?4wJ4UcYBdmYL6(pt+0u9HT-?-rmK^4U$R# zU=;sknHtOEQ`Vh7!DSvdcupj~%ad!#Mu-wtw;$K)`y(+aTPg5_lg{Rg>wloF?iX{g`Rp~!Vh&XLRmw%V8X~n#G zyPFo}i_2qcEM^rXw>Mah5!Zb69phKt%1TDhN+-J0zL+hi^*fmzD(TRQiPk=y^_cr@ z`KpEn$?JT4fY$J%am>YJ?k?1QzOB9d@bwXI&#X(KgsX7MjK9h9M4xZ5ag=$X40>!! zq~^`|x^^Qma+CS^7!7v!Mwu{B@r(WiHnCfq3kR?Lo5Rn5WA-jv*U@I-DQo2LW zd#AgiJ?oJlH%h~V?j0$BdT~9EvePJc;_=V!%D&od_gT^^+>?~|&ANn;b>fZZo)k66 zx;kJ!HIM2rjvgv(qCTy`JRlBPpW;2&5x2h(A>3;@R^ASu-R#l6-K9QLMu_(}!N(TF zThIxktY7c;?g-z9vHj@rJCC|i% zD5~_&s@tBRqBvCaWyI(*%H;`3?DxYiVwy_)NFyBwPe)ST+1JssKbV`=R_%$ zexsoztXaWNfdiR%Yt5uQLrr3)Z2OHg2)U~Q90y3{SI3y4nlZJ@Q!8=Oe)_#I|8Pvp zZyL)^8}ll+As!Mf?i#8tBe5K*8(l@&p%_LSfezws)DyaA})tG0_{QzKkNVA#dz_0YMVUvD#e zoMp|ZLG~O$UO~S!g?0CXr3%alf-(#!Y_-nDz=GqvHLqV>$|&eSHzxbr>#$`r0sl46 zqiqGN&HLu4WbsyXTjpIimXH|fa8=XujE1z`!EiXKXU!1Bcg6a>kK`9I1m@Pk+Nw-% z^&i8F=oGc2y^BzG^0b=H+Y1EqTusk+Oc;~?qJYohaGExSN@qw61xfZ+{=LntFw4cu zm3+?qJP~k}KSma}*EIwXATGXG_@ak;DaRca;$KWIIQcBod#x38UmzZ7v&^-#TxxUK z+ih*1m=MhH1ojjPkAolOlsptdOL?M)N*7}vQ@+`&y}0pm-k}%R+H`R{<8X~c)5e`d%p~a;f*D;8^%RcQNPIc=68to3~R1=zz^;V z``s_#_qO&f3eQKI?!DGRfByf~0XQOWbKKS)Ia|50kii4I_TXE&SK$=1obAY#bC6~8 zxtG7>`(1ny$bQlrWzu9Iqi=wBYDWG8b%Drh(xmvgj=%Q1R$nJ5)Y=fqdWPQZ3D5VA z+SJ+#U?nzzl~B5vl&{$68Y|(=RR3dKZ?W`U=E1flr8g(0O`xHpw=LVQgab|H&m!lK zB%T4I)uFDj}iJ(oo{ z=<}AEP;5g z*bMurt>&odw;6Lf(e*UZ_0qhPzY_B1;!m-C>HO8l-!RADPr%}g)OcP5io*ylzNlRx z*OPU(L{o2<;$?Mf06gEtK)qV}CpLT-0Of~tA zdq3@D8Mdywm71qjDtPErKyxQ2NP($Asi#%a>Sn_xo@BY3yVdGAp8NpQHCa8b#inTq zQT<52w$<08mKOCwrs5eBb`mHf;e-FB5?(QG5oT0#)~9;&Ur zq9pI^6Tq=c;$jxbxjD1A3$=JTe_e;2E)+xx(n84?qj&71&7Zq-S{5a`y9{MRi3;l# z04M>>8zaCFL!lob^f&S`v2)K*Q=u{`2#7d4%K*mw4B{TmkCn0Is!5`A01F7rf|wKD z0gIY{$7BzPh^_F5OBf8@=Lj=#2nDmt{WVO2J zwI$`c7U4aa^{!fwL$2jaWD+yG7*dOR69&OBC}bdnwGNEOD&ZhKGYAN*cN`Jo+$Px0 zqr~Tc@PDU70sSw^(-m_drOVl0lzjK03w7rIP-a4*kcou%Absh{RvIfJ1#_~bwZg<% zqrHnl5sg$%WtK3Q#u!4dHH0FUFt{cULRx80cBYd6G587vuHKH#P)S4O#PFf7{pL8%tK`7_=J7jlIdZK^fOw6cA-ZZ zNPjB0{WQ)7z1n%YDjpdMd!Ezk939I|jSUQ{vkBa72+UbpUurMo zM+OYOCNrR3%kh8^7!ZWX9u#Hyex6K;gvhE&&y#~_S853m2+KU)C`TN6kxjF35Rw++ z{U72Gw?eYGn9$9e+BPwSmZ7oQtwH|3p0i_eT><{So&*?=aexpZv9vXJ?hCt3Uh`^@ zcjV*fXyoW><>>5?9t#Wk3{!f$eWf43M|`QDMvjk(#-f@y{Qd0Z`vUDq3)#1M{3I2| zwv@IWYBeSbMiuJy)CU{mTETwE?_H?xdcLw8T_cUP6CB+$IO3Zf?raFvF|mkoz4LZM z^TX?Blk365TR(=0e;5)-Qo`%q(|G&ddZOz2{p^oUUCw!xM%L?Q)q58pg5HZaQUM%5 zQ8pdZrzNc3Bq7LJKgiw}cKB*WUOnyHaqr%Z%YPffPQyx0JH*B_{i#<9{u;oaBQJaM zxitwtaiO@z1YkC<&PG$WL%*7E^JL1{cN(_56~4?YOo^v&qNQP$uK)FWp4~hNjFkEj z&F3v0mtv@zoc`0ljV*6=Enfn^!E~Be^`Ca`GM0f#=ZWqII^HTjBh_r-)cE1an~8p7 zI9Ih*P|E0v=S^eOAI%*Ituc`wJ56bVsUg<$BiHMGN&M;^XJMFT;hV=A+J#Ancl6n! z|J1JUUo1bCiHCM5(i0inR|~G5CQl{ZUx(Sm#Pr^aPEb006FT0mO@v?s@1Z!$*K-TG zd?=lii0{g95+4iY2ea4RUgNQL?tpj$rztsTQOsMR zI@2<)p4R?6Rn>Ud^fep$DVj!hzQxaVn(7Hlg6g}!u8x0&djJIWwweUp&~ww2ebFDy zRPjN=3}QRrQ#l*O1Wj)IzxX*pI)K;f{ZBu3ez>2>n-Nb>DYSmw-I`t(NN=Xx?e6Tu z^FH?1Bht#NTe>Mtxo(U01yS6Qv|W3N3u%6)0quhaDc7u01g}C3KO*sd-dpmf^-m0H zKTyvkm;Q{MiM5W2jxDn!4XPf+`nue;bwOr;Ax>>p)hbL(;d3Bq%=ve z@-^?-!p%@7Nz(6}La>ef1M+CBz_%I*I&)6tU;J%@WPc~|G;=^>x*RVA;PQ=`D(^2N186m(ctuW3R1{Ny7Phr2`CgB;w%CUi!8?;z5InjGIiKjpo#pyF#a)dA|lT5VFIY?|7{{_K%(Ju zr{3QNSaV@#5$HRJfPXj4c7if_7DD?W%azHG&|ig`f}oQeadv{h0ocb7>=7v@O$UXP z`exRZ`qh=z4XEdXABuxC-7sXiQ0jY0*YG{%3)lo{`nO$-d|ceW%{cyF&3skoc(!P& zpiN8D6IG&Of7a6CKhYqn=e@!%*UIV1p|{Ec@0`@q#{J3ro6avda*mMbH<- zwJP?NA;WSeeZrDg_Ism^O&dge_teHEhW^CrE9X`nfJ^#NHU2AKHlBbTsHG*q@YQ1* zw^}yHTG6Cu0L9n_@7Pu89iMI5>QfYv+AEGz=%>|@*i*n|n1vqS{>ZG~+G+E?1cjnB zD@@VqF|8`nIl2e6!}BgkywW&^GtS#Y8j|Uu91J^(nRLBtL<51iW8hf4Wg$U`NdLDP zr2r|0wmi(l`ct&1l~~cj0OtOoG4b(H(w&12*v9)$K$Oi#zQqeQ0t@^7;7*a>rah7P%8s8{y`nY zODa713$-pZu6Hh7;CB|5l@<;cwK0rQXtPVYavn)Lz`3@ zbU0@w3?ru10NR+gD1AHAQaB>+0A4t!mj7amBDZ#>A}w@anI7LS6e}FM08UJmAB;;J z!vE5$Xg-`**#KS#WrQdbMeI;*EDcGj=@69V-;n2oXA13(bm$Zh$utbC+aEq>{7@Kz%*h zg4=XyGRi4?Dq6WC@zrArFON)5ZDy=GlG8{W3P>J>WpHP_Fo|WQBFkb_o`S?TfEOxj z@MUq#Hj;A^8GHZ_38sl+$$o*$g~lpF3>ccYlDcZWq&wJG&Q!(a!|;3EdsrEl`as=K83i&|hHfnK1U=J)-oYG6_cWh5S ziD+UIOhjpSHoCMCl&}efqG5CZ6`l;b`5p<OLx5-k<$s3kFB8Q_#8H6wE)o+@Pg>CCRgr7$rM zaZ2;!R9L^8@1;!(_FCsgd>p^%)Rx6Zl_euQX>uc0$E8b+wx^B~;wL`a-jUIWV}nlc8`olKh|mZ$b2+6E(%$N&kd9XivYTak5%z;XfIw}(~NrlR+G|I}-ga3(I2>YL?BuJr@ z#0#}lsfa57M4(d(j35pk>m!26_K1W>lHV(l+ohhUiJt0;gP9BM5p+`L}Y;K2Ga7bRP)5;;{$vw{4XB4a{7)1kAeWeA>c zVflz4(swMOriD(K>5dknII^K1YfrMH6S`?XOn`jP#}_xKlQ+~`K$#6A)%G#bETZUlIuK}q|29n3g(gr08ZhYFtJhtp6v zpi>GJpi_W?5O}OTUmWA6G^{y>yzHiy(H%AgfizD_9``zHSTJ}YP!g~E977B#zeMjo zIF>Ze{lY0pl6~uFYe#VZ^dH!+Q!8H#FY+CG6%7X(`bv?$fMDg5J$b0E6dA}QZIuo% zW0Vwo39Xbkdx@VZvGx+_De?9Lh%mA|nNTD<&iN6MacI%#gRJ~G11HQMNim7rwHgEE zO9uqcJ6%Z>utcw9vn3#FknF4|e~MJ;+o9UKK|>PWQinE!FId5c4J)`w6W4r1KtrO) zyfLBu7|30X94qa?p>W)RX=F-*|CH;Kro#g^IeyTG%0-e6A2tm_kqJ;yXIJd|*0&N< zvi=GQ3~S2t7oyt)=?(~Oti2~vwmlZ`nWxjx46*iSWp*+d@L?(6$3OGDc;}E{18)DO zB`XuxjKlbgmM?9u>@tag&NqNnI#CJpt8TetxyUnHh!SLaN<}1{wMZiZT@I);Pgbd? zWqvUFr#f}CB9s4b&iw9uU-9b2G30~{0)ma@H!PH3!!rKi1xcNZF*>3oh$i5{D6=b0 zn?I-F+L-6P`NcaaK;>=Hgd_^DY(4mB@H&Y zNXRPq(UzTN2qmjO%~HhtcYa6ziY1@1_x<$ysh*4sDV&F7*FRjmg$yYVe~7Yd1=R_J zUwooh#8S0%Ei0!XoR8#WMmGh{3Ckf2i%P|B7wPFwa&{j^9Q0?Fh!t>}5LcM#AyI;x z_Kk2MkmYcpRMzf=J>+PSmmQ@6+-v9oVidnzj=+Z?(CaW7q>b2DQo@Q-fnDTn^Kjut zx$489*&gHPEhOQX^0{ypb5y^c%qH_GvN!*SAVeO?7tm|ydDe&rAj{kO%C)tCamuAh z+eWxBkVyD%B7twoQ`gWYI%2@KVf+KcKk)pn3TP(Ob$OT<9_L8Ih5d6#-wYty(xF6I zjLbtQr9mPez;}^T8(b$fKeW|?mV^tFyczIGq56Ro%@B*h_uCIK=?plw1K(Gp`mq@M zmJJgN1U!gy@%Vr2`O$i&=s_GOEa7XPPO0FKSkwdf1MV&|V?qV+GKg%1pT~7rnqu&$veG`$WPK7_6KD}PvGAuIseR{B-* z&I0!dl|OjsKfQPdJOsu3%gOA6IB?KQCYNXW3TRkZ{G}Jh5i{oF6t3IHmq@h;)$pSl zyjIg6cCMlE?Sa+UMJ_f5+EIXeML{}jh?jTQu;t!G?%~`;Hk)7u0=BOBK3X)bH3T6Y zueSGF9PsqJ$MS9fGD+o=_rIz~JL6)t`@3gmm_m3(D7^1Fsm(&lReG8`x< z2F_0Lx z_q(Gk2I`fe6$t9M)%6Val^bD%(@{S6UMcp;xO*!W=Bsy~t`oB$ATAuI*AKXALBiTT zgTtn*W(TM^rxOB7Rs-gNUn#B<4%ZYvf<&&tDDxBoksAfSZzbhghTbly5-enMFR`yV;0-!@hVqgO7y zJu0(s08U|9hl*!khS_~tdMqxg=hvaIwmIA^NOm~Z*kdCAPBMA7_$6t%BfKA05dG#S z6d{rR1(enMbvNd-8U)Yet7H1c&Oip#iviH2Zb=&=0}yRaq|c(+oCGuLF#aTy8^A7V z3gDTvPtR~k_mEBL0SZGXX=CQUc0P-OHl+v4JoM$Aj60o%KGT3gN3c(CKjml%faICf z#gpclyhkW3o%hy&7VadJqlBkjGZ)f#cI%SeFrF&j;+isMx;mQIb5M>QQPEF>1YE~2 zgfwcF0BH6njpWw7Z%wP5oLQablw0(AVHfdhDhod;Mc=u$k#Rd}8N=lU()DYty#6Mh zznmiCUxFh5kS@$HOWoJ{_hASG7I{O>Npt3_)*l3$*tm}u3{q=~HjUXJaB*jq$1r?$ zr$wqV6gP+3Qs3H{hQ=*OW4DkyCxq)@Z6xfOT!

7qfWzdA}nJ&^vgRK&D{wg7KzF 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 Cx;(-F literal 0 HcmV?d00001 diff --git a/timelines/data_processing/ml_util/aggregation_framework/TypedAggregateGroup.scala b/timelines/data_processing/ml_util/aggregation_framework/TypedAggregateGroup.scala deleted file mode 100644 index 92afc4137..000000000 --- a/timelines/data_processing/ml_util/aggregation_framework/TypedAggregateGroup.scala +++ /dev/null @@ -1,486 +0,0 @@ -package com.twitter.timelines.data_processing.ml_util.aggregation_framework - -import com.twitter.ml.api._ -import com.twitter.ml.api.constant.SharedFeatures -import com.twitter.ml.api.util.SRichDataRecord -import com.twitter.timelines.data_processing.ml_util.aggregation_framework.metrics.AggregateFeature -import com.twitter.timelines.data_processing.ml_util.aggregation_framework.metrics.AggregationMetric -import com.twitter.timelines.data_processing.ml_util.aggregation_framework.metrics.AggregationMetricCommon -import com.twitter.timelines.data_processing.ml_util.aggregation_framework.metrics.AggregationMetricCommon._ -import com.twitter.timelines.data_processing.ml_util.transforms.OneToSomeTransform -import com.twitter.util.Duration -import com.twitter.util.Try -import java.lang.{Boolean => JBoolean} -import java.lang.{Double => JDouble} -import java.lang.{Long => JLong} -import java.util.{Set => JSet} -import scala.annotation.tailrec -import scala.language.existentials -import scala.collection.JavaConverters._ -import scala.util.matching.Regex - -/** - * A case class contained precomputed data useful to quickly - * process operations over an aggregate. - * - * @param query The underlying feature being aggregated - * @param metric The aggregation metric - * @param outputFeatures The output features that aggregation will produce - * @param outputFeatureIds The precomputed hashes of the above outputFeatures - */ -case class PrecomputedAggregateDescriptor[T]( - query: AggregateFeature[T], - metric: AggregationMetric[T, _], - outputFeatures: List[Feature[_]], - outputFeatureIds: List[JLong]) - -object TypedAggregateGroup { - - /** - * Recursive function that generates all combinations of value - * assignments for a collection of sparse binary features. - * - * @param sparseBinaryIdValues list of sparse binary feature ids and possible values they can take - * @return A set of maps, where each map represents one possible assignment of values to ids - */ - def sparseBinaryPermutations( - sparseBinaryIdValues: List[(Long, Set[String])] - ): Set[Map[Long, String]] = sparseBinaryIdValues match { - case (id, values) +: rest => - tailRecSparseBinaryPermutations( - existingPermutations = values.map(value => Map(id -> value)), - remainingIdValues = rest - ) - case Nil => Set.empty - } - - @tailrec private[this] def tailRecSparseBinaryPermutations( - existingPermutations: Set[Map[Long, String]], - remainingIdValues: List[(Long, Set[String])] - ): Set[Map[Long, String]] = remainingIdValues match { - case Nil => existingPermutations - case (id, values) +: rest => - tailRecSparseBinaryPermutations( - existingPermutations.flatMap { existingIdValueMap => - values.map(value => existingIdValueMap ++ Map(id -> value)) - }, - rest - ) - } - - val SparseFeatureSuffix = ".member" - def sparseFeature(sparseBinaryFeature: Feature[_]): Feature[String] = - new Feature.Text( - sparseBinaryFeature.getDenseFeatureName + SparseFeatureSuffix, - AggregationMetricCommon.derivePersonalDataTypes(Some(sparseBinaryFeature))) - - /* Throws exception if obj not an instance of U */ - private[this] def validate[U](obj: Any): U = { - require(obj.isInstanceOf[U]) - obj.asInstanceOf[U] - } - - private[this] def getFeatureOpt[U](dataRecord: DataRecord, feature: Feature[U]): Option[U] = - Option(SRichDataRecord(dataRecord).getFeatureValue(feature)).map(validate[U](_)) - - /** - * Get a mapping from feature ids - * (including individual sparse elements of a sparse feature) to values - * from the given data record, for a given feature type. - * - * @param dataRecord Data record to get features from - * @param keysToAggregate key features to get id-value mappings for - * @param featureType Feature type to get id-value maps for - */ - def getKeyFeatureIdValues[U]( - dataRecord: DataRecord, - keysToAggregate: Set[Feature[_]], - featureType: FeatureType - ): Set[(Long, Option[U])] = { - val featuresOfThisType: Set[Feature[U]] = keysToAggregate - .filter(_.getFeatureType == featureType) - .map(validate[Feature[U]]) - - featuresOfThisType - .map { feature: Feature[U] => - val featureId: Long = getDenseFeatureId(feature) - val featureOpt: Option[U] = getFeatureOpt(dataRecord, feature) - (featureId, featureOpt) - } - } - - // TypedAggregateGroup may transform the aggregate keys for internal use. This method generates - // denseFeatureIds for the transformed feature. - def getDenseFeatureId(feature: Feature[_]): Long = - if (feature.getFeatureType != FeatureType.SPARSE_BINARY) { - feature.getDenseFeatureId - } else { - sparseFeature(feature).getDenseFeatureId - } - - /** - * Return denseFeatureIds for the input features after applying the custom transformation that - * TypedAggregateGroup applies to its keysToAggregate. - * - * @param keysToAggregate key features to get id for - */ - def getKeyFeatureIds(keysToAggregate: Set[Feature[_]]): Set[Long] = - keysToAggregate.map(getDenseFeatureId) - - def checkIfAllKeysExist[U](featureIdValueMap: Map[Long, Option[U]]): Boolean = - featureIdValueMap.forall { case (_, valueOpt) => valueOpt.isDefined } - - def liftOptions[U](featureIdValueMap: Map[Long, Option[U]]): Map[Long, U] = - featureIdValueMap - .flatMap { - case (id, valueOpt) => - valueOpt.map { value => (id, value) } - } - - val timestampFeature: Feature[JLong] = SharedFeatures.TIMESTAMP - - /** - * Builds all valid aggregation keys (for the output store) from - * a datarecord and a spec listing the keys to aggregate. There - * can be multiple aggregation keys generated from a single data - * record when grouping by sparse binary features, for which multiple - * values can be set within the data record. - * - * @param dataRecord Data record to read values for key features from - * @return A set of AggregationKeys encoding the values of all keys - */ - def buildAggregationKeys( - dataRecord: DataRecord, - keysToAggregate: Set[Feature[_]] - ): Set[AggregationKey] = { - val discreteAggregationKeys = getKeyFeatureIdValues[Long]( - dataRecord, - keysToAggregate, - FeatureType.DISCRETE - ).toMap - - val textAggregationKeys = getKeyFeatureIdValues[String]( - dataRecord, - keysToAggregate, - FeatureType.STRING - ).toMap - - val sparseBinaryIdValues = getKeyFeatureIdValues[JSet[String]]( - dataRecord, - keysToAggregate, - FeatureType.SPARSE_BINARY - ).map { - case (id, values) => - ( - id, - values - .map(_.asScala.toSet) - .getOrElse(Set.empty[String]) - ) - }.toList - - if (checkIfAllKeysExist(discreteAggregationKeys) && - checkIfAllKeysExist(textAggregationKeys)) { - if (sparseBinaryIdValues.nonEmpty) { - sparseBinaryPermutations(sparseBinaryIdValues).map { sparseBinaryTextKeys => - AggregationKey( - discreteFeaturesById = liftOptions(discreteAggregationKeys), - textFeaturesById = liftOptions(textAggregationKeys) ++ sparseBinaryTextKeys - ) - } - } else { - Set( - AggregationKey( - discreteFeaturesById = liftOptions(discreteAggregationKeys), - textFeaturesById = liftOptions(textAggregationKeys) - ) - ) - } - } else Set.empty[AggregationKey] - } - -} - -/** - * Specifies one or more related aggregate(s) to compute in the summingbird job. - * - * @param inputSource Source to compute this aggregate over - * @param preTransforms Sequence of [[com.twitter.ml.api.RichITransform]] that transform - * data records pre-aggregation (e.g. discretization, renaming) - * @param samplingTransformOpt Optional [[OneToSomeTransform]] that transform data - * record to optional data record (e.g. for sampling) before aggregation - * @param aggregatePrefix Prefix to use for naming resultant aggregate features - * @param keysToAggregate Features to group by when computing the aggregates - * (e.g. USER_ID, AUTHOR_ID) - * @param featuresToAggregate Features to aggregate (e.g. blender_score or is_photo) - * @param labels Labels to cross the features with to make pair features, if any. - * use Label.All if you don't want to cross with a label. - * @param metrics Aggregation metrics to compute (e.g. count, mean) - * @param halfLives Half lives to use for the aggregations, to be crossed with the above. - * use Duration.Top for "forever" aggregations over an infinite time window (no decay). - * @param outputStore Store to output this aggregate to - * @param includeAnyFeature Aggregate label counts for any feature value - * @param includeAnyLabel Aggregate feature counts for any label value (e.g. all impressions) - * - * The overall config for the summingbird job consists of a list of "AggregateGroup" - * case class objects, which get translated into strongly typed "TypedAggregateGroup" - * case class objects. A single TypedAggregateGroup always groups input data records from - * ''inputSource'' by a single set of aggregation keys (''featuresToAggregate''). - * Within these groups, we perform a comprehensive cross of: - * - * ''featuresToAggregate'' x ''labels'' x ''metrics'' x ''halfLives'' - * - * All the resultant aggregate features are assigned a human-readable feature name - * beginning with ''aggregatePrefix'', and are written to DataRecords that get - * aggregated and written to the store specified by ''outputStore''. - * - * Illustrative example. Suppose we define our spec as follows: - * - * TypedAggregateGroup( - * inputSource = "timelines_recap_daily", - * aggregatePrefix = "user_author_aggregate", - * keysToAggregate = Set(USER_ID, AUTHOR_ID), - * featuresToAggregate = Set(RecapFeatures.TEXT_SCORE, RecapFeatures.BLENDER_SCORE), - * labels = Set(RecapFeatures.IS_FAVORITED, RecapFeatures.IS_REPLIED), - * metrics = Set(CountMetric, MeanMetric), - * halfLives = Set(7.Days, 30.Days), - * outputStore = "user_author_aggregate_store" - * ) - * - * This will process data records from the source named "timelines_recap_daily" - * (see AggregateSource.scala for more details on how to add your own source) - * It will produce a total of 2x2x2x2 = 16 aggregation features, named like: - * - * user_author_aggregate.pair.recap.engagement.is_favorited.recap.searchfeature.blender_score.count.7days - * user_author_aggregate.pair.recap.engagement.is_favorited.recap.searchfeature.blender_score.count.30days - * user_author_aggregate.pair.recap.engagement.is_favorited.recap.searchfeature.blender_score.mean.7days - * - * ... (and so on) - * - * and all the result features will be stored in DataRecords, summed up, and written - * to the output store defined by the name "user_author_aggregate_store". - * (see AggregateStore.scala for details on how to add your own store). - * - * If you do not want a full cross, split up your config into multiple TypedAggregateGroup - * objects. Splitting is strongly advised to avoid blowing up and creating invalid - * or unnecessary combinations of aggregate features (note that some combinations - * are useless or invalid e.g. computing the mean of a binary feature). Splitting - * also does not cost anything in terms of real-time performance, because all - * Aggregate objects in the master spec that share the same ''keysToAggregate'', the - * same ''inputSource'' and the same ''outputStore'' are grouped by the summingbird - * job logic and stored into a single DataRecord in the output store. Overlapping - * aggregates will also automatically be deduplicated so don't worry about overlaps. - */ -case class TypedAggregateGroup[T]( - inputSource: AggregateSource, - aggregatePrefix: String, - keysToAggregate: Set[Feature[_]], - featuresToAggregate: Set[Feature[T]], - labels: Set[_ <: Feature[JBoolean]], - metrics: Set[AggregationMetric[T, _]], - halfLives: Set[Duration], - outputStore: AggregateStore, - preTransforms: Seq[OneToSomeTransform] = Seq.empty, - includeAnyFeature: Boolean = true, - includeAnyLabel: Boolean = true, - aggExclusionRegex: Seq[String] = Seq.empty) { - import TypedAggregateGroup._ - - val compiledRegexes = aggExclusionRegex.map(new Regex(_)) - - // true if should drop, false if should keep - def filterOutAggregateFeature( - feature: PrecomputedAggregateDescriptor[_], - regexes: Seq[Regex] - ): Boolean = { - if (regexes.nonEmpty) - feature.outputFeatures.exists { feature => - regexes.exists { re => re.findFirstMatchIn(feature.getDenseFeatureName).nonEmpty } - } - else false - } - - def buildAggregationKeys( - dataRecord: DataRecord - ): Set[AggregationKey] = { - TypedAggregateGroup.buildAggregationKeys(dataRecord, keysToAggregate) - } - - /** - * This val precomputes descriptors for all individual aggregates in this group - * (of type ''AggregateFeature''). Also precompute hashes of all aggregation - * "output" features generated by these operators for faster - * run-time performance (this turns out to be a primary CPU bottleneck). - * Ex: for the mean operator, "sum" and "count" are output features - */ - val individualAggregateDescriptors: Set[PrecomputedAggregateDescriptor[T]] = { - /* - * By default, in additional to all feature-label crosses, also - * compute in aggregates over each feature and label without crossing - */ - val labelOptions = labels.map(Option(_)) ++ - (if (includeAnyLabel) Set(None) else Set.empty) - val featureOptions = featuresToAggregate.map(Option(_)) ++ - (if (includeAnyFeature) Set(None) else Set.empty) - for { - feature <- featureOptions - label <- labelOptions - metric <- metrics - halfLife <- halfLives - } yield { - val query = AggregateFeature[T](aggregatePrefix, feature, label, halfLife) - - val aggregateOutputFeatures = metric.getOutputFeatures(query) - val aggregateOutputFeatureIds = metric.getOutputFeatureIds(query) - PrecomputedAggregateDescriptor( - query, - metric, - aggregateOutputFeatures, - aggregateOutputFeatureIds - ) - } - }.filterNot(filterOutAggregateFeature(_, compiledRegexes)) - - /* Precomputes a map from all generated aggregate feature ids to their half lives. */ - val continuousFeatureIdsToHalfLives: Map[Long, Duration] = - individualAggregateDescriptors.flatMap { descriptor => - descriptor.outputFeatures - .flatMap { feature => - if (feature.getFeatureType() == FeatureType.CONTINUOUS) { - Try(feature.asInstanceOf[Feature[JDouble]]).toOption - .map(feature => (feature.getFeatureId(), descriptor.query.halfLife)) - } else None - } - }.toMap - - /* - * Sparse binary keys become individual string keys in the output. - * e.g. group by "words.in.tweet", output key: "words.in.tweet.member" - */ - val allOutputKeys: Set[Feature[_]] = keysToAggregate.map { key => - if (key.getFeatureType == FeatureType.SPARSE_BINARY) sparseFeature(key) - else key - } - - val allOutputFeatures: Set[Feature[_]] = individualAggregateDescriptors.flatMap { - case PrecomputedAggregateDescriptor( - query, - metric, - outputFeatures, - outputFeatureIds - ) => - outputFeatures - } - - val aggregateContext: FeatureContext = new FeatureContext(allOutputFeatures.toList.asJava) - - /** - * Adds all aggregates in this group found in the two input data records - * into a result, mutating the result. Uses a while loop for an - * approximately 10% gain in speed over a for comprehension. - * - * WARNING: mutates ''result'' - * - * @param result The output data record to mutate - * @param left The left data record to add - * @param right The right data record to add - */ - def mutatePlus(result: DataRecord, left: DataRecord, right: DataRecord): Unit = { - val featureIterator = individualAggregateDescriptors.iterator - while (featureIterator.hasNext) { - val descriptor = featureIterator.next - descriptor.metric.mutatePlus( - result, - left, - right, - descriptor.query, - Some(descriptor.outputFeatureIds) - ) - } - } - - /** - * Apply preTransforms sequentially. If any transform results in a dropped (None) - * DataRecord, then entire tranform sequence will result in a dropped DataRecord. - * Note that preTransforms are order-dependent. - */ - private[this] def sequentiallyTransform(dataRecord: DataRecord): Option[DataRecord] = { - val recordOpt = Option(new DataRecord(dataRecord)) - preTransforms.foldLeft(recordOpt) { - case (Some(previousRecord), preTransform) => - preTransform(previousRecord) - case _ => Option.empty[DataRecord] - } - } - - /** - * Given a data record, apply transforms and fetch the incremental contributions to - * each configured aggregate from this data record, and store these in an output data record. - * - * @param dataRecord Input data record to aggregate. - * @return A set of tuples (AggregationKey, DataRecord) whose first entry is an - * AggregationKey indicating what keys we're grouping by, and whose second entry - * is an output data record with incremental contributions to the aggregate value(s) - */ - def computeAggregateKVPairs(dataRecord: DataRecord): Set[(AggregationKey, DataRecord)] = { - sequentiallyTransform(dataRecord) - .flatMap { dataRecord => - val aggregationKeys = buildAggregationKeys(dataRecord) - val increment = new DataRecord - - val isNonEmptyIncrement = individualAggregateDescriptors - .map { descriptor => - descriptor.metric.setIncrement( - output = increment, - input = dataRecord, - query = descriptor.query, - timestampFeature = inputSource.timestampFeature, - aggregateOutputs = Some(descriptor.outputFeatureIds) - ) - } - .exists(identity) - - if (isNonEmptyIncrement) { - SRichDataRecord(increment).setFeatureValue( - timestampFeature, - getTimestamp(dataRecord, inputSource.timestampFeature) - ) - Some(aggregationKeys.map(key => (key, increment))) - } else { - None - } - } - .getOrElse(Set.empty[(AggregationKey, DataRecord)]) - } - - def outputFeaturesToRenamedOutputFeatures(prefix: String): Map[Feature[_], Feature[_]] = { - require(prefix.nonEmpty) - - allOutputFeatures.map { feature => - if (feature.isSetFeatureName) { - val renamedFeatureName = prefix + feature.getDenseFeatureName - val personalDataTypes = - if (feature.getPersonalDataTypes.isPresent) feature.getPersonalDataTypes.get() - else null - - val renamedFeature = feature.getFeatureType match { - case FeatureType.BINARY => - new Feature.Binary(renamedFeatureName, personalDataTypes) - case FeatureType.DISCRETE => - new Feature.Discrete(renamedFeatureName, personalDataTypes) - case FeatureType.STRING => - new Feature.Text(renamedFeatureName, personalDataTypes) - case FeatureType.CONTINUOUS => - new Feature.Continuous(renamedFeatureName, personalDataTypes) - case FeatureType.SPARSE_BINARY => - new Feature.SparseBinary(renamedFeatureName, personalDataTypes) - case FeatureType.SPARSE_CONTINUOUS => - new Feature.SparseContinuous(renamedFeatureName, personalDataTypes) - } - feature -> renamedFeature - } else { - feature -> feature - } - }.toMap - } -} diff --git a/timelines/data_processing/ml_util/aggregation_framework/Utils.docx b/timelines/data_processing/ml_util/aggregation_framework/Utils.docx new file mode 100644 index 0000000000000000000000000000000000000000..a2d04f4e6d72bf720b072f96711288c1c5b47c2e GIT binary patch literal 38295 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 JLong} -import scala.collection.{Map => ScMap} - -object Utils { - val dataRecordMerger: DataRecordMerger = new DataRecordMerger - def EmptyDataRecord: DataRecord = new DataRecord() - - private val random = scala.util.Random - private val keyedDataRecordMapMonoid = { - val dataRecordMergerSg = new Semigroup[DataRecord] { - override def plus(x: DataRecord, y: DataRecord): DataRecord = { - dataRecordMerger.merge(x, y) - x - } - } - new ScMapMonoid[Long, DataRecord]()(dataRecordMergerSg) - } - - def keyFromLong(record: DataRecord, feature: Feature[JLong]): Long = - SRichDataRecord(record).getFeatureValue(feature).longValue - - def keyFromString(record: DataRecord, feature: Feature[String]): Long = - try { - SRichDataRecord(record).getFeatureValue(feature).toLong - } catch { - case _: NumberFormatException => 0L - } - - def keyFromHash(record: DataRecord, feature: Feature[String]): Long = - SRichDataRecord(record).getFeatureValue(feature).hashCode.toLong - - def extractSecondary[T]( - record: DataRecord, - secondaryKey: Feature[T], - shouldHash: Boolean = false - ): Long = secondaryKey.getFeatureType match { - case FeatureType.STRING => - if (shouldHash) keyFromHash(record, secondaryKey.asInstanceOf[Feature[String]]) - else keyFromString(record, secondaryKey.asInstanceOf[Feature[String]]) - case FeatureType.DISCRETE => keyFromLong(record, secondaryKey.asInstanceOf[Feature[JLong]]) - case f => throw new IllegalArgumentException(s"Feature type $f is not supported.") - } - - def mergeKeyedRecordOpts(args: Option[KeyedRecord]*): Option[KeyedRecord] = { - val keyedRecords = args.flatten - if (keyedRecords.isEmpty) { - None - } else { - val keys = keyedRecords.map(_.aggregateType) - require(keys.toSet.size == 1, "All merged records must have the same aggregate key.") - val mergedRecord = mergeRecords(keyedRecords.map(_.record): _*) - Some(KeyedRecord(keys.head, mergedRecord)) - } - } - - private def mergeRecords(args: DataRecord*): DataRecord = - if (args.isEmpty) EmptyDataRecord - else { - // can just do foldLeft(new DataRecord) for both cases, but try reusing the EmptyDataRecord singleton as much as possible - args.tail.foldLeft(args.head) { (merged, record) => - dataRecordMerger.merge(merged, record) - merged - } - } - - def mergeKeyedRecordMapOpts( - opt1: Option[KeyedRecordMap], - opt2: Option[KeyedRecordMap], - maxSize: Int = Int.MaxValue - ): Option[KeyedRecordMap] = { - if (opt1.isEmpty && opt2.isEmpty) { - None - } else { - val keys = Seq(opt1, opt2).flatten.map(_.aggregateType) - require(keys.toSet.size == 1, "All merged records must have the same aggregate key.") - val mergedRecordMap = mergeMapOpts(opt1.map(_.recordMap), opt2.map(_.recordMap), maxSize) - Some(KeyedRecordMap(keys.head, mergedRecordMap)) - } - } - - private def mergeMapOpts( - opt1: Option[ScMap[Long, DataRecord]], - opt2: Option[ScMap[Long, DataRecord]], - maxSize: Int = Int.MaxValue - ): ScMap[Long, DataRecord] = { - require(maxSize >= 0) - val keySet = opt1.map(_.keySet).getOrElse(Set.empty) ++ opt2.map(_.keySet).getOrElse(Set.empty) - val totalSize = keySet.size - val rate = if (totalSize <= maxSize) 1.0 else maxSize.toDouble / totalSize - val prunedOpt1 = opt1.map(downsample(_, rate)) - val prunedOpt2 = opt2.map(downsample(_, rate)) - Seq(prunedOpt1, prunedOpt2).flatten - .foldLeft(keyedDataRecordMapMonoid.zero)(keyedDataRecordMapMonoid.plus) - } - - def downsample[K, T](m: ScMap[K, T], samplingRate: Double): ScMap[K, T] = { - if (samplingRate >= 1.0) { - m - } else if (samplingRate <= 0) { - Map.empty - } else { - m.filter { - case (key, _) => - // It is important that the same user with the same sampling rate be deterministically - // selected or rejected. Otherwise, mergeMapOpts will choose different keys for the - // two input maps and their union will be larger than the limit we want. - random.setSeed((key.hashCode, samplingRate.hashCode).hashCode) - random.nextDouble < samplingRate - } - } - } -} diff --git a/timelines/data_processing/ml_util/aggregation_framework/conversion/AggregatesV2Adapter.docx b/timelines/data_processing/ml_util/aggregation_framework/conversion/AggregatesV2Adapter.docx new file mode 100644 index 0000000000000000000000000000000000000000..9b2f97673f79fe425802b962bf86a2fbf2aae23d GIT binary patch literal 38785 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 F_J0Zmiqil9 literal 0 HcmV?d00001 diff --git a/timelines/data_processing/ml_util/aggregation_framework/conversion/AggregatesV2Adapter.scala b/timelines/data_processing/ml_util/aggregation_framework/conversion/AggregatesV2Adapter.scala deleted file mode 100644 index f5b7d1814..000000000 --- a/timelines/data_processing/ml_util/aggregation_framework/conversion/AggregatesV2Adapter.scala +++ /dev/null @@ -1,165 +0,0 @@ -package com.twitter.timelines.data_processing.ml_util.aggregation_framework.conversion - -import com.twitter.algebird.DecayedValue -import com.twitter.algebird.DecayedValueMonoid -import com.twitter.algebird.Monoid -import com.twitter.ml.api._ -import com.twitter.ml.api.constant.SharedFeatures -import com.twitter.ml.api.util.FDsl._ -import com.twitter.ml.api.util.SRichDataRecord -import com.twitter.summingbird.batch.BatchID -import com.twitter.timelines.data_processing.ml_util.aggregation_framework.AggregationKey -import com.twitter.timelines.data_processing.ml_util.aggregation_framework.TypedAggregateGroup -import com.twitter.timelines.data_processing.ml_util.aggregation_framework.metrics.AggregateFeature -import com.twitter.util.Duration -import java.lang.{Double => JDouble} -import java.lang.{Long => JLong} -import scala.collection.JavaConverters._ -import scala.collection.mutable -import java.{util => ju} - -object AggregatesV2Adapter { - type AggregatesV2Tuple = (AggregationKey, (BatchID, DataRecord)) - - val Epsilon: Double = 1e-6 - val decayedValueMonoid: Monoid[DecayedValue] = DecayedValueMonoid(Epsilon) - - /* - * Decays the storedValue from timestamp -> sourceVersion - * - * @param storedValue value read from the aggregates v2 output store - * @param timestamp timestamp corresponding to store value - * @param sourceVersion timestamp of version to decay all values to uniformly - * @param halfLife Half life duration to use for applying decay - * - * By applying this function, the feature values for all users are decayed - * to sourceVersion. This is important to ensure that a user whose aggregates - * were updated long in the past does not have an artifically inflated count - * compared to one whose aggregates were updated (and hence decayed) more recently. - */ - def decayValueToSourceVersion( - storedValue: Double, - timestamp: Long, - sourceVersion: Long, - halfLife: Duration - ): Double = - if (timestamp > sourceVersion) { - storedValue - } else { - decayedValueMonoid - .plus( - DecayedValue.build(storedValue, timestamp, halfLife.inMilliseconds), - DecayedValue.build(0, sourceVersion, halfLife.inMilliseconds) - ) - .value - } - - /* - * Decays all the aggregate features occurring in the ''inputRecord'' - * to a given timestamp, and mutates the ''outputRecord'' accordingly. - * Note that inputRecord and outputRecord can be the same if you want - * to mutate the input in place, the function does this correctly. - * - * @param inputRecord Input record to get features from - * @param aggregates Aggregates to decay - * @param decayTo Timestamp to decay to - * @param trimThreshold Drop features below this trim threshold - * @param outputRecord Output record to mutate - * @return the mutated outputRecord - */ - def mutateDecay( - inputRecord: DataRecord, - aggregateFeaturesAndHalfLives: List[(Feature[_], Duration)], - decayTo: Long, - trimThreshold: Double, - outputRecord: DataRecord - ): DataRecord = { - val timestamp = inputRecord.getFeatureValue(SharedFeatures.TIMESTAMP).toLong - - aggregateFeaturesAndHalfLives.foreach { - case (aggregateFeature: Feature[_], halfLife: Duration) => - if (aggregateFeature.getFeatureType() == FeatureType.CONTINUOUS) { - val continuousFeature = aggregateFeature.asInstanceOf[Feature[JDouble]] - if (inputRecord.hasFeature(continuousFeature)) { - val storedValue = inputRecord.getFeatureValue(continuousFeature).toDouble - val decayedValue = decayValueToSourceVersion(storedValue, timestamp, decayTo, halfLife) - if (math.abs(decayedValue) > trimThreshold) { - outputRecord.setFeatureValue(continuousFeature, decayedValue) - } - } - } - } - - /* Update timestamp to version (now that we've decayed all aggregates) */ - outputRecord.setFeatureValue(SharedFeatures.TIMESTAMP, decayTo) - - outputRecord - } -} - -class AggregatesV2Adapter( - aggregates: Set[TypedAggregateGroup[_]], - sourceVersion: Long, - trimThreshold: Double) - extends IRecordOneToManyAdapter[AggregatesV2Adapter.AggregatesV2Tuple] { - - import AggregatesV2Adapter._ - - val keyFeatures: List[Feature[_]] = aggregates.flatMap(_.allOutputKeys).toList - val aggregateFeatures: List[Feature[_]] = aggregates.flatMap(_.allOutputFeatures).toList - val timestampFeatures: List[Feature[JLong]] = List(SharedFeatures.TIMESTAMP) - val allFeatures: List[Feature[_]] = keyFeatures ++ aggregateFeatures ++ timestampFeatures - - val featureContext: FeatureContext = new FeatureContext(allFeatures.asJava) - - override def getFeatureContext: FeatureContext = featureContext - - val aggregateFeaturesAndHalfLives: List[(Feature[_$3], Duration) forSome { type _$3 }] = - aggregateFeatures.map { aggregateFeature: Feature[_] => - val halfLife = AggregateFeature.parseHalfLife(aggregateFeature) - (aggregateFeature, halfLife) - } - - override def adaptToDataRecords(tuple: AggregatesV2Tuple): ju.List[DataRecord] = tuple match { - case (key: AggregationKey, (batchId: BatchID, record: DataRecord)) => { - val resultRecord = new SRichDataRecord(new DataRecord, featureContext) - - val itr = resultRecord.continuousFeaturesIterator() - val featuresToClear = mutable.Set[Feature[JDouble]]() - while (itr.moveNext()) { - val nextFeature = itr.getFeature - if (!aggregateFeatures.contains(nextFeature)) { - featuresToClear += nextFeature - } - } - - featuresToClear.foreach(resultRecord.clearFeature) - - keyFeatures.foreach { keyFeature: Feature[_] => - if (keyFeature.getFeatureType == FeatureType.DISCRETE) { - resultRecord.setFeatureValue( - keyFeature.asInstanceOf[Feature[JLong]], - key.discreteFeaturesById(keyFeature.getDenseFeatureId) - ) - } else if (keyFeature.getFeatureType == FeatureType.STRING) { - resultRecord.setFeatureValue( - keyFeature.asInstanceOf[Feature[String]], - key.textFeaturesById(keyFeature.getDenseFeatureId) - ) - } - } - - if (record.hasFeature(SharedFeatures.TIMESTAMP)) { - mutateDecay( - record, - aggregateFeaturesAndHalfLives, - sourceVersion, - trimThreshold, - resultRecord) - List(resultRecord.getRecord).asJava - } else { - List.empty[DataRecord].asJava - } - } - } -} diff --git a/timelines/data_processing/ml_util/aggregation_framework/conversion/AggregatesV2FeatureSource.docx b/timelines/data_processing/ml_util/aggregation_framework/conversion/AggregatesV2FeatureSource.docx new file mode 100644 index 0000000000000000000000000000000000000000..46fc84132bb565b57aec5a8f338a14ea27818afd GIT binary patch literal 38531 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 YqeB}@0bm4u9aS44?!fR6P5*lIe`E<3dH?_b literal 0 HcmV?d00001 diff --git a/timelines/data_processing/ml_util/aggregation_framework/conversion/AggregatesV2FeatureSource.scala b/timelines/data_processing/ml_util/aggregation_framework/conversion/AggregatesV2FeatureSource.scala deleted file mode 100644 index 5e196a43e..000000000 --- a/timelines/data_processing/ml_util/aggregation_framework/conversion/AggregatesV2FeatureSource.scala +++ /dev/null @@ -1,171 +0,0 @@ -package com.twitter.timelines.data_processing.ml_util.aggregation_framework.conversion - -import com.twitter.bijection.Injection -import com.twitter.bijection.thrift.CompactThriftCodec -import com.twitter.ml.api.AdaptedFeatureSource -import com.twitter.ml.api.DataRecord -import com.twitter.ml.api.IRecordOneToManyAdapter -import com.twitter.ml.api.TypedFeatureSource -import com.twitter.scalding.DateRange -import com.twitter.scalding.RichDate -import com.twitter.scalding.TypedPipe -import com.twitter.scalding.commons.source.VersionedKeyValSource -import com.twitter.scalding.commons.tap.VersionedTap.TapMode -import com.twitter.summingbird.batch.BatchID -import com.twitter.summingbird_internal.bijection.BatchPairImplicits -import com.twitter.timelines.data_processing.ml_util.aggregation_framework.AggregationKey -import com.twitter.timelines.data_processing.ml_util.aggregation_framework.AggregationKeyInjection -import com.twitter.timelines.data_processing.ml_util.aggregation_framework.TypedAggregateGroup -import org.apache.hadoop.mapred.JobConf -import scala.collection.JavaConverters._ -import AggregatesV2Adapter._ - -object AggregatesV2AdaptedSource { - val DefaultTrimThreshold = 0 -} - -trait AggregatesV2AdaptedSource extends AggregatesV2AdaptedSourceBase[DataRecord] { - override def storageFormatCodec: Injection[DataRecord, Array[Byte]] = - CompactThriftCodec[DataRecord] - override def toDataRecord(v: DataRecord): DataRecord = v -} - -trait AggregatesV2AdaptedSourceBase[StorageFormat] - extends TypedFeatureSource[AggregatesV2Tuple] - with AdaptedFeatureSource[AggregatesV2Tuple] - with BatchPairImplicits { - - /* Output root path of aggregates v2 job, excluding store name and version */ - def rootPath: String - - /* Name of store under root path to read */ - def storeName: String - - // max bijection failures - def maxFailures: Int = 0 - - /* Aggregate config used to generate above output */ - def aggregates: Set[TypedAggregateGroup[_]] - - /* trimThreshold Trim all aggregates below a certain threshold to save memory */ - def trimThreshold: Double - - def toDataRecord(v: StorageFormat): DataRecord - - def sourceVersionOpt: Option[Long] - - def enableMostRecentBeforeSourceVersion: Boolean = false - - implicit private val aggregationKeyInjection: Injection[AggregationKey, Array[Byte]] = - AggregationKeyInjection - implicit def storageFormatCodec: Injection[StorageFormat, Array[Byte]] - - private def filteredAggregates = aggregates.filter(_.outputStore.name == storeName) - def storePath: String = List(rootPath, storeName).mkString("/") - - def mostRecentVkvs: VersionedKeyValSource[_, _] = { - VersionedKeyValSource[AggregationKey, (BatchID, StorageFormat)]( - path = storePath, - sourceVersion = None, - maxFailures = maxFailures - ) - } - - private def availableVersions: Seq[Long] = - mostRecentVkvs - .getTap(TapMode.SOURCE) - .getStore(new JobConf(true)) - .getAllVersions() - .asScala - .map(_.toLong) - - private def mostRecentVersion: Long = { - require(!availableVersions.isEmpty, s"$storeName has no available versions") - availableVersions.max - } - - def versionToUse: Long = - if (enableMostRecentBeforeSourceVersion) { - sourceVersionOpt - .map(sourceVersion => - availableVersions.filter(_ <= sourceVersion) match { - case Seq() => - throw new IllegalArgumentException( - "No version older than version: %s, available versions: %s" - .format(sourceVersion, availableVersions) - ) - case versionList => versionList.max - }) - .getOrElse(mostRecentVersion) - } else { - sourceVersionOpt.getOrElse(mostRecentVersion) - } - - override lazy val adapter: IRecordOneToManyAdapter[AggregatesV2Tuple] = - new AggregatesV2Adapter(filteredAggregates, versionToUse, trimThreshold) - - override def getData: TypedPipe[AggregatesV2Tuple] = { - val vkvsToUse: VersionedKeyValSource[AggregationKey, (BatchID, StorageFormat)] = { - VersionedKeyValSource[AggregationKey, (BatchID, StorageFormat)]( - path = storePath, - sourceVersion = Some(versionToUse), - maxFailures = maxFailures - ) - } - TypedPipe.from(vkvsToUse).map { - case (key, (batch, value)) => (key, (batch, toDataRecord(value))) - } - } -} - -/* - * Adapted data record feature source from aggregates v2 manhattan output - * Params documented in parent trait. - */ -case class AggregatesV2FeatureSource( - override val rootPath: String, - override val storeName: String, - override val aggregates: Set[TypedAggregateGroup[_]], - override val trimThreshold: Double = 0, - override val maxFailures: Int = 0, -)( - implicit val dateRange: DateRange) - extends AggregatesV2AdaptedSource { - - // Increment end date by 1 millisec since summingbird output for date D is stored at (D+1)T00 - override val sourceVersionOpt: Some[Long] = Some(dateRange.end.timestamp + 1) -} - -/* - * Reads most recent available AggregatesV2FeatureSource. - * There is no constraint on recency. - * Params documented in parent trait. - */ -case class AggregatesV2MostRecentFeatureSource( - override val rootPath: String, - override val storeName: String, - override val aggregates: Set[TypedAggregateGroup[_]], - override val trimThreshold: Double = AggregatesV2AdaptedSource.DefaultTrimThreshold, - override val maxFailures: Int = 0) - extends AggregatesV2AdaptedSource { - - override val sourceVersionOpt: None.type = None -} - -/* - * Reads most recent available AggregatesV2FeatureSource - * on or before the specified beforeDate. - * Params documented in parent trait. - */ -case class AggregatesV2MostRecentFeatureSourceBeforeDate( - override val rootPath: String, - override val storeName: String, - override val aggregates: Set[TypedAggregateGroup[_]], - override val trimThreshold: Double = AggregatesV2AdaptedSource.DefaultTrimThreshold, - beforeDate: RichDate, - override val maxFailures: Int = 0) - extends AggregatesV2AdaptedSource { - - override val enableMostRecentBeforeSourceVersion = true - override val sourceVersionOpt: Some[Long] = Some(beforeDate.timestamp + 1) -} diff --git a/timelines/data_processing/ml_util/aggregation_framework/conversion/BUILD b/timelines/data_processing/ml_util/aggregation_framework/conversion/BUILD deleted file mode 100644 index d6c86cc12..000000000 --- a/timelines/data_processing/ml_util/aggregation_framework/conversion/BUILD +++ /dev/null @@ -1,71 +0,0 @@ -scala_library( - sources = ["*.scala"], - platform = "java8", - tags = ["bazel-compatible"], - dependencies = [ - "3rdparty/jvm/com/twitter/algebird:core", - "3rdparty/jvm/com/twitter/algebird:util", - "3rdparty/jvm/com/twitter/bijection:core", - "3rdparty/jvm/com/twitter/bijection:json", - "3rdparty/jvm/com/twitter/bijection:netty", - "3rdparty/jvm/com/twitter/bijection:scrooge", - "3rdparty/jvm/com/twitter/bijection:thrift", - "3rdparty/jvm/com/twitter/bijection:util", - "3rdparty/jvm/com/twitter/storehaus:algebra", - "3rdparty/jvm/com/twitter/storehaus:core", - "3rdparty/src/jvm/com/twitter/scalding:commons", - "3rdparty/src/jvm/com/twitter/scalding:core", - "3rdparty/src/jvm/com/twitter/scalding:date", - "3rdparty/src/jvm/com/twitter/summingbird:batch", - "3rdparty/src/jvm/com/twitter/summingbird:core", - "src/java/com/twitter/ml/api:api-base", - "src/java/com/twitter/ml/api/constant", - "src/scala/com/twitter/ml/api:api-base", - "src/scala/com/twitter/ml/api/util", - "src/scala/com/twitter/summingbird_internal/bijection:bijection-implicits", - "src/thrift/com/twitter/dal/personal_data:personal_data-java", - "src/thrift/com/twitter/ml/api:data-java", - "src/thrift/com/twitter/ml/api:interpretable-model-java", - "src/thrift/com/twitter/summingbird", - "timelines/data_processing/ml_util/aggregation_framework:common_types", - "timelines/data_processing/ml_util/aggregation_framework/metrics", - "util/util-core:scala", - ], -) - -scala_library( - name = "for-timelines", - sources = [ - "CombineCountsPolicy.scala", - "SparseBinaryMergePolicy.scala", - ], - platform = "java8", - tags = ["bazel-compatible"], - dependencies = [ - "3rdparty/jvm/com/twitter/algebird:core", - "3rdparty/jvm/com/twitter/algebird:util", - "3rdparty/jvm/com/twitter/bijection:core", - "3rdparty/jvm/com/twitter/bijection:json", - "3rdparty/jvm/com/twitter/bijection:netty", - "3rdparty/jvm/com/twitter/bijection:scrooge", - "3rdparty/jvm/com/twitter/bijection:thrift", - "3rdparty/jvm/com/twitter/bijection:util", - "3rdparty/jvm/com/twitter/storehaus:algebra", - "3rdparty/jvm/com/twitter/storehaus:core", - "3rdparty/src/jvm/com/twitter/scalding:commons", - "3rdparty/src/jvm/com/twitter/scalding:core", - "3rdparty/src/jvm/com/twitter/scalding:date", - "3rdparty/src/jvm/com/twitter/summingbird:batch", - "3rdparty/src/jvm/com/twitter/summingbird:core", - "src/java/com/twitter/ml/api:api-base", - "src/java/com/twitter/ml/api/constant", - "src/scala/com/twitter/summingbird_internal/bijection:bijection-implicits", - "src/thrift/com/twitter/dal/personal_data:personal_data-java", - "src/thrift/com/twitter/ml/api:data-java", - "src/thrift/com/twitter/ml/api:interpretable-model-java", - "src/thrift/com/twitter/summingbird", - "timelines/data_processing/ml_util/aggregation_framework:common_types", - "timelines/data_processing/ml_util/aggregation_framework/metrics", - "util/util-core:scala", - ], -) diff --git a/timelines/data_processing/ml_util/aggregation_framework/conversion/BUILD.docx b/timelines/data_processing/ml_util/aggregation_framework/conversion/BUILD.docx new file mode 100644 index 0000000000000000000000000000000000000000..06167389fd8041d2b646f8e358ebfb55b33dc0a0 GIT binary patch literal 37160 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

  • J*R@8YFy z{le4ckZCDs_4h8t(YQaVaasaep}R})Z4bepWG^ijt#;hyT8pQ>nO!AG%R(!)c3IdG qe~ro>;YEw5jR$w}_mlqPVtb=Q69Y!TgMNAyH^>2SkL-+}|NaL@yjjx# literal 0 HcmV?d00001 diff --git a/timelines/data_processing/ml_util/aggregation_framework/conversion/CombineCountsPolicy.scala b/timelines/data_processing/ml_util/aggregation_framework/conversion/CombineCountsPolicy.scala deleted file mode 100644 index eb1690231..000000000 --- a/timelines/data_processing/ml_util/aggregation_framework/conversion/CombineCountsPolicy.scala +++ /dev/null @@ -1,223 +0,0 @@ -package com.twitter.timelines.data_processing.ml_util.aggregation_framework.conversion - -import com.google.common.annotations.VisibleForTesting -import com.twitter.ml.api.util.SRichDataRecord -import com.twitter.ml.api.FeatureContext -import com.twitter.ml.api._ -import com.twitter.timelines.data_processing.ml_util.aggregation_framework.metrics.AggregationMetricCommon -import com.twitter.timelines.data_processing.ml_util.aggregation_framework.metrics.TypedCountMetric -import java.lang.{Double => JDouble} -import scala.collection.JavaConverters._ - -case class CombinedFeatures( - sum: Feature[JDouble], - nonzero: Feature[JDouble], - mean: Feature[JDouble], - topK: Seq[Feature[JDouble]]) - -trait CombineCountsBase { - val SparseSum = "sparse_sum" - val SparseNonzero = "sparse_nonzero" - val SparseMean = "sparse_mean" - val SparseTop = "sparse_top" - - def topK: Int - def hardLimit: Option[Int] - def precomputedCountFeatures: Seq[Feature[_]] - - lazy val precomputedFeaturesMap: Map[Feature[_], CombinedFeatures] = - precomputedCountFeatures.map { countFeature => - val derivedPersonalDataTypes = - AggregationMetricCommon.derivePersonalDataTypes(Some(countFeature)) - val sum = new Feature.Continuous( - countFeature.getDenseFeatureName + "." + SparseSum, - derivedPersonalDataTypes) - val nonzero = new Feature.Continuous( - countFeature.getDenseFeatureName + "." + SparseNonzero, - derivedPersonalDataTypes) - val mean = new Feature.Continuous( - countFeature.getDenseFeatureName + "." + SparseMean, - derivedPersonalDataTypes) - val topKFeatures = (1 to topK).map { k => - new Feature.Continuous( - countFeature.getDenseFeatureName + "." + SparseTop + k, - derivedPersonalDataTypes) - } - (countFeature, CombinedFeatures(sum, nonzero, mean, topKFeatures)) - }.toMap - - lazy val outputFeaturesPostMerge: Set[Feature[JDouble]] = - precomputedFeaturesMap.values.flatMap { combinedFeatures: CombinedFeatures => - Seq( - combinedFeatures.sum, - combinedFeatures.nonzero, - combinedFeatures.mean - ) ++ combinedFeatures.topK - }.toSet - - private case class ComputedStats(sum: Double, nonzero: Double, mean: Double) - - private def preComputeStats(featureValues: Seq[Double]): ComputedStats = { - val (sum, nonzero) = featureValues.foldLeft((0.0, 0.0)) { - case ((accSum, accNonzero), value) => - (accSum + value, if (value > 0.0) accNonzero + 1.0 else accNonzero) - } - ComputedStats(sum, nonzero, if (nonzero > 0.0) sum / nonzero else 0.0) - } - - private def computeSortedFeatureValues(featureValues: List[Double]): List[Double] = - featureValues.sortBy(-_) - - private def extractKth(sortedFeatureValues: Seq[Double], k: Int): Double = - sortedFeatureValues - .lift(k - 1) - .getOrElse(0.0) - - private def setContinuousFeatureIfNonZero( - record: SRichDataRecord, - feature: Feature[JDouble], - value: Double - ): Unit = - if (value != 0.0) { - record.setFeatureValue(feature, value) - } - - def hydrateCountFeatures( - richRecord: SRichDataRecord, - features: Seq[Feature[_]], - featureValuesMap: Map[Feature[_], List[Double]] - ): Unit = - for { - feature <- features - featureValues <- featureValuesMap.get(feature) - } { - mergeRecordFromCountFeature( - countFeature = feature, - featureValues = featureValues, - richInputRecord = richRecord - ) - } - - def mergeRecordFromCountFeature( - richInputRecord: SRichDataRecord, - countFeature: Feature[_], - featureValues: List[Double] - ): Unit = { - // In majority of calls to this method from timeline scorer - // the featureValues list is empty. - // While with empty list each operation will be not that expensive, these - // small things do add up. By adding early stop here we can avoid sorting - // empty list, allocating several options and making multiple function - // calls. In addition to that, we won't iterate over [1, topK]. - if (featureValues.nonEmpty) { - val sortedFeatureValues = hardLimit - .map { limit => - computeSortedFeatureValues(featureValues).take(limit) - }.getOrElse(computeSortedFeatureValues(featureValues)).toIndexedSeq - val computed = preComputeStats(sortedFeatureValues) - - val combinedFeatures = precomputedFeaturesMap(countFeature) - setContinuousFeatureIfNonZero( - richInputRecord, - combinedFeatures.sum, - computed.sum - ) - setContinuousFeatureIfNonZero( - richInputRecord, - combinedFeatures.nonzero, - computed.nonzero - ) - setContinuousFeatureIfNonZero( - richInputRecord, - combinedFeatures.mean, - computed.mean - ) - (1 to topK).foreach { k => - setContinuousFeatureIfNonZero( - richInputRecord, - combinedFeatures.topK(k - 1), - extractKth(sortedFeatureValues, k) - ) - } - } - } -} - -object CombineCountsPolicy { - def getCountFeatures(aggregateContext: FeatureContext): Seq[Feature[_]] = - aggregateContext.getAllFeatures.asScala.toSeq - .filter { feature => - feature.getFeatureType == FeatureType.CONTINUOUS && - feature.getDenseFeatureName.endsWith(TypedCountMetric[JDouble]().operatorName) - } - - @VisibleForTesting - private[conversion] def getFeatureValues( - dataRecordsWithCounts: List[DataRecord], - countFeature: Feature[_] - ): List[Double] = - dataRecordsWithCounts.map(new SRichDataRecord(_)).flatMap { record => - Option(record.getFeatureValue(countFeature)).map(_.asInstanceOf[JDouble].toDouble) - } -} - -/** - * A merge policy that works whenever all aggregate features are - * counts (computed using CountMetric), and typically represent - * either impressions or engagements. For each such input count - * feature, the policy outputs the following (3+k) derived features - * into the output data record: - * - * Sum of the feature's value across all aggregate records - * Number of aggregate records that have the feature set to non-zero - * Mean of the feature's value across all aggregate records - * topK values of the feature across all aggregate records - * - * @param topK topK values to compute - * @param hardLimit when set, records are sorted and only the top values will be used for aggregation if - * the number of records are higher than this hard limit. - */ -case class CombineCountsPolicy( - override val topK: Int, - aggregateContextToPrecompute: FeatureContext, - override val hardLimit: Option[Int] = None) - extends SparseBinaryMergePolicy - with CombineCountsBase { - import CombineCountsPolicy._ - override val precomputedCountFeatures: Seq[Feature[_]] = getCountFeatures( - aggregateContextToPrecompute) - - override def mergeRecord( - mutableInputRecord: DataRecord, - aggregateRecords: List[DataRecord], - aggregateContext: FeatureContext - ): Unit = { - // Assumes aggregateContext === aggregateContextToPrecompute - mergeRecordFromCountFeatures(mutableInputRecord, aggregateRecords, precomputedCountFeatures) - } - - def defaultMergeRecord( - mutableInputRecord: DataRecord, - aggregateRecords: List[DataRecord] - ): Unit = { - mergeRecordFromCountFeatures(mutableInputRecord, aggregateRecords, precomputedCountFeatures) - } - - def mergeRecordFromCountFeatures( - mutableInputRecord: DataRecord, - aggregateRecords: List[DataRecord], - countFeatures: Seq[Feature[_]] - ): Unit = { - val richInputRecord = new SRichDataRecord(mutableInputRecord) - countFeatures.foreach { countFeature => - mergeRecordFromCountFeature( - richInputRecord = richInputRecord, - countFeature = countFeature, - featureValues = getFeatureValues(aggregateRecords, countFeature) - ) - } - } - - override def aggregateFeaturesPostMerge(aggregateContext: FeatureContext): Set[Feature[_]] = - outputFeaturesPostMerge.map(_.asInstanceOf[Feature[_]]) -} diff --git a/timelines/data_processing/ml_util/aggregation_framework/conversion/DataSetPipeSketchJoin.docx b/timelines/data_processing/ml_util/aggregation_framework/conversion/DataSetPipeSketchJoin.docx new file mode 100644 index 0000000000000000000000000000000000000000..e666b0cdf333c61f6cd9788df3409e116b210cad GIT binary patch literal 37330 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 Array[Byte] = - implicitly[Injection[String, Array[Byte]]].toFunction - - /* Computes a left sketch join on a set of skewed keys. */ - def apply( - inputDataSet: DataSetPipe, - skewedJoinKeys: Product, - joinFeaturesDataSet: DataSetPipe, - sketchNumReducers: Int = DefaultSketchNumReducers - ): DataSetPipe = { - val joinKeyList = skewedJoinKeys.productIterator.toList.asInstanceOf[List[Feature[_]]] - - def makeKey(record: DataRecord): String = - joinKeyList - .map(SRichDataRecord(record).getFeatureValue(_)) - .toString - - def byKey(pipe: DataSetPipe): TypedPipe[(String, DataRecord)] = - pipe.records.map(record => (makeKey(record), record)) - - val joinedRecords = byKey(inputDataSet) - .sketch(sketchNumReducers) - .leftJoin(byKey(joinFeaturesDataSet)) - .values - .map { - case (inputRecord, joinFeaturesOpt) => - joinFeaturesOpt.foreach { joinRecord => dataRecordMerger.merge(inputRecord, joinRecord) } - inputRecord - } - - DataSetPipe( - joinedRecords, - FeatureContext.merge(inputDataSet.featureContext, joinFeaturesDataSet.featureContext) - ) - } -} diff --git a/timelines/data_processing/ml_util/aggregation_framework/conversion/PickFirstRecordPolicy.docx b/timelines/data_processing/ml_util/aggregation_framework/conversion/PickFirstRecordPolicy.docx new file mode 100644 index 0000000000000000000000000000000000000000..1f3a7654cdd8f376f51fb8f7905c72b724a8c11d GIT binary patch literal 37146 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 dataRecordMerger.merge(mutableInputRecord, aggregateRecord)) - - override def aggregateFeaturesPostMerge(aggregateContext: FeatureContext): Set[Feature[_]] = - aggregateContext.getAllFeatures.asScala.toSet -} diff --git a/timelines/data_processing/ml_util/aggregation_framework/conversion/PickTopCtrPolicy.docx b/timelines/data_processing/ml_util/aggregation_framework/conversion/PickTopCtrPolicy.docx new file mode 100644 index 0000000000000000000000000000000000000000..3f82dc38feec8d7a2c27bc1fc1f1a59875fa77a1 GIT binary patch literal 39190 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 literal 0 HcmV?d00001 diff --git a/timelines/data_processing/ml_util/aggregation_framework/conversion/PickTopCtrPolicy.scala b/timelines/data_processing/ml_util/aggregation_framework/conversion/PickTopCtrPolicy.scala deleted file mode 100644 index 94d3ac126..000000000 --- a/timelines/data_processing/ml_util/aggregation_framework/conversion/PickTopCtrPolicy.scala +++ /dev/null @@ -1,226 +0,0 @@ -package com.twitter.timelines.data_processing.ml_util.aggregation_framework.conversion - -import com.twitter.ml.api._ -import com.twitter.ml.api.FeatureContext -import com.twitter.ml.api.util.SRichDataRecord -import com.twitter.timelines.data_processing.ml_util.aggregation_framework.TypedAggregateGroup -import com.twitter.timelines.data_processing.ml_util.aggregation_framework.metrics.AggregationMetricCommon -import java.lang.{Boolean => JBoolean} -import java.lang.{Double => JDouble} - -case class CtrDescriptor( - engagementFeature: Feature[JDouble], - impressionFeature: Feature[JDouble], - outputFeature: Feature[JDouble]) - -object PickTopCtrBuilderHelper { - - def createCtrDescriptors( - aggregatePrefix: String, - engagementLabels: Set[Feature[JBoolean]], - aggregatesToCompute: Set[TypedAggregateGroup[_]], - outputSuffix: String - ): Set[CtrDescriptor] = { - val aggregateFeatures = aggregatesToCompute - .filter(_.aggregatePrefix == aggregatePrefix) - - val impressionFeature = aggregateFeatures - .flatMap { group => - group.individualAggregateDescriptors - .filter(_.query.feature == None) - .filter(_.query.label == None) - .flatMap(_.outputFeatures) - } - .head - .asInstanceOf[Feature[JDouble]] - - val aggregateEngagementFeatures = - aggregateFeatures - .flatMap { group => - group.individualAggregateDescriptors - .filter(_.query.feature == None) - .filter { descriptor => - //TODO: we should remove the need to pass around engagementLabels and just use all the labels available. - descriptor.query.label.exists(engagementLabels.contains(_)) - } - .flatMap(_.outputFeatures) - } - .map(_.asInstanceOf[Feature[JDouble]]) - - aggregateEngagementFeatures - .map { aggregateEngagementFeature => - CtrDescriptor( - engagementFeature = aggregateEngagementFeature, - impressionFeature = impressionFeature, - outputFeature = new Feature.Continuous( - aggregateEngagementFeature.getDenseFeatureName + "." + outputSuffix, - AggregationMetricCommon.derivePersonalDataTypes( - Some(aggregateEngagementFeature), - Some(impressionFeature) - ) - ) - ) - } - } -} - -object PickTopCtrPolicy { - def build( - aggregatePrefix: String, - engagementLabels: Set[Feature[JBoolean]], - aggregatesToCompute: Set[TypedAggregateGroup[_]], - smoothing: Double = 1.0, - outputSuffix: String = "ratio" - ): PickTopCtrPolicy = { - val ctrDescriptors = PickTopCtrBuilderHelper.createCtrDescriptors( - aggregatePrefix = aggregatePrefix, - engagementLabels = engagementLabels, - aggregatesToCompute = aggregatesToCompute, - outputSuffix = outputSuffix - ) - PickTopCtrPolicy( - ctrDescriptors = ctrDescriptors, - smoothing = smoothing - ) - } -} - -object CombinedTopNCtrsByWilsonConfidenceIntervalPolicy { - def build( - aggregatePrefix: String, - engagementLabels: Set[Feature[JBoolean]], - aggregatesToCompute: Set[TypedAggregateGroup[_]], - outputSuffix: String = "ratioWithWCI", - z: Double = 1.96, - topN: Int = 1 - ): CombinedTopNCtrsByWilsonConfidenceIntervalPolicy = { - val ctrDescriptors = PickTopCtrBuilderHelper.createCtrDescriptors( - aggregatePrefix = aggregatePrefix, - engagementLabels = engagementLabels, - aggregatesToCompute = aggregatesToCompute, - outputSuffix = outputSuffix - ) - CombinedTopNCtrsByWilsonConfidenceIntervalPolicy( - ctrDescriptors = ctrDescriptors, - z = z, - topN = topN - ) - } -} - -/* - * A merge policy that picks the aggregate features corresponding to - * the sparse key value with the highest engagement rate (defined - * as the ratio of two specified features, representing engagements - * and impressions). Also outputs the engagement rate to the specified - * outputFeature. - * - * This is an abstract class. We can make variants of this policy by overriding - * the calculateCtr method. - */ - -abstract class PickTopCtrPolicyBase(ctrDescriptors: Set[CtrDescriptor]) - extends SparseBinaryMergePolicy { - - private def getContinuousFeature( - aggregateRecord: DataRecord, - feature: Feature[JDouble] - ): Double = { - Option(SRichDataRecord(aggregateRecord).getFeatureValue(feature)) - .map(_.asInstanceOf[JDouble].toDouble) - .getOrElse(0.0) - } - - /** - * For every provided descriptor, compute the corresponding CTR feature - * and only hydrate this result to the provided input record. - */ - override def mergeRecord( - mutableInputRecord: DataRecord, - aggregateRecords: List[DataRecord], - aggregateContext: FeatureContext - ): Unit = { - ctrDescriptors - .foreach { - case CtrDescriptor(engagementFeature, impressionFeature, outputFeature) => - val sortedCtrs = - aggregateRecords - .map { aggregateRecord => - val impressions = getContinuousFeature(aggregateRecord, impressionFeature) - val engagements = getContinuousFeature(aggregateRecord, engagementFeature) - calculateCtr(impressions, engagements) - } - .sortBy { ctr => -ctr } - combineTopNCtrsToSingleScore(sortedCtrs) - .foreach { score => - SRichDataRecord(mutableInputRecord).setFeatureValue(outputFeature, score) - } - } - } - - protected def calculateCtr(impressions: Double, engagements: Double): Double - - protected def combineTopNCtrsToSingleScore(sortedCtrs: Seq[Double]): Option[Double] - - override def aggregateFeaturesPostMerge(aggregateContext: FeatureContext): Set[Feature[_]] = - ctrDescriptors - .map(_.outputFeature) - .toSet -} - -case class PickTopCtrPolicy(ctrDescriptors: Set[CtrDescriptor], smoothing: Double = 1.0) - extends PickTopCtrPolicyBase(ctrDescriptors) { - require(smoothing > 0.0) - - override def calculateCtr(impressions: Double, engagements: Double): Double = - (1.0 * engagements) / (smoothing + impressions) - - override def combineTopNCtrsToSingleScore(sortedCtrs: Seq[Double]): Option[Double] = - sortedCtrs.headOption -} - -case class CombinedTopNCtrsByWilsonConfidenceIntervalPolicy( - ctrDescriptors: Set[CtrDescriptor], - z: Double = 1.96, - topN: Int = 1) - extends PickTopCtrPolicyBase(ctrDescriptors) { - - private val zSquared = z * z - private val zSquaredDiv2 = zSquared / 2.0 - private val zSquaredDiv4 = zSquared / 4.0 - - /** - * calculates the lower bound of wilson score interval. which roughly says "the actual engagement - * rate is at least this value" with confidence designated by the z-score: - * https://en.wikipedia.org/wiki/Binomial_proportion_confidence_interval#Wilson_score_interval - */ - override def calculateCtr(rawImpressions: Double, engagements: Double): Double = { - // just in case engagements happens to be more than impressions... - val impressions = Math.max(rawImpressions, engagements) - - if (impressions > 0.0) { - val p = engagements / impressions - (p - + zSquaredDiv2 / impressions - - z * Math.sqrt( - (p * (1.0 - p) + zSquaredDiv4 / impressions) / impressions)) / (1.0 + zSquared / impressions) - - } else 0.0 - } - - /** - * takes the topN engagement rates, and returns the joint probability as {1.0 - Π(1.0 - p)} - * - * e.g. let's say you have 0.6 chance of clicking on a tweet shared by the user A. - * you also have 0.3 chance of clicking on a tweet shared by the user B. - * seeing a tweet shared by both A and B will not lead to 0.9 chance of you clicking on it. - * but you could say that you have 0.4*0.7 chance of NOT clicking on that tweet. - */ - override def combineTopNCtrsToSingleScore(sortedCtrs: Seq[Double]): Option[Double] = - if (sortedCtrs.nonEmpty) { - val inverseLogP = sortedCtrs - .take(topN).map { p => Math.log(1.0 - p) }.sum - Some(1.0 - Math.exp(inverseLogP)) - } else None - -} diff --git a/timelines/data_processing/ml_util/aggregation_framework/conversion/SparseBinaryAggregateJoin.docx b/timelines/data_processing/ml_util/aggregation_framework/conversion/SparseBinaryAggregateJoin.docx new file mode 100644 index 0000000000000000000000000000000000000000..763b69f4d8cae4ee1c090cd4ccfb0ed59612a295 GIT binary patch literal 38526 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 literal 0 HcmV?d00001 diff --git a/timelines/data_processing/ml_util/aggregation_framework/conversion/SparseBinaryAggregateJoin.scala b/timelines/data_processing/ml_util/aggregation_framework/conversion/SparseBinaryAggregateJoin.scala deleted file mode 100644 index 10c6a9096..000000000 --- a/timelines/data_processing/ml_util/aggregation_framework/conversion/SparseBinaryAggregateJoin.scala +++ /dev/null @@ -1,199 +0,0 @@ -package com.twitter.timelines.data_processing.ml_util.aggregation_framework.conversion - -import com.twitter.ml.api._ -import com.twitter.ml.api.Feature -import com.twitter.ml.api.util.SRichDataRecord -import com.twitter.scalding.typed.TypedPipe -import com.twitter.scalding.typed.UnsortedGrouped -import com.twitter.timelines.data_processing.ml_util.aggregation_framework.TypedAggregateGroup -import java.util.{Set => JSet} -import scala.collection.JavaConverters._ - -object SparseBinaryAggregateJoin { - import TypedAggregateGroup._ - - def makeKey(record: DataRecord, joinKeyList: List[Feature[_]]): String = { - joinKeyList.map { - case sparseKey: Feature.SparseBinary => - SRichDataRecord(record).getFeatureValue(sparseFeature(sparseKey)) - case nonSparseKey: Feature[_] => - SRichDataRecord(record).getFeatureValue(nonSparseKey) - }.toString - } - - /** - * @param record Data record to get all possible sparse aggregate keys from - * @param List of join key features (some can be sparse and some non-sparse) - * @return A list of string keys to use for joining - */ - def makeKeyPermutations(record: DataRecord, joinKeyList: List[Feature[_]]): List[String] = { - val allIdValues = joinKeyList.flatMap { - case sparseKey: Feature.SparseBinary => { - val id = sparseKey.getDenseFeatureId - val valuesOpt = Option(SRichDataRecord(record).getFeatureValue(sparseKey)) - .map(_.asInstanceOf[JSet[String]].asScala.toSet) - valuesOpt.map { (id, _) } - } - case nonSparseKey: Feature[_] => { - val id = nonSparseKey.getDenseFeatureId - Option(SRichDataRecord(record).getFeatureValue(nonSparseKey)).map { value => - (id, Set(value.toString)) - } - } - } - sparseBinaryPermutations(allIdValues).toList.map { idValues => - joinKeyList.map { key => idValues.getOrElse(key.getDenseFeatureId, "") }.toString - } - } - - private[this] def mkKeyIndexedAggregates( - joinFeaturesDataSet: DataSetPipe, - joinKeyList: List[Feature[_]] - ): TypedPipe[(String, DataRecord)] = - joinFeaturesDataSet.records - .map { record => (makeKey(record, joinKeyList), record) } - - private[this] def mkKeyIndexedInput( - inputDataSet: DataSetPipe, - joinKeyList: List[Feature[_]] - ): TypedPipe[(String, DataRecord)] = - inputDataSet.records - .flatMap { record => - for { - key <- makeKeyPermutations(record, joinKeyList) - } yield { (key, record) } - } - - private[this] def mkKeyIndexedInputWithUniqueId( - inputDataSet: DataSetPipe, - joinKeyList: List[Feature[_]], - uniqueIdFeatureList: List[Feature[_]] - ): TypedPipe[(String, String)] = - inputDataSet.records - .flatMap { record => - for { - key <- makeKeyPermutations(record, joinKeyList) - } yield { (key, makeKey(record, uniqueIdFeatureList)) } - } - - private[this] def mkRecordIndexedAggregates( - keyIndexedInput: TypedPipe[(String, DataRecord)], - keyIndexedAggregates: TypedPipe[(String, DataRecord)] - ): UnsortedGrouped[DataRecord, List[DataRecord]] = - keyIndexedInput - .join(keyIndexedAggregates) - .map { case (_, (inputRecord, aggregateRecord)) => (inputRecord, aggregateRecord) } - .group - .toList - - private[this] def mkRecordIndexedAggregatesWithUniqueId( - keyIndexedInput: TypedPipe[(String, String)], - keyIndexedAggregates: TypedPipe[(String, DataRecord)] - ): UnsortedGrouped[String, List[DataRecord]] = - keyIndexedInput - .join(keyIndexedAggregates) - .map { case (_, (inputId, aggregateRecord)) => (inputId, aggregateRecord) } - .group - .toList - - def mkJoinedDataSet( - inputDataSet: DataSetPipe, - joinFeaturesDataSet: DataSetPipe, - recordIndexedAggregates: UnsortedGrouped[DataRecord, List[DataRecord]], - mergePolicy: SparseBinaryMergePolicy - ): TypedPipe[DataRecord] = - inputDataSet.records - .map(record => (record, ())) - .leftJoin(recordIndexedAggregates) - .map { - case (inputRecord, (_, aggregateRecordsOpt)) => - aggregateRecordsOpt - .map { aggregateRecords => - mergePolicy.mergeRecord( - inputRecord, - aggregateRecords, - joinFeaturesDataSet.featureContext - ) - inputRecord - } - .getOrElse(inputRecord) - } - - def mkJoinedDataSetWithUniqueId( - inputDataSet: DataSetPipe, - joinFeaturesDataSet: DataSetPipe, - recordIndexedAggregates: UnsortedGrouped[String, List[DataRecord]], - mergePolicy: SparseBinaryMergePolicy, - uniqueIdFeatureList: List[Feature[_]] - ): TypedPipe[DataRecord] = - inputDataSet.records - .map(record => (makeKey(record, uniqueIdFeatureList), record)) - .leftJoin(recordIndexedAggregates) - .map { - case (_, (inputRecord, aggregateRecordsOpt)) => - aggregateRecordsOpt - .map { aggregateRecords => - mergePolicy.mergeRecord( - inputRecord, - aggregateRecords, - joinFeaturesDataSet.featureContext - ) - inputRecord - } - .getOrElse(inputRecord) - } - - /** - * If uniqueIdFeatures is non-empty and the join keys include a sparse binary - * key, the join will use this set of keys as a unique id to reduce - * memory consumption. You should need this option only for - * memory-intensive joins to avoid OOM errors. - */ - def apply( - inputDataSet: DataSetPipe, - joinKeys: Product, - joinFeaturesDataSet: DataSetPipe, - mergePolicy: SparseBinaryMergePolicy = PickFirstRecordPolicy, - uniqueIdFeaturesOpt: Option[Product] = None - ): DataSetPipe = { - val joinKeyList = joinKeys.productIterator.toList.asInstanceOf[List[Feature[_]]] - val sparseBinaryJoinKeySet = - joinKeyList.toSet.filter(_.getFeatureType() == FeatureType.SPARSE_BINARY) - val containsSparseBinaryKey = !sparseBinaryJoinKeySet.isEmpty - if (containsSparseBinaryKey) { - val uniqueIdFeatureList = uniqueIdFeaturesOpt - .map(uniqueIdFeatures => - uniqueIdFeatures.productIterator.toList.asInstanceOf[List[Feature[_]]]) - .getOrElse(List.empty[Feature[_]]) - val keyIndexedAggregates = mkKeyIndexedAggregates(joinFeaturesDataSet, joinKeyList) - val joinedDataSet = if (uniqueIdFeatureList.isEmpty) { - val keyIndexedInput = mkKeyIndexedInput(inputDataSet, joinKeyList) - val recordIndexedAggregates = - mkRecordIndexedAggregates(keyIndexedInput, keyIndexedAggregates) - mkJoinedDataSet(inputDataSet, joinFeaturesDataSet, recordIndexedAggregates, mergePolicy) - } else { - val keyIndexedInput = - mkKeyIndexedInputWithUniqueId(inputDataSet, joinKeyList, uniqueIdFeatureList) - val recordIndexedAggregates = - mkRecordIndexedAggregatesWithUniqueId(keyIndexedInput, keyIndexedAggregates) - mkJoinedDataSetWithUniqueId( - inputDataSet, - joinFeaturesDataSet, - recordIndexedAggregates, - mergePolicy, - uniqueIdFeatureList - ) - } - - DataSetPipe( - joinedDataSet, - mergePolicy.mergeContext( - inputDataSet.featureContext, - joinFeaturesDataSet.featureContext - ) - ) - } else { - inputDataSet.joinWithSmaller(joinKeys, joinFeaturesDataSet) { _.pass } - } - } -} diff --git a/timelines/data_processing/ml_util/aggregation_framework/conversion/SparseBinaryMergePolicy.docx b/timelines/data_processing/ml_util/aggregation_framework/conversion/SparseBinaryMergePolicy.docx new file mode 100644 index 0000000000000000000000000000000000000000..9fe54e6794d2a52ce2dd99762ded8eb4fab8f808 GIT binary patch literal 38196 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 literal 0 HcmV?d00001 diff --git a/timelines/data_processing/ml_util/aggregation_framework/conversion/SparseBinaryMergePolicy.scala b/timelines/data_processing/ml_util/aggregation_framework/conversion/SparseBinaryMergePolicy.scala deleted file mode 100644 index 7201e39a2..000000000 --- a/timelines/data_processing/ml_util/aggregation_framework/conversion/SparseBinaryMergePolicy.scala +++ /dev/null @@ -1,81 +0,0 @@ -package com.twitter.timelines.data_processing.ml_util.aggregation_framework.conversion - -import com.twitter.ml.api._ -import com.twitter.ml.api.FeatureContext -import com.twitter.timelines.data_processing.ml_util.aggregation_framework.TypedAggregateGroup -import scala.collection.JavaConverters._ - -/** - * When using the aggregates framework to group by sparse binary keys, - * we generate different aggregate feature values for each possible - * value of the sparse key. Hence, when joining back the aggregate - * features with a training data set, each individual training record - * has multiple aggregate features to choose from, for each value taken - * by the sparse key(s) in the training record. The merge policy trait - * below specifies how to condense/combine this variable number of - * aggregate features into a constant number of features for training. - * Some simple policies might be: pick the first feature set (randomly), - * pick the top sorted by some attribute, or take some average. - * - * Example: suppose we group by (ADVERTISER_ID, INTEREST_ID) where INTEREST_ID - * is the sparse key, and compute a "CTR" aggregate feature for each such - * pair measuring the click through rate on ads with (ADVERTISER_ID, INTEREST_ID). - * Say we have the following aggregate records: - * - * (ADVERTISER_ID = 1, INTEREST_ID = 1, CTR = 5%) - * (ADVERTISER_ID = 1, INTEREST_ID = 2, CTR = 15%) - * (ADVERTISER_ID = 2, INTEREST_ID = 1, CTR = 1%) - * (ADVERTISER_ID = 2, INTEREST_ID = 2, CTR = 10%) - * ... - * At training time, each training record has one value for ADVERTISER_ID, but it - * has multiple values for INTEREST_ID e.g. - * - * (ADVERTISER_ID = 1, INTEREST_IDS = (1,2)) - * - * There are multiple potential CTRs we can get when joining in the aggregate features: - * in this case 2 values (5% and 15%) but in general it could be many depending on how - * many interests the user has. When joining back the CTR features, the merge policy says how to - * combine all these CTRs to engineer features. - * - * "Pick first" would say - pick some random CTR (whatever is first in the list, maybe 5%) - * for training (probably not a good policy). "Sort by CTR" could be a policy - * that just picks the top CTR and uses it as a feature (here 15%). Similarly, you could - * imagine "Top K sorted by CTR" (use both 5 and 15%) or "Avg CTR" (10%) or other policies, - * all of which are defined as objects/case classes that override this trait. - */ -trait SparseBinaryMergePolicy { - - /** - * @param mutableInputRecord Input record to add aggregates to - * @param aggregateRecords Aggregate feature records - * @param aggregateContext Context for aggregate records - */ - def mergeRecord( - mutableInputRecord: DataRecord, - aggregateRecords: List[DataRecord], - aggregateContext: FeatureContext - ): Unit - - def aggregateFeaturesPostMerge(aggregateContext: FeatureContext): Set[Feature[_]] - - /** - * @param inputContext Context for input record - * @param aggregateContext Context for aggregate records - * @return Context for record returned by mergeRecord() - */ - def mergeContext( - inputContext: FeatureContext, - aggregateContext: FeatureContext - ): FeatureContext = new FeatureContext( - (inputContext.getAllFeatures.asScala.toSet ++ aggregateFeaturesPostMerge( - aggregateContext)).toSeq.asJava - ) - - def allOutputFeaturesPostMergePolicy[T](config: TypedAggregateGroup[T]): Set[Feature[_]] = { - val containsSparseBinary = config.keysToAggregate - .exists(_.getFeatureType == FeatureType.SPARSE_BINARY) - - if (!containsSparseBinary) config.allOutputFeatures - else aggregateFeaturesPostMerge(new FeatureContext(config.allOutputFeatures.toSeq.asJava)) - } -} diff --git a/timelines/data_processing/ml_util/aggregation_framework/conversion/SparseBinaryMultipleAggregateJoin.docx b/timelines/data_processing/ml_util/aggregation_framework/conversion/SparseBinaryMultipleAggregateJoin.docx new file mode 100644 index 0000000000000000000000000000000000000000..a30f20d46a29987300ab47cbc6300ef3b80f7fbe GIT binary patch literal 37876 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�Jm5SwLt0KOwk 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 literal 0 HcmV?d00001 diff --git a/timelines/data_processing/ml_util/aggregation_framework/conversion/SparseBinaryMultipleAggregateJoin.scala b/timelines/data_processing/ml_util/aggregation_framework/conversion/SparseBinaryMultipleAggregateJoin.scala deleted file mode 100644 index d0aff7e34..000000000 --- a/timelines/data_processing/ml_util/aggregation_framework/conversion/SparseBinaryMultipleAggregateJoin.scala +++ /dev/null @@ -1,109 +0,0 @@ -package com.twitter.timelines.data_processing.ml_util.aggregation_framework.conversion - -import com.twitter.bijection.Injection -import com.twitter.ml.api._ -import com.twitter.ml.api.Feature -import com.twitter.ml.api.util.SRichDataRecord -import com.twitter.scalding.typed.TypedPipe -import com.twitter.timelines.data_processing.ml_util.aggregation_framework.TypedAggregateGroup.sparseFeature -import scala.collection.JavaConverters._ - -case class SparseJoinConfig( - aggregates: DataSetPipe, - sparseKey: Feature.SparseBinary, - mergePolicies: SparseBinaryMergePolicy*) - -object SparseBinaryMultipleAggregateJoin { - type CommonMap = (String, ((Feature.SparseBinary, String), DataRecord)) - - def apply( - source: DataSetPipe, - commonKey: Feature[_], - joinConfigs: Set[SparseJoinConfig], - rightJoin: Boolean = false, - isSketchJoin: Boolean = false, - numSketchJoinReducers: Int = 0 - ): DataSetPipe = { - val emptyPipe: TypedPipe[CommonMap] = TypedPipe.empty - val aggregateMaps: Set[TypedPipe[CommonMap]] = joinConfigs.map { joinConfig => - joinConfig.aggregates.records.map { record => - val sparseKeyValue = - SRichDataRecord(record).getFeatureValue(sparseFeature(joinConfig.sparseKey)).toString - val commonKeyValue = SRichDataRecord(record).getFeatureValue(commonKey).toString - (commonKeyValue, ((joinConfig.sparseKey, sparseKeyValue), record)) - } - } - - val commonKeyToAggregateMap = aggregateMaps - .foldLeft(emptyPipe) { - case (union: TypedPipe[CommonMap], next: TypedPipe[CommonMap]) => - union ++ next - } - .group - .toList - .map { - case (commonKeyValue, aggregateTuples) => - (commonKeyValue, aggregateTuples.toMap) - } - - val commonKeyToRecordMap = source.records - .map { record => - val commonKeyValue = SRichDataRecord(record).getFeatureValue(commonKey).toString - (commonKeyValue, record) - } - - // rightJoin is not supported by Sketched, so rightJoin will be ignored if isSketchJoin is set - implicit val string2Byte = (value: String) => Injection[String, Array[Byte]](value) - val intermediateRecords = if (isSketchJoin) { - commonKeyToRecordMap.group - .sketch(numSketchJoinReducers) - .leftJoin(commonKeyToAggregateMap) - .toTypedPipe - } else if (rightJoin) { - commonKeyToAggregateMap - .rightJoin(commonKeyToRecordMap) - .mapValues(_.swap) - .toTypedPipe - } else { - commonKeyToRecordMap.leftJoin(commonKeyToAggregateMap).toTypedPipe - } - - val joinedRecords = intermediateRecords - .map { - case (commonKeyValue, (inputRecord, aggregateTupleMapOpt)) => - aggregateTupleMapOpt.foreach { aggregateTupleMap => - joinConfigs.foreach { joinConfig => - val sparseKeyValues = Option( - SRichDataRecord(inputRecord) - .getFeatureValue(joinConfig.sparseKey) - ).map(_.asScala.toList) - .getOrElse(List.empty[String]) - - val aggregateRecords = sparseKeyValues.flatMap { sparseKeyValue => - aggregateTupleMap.get((joinConfig.sparseKey, sparseKeyValue)) - } - - joinConfig.mergePolicies.foreach { mergePolicy => - mergePolicy.mergeRecord( - inputRecord, - aggregateRecords, - joinConfig.aggregates.featureContext - ) - } - } - } - inputRecord - } - - val joinedFeatureContext = joinConfigs - .foldLeft(source.featureContext) { - case (left, joinConfig) => - joinConfig.mergePolicies.foldLeft(left) { - case (soFar, mergePolicy) => - mergePolicy.mergeContext(soFar, joinConfig.aggregates.featureContext) - } - } - - DataSetPipe(joinedRecords, joinedFeatureContext) - } -} diff --git a/timelines/data_processing/ml_util/aggregation_framework/docs/AUTOMATED_COMMIT_FILES b/timelines/data_processing/ml_util/aggregation_framework/docs/AUTOMATED_COMMIT_FILES deleted file mode 100644 index 80aaae8d9..000000000 --- a/timelines/data_processing/ml_util/aggregation_framework/docs/AUTOMATED_COMMIT_FILES +++ /dev/null @@ -1,5 +0,0 @@ -aggregation.rst -batch.rst -index.rst -real-time.rst -troubleshooting.rst diff --git a/timelines/data_processing/ml_util/aggregation_framework/docs/AUTOMATED_COMMIT_FILES.docx b/timelines/data_processing/ml_util/aggregation_framework/docs/AUTOMATED_COMMIT_FILES.docx new file mode 100644 index 0000000000000000000000000000000000000000..010636351c5e77d4cd8b019b87e6f8e67fa57b35 GIT binary patch literal 36667 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̾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 literal 0 HcmV?d00001 diff --git a/timelines/data_processing/ml_util/aggregation_framework/docs/aggregation.docx b/timelines/data_processing/ml_util/aggregation_framework/docs/aggregation.docx new file mode 100644 index 0000000000000000000000000000000000000000..e4b6758c7eaa2faa6ebc2bac9f032be268a81e57 GIT binary patch literal 41126 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 is applied to `DataRecords` that contain the features to aggregate). Many of these groups can exist to define different types of aggregate features. - -Let's start with the following examples of an `AggregateGroup` to discuss the meaning of each of its constructor arguments: - -.. code-block:: scala - - val UserAggregateStore = "user_aggregates" - val aggregatesToCompute: Set[TypedAggregateGroup[_]] = Set( - AggregateGroup( - inputSource = timelinesDailyRecapSource, - aggregatePrefix = "user_aggregate_v2", - preTransformOpt = Some(RemoveUserIdZero), - keys = Set(USER_ID), - features = Set(HAS_PHOTO), - labels = Set(IS_FAVORITED), - metrics = Set(CountMetric, SumMetric), - halfLives = Set(50.days), - outputStore = OfflineAggregateStore( - name = UserAggregateStore, - startDate = "2016-07-15 00:00", - commonConfig = timelinesDailyAggregateSink, - batchesToKeep = 5 - ) - ) - .flatMap(_.buildTypedAggregateGroups) - ) - -This `AggregateGroup` computes the number of times each user has faved a tweet with a photo. The aggregate count is decayed with a 50 day halflife. - -Naming and preprocessing ------------------------- - -`UserAggregateStore` is a string val that acts as a scope of a "root path" to which this group of aggregate features will be written. The root path is provided separately by the implementing job. - -`inputSource` defines the input source of `DataRecords` that we aggregate on. These records contain the relevant features required for aggregation. - -`aggregatePrefix` tells the framework what prefix to use for the aggregate features it generates. A descriptive naming scheme with versioning makes it easier to maintain features as you add or remove them over the long-term. - -`preTransforms` is a `Seq[com.twitter.ml.api.ITransform] `_ that can be applied to the data records read from the input source before they are fed into the `AggregateGroup` to apply aggregation. These transforms are optional but can be useful for certain preprocessing operations for a group's raw input features. - -.. admonition:: Examples - - You can downsample input data records by providing `preTransforms`. In addition, you could also join different input labels (e.g. "is_push_openend" and "is_push_favorited") and transform them into a combined label that is their union ("is_push_engaged") on which aggregate counts will be calculated. - - -Keys ----- - -`keys` is a crucial field in the config. It defines a `Set[com.twitter.ml.api.Feature]` which specifies a set of grouping keys to use for this `AggregateGroup`. - -Keys can only be of 3 supported types currently: `DISCRETE`, `STRING` and `SPARSE_BINARY`. Using a discrete or a string/text feature as a key specifies the unit to group records by before applying counting/aggregation operators. - - -.. admonition:: Examples - - .. cssclass:: shortlist - - #. If the key is `USER_ID`, this tells the framework to group all records by `USER_ID`, and then apply aggregations (sum/count/etc) within each user’s data to generate aggregate features for each user. - - #. If the key is `(USER_ID, AUTHOR_ID)`, then the `AggregateGroup` will output features for each unique user-author pair in the input data. - - #. Finally, using a sparse binary feature as key has special "flattening" or "flatMap" like semantics. For example, consider grouping by `(USER_ID, AUTHOR_INTEREST_IDS)` where `AUTHOR_INTEREST_IDS` is a sparse binary feature which represents a set of topic IDs the author may be tweeting about. This creates one record for each `(user_id, interest_id)` pair - so each record with multiple author interests is flattened before feeding it to the aggregation. - -Features --------- - -`features` specifies a `Set[com.twitter.ml.api.Feature]` to aggregate within each group (defined by the keys specified earlier). - -We support 2 types of `features`: `BINARY` and `CONTINUOUS`. - -The semantics of how the aggregation works is slightly different based on the type of “feature”, and based on the “metric” (or aggregation operation): - -.. cssclass:: shortlist - -#. Binary Feature, Count Metric: Suppose we have a binary feature `HAS_PHOTO` in this set, and are applying the “Count” metric (see below for more details on the metrics), with key `USER_ID`. The semantics is that this computes a feature which measures the count of records with `HAS_PHOTO` set to true for each user. - -#. Binary Feature, Sum Metric - Does not apply. No feature will be computed. - -#. Continuous Feature, Count Metric - The count metric treats all features as binary features ignoring their value. For example, suppose we have a continuous feature `NUM_CHARACTERS_IN_TWEET`, and key `USER_ID`. This measures the count of records that have this feature `NUM_CHARACTERS_IN_TWEET` present. - -#. Continuous Feature, Sum Metric - In the above example, the features measures the sum of (num_characters_in_tweet) over all a user’s records. Dividing this sum feature by the count feature would give the average number of characters in all tweets. - -.. admonition:: Unsupported feature types - - `DISCRETE` and `SPARSE` features are not supported by the Sum Metric, because there is no meaning in summing a discrete feature or a sparse feature. You can use them with the CountMetric, but they may not do what you would expect since they will be treated as binary features losing all the information within the feature. The best way to use these is as “keys” and not as “features”. - -.. admonition:: Setting includeAnyFeature - - If constructor argument `includeAnyFeature` is set, the framework will append a feature with scope `any_feature` to the set of all features you define. This additional feature simply measures the total count of records. So if you set your features to be equal to Set.empty, this will measure the count of records for a given `USER_ID`. - -Labels ------- - -`labels` specifies a set of `BINARY` features that you can cross with, prior to applying aggregations on the `features`. This essentially restricts the aggregate computation to a subset of the records within a particular key. - -We typically use this to represent engagement labels in an ML model, in this case, `IS_FAVORITED`. - -In this example, we are grouping by `USER_ID`, the feature is `HAS_PHOTO`, the label is `IS_FAVORITED`, and we are computing `CountMetric`. The system will output a feature for each user that represents the number of favorites on tweets having photos by this `userId`. - -.. admonition:: Setting includeAnyLabel - - If constructor argument `includeAnyLabel` is set (as it is by default), then similar to `any_feature`, the framework automatically appends a label of type `any_label` to the set of all labels you define, which represents not applying any filter or cross. - -In this example, `any_label` and `any_feature` are set by default and the system would actually output 4 features for each `user_id`: - -.. cssclass:: shortlist - -#. The number of `IS_FAVORITED` (favorites) on tweet impressions having `HAS_PHOTO=true` - -#. The number of `IS_FAVORITED` (favorites) on all tweet impressions (`any_feature` aggregate) - -#. The number of tweet impressions having `HAS_PHOTO=true` (`any_label` aggregate) - -#. The total number of tweet impressions for this user id (`any_feature.any_label` aggregate) - -.. admonition:: Disabling includeAnyLabel - - To disable this automatically generated feature you can use `includeAnyLabel = false` in your config. This will remove some useful features (particularly for counterfactual signal), but it can greatly save on space since it does not store every possible impressed set of keys in the output store. So use this if you are short on space, but not otherwise. - -Metrics -------- - -`metrics` specifies the aggregate operators to apply. The most commonly used are `Count`, `Sum` and `SumSq`. - -As mentioned before, `Count` can be applied to all types of features, but treats every feature as binary and ignores the value of the feature. `Sum` and `SumSq` can only be applied to Continuous features - they will ignore all other features you specify. By combining sum and sumsq and count, you can produce powerful “z-score” features or other distributional features using a post-transform. - -It is also possible to add your own aggregate operators (e.g. `LastResetMetric `_) to the framework with some additional work. - -HalfLives ---------- - -`halfLives` specifies how fast aggregate features should be decayed. It is important to note that the framework works on an incremental basis: in the batch implementation, the summingbird-scalding job takes in the most recently computed aggregate features, processed on data until day `N-1`, then reads new data records for day `N` and computes updated values of the aggregate features. Similarly, the decay of real-time aggregate features takes the actual time delta between the current time and the last time the aggregate feature value was updated. - -The halflife `H` specifies how fast to decay old sums/counts to simulate a sliding window of counts. The implementation is such that it will take `H` amount of time to decay an aggregate feature to half its initial value. New observed values of sums/counts are added to the aggregate feature value. - -.. admonition:: Batch and real-time - - In the batch use case where aggregate features are recomputed on a daily basis, we typically take halflives on the order of weeks or longer (in Timelines, 50 days). In the real-time use case, shorter halflives are appropriate (hours) since they are updated as client engagements are received by the summingbird job. - - -SQL Equivalent --------------- -Conceptually, you can also think of it as: - -.. code-block:: sql - - INSERT INTO . - SELECT AGG() /* AGG is , which is a exponentially decaying SUM or COUNT etc. based on the halfLifves */ - FROM ( - SELECT preTransformOpt(*) FROM - ) - GROUP BY - WHERE = True - -any_features is AGG(*). - -any_labels removes the WHERE clause. \ No newline at end of file diff --git a/timelines/data_processing/ml_util/aggregation_framework/docs/batch.docx b/timelines/data_processing/ml_util/aggregation_framework/docs/batch.docx new file mode 100644 index 0000000000000000000000000000000000000000..266af06f4a32ad8145ae2a0d508bbf5f47c8c21a GIT binary patch literal 41036 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 literal 0 HcmV?d00001 diff --git a/timelines/data_processing/ml_util/aggregation_framework/docs/batch.rst b/timelines/data_processing/ml_util/aggregation_framework/docs/batch.rst deleted file mode 100644 index f3b6ac9a5..000000000 --- a/timelines/data_processing/ml_util/aggregation_framework/docs/batch.rst +++ /dev/null @@ -1,215 +0,0 @@ -.. _batch: - -Batch aggregate feature jobs -============================ - -In the previous section, we went over the core concepts of the aggregation framework and discussed how you can set up you own `AggregateGroups` to compute aggregate features. - -Given these groups, this section will discuss how you can setup offline batch jobs to produce the corresponding aggregate features, updated daily. To accomplish this, we need to setup a summingbird-scalding job that is pointed to the input data records containing features and labels to be aggregated. - -Input Data ----------- - -In order to generate aggregate features, the relevant input features need to be available offline as a daily scalding source in `DataRecord` format (typically `DailySuffixFeatureSource `_, though `HourlySuffixFeatureSource` could also be usable but we have not tested this). - -.. admonition:: Note - - The input data source should contain the keys, features and labels you want to use in your `AggregateGroups`. - -Aggregation Config ------------------- - -Now that we have a daily data source with input features and labels, we need to setup the `AggregateGroup` config itself. This contains all aggregation groups that you would like to compute and we will go through the implementation step-by-step. - -.. admonition:: Example: Timelines Quality config - - `TimelinesAggregationConfig `_ imports the configured `AggregationGroups` from `TimelinesAggregationConfigDetails `_. The config is then referenced by the implementing summingbird-scalding job which we will setup below. - -OfflineAggregateSource ----------------------- - -Each `AggregateGroup` will need to define a (daily) source of input features. We use `OfflineAggregateSource` for this to tell the aggregation framework where the input data set is and the required timestamp feature that the framework uses to decay aggregate feature values: - -.. code-block:: scala - - val timelinesDailyRecapSource = OfflineAggregateSource( - name = "timelines_daily_recap", - timestampFeature = TIMESTAMP, - scaldingHdfsPath = Some("/user/timelines/processed/suggests/recap/data_records"), - scaldingSuffixType = Some("daily"), - withValidation = true - ) - -.. admonition:: Note - - .. cssclass:: shortlist - - #. The name is not important as long as it is unique. - - #. `timestampFeature` must be a discrete feature of type `com.twitter.ml.api.Feature[Long]` and represents the “time” of a given training record in milliseconds - for example, the time at which an engagement, push open event, or abuse event took place that you are trying to train on. If you do not already have such a feature in your daily training data, you need to add one. - - #. `scaldingSuffixType` can be “hourly” or “daily” depending on the type of source (`HourlySuffixFeatureSource` vs `DailySuffixFeatureSource`). - - #. Set `withValidation` to true to validate the presence of _SUCCESS file. Context: https://jira.twitter.biz/browse/TQ-10618 - -Output HDFS store ------------------ - -The output HDFS store is where the computed aggregate features are stored. This store contains all computed aggregate feature values and is incrementally updated by the aggregates job every day. - -.. code-block:: scala - - val outputHdfsPath = "/user/timelines/processed/aggregates_v2" - val timelinesOfflineAggregateSink = new OfflineStoreCommonConfig { - override def apply(startDate: String) = new OfflineAggregateStoreCommonConfig( - outputHdfsPathPrefix = outputHdfsPath, - dummyAppId = "timelines_aggregates_v2_ro", // unused - can be arbitrary - dummyDatasetPrefix = "timelines_aggregates_v2_ro", // unused - can be arbitrary - startDate = startDate - ) - } - -Note: `dummyAppId` and `dummyDatasetPrefix` are unused so can be set to any arbitrary value. They should be removed on the framework side. - -The `outputHdfsPathPrefix` is the only field that matters, and should be set to the HDFS path where you want to store the aggregate features. Make sure you have a lot of quota available at that path. - -Setting Up Aggregates Job -------------------------- - -Once you have defined a config file with the aggregates you would like to compute, the next step is to create the aggregates scalding job using the config (`example `_). This is very concise and requires only a few lines of code: - -.. code-block:: scala - - object TimelinesAggregationScaldingJob extends AggregatesV2ScaldingJob { - override val aggregatesToCompute = TimelinesAggregationConfig.aggregatesToCompute - } - -Now that the scalding job is implemented with the aggregation config, we need to setup a capesos config similar to https://cgit.twitter.biz/source/tree/science/scalding/mesos/timelines/prod.yml: - -.. code-block:: scala - - # Common configuration shared by all aggregates v2 jobs - __aggregates_v2_common__: &__aggregates_v2_common__ - class: HadoopSummingbirdProducer - bundle: offline_aggregation-deploy.tar.gz - mainjar: offline_aggregation-deploy.jar - pants_target: "bundle timelines/data_processing/ad_hoc/aggregate_interactions/v2/offline_aggregation:bin" - cron_collision_policy: CANCEL_NEW - use_libjar_wild_card: true - -.. code-block:: scala - - # Specific job computing user aggregates - user_aggregates_v2: - <<: *__aggregates_v2_common__ - cron_schedule: "25 * * * *" - arguments: --batches 1 --output_stores user_aggregates --job_name timelines_user_aggregates_v2 - -.. admonition:: Important - - Each AggregateGroup in your config should have its own associated offline job which specifies `output_stores` pointing to the output store name you defined in your config. - -Running The Job ---------------- - -When you run the batch job for the first time, you need to add a temporary entry to your capesos yml file that looks like this: - -.. code-block:: scala - - user_aggregates_v2_initial_run: - <<: *__aggregates_v2_common__ - cron_schedule: "25 * * * *" - arguments: --batches 1 --start-time “2017-03-03 00:00:00” --output_stores user_aggregates --job_name timelines_user_aggregates_v2 - -.. admonition:: Start Time - - The additional `--start-time` argument should match the `startDate` in your config for that AggregateGroup, but in the format `yyyy-mm-dd hh:mm:ss`. - -To invoke the initial run via capesos, we would do the following (in Timelines case): - -.. code-block:: scala - - CAPESOSPY_ENV=prod capesospy-v2 update --build_locally --start_cron user_aggregates_v2_initial_run science/scalding/mesos/timelines/prod.yml - -Once it is running smoothly, you can deschedule the initial run job and delete the temporary entry from your production yml config. - -.. code-block:: scala - - aurora cron deschedule atla/timelines/prod/user_aggregates_v2_initial_run - -Note: deschedule it preemptively to avoid repeatedly overwriting the same initial results - -Then schedule the production job from jenkins using something like this: - -.. code-block:: scala - - CAPESOSPY_ENV=prod capesospy-v2 update user_aggregates_v2 science/scalding/mesos/timelines/prod.yml - -All future runs (2nd onwards) will use the permanent entry in the capesos yml config that does not have the `start-time` specified. - -.. admonition:: Job name has to match - - It's important that the production run should share the same `--job_name` with the initial_run so that eagleeye/statebird knows how to keep track of it correctly. - -Output Aggregate Features -------------------------- - -This scalding job using the example config from the earlier section would output a VersionedKeyValSource to `/user/timelines/processed/aggregates_v2/user_aggregates` on HDFS. - -Note that `/user/timelines/processed/aggregates_v2` is the explicitly defined root path while `user_aggregates` is the output directory of the example `AggregateGroup` defined earlier. The latter can be different for different `AggregateGroups` defined in your config. - - -The VersionedKeyValSource is difficult to use directly in your jobs/offline trainings, but we provide an adapted source `AggregatesV2FeatureSource` that makes it easy to join and use in your jobs: - -.. code-block:: scala - - import com.twitter.timelines.data_processing.ml_util.aggregation_framework.conversion._ - - val pipe: DataSetPipe = AggregatesV2FeatureSource( - rootPath = "/user/timelines/processed/aggregates_v2", - storeName = "user_aggregates", - aggregates = TimelinesAggregationConfig.aggregatesToCompute, - trimThreshold = 0 - )(dateRange).read - -Simply replace the `rootPath`, `storeName` and `aggregates` object to whatever you defined. The `trimThreshold` tells the framework to trim all features below a certain cutoff: 0 is a safe default to use to begin with. - -.. admonition:: Usage - - This can now be used like any other `DataSetPipe` in offline ML jobs. You can write out the features to a `DailySuffixFeatureSource`, you can join them with your data offline for trainings, or you can write them to a Manhattan store for serving online. - -Aggregate Features Example --------------------------- - -Here is an example of sample of the aggregate features we just computed: - -.. code-block:: scala - - user_aggregate_v2.pair.any_label.any_feature.50.days.count: 100.0 - user_aggregate_v2.pair.any_label.tweetsource.is_quote.50.days.count: 30.0 - user_aggregate_v2.pair.is_favorited.any_feature.50.days.count: 10.0 - user_aggregate_v2.pair.is_favorited.tweetsource.is_quote.50.days.count: 6.0 - meta.user_id: 123456789 - -Aggregate feature names match a `prefix.pair.label.feature.half_life.metric` schema and correspond to what was defined in the aggregation config for each of these fields. - -.. admonition:: Example - - In this example, the above features are capturing that userId 123456789L has: - - .. - A 50-day decayed count of 100 training records with any label or feature (“tweet impressions”) - - A 50-day decayed count of 30 records that are “quote tweets” (tweetsource.is_quote = true) - - A 50-day decayed count of 10 records that are favorites on any type of tweet (is_favorited = true) - - A 50-day decayed count of 6 records that are “favorites” on “quote tweets” (both of the above are true) - -By combining the above, a model might infer that for this specific user, quote tweets comprise 30% of all impressions, have a favorite rate of 6/30 = 20%, compared to a favorite rate of 10/100 = 10% on the total population of tweets. - -Therefore, being a quote tweet makes this specific user `123456789L` approximately twice as likely to favorite the tweet, which is useful for prediction and could result in the ML model giving higher scores to & ranking quote tweets higher in a personalized fashion for this user. - -Tests for Feature Names --------------------------- -When you change or add AggregateGroup, feature names might change. And the Feature Store provides a testing mechanism to assert that the feature names change as you expect. See `tests for feature names `_. diff --git a/timelines/data_processing/ml_util/aggregation_framework/docs/conf.docx b/timelines/data_processing/ml_util/aggregation_framework/docs/conf.docx new file mode 100644 index 0000000000000000000000000000000000000000..d288d9f475dfe3c69f4e3690e63c4adc7045c179 GIT binary patch literal 37450 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 literal 0 HcmV?d00001 diff --git a/timelines/data_processing/ml_util/aggregation_framework/docs/conf.py b/timelines/data_processing/ml_util/aggregation_framework/docs/conf.py deleted file mode 100644 index 03996dfd7..000000000 --- a/timelines/data_processing/ml_util/aggregation_framework/docs/conf.py +++ /dev/null @@ -1,59 +0,0 @@ -# -*- coding: utf-8 -*- -# -# docbird documentation build configuration file -# Note that not all possible configuration values are present in this -# autogenerated file. -# - -from os.path import abspath, dirname, isfile, join - - -extensions = [ - "sphinx.ext.autodoc", - "sphinx.ext.intersphinx", - "sphinx.ext.ifconfig", - "sphinx.ext.graphviz", - "twitter.docbird.ext.thriftlexer", - "twitter.docbird.ext.toctree_default_caption", - "sphinxcontrib.httpdomain", -] - - -# Add any paths that contain templates here, relative to this directory. -templates_path = ["_templates"] - -# The suffix of source filenames. -source_suffix = ".rst" - -# The master toctree document. -master_doc = "index" - -# General information about the project. -project = u"""Aggregation Framework""" -description = u"""""" - -# The short X.Y version. -version = u"""1.0""" -# The full version, including alpha/beta/rc tags. -release = u"""1.0""" - -exclude_patterns = ["_build"] - -pygments_style = "sphinx" - -html_theme = "default" - -html_static_path = ["_static"] - -html_logo = u"""""" - -# Automagically add project logo, if it exists -# (checks on any build, not just init) -# Scan for some common defaults (png or svg format, -# called "logo" or project name, in docs folder) -if not html_logo: - location = dirname(abspath(__file__)) - for logo_file in ["logo.png", "logo.svg", ("%s.png" % project), ("%s.svg" % project)]: - html_logo = logo_file if isfile(join(location, logo_file)) else html_logo - -graphviz_output_format = "svg" diff --git a/timelines/data_processing/ml_util/aggregation_framework/docs/index.docx b/timelines/data_processing/ml_util/aggregation_framework/docs/index.docx new file mode 100644 index 0000000000000000000000000000000000000000..fffc8eae281137340b5a444477d134e013be5a0f GIT binary patch literal 36749 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 literal 0 HcmV?d00001 diff --git a/timelines/data_processing/ml_util/aggregation_framework/docs/joining.rst b/timelines/data_processing/ml_util/aggregation_framework/docs/joining.rst deleted file mode 100644 index 2ecdf7612..000000000 --- a/timelines/data_processing/ml_util/aggregation_framework/docs/joining.rst +++ /dev/null @@ -1,72 +0,0 @@ -.. _joining: - -Joining aggregates features to records -====================================== - -After setting up either offline batch jobs or online real-time summingbird jobs to produce -aggregate features and querying them, we are left with data records containing aggregate features. -This page will go over how to join them with other data records to produce offline training data. - -(To discuss: joining aggregates to records online) - -Joining Aggregates on Discrete/String Keys ------------------------------------------- - -Joining aggregate features keyed on discrete or text features to your training data is very easy - -you can use the built in methods provided by `DataSetPipe`. For example, suppose you have aggregates -keyed by `(USER_ID, AUTHOR_ID)`: - -.. code-block:: scala - - val userAuthorAggregates: DataSetPipe = AggregatesV2FeatureSource( - rootPath = “/path/to/my/aggregates”, - storeName = “user_author_aggregates”, - aggregates = MyConfig.aggregatesToCompute, - trimThreshold = 0 - )(dateRange).read - -Offline, you can then join with your training data set as follows: - -.. code-block:: scala - - val myTrainingData: DataSetPipe = ... - val joinedData = myTrainingData.joinWithLarger((USER_ID, AUTHOR_ID), userAuthorAggregates) - -You can read from `AggregatesV2MostRecentFeatureSourceBeforeDate` in order to read the most recent aggregates -before a provided date `beforeDate`. Just note that `beforeDate` must be aligned with the date boundary so if -you’re passing in a `dateRange`, use `dateRange.end`). - -Joining Aggregates on Sparse Binary Keys ----------------------------------------- - -When joining on sparse binary keys, there can be multiple aggregate records to join to each training record in -your training data set. For example, suppose you have setup an aggregate group that is keyed on `(INTEREST_ID, AUTHOR_ID)` -capturing engagement counts of users interested in a particular `INTEREST_ID` for specific authors provided by `AUTHOR_ID`. - -Suppose now that you have a training data record representing a specific user action. This training data record contains -a sparse binary feature `INTEREST_IDS` representing all the "interests" of that user - e.g. music, sports, and so on. Each `interest_id` -translates to a different set of counting features found in your aggregates data. Therefore we need a way to merge all of -these different sets of counting features to produce a more compact, fixed-size set of features. - -.. admonition:: Merge policies - - To do this, the aggregate framework provides a trait `SparseBinaryMergePolicy `_. Classes overriding this trait define policies - that state how to merge the individual aggregate features from each sparse binary value (in this case, each `INTEREST_ID` for a user). - Furthermore, we provide `SparseBinaryMultipleAggregateJoin` which executes these policies to merge aggregates. - -A simple policy might simply average all the counts from the individual interests, or just take the max, or -a specific quantile. More advanced policies might use custom criteria to decide which interest is most relevant and choose -features from that interest to represent the user, or use some weighted combination of counts. - -The framework provides two simple in-built policies (`PickTopCtrPolicy `_ -and `CombineCountsPolicy `_, which keeps the topK counts per -record) that you can get started with, though you likely want to implement your own policy based on domain knowledge to get -the best results for your specific problem domain. - -.. admonition:: Offline Code Example - - The scalding job `TrainingDataWithAggV2Generator `_ shows how multiple merge policies are defined and implemented to merge aggregates on sparse binary keys to the TQ's training data records. - -.. admonition:: Online Code Example - - In our (non-FeatureStore enabled) online code path, we merge aggregates on sparse binary keys using the `CombineCountsPolicy `_. diff --git a/timelines/data_processing/ml_util/aggregation_framework/docs/real-time.docx b/timelines/data_processing/ml_util/aggregation_framework/docs/real-time.docx new file mode 100644 index 0000000000000000000000000000000000000000..c46f6cfffb6f1944c4f9b67903fe693bf9035146 GIT binary patch literal 44855 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

    Fqr)7Yzb|l>j&|Elc#7dZBJ?g1B6mA# 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 that creates `DataRecords` with the necessary input features. This serves as the input to the aggregation operations. -* Definition of aggregate features by defining `AggregateGroup` in an implementation of `OnlineAggregationConfigTrait`. This is identical to the batch case. -* Job config file defining the backing memcached for feature storage and retrieval, and job-related parameters. - -We will now go through the details in setting up each required component. - -Memcached store ---------------- - -Real-time aggregates use Memcache as the backing cache to store and update aggregate features keys. Caches can be provisioned on `go/cacheboard `_. - -.. admonition:: Test and prod caches - - For development, it is sufficient to setup a test cache that your new job can query and write to. At the same time, a production cache request should also be submitted as these generally have significant lead times for provisioning. - -StormAggregateSource --------------------- - -To enable aggregation of your features, we need to start with defining a `StormAggregateSource` that builds a `Producer[Storm, DataRecord]`. This summingbird producer generates `DataRecords` that contain the input features and labels that the real-time aggregate job will compute aggregate features on. Conceptually, this is equivalent to the input data set in the offline batch use case. - -.. admonition:: Example - - If you are planning to aggregate on client engagements, you would need to subscribe to the `ClientEvent` kafka stream and then convert each event to a `DataRecord` that contains the key and the engagement on which to aggregate. - -Typically, we would setup a julep filter for the relevant client events that we would like to aggregate on. This gives us a `Producer[Storm, LogEvent]` object which we then convert to `Producer[Storm, DataRecord]` with adapters that we wrote: - -.. code-block:: scala - - lazy val clientEventProducer: Producer[Storm, LogEvent] = - ClientEventSourceScrooge( - appId = AppId(jobConfig.appId), - topic = "julep_client_event_suggests", - resumeAtLastReadOffset = false - ).source.name("timelines_events") - - lazy val clientEventWithCachedFeaturesProducer: Producer[Storm, DataRecord] = clientEventProducer - .flatMap(mkDataRecords) - -Note that this way of composing the storm graph gives us flexiblity in how we can hydrate input features. If you would like to join more complex features to `DataRecord`, you can do so here with additional storm components which can implement cache queries. - -.. admonition:: Timelines Quality use case - - In Timelines Quality, we aggregate client engagements on `userId` or `tweetId` and implement - `TimelinesStormAggregateSource `_. We create - `Producer[Storm,LogEvent]` of Timelines engagements to which we apply `ClientLogEventAdapter `_ which converts the event to `DataRecord` containing `userId`, `tweetId`, `timestampFeature` of the engagement and the engagement label itself. - -.. admonition:: MagicRecs use case - - MagicRecs has a very similar setup for real-time aggregate features. In addition, they also implement a more complex cache query to fetch the user's history in the `StormAggregateSource` for each observed client engagement to hydrate a richer set of input `DataRecords`: - - .. code-block:: scala - - val userHistoryStoreService: Storm#Service[Long, History] = - Storm.service(UserHistoryReadableStore) - - val clientEventDataRecordProducer: Producer[Storm, DataRecord] = - magicRecsClientEventProducer - .flatMap { ... - (userId, logEvent) - }.leftJoin(userHistoryStoreService) - .flatMap { - case (_, (logEvent, history)) => - mkDataRecords(LogEventHistoryPair(logEvent, history)) - } - -.. admonition:: EmailRecs use case - - EmailRecs shares the same cache as MagicRecs. They combine notification scribe data with email history data to identify the particular item a user engaged with in an email: - - .. code-block:: scala - - val emailHistoryStoreService: Storm#Service[Long, History] = - Storm.service(EmailHistoryReadableStore) - - val emailEventDataRecordProducer: Producer[Storm, DataRecord] = - emailEventProducer - .flatMap { ... - (userId, logEvent) - }.leftJoin(emailHistoryStoreService) - .flatMap { - case (_, (scribe, history)) => - mkDataRecords(ScribeHistoryPair(scribe, history)) - } - - -Aggregation config ------------------- - -The real-time aggregation config is extended from `OnlineAggregationConfigTrait `_ and defines the features to aggregate and the backing memcached store to which they will be written. - -Setting up real-time aggregates follows the same rules as in the offline batch use case. The major difference here is that `inputSource` should point to the `StormAggregateSource` implementation that provides the `DataRecord` containing the engagements and core features on which to aggregate. In the offline case, this would have been an `OfflineAggregateSource` pointing to an offline source of daily records. - -Finally, `RealTimeAggregateStore` defines the backing memcache to be used and should be provided here as the `outputStore`. - -.. NOTE:: - - Please make sure to provide an `AggregateGroup` for both staging and production. The main difference should be the `outputStore` where features in either environment are read from and written to. You want to make sure that a staged real-time aggregates summingbird job is reading/writing only to the test memcache store and does not mutate the production store. - -Job config ----------- - -In addition to the aggregation config that defines the features to aggregate, the final piece we need to provide is a `RealTimeAggregatesJobConfig` that specificies job values such as `appId`, `teamName` and counts for the various topology components that define the capacity of the job (`Timelines example `_). - -Once you have the job config, implementing the storm job itself is easy and almost as concise as in the batch use case: - -.. code-block:: scala - - object TimelinesRealTimeAggregatesJob extends RealTimeAggregatesJobBase { - override lazy val statsReceiver = DefaultStatsReceiver.scope("timelines_real_time_aggregates") - override lazy val jobConfigs = TimelinesRealTimeAggregatesJobConfigs - override lazy val aggregatesToCompute = TimelinesOnlineAggregationConfig.AggregatesToCompute - } - -.. NOTE:: - There are some topology settings that are currently hard-coded. In particular, we enable `Config.TOPOLOGY_DROPTUPLES_UPON_BACKPRESSURE` to be true for added robustness. This may be made user-definable in the future. - -Steps to hydrate RTAs --------------------- -1. Make the changes to RTAs and follow the steps for `Running the topology`. -2. Register the new RTAs to feature store. Sample phab: https://phabricator.twitter.biz/D718120 -3. Wire the features from feature store to TLX. This is usually done with the feature switch set to False. So it's just a code change and will not yet start hydrating the features yet. Merge the phab. Sample phab: https://phabricator.twitter.biz/D718424 -4. Now we hydrate the features to TLX gradually by doing it shard wise. For this, first create a PCM and then enable the hydration. Sample PCM: https://jira.twitter.biz/browse/PCM-147814 - -Running the topology --------------------- -0. For phab that makes change to the topology (such as adding new ML features), before landing the phab, please create a PCM (`example `_) and deploy the change to devel topology first and then prod (atla and pdxa). Once it is confirmed that the prod topology can handle the change, the phab can be landed. -1. Go to https://ci.twitter.biz/job/tq-ci/build -2. In `commands` input - -.. code-block:: bash - - . src/scala/com/twitter/timelines/prediction/common/aggregates/real_time/deploy_local.sh [devel|atla|pdxa] - -One can only deploy either `devel`, `atla` (prod atla), `pdxa` (prod pdxa) at a time. -For example, to deploy both pdxa and atla prod topologies, one needs to build/run the above steps twice, one with `pdxa` and the other with `atla`. - -The status and performance stats of the topology are found at `go/heron-ui `_. Here you can view whether the job is processing tuples, whether it is under any memory or backpressure and provides general observability. - -Finally, since we enable `Config.TOPOLOGY_DROPTUPLES_UPON_BACKPRESSURE` by default in the topology, we also need to monitor and alert on the number of dropped tuples. Since this is a job generating features a small fraction of dropped tuples is tolerable if that enables us to avoid backpressure that would hold up global computation in the entire graph. - -Hydrating Real-Time Aggregate Features --------------------------------------- - -Once the job is up and running, the aggregate features will be accessible in the backing memcached store. To access these features and hydrate to your online pipeline, we need to build a Memcache client with the right query key. - -.. admonition:: Example - - Some care needs to be taken to define the key injection and codec correctly for the memcached store. These types do not change and you can use the Timelines `memcache client builder `_ as an example. - -Aggregate features are written to store with a `(AggregationKey, BatchID)` key. - -`AggregationKey `_ is an instant of the keys that you previously defined in `AggregateGroup`. If your aggregation key is `USER_ID`, you would need to instantiate `AggregationKey` with the `USER_ID` featureId and the userId value. - -.. admonition:: Returned features - - The `DataRecord` that is returned by the cache now contains all real-time aggregate features for the query `AggregationKey` (similar to the batch use case). If your online hydration flow produces data records, the real-time aggregate features can be joined with your existing records in a straightforward way. - -Adding features from Feature Store to RTA --------------------------------------------- -To add features from Feature Store to RTA and create real time aggregated features based on them, one needs to follow these steps: - -**Step 1** - -Copy Strato column for features that one wants to explore and add a cache if needed. See details at `Customize any Columns for your Team as Needed `_. As an `example `_, we copy Strato column of recommendationsUserFeaturesProd.User.strato and add a cache for timelines team's usage. - -**Step 2** - -Create a new ReadableStore which uses Feature Store Client to request features from Feature Store. Implement FeaturesAdapter which extends TimelinesAdapterBase and derive new features based on raw features from Feature Store. As an `example `_, we create UserFeaturesReadableStore which reads discrete feature user state, and convert it to a list of boolean user state features. - -**Step 3** - -Join these derived features from Feature Store to timelines storm aggregate source. Depends on the characteristic of these derived features, joined key could be tweet id, user id or others. As an `example `_, because user state is per user, the joined key is user id. - -**Step 4** - -Define `AggregateGroup` based on derived features in RTA - -Adding New Aggregate Features from an Existing Dataset --------------------------------- -To add a new aggregate feature group from an existing dataset for use in home models, use the following steps: - -1. Identify the hypothesis being tested by the addition of the features, in accordance with `go/tpfeatureguide `_. -2. Modify or add a new AggregateGroup to `TimelinesOnlineAggregationConfigBase.scala `_ to define the aggregation key, set of features, labels and metrics. An example phab to add more halflives can be found at `D204415 `_. -3. If the change is expected to be very large, it may be recommended to perform capacity estimation. See :ref:`Capacity Estimation` for more details. -4. Create feature catalog items for the new RTAs. An example phab is `D706348 `_. For approval from a featurestore owner ping #help-ml-features on slack. -5. Add new features to the featurestore. An example phab is `D706112 `_. This change can be rolled out with feature switches or by canarying TLX, depending on the risk. An example PCM for feature switches is: `PCM-148654 `_. An example PCM for canarying is: `PCM-145753 `_. -6. Wait for redeploy and confirm the new features are available. One way is querying in BigQuery from a table like `twitter-bq-timelines-prod.continuous_training_recap_fav`. Another way is to inspect individual records using pcat. The command to be used is like: - -.. code-block:: bash - - java -cp pcat-deploy.jar:$(hadoop classpath) com.twitter.ml.tool.pcat.PredictionCatTool - -path /atla/proc2/user/timelines/processed/suggests/recap/continuous_training_data_records/fav/data/YYYY/MM/DD/01/part-00000.lzo - -fc /atla/proc2/user/timelines/processed/suggests/recap/continuous_training_data_records/fav/data_spec.json - -dates YYYY-MM-DDT01 -record_limit 100 | grep [feature_group] - - -7. Create a phab with the new features and test the performance of a model with them compared to a control model without them. Test offline using `Deepbird for training `_ and `RCE Hypothesis Testing `_ to test. Test online using a DDG. Some helpful instructions are available in `Serving Timelines Models `_ and the `Experiment Cookbook `_ - -Capacity Estimation --------------------------------- -This section describes how to approximate the capacity required for a new aggregate group. It is not expected to be exact, but should give a rough estimate. - -There are two main components that must be stored for each aggregate group. - -Key space: Each AggregationKey struct consists of two maps, one of which is populated with tuples [Long, Long] representing of discrete features. This takes up 4 x 8 bytes or 32 bytes. The cache team estimates an additional 40 bytes of overhead. - -Features: An aggregate feature is represented as a pair (16 bytes) and is produced for each feature x label x metric x halflife combination. - -1. Use bigquery to estimate how many unique values exist for the selected key (key_count). Also collect the number of features, labels, metrics, and half-lives being used. -2. Compute the number of entries to be created, which is num_entires = feature_count * label_count * metric_count * halflife_count -3. Compute the number of bytes per entry, which is num_entry_bytes = 16*num_entries + 32 bytes (key storage) + 40 bytes (overhead) -4. Compute total space required = num_entry_bytes * key_count - -Debugging New Aggregate Features --------------------------------- - -To debug problems in the setup of your job, there are several steps you can take. - -First, ensure that data is being received from the input stream and passed through to create data records. This can be achieved by logging results at various places in your code, and especially at the point of data record creation. - -For example, suppose you want to ensure that a data record is being created with -the features you expect. With push and email features, we find that data records -are created in the adaptor, using logic like the following: - -.. code-block:: scala - - val record = new SRichDataRecord(new DataRecord) - ... - record.setFeatureValue(feature, value) - -To see what these feature values look like, we can have our adaptor class extend -Twitter's `Logging` trait, and write each created record to a log file. - -.. code-block:: scala - - class MyEventAdaptor extends TimelinesAdapterBase[MyObject] with Logging { - ... - ... - def mkDataRecord(myFeatures: MyFeatures): DataRecord = { - val record = new SRichDataRecord(new DataRecord) - ... - record.setFeatureValue(feature, value) - logger.info("data record xyz: " + record.getRecord.toString) - } - -This way, every time a data record is sent to the aggregator, it will also be -logged. To inspect these logs, you can push these changes to a staging instance, -ssh into that aurora instance, and grep the `log-files` directory for `xyz`. The -data record objects you find should resemble a map from feature ids to their -values. - -To check that steps in the aggregation are being performed, you can also inspect the job's topology on go/heronui. - -Lastly, to verify that values are being written to your cache you can check the `set` chart in your cache's viz. - -To check particular feature values for a given key, you can spin up a Scala REPL like so: - -.. code-block:: bash - - $ ssh -fN -L*:2181:sdzookeeper-read.atla.twitter.com:2181 -D *:50001 nest.atlc.twitter.com - - $ ./pants repl --jvm-repl-scala-options='-DsocksProxyHost=localhost -DsocksProxyPort=50001 -Dcom.twitter.server.resolverZkHosts=localhost:2181' timelinemixer/common/src/main/scala/com/twitter/timelinemixer/clients/real_time_aggregates_cache - -You will then need to create a connection to the cache, and a key with which to query it. - -.. code-block:: scala - - import com.twitter.conversions.DurationOps._ - import com.twitter.finagle.stats.{DefaultStatsReceiver, StatsReceiver} - import com.twitter.timelines.data_processing.ml_util.aggregation_framework.AggregationKey - import com.twitter.summingbird.batch.Batcher - import com.twitter.timelinemixer.clients.real_time_aggregates_cache.RealTimeAggregatesMemcacheBuilder - import com.twitter.timelines.clients.memcache_common.StorehausMemcacheConfig - - val userFeature = -1887718638306251279L // feature id corresponding to User feature - val userId = 12L // replace with a user id logged when creating your data record - val key = (AggregationKey(Map(userFeature -> userId), Map.empty), Batcher.unit.currentBatch) - - val dataset = "twemcache_magicrecs_real_time_aggregates_cache_staging" // replace with the appropriate cache name - val dest = s"/srv#/test/local/cache/twemcache_/$dataset" - - val statsReceiver: StatsReceiver = DefaultStatsReceiver - val cache = new RealTimeAggregatesMemcacheBuilder( - config = StorehausMemcacheConfig( - destName = dest, - keyPrefix = "", - requestTimeout = 10.seconds, - numTries = 1, - globalTimeout = 10.seconds, - tcpConnectTimeout = 10.seconds, - connectionAcquisitionTimeout = 10.seconds, - numPendingRequests = 250, - isReadOnly = true - ), - statsReceiver.scope(dataset) - ).build - - val result = cache.get(key) - -Another option is to create a debugger which points to the staging cache and creates a cache connection and key similar to the logic above. - -Run CQL query to find metrics/counters --------------------------------- -We can also visualize the counters from our job to verify new features. Run CQL query on terminal to find the right path of metrics/counters. For example, in order to check counter mergeNumFeatures, run: - -cql -z atla keys heron/summingbird_timelines_real_time_aggregates Tail-FlatMap | grep mergeNumFeatures - - -Then use the right path to create the viz, example: https://monitoring.twitter.biz/tiny/2552105 diff --git a/timelines/data_processing/ml_util/aggregation_framework/docs/troubleshooting.docx b/timelines/data_processing/ml_util/aggregation_framework/docs/troubleshooting.docx new file mode 100644 index 0000000000000000000000000000000000000000..461bc1ba1f04b694d1cfce000ce64d305058221d GIT binary patch literal 38519 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 =>u4Iulc`U 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

    wqY@#LhVY3tIxHa+p*PxuJ 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 literal 0 HcmV?d00001 diff --git a/timelines/data_processing/ml_util/aggregation_framework/heron/NighthawkUnderlyingStoreConfig.scala b/timelines/data_processing/ml_util/aggregation_framework/heron/NighthawkUnderlyingStoreConfig.scala deleted file mode 100644 index cf7668a20..000000000 --- a/timelines/data_processing/ml_util/aggregation_framework/heron/NighthawkUnderlyingStoreConfig.scala +++ /dev/null @@ -1,31 +0,0 @@ -package com.twitter.timelines.data_processing.ml_util.aggregation_framework.heron - -import com.twitter.conversions.DurationOps._ -import com.twitter.finagle.mtls.authentication.EmptyServiceIdentifier -import com.twitter.finagle.mtls.authentication.ServiceIdentifier -import com.twitter.finagle.ssl.OpportunisticTls -import com.twitter.storehaus_internal.nighthawk_kv.CacheClientNighthawkConfig -import com.twitter.storehaus_internal.util.TTL -import com.twitter.storehaus_internal.util.TableName -import com.twitter.summingbird_internal.runner.store_config.OnlineStoreOnlyConfig -import com.twitter.util.Duration - -case class NighthawkUnderlyingStoreConfig( - serversetPath: String = "", - tableName: String = "", - cacheTTL: Duration = 1.day) - extends OnlineStoreOnlyConfig[CacheClientNighthawkConfig] { - - def online: CacheClientNighthawkConfig = online(EmptyServiceIdentifier) - - def online( - serviceIdentifier: ServiceIdentifier = EmptyServiceIdentifier - ): CacheClientNighthawkConfig = - CacheClientNighthawkConfig( - serversetPath, - TableName(tableName), - TTL(cacheTTL), - serviceIdentifier = serviceIdentifier, - opportunisticTlsLevel = OpportunisticTls.Required - ) -} diff --git a/timelines/data_processing/ml_util/aggregation_framework/heron/OnlineAggregationConfigTrait.docx b/timelines/data_processing/ml_util/aggregation_framework/heron/OnlineAggregationConfigTrait.docx new file mode 100644 index 0000000000000000000000000000000000000000..161513cc2d897b202f46d01530c6320d94a8350f GIT binary patch literal 37149 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 slFiUiLFss*>ql=7BJ^)*L&{>Pt-}CsR$vYSpF literal 0 HcmV?d00001 diff --git a/timelines/data_processing/ml_util/aggregation_framework/heron/OnlineAggregationConfigTrait.scala b/timelines/data_processing/ml_util/aggregation_framework/heron/OnlineAggregationConfigTrait.scala deleted file mode 100644 index aea649128..000000000 --- a/timelines/data_processing/ml_util/aggregation_framework/heron/OnlineAggregationConfigTrait.scala +++ /dev/null @@ -1,28 +0,0 @@ -package com.twitter.timelines.data_processing.ml_util.aggregation_framework.heron - -import com.twitter.timelines.data_processing.ml_util.aggregation_framework.TypedAggregateGroup -import com.twitter.ml.api.Feature - -trait OnlineAggregationConfigTrait { - def ProdAggregates: Set[TypedAggregateGroup[_]] - def StagingAggregates: Set[TypedAggregateGroup[_]] - def ProdCommonAggregates: Set[TypedAggregateGroup[_]] - - /** - * AggregateToCompute: This defines the complete set of aggregates to be - * computed by the aggregation job and to be stored in memcache. - */ - def AggregatesToCompute: Set[TypedAggregateGroup[_]] - - /** - * ProdFeatures: This defines the subset of aggregates to be extracted - * and hydrated (or adapted) by callers to the aggregates features cache. - * This should only contain production aggregates and aggregates on - * product specific engagements. - * ProdCommonFeatures: Similar to ProdFeatures but containing user-level - * aggregate features. This is provided to PredictionService just - * once per user. - */ - lazy val ProdFeatures: Set[Feature[_]] = ProdAggregates.flatMap(_.allOutputFeatures) - lazy val ProdCommonFeatures: Set[Feature[_]] = ProdCommonAggregates.flatMap(_.allOutputFeatures) -} diff --git a/timelines/data_processing/ml_util/aggregation_framework/heron/OnlineAggregationStoresTrait.docx b/timelines/data_processing/ml_util/aggregation_framework/heron/OnlineAggregationStoresTrait.docx new file mode 100644 index 0000000000000000000000000000000000000000..dff90614bb97cd9f63d8cf33a83452d83da35027 GIT binary patch literal 36755 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

    =p+}j-FL7c6VmqM= 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 literal 0 HcmV?d00001 diff --git a/timelines/data_processing/ml_util/aggregation_framework/heron/RealTimeAggregatesJobBase.scala b/timelines/data_processing/ml_util/aggregation_framework/heron/RealTimeAggregatesJobBase.scala deleted file mode 100644 index 906f7c1be..000000000 --- a/timelines/data_processing/ml_util/aggregation_framework/heron/RealTimeAggregatesJobBase.scala +++ /dev/null @@ -1,301 +0,0 @@ -package com.twitter.timelines.data_processing.ml_util.aggregation_framework.heron - -import com.twitter.algebird.Monoid -import com.twitter.bijection.Injection -import com.twitter.bijection.thrift.CompactThriftCodec -import com.twitter.conversions.DurationOps._ -import com.twitter.finagle.mtls.authentication.EmptyServiceIdentifier -import com.twitter.finagle.mtls.authentication.ServiceIdentifier -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.heron.util.CommonMetric -import com.twitter.ml.api.DataRecord -import com.twitter.scalding.Args -import com.twitter.storehaus.algebra.MergeableStore -import com.twitter.storehaus.algebra.StoreAlgebra._ -import com.twitter.storehaus_internal.memcache.Memcache -import com.twitter.storehaus_internal.store.CombinedStore -import com.twitter.storehaus_internal.store.ReplicatingWritableStore -import com.twitter.summingbird.batch.BatchID -import com.twitter.summingbird.batch.Batcher -import com.twitter.summingbird.online.MergeableStoreFactory -import com.twitter.summingbird.online.option._ -import com.twitter.summingbird.option.CacheSize -import com.twitter.summingbird.option.JobId -import com.twitter.summingbird.storm.option.FlatMapStormMetrics -import com.twitter.summingbird.storm.option.SummerStormMetrics -import com.twitter.summingbird.storm.Storm -import com.twitter.summingbird.storm.StormMetric -import com.twitter.summingbird.Options -import com.twitter.summingbird._ -import com.twitter.summingbird_internal.runner.common.CapTicket -import com.twitter.summingbird_internal.runner.common.JobName -import com.twitter.summingbird_internal.runner.common.TeamEmail -import com.twitter.summingbird_internal.runner.common.TeamName -import com.twitter.summingbird_internal.runner.storm.ProductionStormConfig -import com.twitter.timelines.data_processing.ml_util.aggregation_framework._ -import com.twitter.timelines.data_processing.ml_util.aggregation_framework.job.AggregatesV2Job -import com.twitter.timelines.data_processing.ml_util.aggregation_framework.job.AggregatesV2Job -import com.twitter.timelines.data_processing.ml_util.aggregation_framework.job.DataRecordFeatureCounter -import org.apache.heron.api.{Config => HeronConfig} -import org.apache.heron.common.basics.ByteAmount -import org.apache.storm.Config -import scala.collection.JavaConverters._ - -object RealTimeAggregatesJobBase { - lazy val commonMetric: StormMetric[CommonMetric] = - StormMetric(new CommonMetric(), CommonMetric.NAME, CommonMetric.POLL_INTERVAL) - lazy val flatMapMetrics: FlatMapStormMetrics = FlatMapStormMetrics(Iterable(commonMetric)) - lazy val summerMetrics: SummerStormMetrics = SummerStormMetrics(Iterable(commonMetric)) -} - -trait RealTimeAggregatesJobBase extends Serializable { - import RealTimeAggregatesJobBase._ - import com.twitter.summingbird_internal.bijection.BatchPairImplicits._ - - def statsReceiver: StatsReceiver - - def aggregatesToCompute: Set[TypedAggregateGroup[_]] - - def jobConfigs: RealTimeAggregatesJobConfigs - - implicit lazy val dataRecordCodec: Injection[DataRecord, Array[Byte]] = - CompactThriftCodec[DataRecord] - implicit lazy val monoid: Monoid[DataRecord] = DataRecordAggregationMonoid(aggregatesToCompute) - implicit lazy val aggregationKeyInjection: Injection[AggregationKey, Array[Byte]] = - AggregationKeyInjection - - val clusters: Set[String] = Set("atla", "pdxa") - - def buildAggregateStoreToStorm( - isProd: Boolean, - serviceIdentifier: ServiceIdentifier, - jobConfig: RealTimeAggregatesJobConfig - ): (AggregateStore => Option[Storm#Store[AggregationKey, DataRecord]]) = { - (store: AggregateStore) => - store match { - case rtaStore: RealTimeAggregateStore if rtaStore.isProd == isProd => { - lazy val primaryStore: MergeableStore[(AggregationKey, BatchID), DataRecord] = - Memcache.getMemcacheStore[(AggregationKey, BatchID), DataRecord]( - rtaStore.online(serviceIdentifier)) - - lazy val mergeableStore: MergeableStore[(AggregationKey, BatchID), DataRecord] = - if (jobConfig.enableUserReindexingNighthawkBtreeStore - || jobConfig.enableUserReindexingNighthawkHashStore) { - val reindexingNighthawkBtreeWritableDataRecordStoreList = - if (jobConfig.enableUserReindexingNighthawkBtreeStore) { - lazy val cacheClientNighthawkConfig = - jobConfig.userReindexingNighthawkBtreeStoreConfig.online(serviceIdentifier) - List( - UserReindexingNighthawkWritableDataRecordStore.getBtreeStore( - nighthawkCacheConfig = cacheClientNighthawkConfig, - // Choose a reasonably large target size as this will be equivalent to the number of unique (user, timestamp) - // keys that are returned on read on the pKey, and we may have duplicate authors and associated records. - targetSize = 512, - statsReceiver = statsReceiver, - // Assuming trims are relatively expensive, choose a trimRate that's not as aggressive. In this case we trim on - // 10% of all writes. - trimRate = 0.1 - )) - } else { Nil } - val reindexingNighthawkHashWritableDataRecordStoreList = - if (jobConfig.enableUserReindexingNighthawkHashStore) { - lazy val cacheClientNighthawkConfig = - jobConfig.userReindexingNighthawkHashStoreConfig.online(serviceIdentifier) - List( - UserReindexingNighthawkWritableDataRecordStore.getHashStore( - nighthawkCacheConfig = cacheClientNighthawkConfig, - // Choose a reasonably large target size as this will be equivalent to the number of unique (user, timestamp) - // keys that are returned on read on the pKey, and we may have duplicate authors and associated records. - targetSize = 512, - statsReceiver = statsReceiver, - // Assuming trims are relatively expensive, choose a trimRate that's not as aggressive. In this case we trim on - // 10% of all writes. - trimRate = 0.1 - )) - } else { Nil } - - lazy val replicatingWritableStore = new ReplicatingWritableStore( - stores = List(primaryStore) ++ reindexingNighthawkBtreeWritableDataRecordStoreList - ++ reindexingNighthawkHashWritableDataRecordStoreList - ) - - lazy val combinedStoreWithReindexing = new CombinedStore( - read = primaryStore, - write = replicatingWritableStore - ) - - combinedStoreWithReindexing.toMergeable - } else { - primaryStore - } - - lazy val storeFactory: MergeableStoreFactory[(AggregationKey, BatchID), DataRecord] = - Storm.store(mergeableStore)(Batcher.unit) - Some(storeFactory) - } - case _ => None - } - } - - def buildDataRecordSourceToStorm( - jobConfig: RealTimeAggregatesJobConfig - ): (AggregateSource => Option[Producer[Storm, DataRecord]]) = { (source: AggregateSource) => - { - source match { - case stormAggregateSource: StormAggregateSource => - Some(stormAggregateSource.build(statsReceiver, jobConfig)) - case _ => None - } - } - } - - def apply(args: Args): ProductionStormConfig = { - lazy val isProd = args.boolean("production") - lazy val cluster = args.getOrElse("cluster", "") - lazy val isDebug = args.boolean("debug") - lazy val role = args.getOrElse("role", "") - lazy val service = - args.getOrElse( - "service_name", - "" - ) // don't use the argument service, which is a reserved heron argument - lazy val environment = if (isProd) "prod" else "devel" - lazy val s2sEnabled = args.boolean("s2s") - lazy val keyedByUserEnabled = args.boolean("keyed_by_user") - lazy val keyedByAuthorEnabled = args.boolean("keyed_by_author") - - require(clusters.contains(cluster)) - if (s2sEnabled) { - require(role.length() > 0) - require(service.length() > 0) - } - - lazy val serviceIdentifier = if (s2sEnabled) { - ServiceIdentifier( - role = role, - service = service, - environment = environment, - zone = cluster - ) - } else EmptyServiceIdentifier - - lazy val jobConfig = { - val jobConfig = if (isProd) jobConfigs.Prod else jobConfigs.Devel - jobConfig.copy( - serviceIdentifier = serviceIdentifier, - keyedByUserEnabled = keyedByUserEnabled, - keyedByAuthorEnabled = keyedByAuthorEnabled) - } - - lazy val dataRecordSourceToStorm = buildDataRecordSourceToStorm(jobConfig) - lazy val aggregateStoreToStorm = - buildAggregateStoreToStorm(isProd, serviceIdentifier, jobConfig) - - lazy val JaasConfigFlag = "-Djava.security.auth.login.config=resources/jaas.conf" - lazy val JaasDebugFlag = "-Dsun.security.krb5.debug=true" - lazy val JaasConfigString = - if (isDebug) { "%s %s".format(JaasConfigFlag, JaasDebugFlag) } - else JaasConfigFlag - - new ProductionStormConfig { - implicit val jobId: JobId = JobId(jobConfig.name) - override val jobName = JobName(jobConfig.name) - override val teamName = TeamName(jobConfig.teamName) - override val teamEmail = TeamEmail(jobConfig.teamEmail) - override val capTicket = CapTicket("n/a") - - val configureHeronJvmSettings = { - val heronJvmOptions = new java.util.HashMap[String, AnyRef]() - jobConfig.componentToRamGigaBytesMap.foreach { - case (component, gigabytes) => - HeronConfig.setComponentRam( - heronJvmOptions, - component, - ByteAmount.fromGigabytes(gigabytes)) - } - - HeronConfig.setContainerRamRequested( - heronJvmOptions, - ByteAmount.fromGigabytes(jobConfig.containerRamGigaBytes) - ) - - jobConfig.componentsToKerberize.foreach { component => - HeronConfig.setComponentJvmOptions( - heronJvmOptions, - component, - JaasConfigString - ) - } - - jobConfig.componentToMetaSpaceSizeMap.foreach { - case (component, metaspaceSize) => - HeronConfig.setComponentJvmOptions( - heronJvmOptions, - component, - metaspaceSize - ) - } - - heronJvmOptions.asScala.toMap ++ AggregatesV2Job - .aggregateNames(aggregatesToCompute).map { - case (prefix, aggNames) => (s"extras.aggregateNames.${prefix}", aggNames) - } - } - - override def transformConfig(m: Map[String, AnyRef]): Map[String, AnyRef] = { - super.transformConfig(m) ++ List( - /** - * Disable acking by setting acker executors to 0. Tuples that come off the - * spout will be immediately acked which effectively disables retries on tuple - * failures. This should help topology throughput/availability by relaxing consistency. - */ - Config.TOPOLOGY_ACKER_EXECUTORS -> int2Integer(0), - Config.TOPOLOGY_WORKERS -> int2Integer(jobConfig.topologyWorkers), - HeronConfig.TOPOLOGY_CONTAINER_CPU_REQUESTED -> int2Integer(8), - HeronConfig.TOPOLOGY_DROPTUPLES_UPON_BACKPRESSURE -> java.lang.Boolean.valueOf(true), - HeronConfig.TOPOLOGY_WORKER_CHILDOPTS -> List( - JaasConfigString, - s"-Dcom.twitter.eventbus.client.zoneName=${cluster}", - "-Dcom.twitter.eventbus.client.EnableKafkaSaslTls=true" - ).mkString(" "), - "storm.job.uniqueId" -> jobId.get - ) ++ configureHeronJvmSettings - - } - - override lazy val getNamedOptions: Map[String, Options] = jobConfig.topologyNamedOptions ++ - Map( - "DEFAULT" -> Options() - .set(flatMapMetrics) - .set(summerMetrics) - .set(MaxWaitingFutures(1000)) - .set(FlushFrequency(30.seconds)) - .set(UseAsyncCache(true)) - .set(AsyncPoolSize(4)) - .set(SourceParallelism(jobConfig.sourceCount)) - .set(SummerBatchMultiplier(1000)), - "FLATMAP" -> Options() - .set(FlatMapParallelism(jobConfig.flatMapCount)) - .set(CacheSize(0)), - "SUMMER" -> Options() - .set(SummerParallelism(jobConfig.summerCount)) - /** - * Sets number of tuples a Summer awaits before aggregation. Set higher - * if you need to lower qps to memcache at the expense of introducing - * some (stable) latency. - */ - .set(CacheSize(jobConfig.cacheSize)) - ) - - val featureCounters: Seq[DataRecordFeatureCounter] = - Seq(DataRecordFeatureCounter.any(Counter(Group("feature_counter"), Name("num_records")))) - - override def graph: TailProducer[Storm, Any] = AggregatesV2Job.generateJobGraph[Storm]( - aggregateSet = aggregatesToCompute, - aggregateSourceToSummingbird = dataRecordSourceToStorm, - aggregateStoreToSummingbird = aggregateStoreToStorm, - featureCounters = featureCounters - ) - } - } -} diff --git a/timelines/data_processing/ml_util/aggregation_framework/heron/RealTimeAggregatesJobConfig.docx b/timelines/data_processing/ml_util/aggregation_framework/heron/RealTimeAggregatesJobConfig.docx new file mode 100644 index 0000000000000000000000000000000000000000..d500e17feaf8fc87449b9f579a71078cead32644 GIT binary patch literal 38004 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%0AxQ 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 x5=w!FTH6$#@U2NE$?jI9H74HB5 literal 0 HcmV?d00001 diff --git a/timelines/data_processing/ml_util/aggregation_framework/heron/RealTimeAggregatesJobConfig.scala b/timelines/data_processing/ml_util/aggregation_framework/heron/RealTimeAggregatesJobConfig.scala deleted file mode 100644 index 8bed26264..000000000 --- a/timelines/data_processing/ml_util/aggregation_framework/heron/RealTimeAggregatesJobConfig.scala +++ /dev/null @@ -1,79 +0,0 @@ -package com.twitter.timelines.data_processing.ml_util.aggregation_framework.heron - -import com.twitter.finagle.mtls.authentication.EmptyServiceIdentifier -import com.twitter.finagle.mtls.authentication.ServiceIdentifier -import com.twitter.ml.api.DataRecord -import com.twitter.summingbird.Options -import com.twitter.timelines.data_processing.ml_util.transforms.OneToSomeTransform - -/** - * - * @param appId application id for topology job - * @param topologyWorkers number of workers/containers of topology - * @param sourceCount number of parallel sprouts of topology - * @param summerCount number of Summer of topology - * @param cacheSize number of tuples a Summer awaits before aggregation. - * @param flatMapCount number of parallel FlatMap of topology - * @param containerRamGigaBytes total RAM of each worker/container has - * @param name name of topology job - * @param teamName name of team who owns topology job - * @param teamEmail email of team who owns topology job - * @param componentsToKerberize component of topology job (eg. Tail-FlatMap-Source) which enables kerberization - * @param componentToMetaSpaceSizeMap MetaSpaceSize settings for components of topology job - * @param topologyNamedOptions Sets spout allocations for named topology components - * @param serviceIdentifier represents the identifier used for Service to Service Authentication - * @param onlinePreTransforms sequential data record transforms applied to Producer of DataRecord before creating AggregateGroup. - * While preTransforms defined at AggregateGroup are applied to each aggregate group, onlinePreTransforms are applied to the whole producer source. - * @param keyedByUserEnabled boolean value to enable/disable merging user-level features from Feature Store - * @param keyedByAuthorEnabled boolean value to enable/disable merging author-level features from Feature Store - * @param enableUserReindexingNighthawkBtreeStore boolean value to enable reindexing RTAs on user id with btree backed nighthawk - * @param enableUserReindexingNighthawkHashStore boolean value to enable reindexing RTAs on user id with hash backed nighthawk - * @param userReindexingNighthawkBtreeStoreConfig NH btree store config used in reindexing user RTAs - * @param userReindexingNighthawkHashStoreConfig NH hash store config used in reindexing user RTAs - */ -case class RealTimeAggregatesJobConfig( - appId: String, - topologyWorkers: Int, - sourceCount: Int, - summerCount: Int, - cacheSize: Int, - flatMapCount: Int, - containerRamGigaBytes: Int, - name: String, - teamName: String, - teamEmail: String, - componentsToKerberize: Seq[String] = Seq.empty, - componentToMetaSpaceSizeMap: Map[String, String] = Map.empty, - componentToRamGigaBytesMap: Map[String, Int] = Map("Tail" -> 4), - topologyNamedOptions: Map[String, Options] = Map.empty, - serviceIdentifier: ServiceIdentifier = EmptyServiceIdentifier, - onlinePreTransforms: Seq[OneToSomeTransform] = Seq.empty, - keyedByUserEnabled: Boolean = false, - keyedByAuthorEnabled: Boolean = false, - keyedByTweetEnabled: Boolean = false, - enableUserReindexingNighthawkBtreeStore: Boolean = false, - enableUserReindexingNighthawkHashStore: Boolean = false, - userReindexingNighthawkBtreeStoreConfig: NighthawkUnderlyingStoreConfig = - NighthawkUnderlyingStoreConfig(), - userReindexingNighthawkHashStoreConfig: NighthawkUnderlyingStoreConfig = - NighthawkUnderlyingStoreConfig()) { - - /** - * Apply transforms sequentially. If any transform results in a dropped (None) - * DataRecord, then entire transform sequence will result in a dropped DataRecord. - * Note that transforms are order-dependent. - */ - def sequentiallyTransform(dataRecord: DataRecord): Option[DataRecord] = { - val recordOpt = Option(new DataRecord(dataRecord)) - onlinePreTransforms.foldLeft(recordOpt) { - case (Some(previousRecord), preTransform) => - preTransform(previousRecord) - case _ => Option.empty[DataRecord] - } - } -} - -trait RealTimeAggregatesJobConfigs { - def Prod: RealTimeAggregatesJobConfig - def Devel: RealTimeAggregatesJobConfig -} diff --git a/timelines/data_processing/ml_util/aggregation_framework/heron/StormAggregateSource.docx b/timelines/data_processing/ml_util/aggregation_framework/heron/StormAggregateSource.docx new file mode 100644 index 0000000000000000000000000000000000000000..e63cd5026a29e5b185384b5b546a4e6e2ab9f890 GIT binary patch literal 37065 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

    $bn16^l5?E- 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 GfOr6mVnHVW literal 0 HcmV?d00001 diff --git a/timelines/data_processing/ml_util/aggregation_framework/heron/StormAggregateSource.scala b/timelines/data_processing/ml_util/aggregation_framework/heron/StormAggregateSource.scala deleted file mode 100644 index a252cf197..000000000 --- a/timelines/data_processing/ml_util/aggregation_framework/heron/StormAggregateSource.scala +++ /dev/null @@ -1,27 +0,0 @@ -package com.twitter.timelines.data_processing.ml_util.aggregation_framework.heron - -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.ml.api.DataRecord -import com.twitter.ml.api.Feature -import com.twitter.summingbird._ -import com.twitter.summingbird.storm.Storm -import com.twitter.timelines.data_processing.ml_util.aggregation_framework.AggregateSource -import java.lang.{Long => JLong} - -/** - * Use this trait to implement online summingbird producer that subscribes to - * spouts and generates a data record. - */ -trait StormAggregateSource extends AggregateSource { - def name: String - - def timestampFeature: Feature[JLong] - - /** - * Constructs the storm Producer with the implemented topology at runtime. - */ - def build( - statsReceiver: StatsReceiver, - jobConfig: RealTimeAggregatesJobConfig - ): Producer[Storm, DataRecord] -} diff --git a/timelines/data_processing/ml_util/aggregation_framework/heron/UserReindexingNighthawkStore.docx b/timelines/data_processing/ml_util/aggregation_framework/heron/UserReindexingNighthawkStore.docx new file mode 100644 index 0000000000000000000000000000000000000000..98fb38f11bcb0285ba605d2a6c438551daa93925 GIT binary patch literal 40899 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%0Ar$HmBIowYcKrPT zAI|8{msLsX3~?z8kw?b;8;v-EZoNZL{9oh$miEX% za0ITVE#i`K1d!+ka07AXpS8!r+3j~G8X11Put2eefIFZ80E9Q-!H6^ez|CA-{_9_> zo>M?a5%M$o6>{U5h>q}fcC+L~PWn54zRzkP8ui7?i^QVz^P3K*l3yjsM_bk$>TlbI8aP z$o~5e#Z3Hvx^ZLzWTX3s0Fv-;g8#C;$Xv+Y@efy7;=j3WI!R;}WUKXur8DWTUb$hs lknzZR@DE-;?O#LeraDwtLPw0CU!#f$V1^hT%Gtku{STEA#6182 literal 0 HcmV?d00001 diff --git a/timelines/data_processing/ml_util/aggregation_framework/heron/UserReindexingNighthawkStore.scala b/timelines/data_processing/ml_util/aggregation_framework/heron/UserReindexingNighthawkStore.scala deleted file mode 100644 index a4d2adeac..000000000 --- a/timelines/data_processing/ml_util/aggregation_framework/heron/UserReindexingNighthawkStore.scala +++ /dev/null @@ -1,309 +0,0 @@ -package com.twitter.timelines.data_processing.ml_util.aggregation_framework.heron - -import com.twitter.bijection.Injection -import com.twitter.bijection.thrift.CompactThriftCodec -import com.twitter.cache.client._ -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.ml.api.DataRecord -import com.twitter.ml.api.constant.SharedFeatures -import com.twitter.ml.api.util.SRichDataRecord -import com.twitter.storehaus.WritableStore -import com.twitter.storehaus_internal.nighthawk_kv.CacheClientNighthawkConfig -import com.twitter.storehaus_internal.nighthawk_kv.NighthawkStore -import com.twitter.summingbird.batch.BatchID -import com.twitter.timelines.data_processing.ml_util.aggregation_framework.AggregationKey -import com.twitter.timelines.data_processing.ml_util.aggregation_framework.TypedAggregateGroup -import com.twitter.timelines.data_processing.ml_util.aggregation_framework.heron.UserReindexingNighthawkWritableDataRecordStore._ -import com.twitter.timelines.prediction.features.common.TimelinesSharedFeatures -import com.twitter.util.Future -import com.twitter.util.Time -import com.twitter.util.Try -import com.twitter.util.logging.Logger -import java.nio.ByteBuffer -import java.util -import scala.util.Random - -object UserReindexingNighthawkWritableDataRecordStore { - implicit val longInjection = Injection.long2BigEndian - implicit val dataRecordInjection: Injection[DataRecord, Array[Byte]] = - CompactThriftCodec[DataRecord] - val arrayToByteBuffer = Injection.connect[Array[Byte], ByteBuffer] - val longToByteBuffer = longInjection.andThen(arrayToByteBuffer) - val dataRecordToByteBuffer = dataRecordInjection.andThen(arrayToByteBuffer) - - def getBtreeStore( - nighthawkCacheConfig: CacheClientNighthawkConfig, - targetSize: Int, - statsReceiver: StatsReceiver, - trimRate: Double - ): UserReindexingNighthawkBtreeWritableDataRecordStore = - new UserReindexingNighthawkBtreeWritableDataRecordStore( - nighthawkStore = NighthawkStore[UserId, TimestampMs, DataRecord](nighthawkCacheConfig) - .asInstanceOf[NighthawkStore[UserId, TimestampMs, DataRecord]], - tableName = nighthawkCacheConfig.table.toString, - targetSize = targetSize, - statsReceiver = statsReceiver, - trimRate = trimRate - ) - - def getHashStore( - nighthawkCacheConfig: CacheClientNighthawkConfig, - targetSize: Int, - statsReceiver: StatsReceiver, - trimRate: Double - ): UserReindexingNighthawkHashWritableDataRecordStore = - new UserReindexingNighthawkHashWritableDataRecordStore( - nighthawkStore = NighthawkStore[UserId, AuthorId, DataRecord](nighthawkCacheConfig) - .asInstanceOf[NighthawkStore[UserId, AuthorId, DataRecord]], - tableName = nighthawkCacheConfig.table.toString, - targetSize = targetSize, - statsReceiver = statsReceiver, - trimRate = trimRate - ) - - def buildTimestampedByteBuffer(timestamp: Long, bb: ByteBuffer): ByteBuffer = { - val timestampedBb = ByteBuffer.allocate(getLength(bb) + java.lang.Long.SIZE) - timestampedBb.putLong(timestamp) - timestampedBb.put(bb) - timestampedBb - } - - def extractTimestampFromTimestampedByteBuffer(bb: ByteBuffer): Long = { - bb.getLong(0) - } - - def extractValueFromTimestampedByteBuffer(bb: ByteBuffer): ByteBuffer = { - val bytes = new Array[Byte](getLength(bb) - java.lang.Long.SIZE) - util.Arrays.copyOfRange(bytes, java.lang.Long.SIZE, getLength(bb)) - ByteBuffer.wrap(bytes) - } - - def transformAndBuildKeyValueMapping( - table: String, - userId: UserId, - authorIdsAndDataRecords: Seq[(AuthorId, DataRecord)] - ): KeyValue = { - val timestamp = Time.now.inMillis - val pkey = longToByteBuffer(userId) - val lkeysAndTimestampedValues = authorIdsAndDataRecords.map { - case (authorId, dataRecord) => - val lkey = longToByteBuffer(authorId) - // Create a byte buffer with a prepended timestamp to reduce deserialization cost - // when parsing values. We only have to extract and deserialize the timestamp in the - // ByteBuffer in order to sort the value, as opposed to deserializing the DataRecord - // and having to get a timestamp feature value from the DataRecord. - val dataRecordBb = dataRecordToByteBuffer(dataRecord) - val timestampedValue = buildTimestampedByteBuffer(timestamp, dataRecordBb) - (lkey, timestampedValue) - } - buildKeyValueMapping(table, pkey, lkeysAndTimestampedValues) - } - - def buildKeyValueMapping( - table: String, - pkey: ByteBuffer, - lkeysAndTimestampedValues: Seq[(ByteBuffer, ByteBuffer)] - ): KeyValue = { - val lkeys = lkeysAndTimestampedValues.map { case (lkey, _) => lkey } - val timestampedValues = lkeysAndTimestampedValues.map { case (_, value) => value } - val kv = KeyValue( - key = Key(table = table, pkey = pkey, lkeys = lkeys), - value = Value(timestampedValues) - ) - kv - } - - private def getLength(bb: ByteBuffer): Int = { - // capacity can be an over-estimate of the actual length (remaining - start position) - // but it's the safest to avoid overflows. - bb.capacity() - } -} - -/** - * Implements a NH store that stores aggregate feature DataRecords using userId as the primary key. - * - * This store re-indexes user-author keyed real-time aggregate (RTA) features on userId by - * writing to a userId primary key (pkey) and timestamp secondary key (lkey). To fetch user-author - * RTAs for a given user from cache, the caller just needs to make a single RPC for the userId pkey. - * The downside of a re-indexing store is that we cannot store arbitrarily many secondary keys - * under the primary key. This specific implementation using the NH btree backend also mandates - * mandates an ordering of secondary keys - we therefore use timestamp as the secondary key - * as opposed to say authorId. - * - * Note that a caller of the btree backed NH re-indexing store receives back a response where the - * secondary key is a timestamp. The associated value is a DataRecord containing user-author related - * aggregate features which was last updated at the timestamp. The caller therefore needs to handle - * the response and dedupe on unique, most recent user-author pairs. - * - * For a discussion on this and other implementations, please see: - * https://docs.google.com/document/d/1yVzAbQ_ikLqwSf230URxCJmSKj5yZr5dYv6TwBlQw18/edit - */ -class UserReindexingNighthawkBtreeWritableDataRecordStore( - nighthawkStore: NighthawkStore[UserId, TimestampMs, DataRecord], - tableName: String, - targetSize: Int, - statsReceiver: StatsReceiver, - trimRate: Double = 0.1 // by default, trim on 10% of puts -) extends WritableStore[(AggregationKey, BatchID), Option[DataRecord]] { - - private val scope = getClass.getSimpleName - private val failures = statsReceiver.counter(scope, "failures") - private val log = Logger.getLogger(getClass) - private val random: Random = new Random(1729L) - - override def put(kv: ((AggregationKey, BatchID), Option[DataRecord])): Future[Unit] = { - val ((aggregationKey, _), dataRecordOpt) = kv - // Fire-and-forget below because the store itself should just be a side effect - // as it's just making re-indexed writes based on the writes to the primary store. - for { - userId <- aggregationKey.discreteFeaturesById.get(SharedFeatures.USER_ID.getFeatureId) - dataRecord <- dataRecordOpt - } yield { - SRichDataRecord(dataRecord) - .getFeatureValueOpt(TypedAggregateGroup.timestampFeature) - .map(_.toLong) // convert to Scala Long - .map { timestamp => - val trim: Future[Unit] = if (random.nextDouble <= trimRate) { - val trimKey = TrimKey( - table = tableName, - pkey = longToByteBuffer(userId), - targetSize = targetSize, - ascending = true - ) - nighthawkStore.client.trim(Seq(trimKey)).unit - } else { - Future.Unit - } - // We should wait for trim to complete above - val fireAndForget = trim.before { - val kvTuple = ((userId, timestamp), Some(dataRecord)) - nighthawkStore.put(kvTuple) - } - - fireAndForget.onFailure { - case e => - failures.incr() - log.error("Failure in UserReindexingNighthawkHashWritableDataRecordStore", e) - } - } - } - // Ignore fire-and-forget result above and simply return - Future.Unit - } -} - -/** - * Implements a NH store that stores aggregate feature DataRecords using userId as the primary key. - * - * This store re-indexes user-author keyed real-time aggregate (RTA) features on userId by - * writing to a userId primary key (pkey) and authorId secondary key (lkey). To fetch user-author - * RTAs for a given user from cache, the caller just needs to make a single RPC for the userId pkey. - * The downside of a re-indexing store is that we cannot store arbitrarily - * many secondary keys under the primary key. We have to limit them in some way; - * here, we do so by randomly (based on trimRate) issuing an HGETALL command (via scan) to - * retrieve the whole hash, sort by oldest timestamp, and then remove the oldest authors to keep - * only targetSize authors (aka trim), where targetSize is configurable. - * - * @note The full hash returned from scan could be as large (or even larger) than targetSize, - * which could mean many DataRecords to deserialize, especially at high write qps. - * To reduce deserialization cost post-scan, we use timestamped values with a prepended timestamp - * in the value ByteBuffer; this allows us to only deserialize the timestamp and not the full - * DataRecord when sorting. This is necessary in order to identify the oldest values to trim. - * When we do a put for a new (user, author) pair, we also write out timestamped values. - * - * For a discussion on this and other implementations, please see: - * https://docs.google.com/document/d/1yVzAbQ_ikLqwSf230URxCJmSKj5yZr5dYv6TwBlQw18/edit - */ -class UserReindexingNighthawkHashWritableDataRecordStore( - nighthawkStore: NighthawkStore[UserId, AuthorId, DataRecord], - tableName: String, - targetSize: Int, - statsReceiver: StatsReceiver, - trimRate: Double = 0.1 // by default, trim on 10% of puts -) extends WritableStore[(AggregationKey, BatchID), Option[DataRecord]] { - - private val scope = getClass.getSimpleName - private val scanMismatchErrors = statsReceiver.counter(scope, "scanMismatchErrors") - private val failures = statsReceiver.counter(scope, "failures") - private val log = Logger.getLogger(getClass) - private val random: Random = new Random(1729L) - private val arrayToByteBuffer = Injection.connect[Array[Byte], ByteBuffer] - private val longToByteBuffer = Injection.long2BigEndian.andThen(arrayToByteBuffer) - - override def put(kv: ((AggregationKey, BatchID), Option[DataRecord])): Future[Unit] = { - val ((aggregationKey, _), dataRecordOpt) = kv - // Fire-and-forget below because the store itself should just be a side effect - // as it's just making re-indexed writes based on the writes to the primary store. - for { - userId <- aggregationKey.discreteFeaturesById.get(SharedFeatures.USER_ID.getFeatureId) - authorId <- aggregationKey.discreteFeaturesById.get( - TimelinesSharedFeatures.SOURCE_AUTHOR_ID.getFeatureId) - dataRecord <- dataRecordOpt - } yield { - val scanAndTrim: Future[Unit] = if (random.nextDouble <= trimRate) { - val scanKey = ScanKey( - table = tableName, - pkey = longToByteBuffer(userId) - ) - nighthawkStore.client.scan(Seq(scanKey)).flatMap { scanResults: Seq[Try[KeyValue]] => - scanResults.headOption - .flatMap(_.toOption).map { keyValue: KeyValue => - val lkeys: Seq[ByteBuffer] = keyValue.key.lkeys - // these are timestamped bytebuffers - val timestampedValues: Seq[ByteBuffer] = keyValue.value.values - // this should fail loudly if this is not true. it would indicate - // there is a mistake in the scan. - if (lkeys.size != timestampedValues.size) scanMismatchErrors.incr() - assert(lkeys.size == timestampedValues.size) - if (lkeys.size > targetSize) { - val numToRemove = targetSize - lkeys.size - // sort by oldest and take top k oldest and remove - this is equivalent to a trim - val oldestKeys: Seq[ByteBuffer] = lkeys - .zip(timestampedValues) - .map { - case (lkey, timestampedValue) => - val timestamp = extractTimestampFromTimestampedByteBuffer(timestampedValue) - (timestamp, lkey) - } - .sortBy { case (timestamp, _) => timestamp } - .take(numToRemove) - .map { case (_, k) => k } - val pkey = longToByteBuffer(userId) - val key = Key(table = tableName, pkey = pkey, lkeys = oldestKeys) - // NOTE: `remove` is a batch API, and we group all lkeys into a single batch (batch - // size = single group of lkeys = 1). Instead, we could separate lkeys into smaller - // groups and have batch size = number of groups, but this is more complex. - // Performance implications of batching vs non-batching need to be assessed. - nighthawkStore.client - .remove(Seq(key)) - .map { responses => - responses.map(resp => nighthawkStore.processValue(resp)) - }.unit - } else { - Future.Unit - } - }.getOrElse(Future.Unit) - } - } else { - Future.Unit - } - // We should wait for scan and trim to complete above - val fireAndForget = scanAndTrim.before { - val kv = transformAndBuildKeyValueMapping(tableName, userId, Seq((authorId, dataRecord))) - nighthawkStore.client - .put(Seq(kv)) - .map { responses => - responses.map(resp => nighthawkStore.processValue(resp)) - }.unit - } - fireAndForget.onFailure { - case e => - failures.incr() - log.error("Failure in UserReindexingNighthawkHashWritableDataRecordStore", e) - } - } - // Ignore fire-and-forget result above and simply return - Future.Unit - } -} diff --git a/timelines/data_processing/ml_util/aggregation_framework/heron/package.docx b/timelines/data_processing/ml_util/aggregation_framework/heron/package.docx new file mode 100644 index 0000000000000000000000000000000000000000..54ba76a44b26ddfeadcb9e17c5051b6614a5feeb GIT binary patch literal 36776 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 ZLv0-fc(Vd?5GYFvG9&`ChhaB}2LLxmtx*5~ literal 0 HcmV?d00001 diff --git a/timelines/data_processing/ml_util/aggregation_framework/heron/package.scala b/timelines/data_processing/ml_util/aggregation_framework/heron/package.scala deleted file mode 100644 index e995cf202..000000000 --- a/timelines/data_processing/ml_util/aggregation_framework/heron/package.scala +++ /dev/null @@ -1,8 +0,0 @@ -package com.twitter.timelines.data_processing.ml_util.aggregation_framework - -package object heron { - // NOTE: please sort alphabetically - type AuthorId = Long - type UserId = Long - type TimestampMs = Long -} diff --git a/timelines/data_processing/ml_util/aggregation_framework/job/AggregatesV2Job.docx b/timelines/data_processing/ml_util/aggregation_framework/job/AggregatesV2Job.docx new file mode 100644 index 0000000000000000000000000000000000000000..f5c484b5b05ffda1521ba12f710e9e046cb3c92f GIT binary patch literal 38829 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 literal 0 HcmV?d00001 diff --git a/timelines/data_processing/ml_util/aggregation_framework/job/AggregatesV2Job.scala b/timelines/data_processing/ml_util/aggregation_framework/job/AggregatesV2Job.scala deleted file mode 100644 index 7d9e1946e..000000000 --- a/timelines/data_processing/ml_util/aggregation_framework/job/AggregatesV2Job.scala +++ /dev/null @@ -1,163 +0,0 @@ -package com.twitter.timelines.data_processing.ml_util.aggregation_framework.job - -import com.twitter.algebird.Semigroup -import com.twitter.ml.api.DataRecord -import com.twitter.ml.api.DataRecordMerger -import com.twitter.summingbird.Platform -import com.twitter.summingbird.Producer -import com.twitter.summingbird.TailProducer -import com.twitter.timelines.data_processing.ml_util.aggregation_framework.AggregateSource -import com.twitter.timelines.data_processing.ml_util.aggregation_framework.AggregateStore -import com.twitter.timelines.data_processing.ml_util.aggregation_framework.AggregationKey -import com.twitter.timelines.data_processing.ml_util.aggregation_framework.TypedAggregateGroup - -object AggregatesV2Job { - private lazy val merger = new DataRecordMerger - - /** - * Merges all "incremental" records with the same aggregation key - * into a single record. - * - * @param recordsPerKey A set of (AggregationKey, DataRecord) tuples - * known to share the same AggregationKey - * @return A single merged datarecord - */ - def mergeRecords(recordsPerKey: Set[(AggregationKey, DataRecord)]): DataRecord = - recordsPerKey.foldLeft(new DataRecord) { - case (merged: DataRecord, (key: AggregationKey, elem: DataRecord)) => { - merger.merge(merged, elem) - merged - } - } - - /** - * Given a set of aggregates to compute and a datarecord, extract key-value - * pairs to output to the summingbird store. - * - * @param dataRecord input data record - * @param aggregates set of aggregates to compute - * @param featureCounters counters to apply to each input data record - * @return computed aggregates - */ - def computeAggregates( - dataRecord: DataRecord, - aggregates: Set[TypedAggregateGroup[_]], - featureCounters: Seq[DataRecordFeatureCounter] - ): Map[AggregationKey, DataRecord] = { - val computedAggregates = aggregates - .flatMap(_.computeAggregateKVPairs(dataRecord)) - .groupBy { case (aggregationKey: AggregationKey, _) => aggregationKey } - .mapValues(mergeRecords) - - featureCounters.foreach(counter => - computedAggregates.map(agg => DataRecordFeatureCounter(counter, agg._2))) - - computedAggregates - - } - - /** - * Util method to apply a filter on containment in an optional set. - * - * @param setOptional Optional set of items to check containment in. - * @param toCheck Item to check if contained in set. - * @return If the optional set is None, returns true. - */ - def setFilter[T](setOptional: Option[Set[T]], toCheck: T): Boolean = - setOptional.map(_.contains(toCheck)).getOrElse(true) - - /** - * Util for filtering a collection of `TypedAggregateGroup` - * - * @param aggregates a set of aggregates - * @param sourceNames Optional filter on which AggregateGroups to process - * based on the name of the input source. - * @param storeNames Optional filter on which AggregateGroups to process - * based on the name of the output store. - * @return filtered aggregates - */ - def filterAggregates( - aggregates: Set[TypedAggregateGroup[_]], - sourceNames: Option[Set[String]], - storeNames: Option[Set[String]] - ): Set[TypedAggregateGroup[_]] = - aggregates - .filter { aggregateGroup => - val sourceName = aggregateGroup.inputSource.name - val storeName = aggregateGroup.outputStore.name - val containsSource = setFilter(sourceNames, sourceName) - val containsStore = setFilter(storeNames, storeName) - containsSource && containsStore - } - - /** - * The core summingbird job code. - * - * For each aggregate in the set passed in, the job - * processes all datarecords in the input producer - * stream to generate "incremental" contributions to - * these aggregates, and emits them grouped by - * aggregation key so that summingbird can aggregate them. - * - * It is important that after applying the sourceNameFilter and storeNameFilter, - * all the result AggregateGroups share the same startDate, otherwise the job - * will fail or give invalid results. - * - * @param aggregateSet A set of aggregates to compute. All aggregates - * in this set that pass the sourceNameFilter and storeNameFilter - * defined below, if any, will be computed. - * @param aggregateSourceToSummingbird Function that maps from our logical - * AggregateSource abstraction to the underlying physical summingbird - * producer of data records to aggregate (e.g. scalding/eventbus source) - * @param aggregateStoreToSummingbird Function that maps from our logical - * AggregateStore abstraction to the underlying physical summingbird - * store to write output aggregate records to (e.g. mahattan for scalding, - * or memcache for heron) - * @param featureCounters counters to use with each input DataRecord - * @return summingbird tail producer - */ - def generateJobGraph[P <: Platform[P]]( - aggregateSet: Set[TypedAggregateGroup[_]], - aggregateSourceToSummingbird: AggregateSource => Option[Producer[P, DataRecord]], - aggregateStoreToSummingbird: AggregateStore => Option[P#Store[AggregationKey, DataRecord]], - featureCounters: Seq[DataRecordFeatureCounter] = Seq.empty - )( - implicit semigroup: Semigroup[DataRecord] - ): TailProducer[P, Any] = { - val tailProducerList: List[TailProducer[P, Any]] = aggregateSet - .groupBy { aggregate => (aggregate.inputSource, aggregate.outputStore) } - .flatMap { - case ( - (inputSource: AggregateSource, outputStore: AggregateStore), - aggregatesInThisStore - ) => { - val producerOpt = aggregateSourceToSummingbird(inputSource) - val storeOpt = aggregateStoreToSummingbird(outputStore) - - (producerOpt, storeOpt) match { - case (Some(producer), Some(store)) => - Some( - producer - .flatMap(computeAggregates(_, aggregatesInThisStore, featureCounters)) - .name("FLATMAP") - .sumByKey(store) - .name("SUMMER") - ) - case _ => None - } - } - } - .toList - - tailProducerList.reduceLeft { (left, right) => left.also(right) } - } - - def aggregateNames(aggregateSet: Set[TypedAggregateGroup[_]]) = { - aggregateSet - .map(typedGroup => - ( - typedGroup.aggregatePrefix, - typedGroup.individualAggregateDescriptors - .flatMap(_.outputFeatures.map(_.getFeatureName)).mkString(","))) - }.toMap -} diff --git a/timelines/data_processing/ml_util/aggregation_framework/job/BUILD b/timelines/data_processing/ml_util/aggregation_framework/job/BUILD deleted file mode 100644 index 57593fa34..000000000 --- a/timelines/data_processing/ml_util/aggregation_framework/job/BUILD +++ /dev/null @@ -1,19 +0,0 @@ -scala_library( - sources = ["*.scala"], - platform = "java8", - tags = ["bazel-compatible"], - dependencies = [ - "3rdparty/jvm/com/twitter/algebird:core", - "3rdparty/jvm/com/twitter/algebird:util", - "3rdparty/jvm/com/twitter/storehaus:algebra", - "3rdparty/jvm/com/twitter/storehaus:core", - "3rdparty/src/jvm/com/twitter/scalding:commons", - "3rdparty/src/jvm/com/twitter/scalding:core", - "3rdparty/src/jvm/com/twitter/summingbird:batch", - "3rdparty/src/jvm/com/twitter/summingbird:core", - "src/java/com/twitter/ml/api:api-base", - "src/thrift/com/twitter/ml/api:data-java", - "src/thrift/com/twitter/ml/api:interpretable-model-java", - "timelines/data_processing/ml_util/aggregation_framework:common_types", - ], -) diff --git a/timelines/data_processing/ml_util/aggregation_framework/job/BUILD.docx b/timelines/data_processing/ml_util/aggregation_framework/job/BUILD.docx new file mode 100644 index 0000000000000000000000000000000000000000..1be10f1ee902211ceb86f17c79d8002ca6090e24 GIT binary patch literal 36907 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 literal 0 HcmV?d00001 diff --git a/timelines/data_processing/ml_util/aggregation_framework/job/DataRecordFeatureCounter.docx b/timelines/data_processing/ml_util/aggregation_framework/job/DataRecordFeatureCounter.docx new file mode 100644 index 0000000000000000000000000000000000000000..23081d6c01d97b6e57186392b964f4edc5741b65 GIT binary patch literal 37245 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 literal 0 HcmV?d00001 diff --git a/timelines/data_processing/ml_util/aggregation_framework/job/DataRecordFeatureCounter.scala b/timelines/data_processing/ml_util/aggregation_framework/job/DataRecordFeatureCounter.scala deleted file mode 100644 index eb1580a11..000000000 --- a/timelines/data_processing/ml_util/aggregation_framework/job/DataRecordFeatureCounter.scala +++ /dev/null @@ -1,39 +0,0 @@ -package com.twitter.timelines.data_processing.ml_util.aggregation_framework.job - -import com.twitter.ml.api.DataRecord -import com.twitter.summingbird.Counter - -/** - * A summingbird Counter which is associated with a predicate which operates on - * [[com.twitter.ml.api.DataRecord]] instances. - * - * For example, for a data record which represents a Tweet, one could define a predicate - * which checks whether the Tweet contains a binary feature representing the presence of - * an image. The counter can then be used to represent the the count of Tweets with - * images processed. - * - * @param predicate a predicate which gates the counter - * @param counter a summingbird Counter instance - */ -case class DataRecordFeatureCounter(predicate: DataRecord => Boolean, counter: Counter) - -object DataRecordFeatureCounter { - - /** - * Increments the counter if the record satisfies the predicate - * - * @param recordCounter a data record counter - * @param record a data record - */ - def apply(recordCounter: DataRecordFeatureCounter, record: DataRecord): Unit = - if (recordCounter.predicate(record)) recordCounter.counter.incr() - - /** - * Defines a feature counter with a predicate that is always true - * - * @param counter a summingbird Counter instance - * @return a data record counter - */ - def any(counter: Counter): DataRecordFeatureCounter = - DataRecordFeatureCounter({ _: DataRecord => true }, counter) -} diff --git a/timelines/data_processing/ml_util/aggregation_framework/metrics/AggregateFeature.docx b/timelines/data_processing/ml_util/aggregation_framework/metrics/AggregateFeature.docx new file mode 100644 index 0000000000000000000000000000000000000000..d7c72471ab19531ebb6b37038025f59211c6c76a GIT binary patch literal 37454 zcmagFWmsIvwm*!!dvKTFZowrG++BhO0yOS49^3;2cXyY@-6gnNkU((ve`jXSIWy

    $};Q1`cE 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 JBoolean} - -/** - * Case class used as shared argument for - * getAggregateValue() and setAggregateValue() in AggregationMetric. - * - * @param aggregatePrefix Prefix for aggregate feature name - * @param feature Simple (non-aggregate) feature being aggregated. This - is optional; if None, then the label is aggregated on its own without - being crossed with any feature. - * @param label Label being paired with. This is optional; if None, then - the feature is aggregated on its own without being crossed with any label. - * @param halfLife Half life being used for aggregation - */ -case class AggregateFeature[T]( - aggregatePrefix: String, - feature: Option[Feature[T]], - label: Option[Feature[JBoolean]], - halfLife: Duration) { - val aggregateType = "pair" - val labelName: String = label.map(_.getDenseFeatureName()).getOrElse("any_label") - val featureName: String = feature.map(_.getDenseFeatureName()).getOrElse("any_feature") - - /* - * This val precomputes a portion of the feature name - * for faster processing. String building turns - * out to be a significant bottleneck. - */ - val featurePrefix: String = List( - aggregatePrefix, - aggregateType, - labelName, - featureName, - halfLife.toString - ).mkString(".") -} - -/* Companion object with util methods. */ -object AggregateFeature { - def parseHalfLife(aggregateFeature: Feature[_]): Duration = { - val aggregateComponents = aggregateFeature.getDenseFeatureName().split("\\.") - val numComponents = aggregateComponents.length - val halfLifeStr = aggregateComponents(numComponents - 3) + "." + - aggregateComponents(numComponents - 2) - Duration.parse(halfLifeStr) - } -} diff --git a/timelines/data_processing/ml_util/aggregation_framework/metrics/AggregationMetric.docx b/timelines/data_processing/ml_util/aggregation_framework/metrics/AggregationMetric.docx new file mode 100644 index 0000000000000000000000000000000000000000..bc76ff16307fa2edb0c6a9238759647686c97da6 GIT binary patch literal 39017 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 d@wXwiKRPtlrw2yR_ff?OasY JLong} - -/** - * Represents an aggregation operator (e.g. count or mean). - * Override all functions in this trait to implement your own metric. - * The operator is parameterized on an input type T, which is the type - * of feature it aggregates, and a TimedValue[A] which is - * the result type of aggregation for this metric. - */ -trait AggregationMetric[T, A] extends FeatureCache[T] { - /* - * Combines two timed aggregate values ''left'' and ''right'' - * with the specified half life ''halfLife'' to produce a result - * TimedValue - * - * @param left Left timed value - * @param right Right timed value - * @param halfLife Half life to use for adding timed values - * @return Result timed value - */ - def plus(left: TimedValue[A], right: TimedValue[A], halfLife: Duration): TimedValue[A] - - /* - * Gets increment value given a datarecord and a feature. - * - * @param dataRecord to get increment value from. - * @param feature Feature to get increment value for. If None, - then the semantics is to just aggregate the label. - * @param timestampFeature Feature to use as millisecond timestamp - for decayed value aggregation. - * @return The incremental contribution to the aggregate of ''feature'' from ''dataRecord''. - * - * For example, if the aggregation metric is count, the incremental - * contribution is always a TimedValue (1.0, time). If the aggregation metric - * is mean, and the feature is a continuous feature (double), the incremental - * contribution looks like a tuple (value, 1.0, time) - */ - def getIncrementValue( - dataRecord: DataRecord, - feature: Option[Feature[T]], - timestampFeature: Feature[JLong] - ): TimedValue[A] - - /* - * The "zero" value for aggregation. - * For example, the zero is 0 for the count operator. - */ - def zero(timeOpt: Option[Long] = None): TimedValue[A] - - /* - * Gets the value of aggregate feature(s) stored in a datarecord, if any. - * Different aggregate operators might store this info in the datarecord - * differently. E.g. count just stores a count, while mean needs to - * store both a sum and a count, and compile them into a TimedValue. We call - * these features stored in the record "output" features. - * - * @param record Record to get value from - * @param query AggregateFeature (see above) specifying details of aggregate - * @param aggregateOutputs An optional precomputed set of aggregation "output" - * feature hashes for this (query, metric) pair. This can be derived from ''query'', - * but we precompute and pass this in for significantly (approximately 4x = 400%) - * faster performance. If not passed in, the operator should reconstruct these features - * from scratch. - * - * @return The aggregate value if found in ''record'', else the appropriate "zero" - for this type of aggregation. - */ - def getAggregateValue( - record: DataRecord, - query: AggregateFeature[T], - aggregateOutputs: Option[List[JLong]] = None - ): TimedValue[A] - - /* - * Sets the value of aggregate feature(s) in a datarecord. Different operators - * will have different representations (see example above). - * - * @param record Record to set value in - * @param query AggregateFeature (see above) specifying details of aggregate - * @param aggregateOutputs An optional precomputed set of aggregation "output" - * features for this (query, metric) pair. This can be derived from ''query'', - * but we precompute and pass this in for significantly (approximately 4x = 400%) - * faster performance. If not passed in, the operator should reconstruct these features - * from scratch. - * - * @param value Value to set for aggregate feature in the record being passed in via ''query'' - */ - def setAggregateValue( - record: DataRecord, - query: AggregateFeature[T], - aggregateOutputs: Option[List[JLong]] = None, - value: TimedValue[A] - ): Unit - - /** - * Get features used to store aggregate output representation - * in partially aggregated data records. - * - * @query AggregateFeature (see above) specifying details of aggregate - * @return A list of "output" features used by this metric to store - * output representation. For example, for the "count" operator, we - * have only one element in this list, which is the result "count" feature. - * For the "mean" operator, we have three elements in this list: the "count" - * feature, the "sum" feature and the "mean" feature. - */ - def getOutputFeatures(query: AggregateFeature[T]): List[Feature[_]] - - /** - * Get feature hashes used to store aggregate output representation - * in partially aggregated data records. - * - * @query AggregateFeature (see above) specifying details of aggregate - * @return A list of "output" feature hashes used by this metric to store - * output representation. For example, for the "count" operator, we - * have only one element in this list, which is the result "count" feature. - * For the "mean" operator, we have three elements in this list: the "count" - * feature, the "sum" feature and the "mean" feature. - */ - def getOutputFeatureIds(query: AggregateFeature[T]): List[JLong] = - getOutputFeatures(query) - .map(_.getDenseFeatureId().asInstanceOf[JLong]) - - /* - * Sums the given feature in two datarecords into a result record - * WARNING: this method has side-effects; it modifies combined - * - * @param combined Result datarecord to mutate and store addition result in - * @param left Left datarecord to add - * @param right Right datarecord to add - * @param query Details of aggregate to add - * @param aggregateOutputs An optional precomputed set of aggregation "output" - * feature hashes for this (query, metric) pair. This can be derived from ''query'', - * but we precompute and pass this in for significantly (approximately 4x = 400%) - * faster performance. If not passed in, the operator should reconstruct these features - * from scratch. - */ - def mutatePlus( - combined: DataRecord, - left: DataRecord, - right: DataRecord, - query: AggregateFeature[T], - aggregateOutputs: Option[List[JLong]] = None - ): Unit = { - val leftValue = getAggregateValue(left, query, aggregateOutputs) - val rightValue = getAggregateValue(right, query, aggregateOutputs) - val combinedValue = plus(leftValue, rightValue, query.halfLife) - setAggregateValue(combined, query, aggregateOutputs, combinedValue) - } - - /** - * Helper function to get increment value from an input DataRecord - * and copy it to an output DataRecord, given an AggregateFeature query spec. - * - * @param output Datarecord to output increment to (will be mutated by this method) - * @param input Datarecord to get increment from - * @param query Details of aggregation - * @param aggregateOutputs An optional precomputed set of aggregation "output" - * feature hashes for this (query, metric) pair. This can be derived from ''query'', - * but we precompute and pass this in for significantly (approximately 4x = 400%) - * faster performance. If not passed in, the operator should reconstruct these features - * from scratch. - * @return True if an increment was set in the output record, else false - */ - def setIncrement( - output: DataRecord, - input: DataRecord, - query: AggregateFeature[T], - timestampFeature: Feature[JLong] = SharedFeatures.TIMESTAMP, - aggregateOutputs: Option[List[JLong]] = None - ): Boolean = { - if (query.label == None || - (query.label.isDefined && SRichDataRecord(input).hasFeature(query.label.get))) { - val incrementValue: TimedValue[A] = getIncrementValue(input, query.feature, timestampFeature) - setAggregateValue(output, query, aggregateOutputs, incrementValue) - true - } else false - } -} diff --git a/timelines/data_processing/ml_util/aggregation_framework/metrics/AggregationMetricCommon.docx b/timelines/data_processing/ml_util/aggregation_framework/metrics/AggregationMetricCommon.docx new file mode 100644 index 0000000000000000000000000000000000000000..ada271ffbca7a2c19ee9494a90e5865470fd929c GIT binary patch literal 37448 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 JLong} -import java.util.{HashSet => JHashSet} -import java.util.{Set => JSet} - -object AggregationMetricCommon { - /* Shared definitions and utils that can be reused by child classes */ - val Epsilon: Double = 1e-6 - val decayedValueMonoid: Monoid[DecayedValue] = DecayedValueMonoid(Epsilon) - val TimestampHash: JLong = SharedFeatures.TIMESTAMP.getDenseFeatureId() - - def toDecayedValue(tv: TimedValue[Double], halfLife: Duration): DecayedValue = { - DecayedValue.build( - tv.value, - tv.timestamp.inMilliseconds, - halfLife.inMilliseconds - ) - } - - def getTimestamp( - record: DataRecord, - timestampFeature: Feature[JLong] = SharedFeatures.TIMESTAMP - ): Long = { - Option( - SRichDataRecord(record) - .getFeatureValue(timestampFeature) - ).map(_.toLong) - .getOrElse(0L) - } - - /* - * Union the PDTs of the input featureOpts. - * Return null if empty, else the JSet[PersonalDataType] - */ - def derivePersonalDataTypes(features: Option[Feature[_]]*): JSet[PersonalDataType] = { - val unionPersonalDataTypes = new JHashSet[PersonalDataType]() - for { - featureOpt <- features - feature <- featureOpt - pdtSetOptional = feature.getPersonalDataTypes - if pdtSetOptional.isPresent - pdtSet = pdtSetOptional.get - } unionPersonalDataTypes.addAll(pdtSet) - if (unionPersonalDataTypes.isEmpty) null else unionPersonalDataTypes - } -} diff --git a/timelines/data_processing/ml_util/aggregation_framework/metrics/BUILD b/timelines/data_processing/ml_util/aggregation_framework/metrics/BUILD deleted file mode 100644 index 676b31d81..000000000 --- a/timelines/data_processing/ml_util/aggregation_framework/metrics/BUILD +++ /dev/null @@ -1,15 +0,0 @@ -scala_library( - sources = ["*.scala"], - platform = "java8", - tags = ["bazel-compatible"], - dependencies = [ - "3rdparty/jvm/com/twitter/algebird:core", - "src/java/com/twitter/ml/api:api-base", - "src/java/com/twitter/ml/api/constant", - "src/scala/com/twitter/ml/api/util:datarecord", - "src/thrift/com/twitter/dal/personal_data:personal_data-java", - "src/thrift/com/twitter/ml/api:data-java", - "src/thrift/com/twitter/ml/api:interpretable-model-java", - "util/util-core:scala", - ], -) diff --git a/timelines/data_processing/ml_util/aggregation_framework/metrics/BUILD.docx b/timelines/data_processing/ml_util/aggregation_framework/metrics/BUILD.docx new file mode 100644 index 0000000000000000000000000000000000000000..13520838b41937428619840b93efc352f882f671 GIT binary patch literal 36864 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 D!!Nbb literal 0 HcmV?d00001 diff --git a/timelines/data_processing/ml_util/aggregation_framework/metrics/CountMetric.scala b/timelines/data_processing/ml_util/aggregation_framework/metrics/CountMetric.scala deleted file mode 100644 index 720fa68e5..000000000 --- a/timelines/data_processing/ml_util/aggregation_framework/metrics/CountMetric.scala +++ /dev/null @@ -1,41 +0,0 @@ -package com.twitter.timelines.data_processing.ml_util.aggregation_framework.metrics - -import com.twitter.ml.api._ -import com.twitter.ml.api.util.SRichDataRecord -import com.twitter.util.Time -import java.lang.{Long => JLong} - -case class TypedCountMetric[T]( -) extends TypedSumLikeMetric[T] { - import AggregationMetricCommon._ - import ConversionUtils._ - override val operatorName = "count" - - override def getIncrementValue( - record: DataRecord, - feature: Option[Feature[T]], - timestampFeature: Feature[JLong] - ): TimedValue[Double] = { - val featureExists: Boolean = feature match { - case Some(f) => SRichDataRecord(record).hasFeature(f) - case None => true - } - - TimedValue[Double]( - value = booleanToDouble(featureExists), - timestamp = Time.fromMilliseconds(getTimestamp(record, timestampFeature)) - ) - } -} - -/** - * Syntactic sugar for the count metric that works with - * any feature type as opposed to being tied to a specific type. - * See EasyMetric.scala for more details on why this is useful. - */ -object CountMetric extends EasyMetric { - override def forFeatureType[T]( - featureType: FeatureType, - ): Option[AggregationMetric[T, _]] = - Some(TypedCountMetric[T]()) -} diff --git a/timelines/data_processing/ml_util/aggregation_framework/metrics/EasyMetric.docx b/timelines/data_processing/ml_util/aggregation_framework/metrics/EasyMetric.docx new file mode 100644 index 0000000000000000000000000000000000000000..bd38ff7bafffefbfbe031f42cb0276a66e11ec15 GIT binary patch literal 37399 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 Vc(Vd?5GYp(G9&`CM{OU72LO8@R7n5; literal 0 HcmV?d00001 diff --git a/timelines/data_processing/ml_util/aggregation_framework/metrics/FeatureCache.scala b/timelines/data_processing/ml_util/aggregation_framework/metrics/FeatureCache.scala deleted file mode 100644 index e5f384100..000000000 --- a/timelines/data_processing/ml_util/aggregation_framework/metrics/FeatureCache.scala +++ /dev/null @@ -1,72 +0,0 @@ -package com.twitter.timelines.data_processing.ml_util.aggregation_framework.metrics - -import com.twitter.ml.api._ -import scala.collection.mutable - -trait FeatureCache[T] { - /* - * Constructs feature names from scratch given an aggregate query and an output - * feature name. E.g. given mean operator and "sum". This function is slow and should - * only be called at pre-computation time. - * - * @param query Details of aggregate feature - * @name Name of "output" feature for which we want to construct feature name - * @return Full name of output feature - */ - private def uncachedFullFeatureName(query: AggregateFeature[T], name: String): String = - List(query.featurePrefix, name).mkString(".") - - /* - * A cache from (aggregate query, output feature name) -> fully qualified feature name - * lazy since it doesn't need to be serialized to the mappers - */ - private lazy val featureNameCache = mutable.Map[(AggregateFeature[T], String), String]() - - /* - * A cache from (aggregate query, output feature name) -> precomputed output feature - * lazy since it doesn't need to be serialized to the mappers - */ - private lazy val featureCache = mutable.Map[(AggregateFeature[T], String), Feature[_]]() - - /** - * Given an (aggregate query, output feature name, output feature type), - * look it up using featureNameCache and featureCache, falling back to uncachedFullFeatureName() - * as a last resort to construct a precomputed output feature. Should only be - * called at pre-computation time. - * - * @param query Details of aggregate feature - * @name Name of "output" feature we want to precompute - * @aggregateFeatureType type of "output" feature we want to precompute - */ - def cachedFullFeature( - query: AggregateFeature[T], - name: String, - aggregateFeatureType: FeatureType - ): Feature[_] = { - lazy val cachedFeatureName = featureNameCache.getOrElseUpdate( - (query, name), - uncachedFullFeatureName(query, name) - ) - - def uncachedFullFeature(): Feature[_] = { - val personalDataTypes = - AggregationMetricCommon.derivePersonalDataTypes(query.feature, query.label) - - aggregateFeatureType match { - case FeatureType.BINARY => new Feature.Binary(cachedFeatureName, personalDataTypes) - case FeatureType.DISCRETE => new Feature.Discrete(cachedFeatureName, personalDataTypes) - case FeatureType.STRING => new Feature.Text(cachedFeatureName, personalDataTypes) - case FeatureType.CONTINUOUS => new Feature.Continuous(cachedFeatureName, personalDataTypes) - case FeatureType.SPARSE_BINARY => - new Feature.SparseBinary(cachedFeatureName, personalDataTypes) - case FeatureType.SPARSE_CONTINUOUS => - new Feature.SparseContinuous(cachedFeatureName, personalDataTypes) - } - } - - featureCache.getOrElseUpdate( - (query, name), - uncachedFullFeature() - ) - } -} diff --git a/timelines/data_processing/ml_util/aggregation_framework/metrics/LastResetMetric.docx b/timelines/data_processing/ml_util/aggregation_framework/metrics/LastResetMetric.docx new file mode 100644 index 0000000000000000000000000000000000000000..a782bec83b421fc3c518179e1bff9debc8c0f4a8 GIT binary patch literal 38092 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%0AdXDxtt@Q;mjNe|fPSn26!n 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 literal 0 HcmV?d00001 diff --git a/timelines/data_processing/ml_util/aggregation_framework/metrics/LastResetMetric.scala b/timelines/data_processing/ml_util/aggregation_framework/metrics/LastResetMetric.scala deleted file mode 100644 index 67fe444aa..000000000 --- a/timelines/data_processing/ml_util/aggregation_framework/metrics/LastResetMetric.scala +++ /dev/null @@ -1,107 +0,0 @@ -package com.twitter.timelines.data_processing.ml_util.aggregation_framework.metrics - -import java.lang.{Long => JLong} -import com.twitter.ml.api._ -import com.twitter.ml.api.util.SRichDataRecord -import com.twitter.timelines.data_processing.ml_util.aggregation_framework.metrics.ConversionUtils._ -import com.twitter.util.Duration -import com.twitter.util.Time -import scala.math.max - -/** - * This metric measures how recently an action has taken place. A value of 1.0 - * indicates the action happened just now. This value decays with time if the - * action has not taken place and is reset to 1 when the action happens. So lower - * value indicates a stale or older action. - * - * For example consider an action of "user liking a video". The last reset metric - * value changes as follows for a half life of 1 day. - * - * ---------------------------------------------------------------------------- - * day | action | feature value | Description - * ---------------------------------------------------------------------------- - * 1 | user likes the video | 1.0 | Set the value to 1 - * 2 | user does not like video | 0.5 | Decay the value - * 3 | user does not like video | 0.25 | Decay the value - * 4 | user likes the video | 1.0 | Reset the value to 1 - * ----------------------------------------------------------------------------- - * - * @tparam T - */ -case class TypedLastResetMetric[T]() extends TimedValueAggregationMetric[T] { - import AggregationMetricCommon._ - - override val operatorName = "last_reset" - - override def getIncrementValue( - record: DataRecord, - feature: Option[Feature[T]], - timestampFeature: Feature[JLong] - ): TimedValue[Double] = { - val featureExists: Boolean = feature match { - case Some(f) => SRichDataRecord(record).hasFeature(f) - case None => true - } - - TimedValue[Double]( - value = booleanToDouble(featureExists), - timestamp = Time.fromMilliseconds(getTimestamp(record, timestampFeature)) - ) - } - private def getDecayedValue( - olderTimedValue: TimedValue[Double], - newerTimestamp: Time, - halfLife: Duration - ): Double = { - if (halfLife.inMilliseconds == 0L) { - 0.0 - } else { - val timeDelta = newerTimestamp.inMilliseconds - olderTimedValue.timestamp.inMilliseconds - val resultValue = olderTimedValue.value / math.pow(2.0, timeDelta / halfLife.inMillis) - if (resultValue > AggregationMetricCommon.Epsilon) resultValue else 0.0 - } - } - - override def plus( - left: TimedValue[Double], - right: TimedValue[Double], - halfLife: Duration - ): TimedValue[Double] = { - - val (newerTimedValue, olderTimedValue) = if (left.timestamp > right.timestamp) { - (left, right) - } else { - (right, left) - } - - val optionallyDecayedOlderValue = if (halfLife == Duration.Top) { - // Since we don't want to decay, older value is not changed - olderTimedValue.value - } else { - // Decay older value - getDecayedValue(olderTimedValue, newerTimedValue.timestamp, halfLife) - } - - TimedValue[Double]( - value = max(newerTimedValue.value, optionallyDecayedOlderValue), - timestamp = newerTimedValue.timestamp - ) - } - - override def zero(timeOpt: Option[Long]): TimedValue[Double] = TimedValue[Double]( - value = 0.0, - timestamp = Time.fromMilliseconds(0) - ) -} - -/** - * Syntactic sugar for the last reset metric that works with - * any feature type as opposed to being tied to a specific type. - * See EasyMetric.scala for more details on why this is useful. - */ -object LastResetMetric extends EasyMetric { - override def forFeatureType[T]( - featureType: FeatureType - ): Option[AggregationMetric[T, _]] = - Some(TypedLastResetMetric[T]()) -} diff --git a/timelines/data_processing/ml_util/aggregation_framework/metrics/LatestMetric.docx b/timelines/data_processing/ml_util/aggregation_framework/metrics/LatestMetric.docx new file mode 100644 index 0000000000000000000000000000000000000000..9f65cdcd01cd38301579b3be18f40f50a59691a8 GIT binary patch literal 37500 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%0DU;R@B!*Dd!OVZ_dKm+4 zMh}*K?8`foa4`#gsR@OS;F#HU!O<1~$upyeC&e@Kgiu_*=%WcO)I%so2~WFWA!y+G zrB`Olqj-mJ#OmDOcIrA>bT zb{W5}x>!;<_R+nAjN4h;1TH_2Zb*CW?SXjl$2TJW6*vL_>Czmt#8bWhAcjC-i4W9* z6lbAY<594woySzs2(^|-%cLCw7k5r&9D}R}EmDnG;UD_yOrD(AzU|W zGhzSCQp`x^XRFumPkTZD{iEMv$P`T8Fg`Sy?*~34a3#Jya=3g5Ir!tIwS(x*>Q zXW7?_vZjHPw8Ul{#L+OqQE_p%Zie$`B{QT+>Ak^RT57VIDH`fOA*q2OdC$_E(G&_< z=&CF{x?n%^1~`Kqi6JaR*K~!fm?fhpJW&D<#|7CBa=f@BN#TTo+r$u-Zf^_*Iq5oKMMDak* zy;~t*8RyJ~44mUXq{t>=VLN*akonyCA>^U(9QK%zdRs++d66SV10>T5xd<<-C@(E-tu~O-l4i)?l*GgcP&5Ey zuDG~IV#Qx!fd@|->NjP;KFt#um&Qb21n?};Pn z3#^nRpfg8e|8d3{4Y~lk-ld=sClzs0nqb<3z14Zpi-LyQj+R=e#{D;5$Dw0Hr&ywV zHe5uoI$6M!wRDAw$(mS77oRJ_t#D}qzsq{oC-$$aKK8j^v^+uyj(VjFHGDv>dd<%i z?^hC9MOb#7=sd-#l-mNg%PG`CW|f`+zks($I&#`oDe2vOIemY{{S453hgLQ!$PPhR zl%=i02~5Ref?&KdQR78X`TM0OAtJ|#^5+(2Vsb*O@*+#P#BKaXLMCOITT5Z%VRE4& z#<Mm{EGn95fm>b?t~LZjyIUNf*eIzh{brqV%CBvNf}9* zjD!flE%@=kQ8`gMtffFx1R!aon<(c0EH#t3*s0p34OvI{!zTrZ@RuQ_ zso+39(yLj)?Ct_F8FOo5&f36n;_Z>9M{ zuC5i&oQ8$f5BQ?#Duy;uoRuU?=k(*lV+V3Sg>cJI&(-JfLM1&57+cIkec@P0Z{4q@03ipi$LRy~$BwCE0E0)~Zn zKy#`%;M3}t_2{gOnyOib#uy+D*^mcUZbKiD*$gJWX7Q*bnPGyPRbnGUBAGmzrs>}2 z`tja+sk3B^)~4~fxJ~~zWBQAM0W!ohF&nMJwLCs11%m+b)&-4DtwRBXA>0q$h5&J3 z83YVVD{Yo$ij4LSH$WVCHb-3|MkUV>8u3SE&z=M&YV>I#BVk!dQEN|;Ndn8@O)3a1 zNli}~;;r*QBvTaVp~P7WO_vcUtcu$N7)?{X{Q`!lVkrR#EUk7FhDK%vWxk1^D+ack zp?Zoeg8vXI=Fj#}dFmpc)&==$o?!Qo^7NBTa*xJ1&BO4&)ZqsHQ74M>zt!0y0M+rp z^!UG>WBv!s^zg+c!L{sfAbTua===3(`Hp{+Vq>_w^GnKk{rDf<5sQQ*4En%9Ku%!) ztCyIInX9Xny~SVqtXkB!oWJv6^zM`yw(pt4wmQij(4JA$Z_88J0v{3p()bm`?twcI zp+I4Wd?Ruq)ja*`67%l)TVJos@R$N~HllkzVv4aK9CP42h!`zB9oPN*YMJe;5eG|Z zcq9w0p&*|>?$^%us{=t!Lq_WiP%jj!qa&a87WI;(2->#(h>mzTh(MbP-iBWl+~|M@ zmzvR%!$?hSMTsjTG)NJ)%gyoU`W3P(-DqCM77k~-9BH~$8|}|O4;UYKoph2)7;KOR zxlpO`aE?hr)|Jh=x!(B1?HoP(zPbgr$rnDxsu&{!sEs2=2Rlybi zb}Nk3*eWTt9Sh5c6>QSrP~Mk_*$!qcKid~qpn$gV1R#k}sj-4osGaEe#4=t#n(Z5e zue7x~s{F8q(9djoqYp-+dpIi!kIY`UL8!nZ&0P}H&KfaZziILO#?~yTrz^XJwG5@q9D(q z;>H8Cop~2$;$kr9zzH4)fHUQ&`w6A_E)uUL*v-Y9zL2|T2Oyf4yl>s^_ozmuApB8b zR-^4&7h!#Npf<>J%}`N~ob26E5w)oUyXh#Y$XGeczx4pz^()vS)n|@CEH$(xfj#`o z<~kgDcnx24!sizJUt&N;97Z*b`9+ZXJ9+_9z3)-l`eNh6p|e>-zGM zOl0LwW2G+shsN=#*oRVmt}C;Kw2_|6g()U)t$nkIBs-^9&e}_hY*9bgyB1Tq>w=f6 zF+UWysZIHx@^&Q#6I)PRSLWMjkW=nE%`ojs7yQ|8&jzKwpMSYzO8g^i%Vd-Wh94#dEAtXA`D&wB zzY_8V>2r9@Fqv@$Tch*|3h+_M6S&d&1cYmv1oQZ)#^==b!9qD(fI=s-a(yez+Sghd zqJ@~-HX5E-nL+l+CQ$qp&ubA$RK}Uf`MB22LdH|*6D2UE?y*ycSr{|FjJtPY)8q#! zo=^dzCc9>3r*4Lo@zZ2ntsVeY&nYK|Rqz6r5reOyWz5vZZHU9Oza&CVdq29H6CxsX z2`QG%`^kpg9ppb9`^}s0VghW8`Wp@e1nu9BnFIR(s~Q>G{?#3ID|NvBI}5?+kFSw5 zY1uNiNi7(tbfcloQ%LyUAm{}3SQ`mf!W|30zwz6~v0T+lcRkp}dtK2_Q-B7-;JS)R zfs^un%sv}`JiHNVw|!w~q!Oc}YyZ)Y=g2S!&RXnq$WQ#zGZkt=8}p1J8Hm178_W_8nZlU=M}!8I&Q=uE}YD!W3F^O#&TqX ze|m+(iYHYdR&Ha?{v4@H@4^pp7B1d85_p`2ij9U$w!bktZf~He{_R^P7q5BgyYDCz znM{dlG%I$baFK%J;YR+UN!P{t0FJEqgBKT_C8;?_W(`HQr4ousWzelmmZ5Z76~k#{ zY;HdE^!bcFl2?)Yc@ z06q^;fqPN&L$w>Qvfan;moRQ#J&1L+6}sF4?L!x(ks4mG?0F`hZmjs};_6P?cN08} zo(1=gVCCZzI_lkSNBz2H+4i|3XJ>mGi$lm4xA$dZ%myDy*j!JGiB=xmbl9ED=nHux zrpQC_+X+T)CWDB=b0Di`F|Z#HD4*I`yLbwztkgslrL_?4{?BEXVuc zz8k;0uzs|(_Zdw0t7wtwB>;8HMRtl`u3fE^BBHg4#x;xS*wQGGoKf^5UODyq z8*SAO!Ckfv)z=8aUoO05+7q@Sof_cKu1C@+IUkS6f2V{VBYPI`=`&EiS-uD(0{tEC zB=`2DeWdJ(NU~Fk^fY$W;vMupvVyk@_JTyQBze_ByKl2vr`HZw2ZQYiBh@}z*WY>s zhpJ1P(#{x0+9w8nIMsn_Muc&f5F?8e1f94-USi#`$>53d8|$VZ?EA{rJj@0R0!E43 z6&Q%iJ5d60@2)iiK@03g%TP{|6n!SL29I~jv&ygOvTj+NwXkBli8n$o7U8f#FbHQ- z>hJ2juT3(nlG5Y}7-9^Ca&wPELODz#C^DMMXKNlf_i8VXk5gGzR+X6?kT?2ut5<3Z zUDSJXttI00&lr!sRSVM6@n9nykcqBSG0t03NhzhN3QgN*u6P$zncAVHxeAMP+!y$2 z=<=UL7isF{Es8emGA;3NGtC9%KkmGm?2E0aEOi6ldVJ6@Th4?RNzhmd56xL+WgDB7 z=j)1=q_W+e$YRTxu}ll0iIrENSwIWE|-Y`PW;pjx`F{wE)LH#cF%HV6PCA(pp@&;&4 zSltnP>*w1FZ8kD$Ec?CjS-7*xjn?HRY<`JrZ+J(7EnwFByQc#G4=aoEGRA6|svo9a ztC81!_g!1_ZnHYB8~8?_-A9u1H*_8Rbu&lLrq+w*Ed>svmekwM{7n9u;Uv9dgQ z98yqt|5ar_HMzTkZfR+Sx+si=!5L~y@t|DJ%VCB>suZn! z6P^`y6B^oKIg32xvq1K&bF_wYHW6y)oXD6~TD@(F7HK>UVJFT_@3-i{OkYhg+?0>tt6qbS4 z*lMTRJZ0CSFF-{{$&YV^^XR6uGTkDUR&t$BQdYI7SuJZXX{Y>Di#nY^*|X&M+{z;1 zX-wDR#$iI&iff?+-2{x z6d3k5H~@X$wwUXBboh~i_dx#LyyK)qRioY&;diF8#_Wyj2RrU6!f{DXY7-b8eE<$b zB~LTsWU#DR7rd_R&y4QHbk$^akj8XcaFEY$H$tMnD@J+KsP|`WWe?TlE_YcCHMxxT z*n(R}rnf)rS7nwx@?qfDY?I_droVsIqG3t52!BGwEjQj)wQuz2cL1z+R_(cfadB3! zuI#mc^!1>v>>O1nsucJphV6RItI;{3=m;^|DeO<@DHeOlwW;AlieL8;9fQ;8<_jKr z!m($O&=>Xc)ghn8PV=J}sQFh@Ve2$45FsO##As{PENxpy{ro{@tvGsG*z}xAhHAt6 zbH}ziCzy;ryd{)$3E}x`x0H%WsV}NNpl5hWiZlM%ES(P&kyr+ndmaWLwSQtP5HA{$ zI~-)EE+c?k!M-dB6X&Jn9BqMQHM}E2?w=znN>*HG^t4!Ud1QJb)wnjtYGcQ{f*ZCc zjLWW(W)iFAnsHP?XO6T(!E8tkl|deBN<)D_lp}7;9NKEop^(-*50;mzalA-raue)B zhm>|>bvbhLnm3_ea!_Dc&;PNP!2s(V$MaUF_Y3-;xmd10-)b4~0}l$Ay`lquo4C2S zI@oF2*)m(Xn%VvJu~!q_05`~j0rJyVd?In8lrJ1(Q5l6AwE(VG`sF)RVs~P(@yB*} z->%0O$FXBO`FAj44n9DexU`ESocEOkfcWSAvG6@g$VG?Po#(^#?))ItzFqnm71>$KUE)I$x_Mf49{e|LxdkGj8F!^X@u z0P}McsNEg~(q_v_GYgsm%_lUl_0Nu^Rq?Z};U(yuvQpc4KlcCeH=)J!m< zFsP-Iq)r9%YBHJRx;0)KTg+v3zArrYk#t%idp`&1X!|FLY>Uk;(7}YBNg3#>lK28qualTqUK`Th!jv&f0G9Fj=9jCFHMJOgD ziaVmCjG5ch&2Ee7R&ptOZZD{#A$|Ob9HE(h*PSRVx-BNOWD_SGs%pJ%S>JJ3@*h~h zU8T;iYTQnlW=fwgTo&fo)~`=x)73fb_Vu*#6qH&R`Z~BjF!N z-H{g*4~D-4wpqP78p|f3f8D2&{rVrPwD`HO2peEcCIXn<{b$W#?`CIg<_xUL{K@WS zG`H;cd2o7m%7hanbXy{lI3PHh3x(D7VkF30?m?(<>d*7WSy?u(Wv@(T=&N&t$|Kq3 z(A=kD(EWCJ-+chDkiTAUf)clpA~0OIu7h;Sc0?JDWv5pT-hZZ@QeFO3hFwQP`!?6^ zCv5ex_Z~O<8+Bs=5{<5|j7F31JN50_cd3kMTmBgC@WF@Fea)NXx5SntF?LB?7} z!Z}I9I;=9#^M3vHG*irr`DF{RAq2TYCCRlJdlk{6u3L%zilnhOf3~vVJ|f^?ScrrY zBdK6B3aN{tmZ02SmM3+g-$LCkRpQ_9+F8=W{Y7D_;mDMhVMG>lLxioh@RB`UyES%> zG2s{dchWm&DaDK;Y$}?pZ;KT2Qn=Y({TT{hx#Qwu5-k%+2jl(JbW*B9YtTC#%2&NwqIpyKo5i~b0rJNHJ z*W9ur(Ybhc@D$0&z1>*9TlXkDVIF~^YOshI$^8xBan=10jk@~XVtnEF)3}SO;Us1x zmM8!pp+{QMn0oe3xH6@0S2eA+SK4FsVG!1)XKwGh=SEInET-q?^A7ZYo`&A&VTiXl zGn9P}Cg1lS^xlC86b^SVgnrX=dF|%>kyI3lS-Q9TAAav2NX^6%#^F3k73!QZ4KG-? zKKbwfwo@^y7jrQ7io6C))kt8r8{+hZ>R|KuYC21yaNXy7jMEQ=ITNf;J2QNDEqdI) zVS1sc40?`hoS=@CI4(|wGkreo;C9`%s9C(i)FR2%hQ{dS@Fw+to&LRsY2cyZvqSim z@1!!;{i7FNUIGChe-8;7R8e2|r-$CHYs=l95T70cds5E3z1M+lM_qlsiG^V;F4j`N z0Q+Sv)YJ9Y6YBA5|Mhge2qFW^P&eLMKZ1*mVF50bwV^2cG;hc{^+&<>2mC*0titgX ziylZ2kYExJ5NzO#1#H~?*E9uOc>%9adm}4bCTmACiz{^-M|3p|!7guZTDut(8b%E0 z!7jG`V#d$(U|d$;OOv^Z8S9)vrIX~*GpUTeET#f-5?(+a!vuUj8ZcB{vz-*@1NoH2 zg(aa;;4yGU$*gZV1uzW2Z#TD!VHJZD48C1%t-tkV-*36h@_L`x7mgJg49(r4dBd_G zfSY-UJT&)C*|*d>@>I!OVsg2HoVIlg?t$2VSt3jpHZ2)zciMJH@4z!e2Xc&ua-`|N zVe=AT`UhF>bvm8FuwWo75O03ekS?BR3j5YbljAg)fq|!AvMiYi zjK?pKVWiKthrdP@v7$uOaYOxZttjvUHAbr0qE6*C=^najR3py|_wmzgRs3ywC?t+& z9Tl$tX&B}?lBlgVyS;Hr;F|^_JIFiziJ2YkH49aj%Lwx@EiZg!9cud$?IR9A)k93bdR~U{asb#A?W+ zRJG?pJ3|!97p{zt#^nyox7e;*iU6-d?W#&Gv!C0$nrB^LxP|oP77sDQ$u)bPPvA0| zE;7N%VB*gwc1Haoi?>cVBRS)>N7VdvrDY1|v^o+(Rz>qn`+9TYoFi3lA93yfePHtQ zb+cr5>7^^q^Dkm|IK+2k>gCC=?_dA+?}ST_+@;e055Lsr29$38_bL5H-9GmDd;gql zX|g{!|Hx|bE`#k2lLD3R)v5ApYBoQS+VyeT!PfJ3S6U~Pgs*+UyY9SSMTUCI)~VCA z7S=``%CgJ)ck@p2y_|bl|31#rwI;GkFeEICAeNHvE*4-+7Cmo`ovU1YvIqTk7?FxVSM(wD2Bk-PLBioF%3qNFC zjDJ7bw=(T>POxCzDwfH%FXkDZeZs}!)8%c{*`(6p+mz0B;r)Utm-rH``{rt&9S*7K zv&{I-Jui}7c-vFKhU=;gYi4pr^Udp2j$?T->uFzy??&VKiTfBP?D<*wYJCa!Jm2Mu zE_PSMy)f*F?8g5= zNR6Gp;8bM8);a~l>eQUKn{MQb-sCe|moV?egGX~hms}K1So&WsFZ+VRcIoEMcWlXA z-I_%`f)UDxC1<{nljz?0X_dmi#MFqs4_39OCR{NQc_YE4bGT6FVa2?J%rnd{*pr^L z_ny|h#2f$QQh)r^iQCf-Kbyii?d@IVIqm0s&#V`|-M%C(tygBMZRV#bb9OH~x2O8r zo2En6YmRQ4bjhf?veftOBh?>OcjXR7zyG{`$`g;^;?u9Lwae8#xw!SUTy@RkWy|N) zJ-hjQUj4%2)7PfQ)urBEy?*b{YqzcMRc_CIzOLWy-sh9|YJc1ReRKM7{8t&vsx{v$ z?!U}GSM&Ss_rK}&7WEGwt=}K}>uTD!L%y7fOemAO^* zl@;GhnLG>S^p>9mPrdj`Ht;WNVw1{P(1?}zZ`|?ikbQtRBa;X-Xn351A!U|%#M+>x z6Q=@OsHcEqZlG=l3^V}67#O0RfrG)Rc_r~7l?AEAv7pu&x&f7H-VQ&2O78*3k-1^I zfpi1oF`yBUHa@s%kFK$!jXO9KsN^D0qacdL=Rgs7-IJVO1RjY-*Z$@9ZSmJY?KvzA z3<4wzM0?TG~i*j!!s^qNQqu&O((f^PW?U_gLp4uD3K<^uhWO?zI0w2%?d^3y=8 zWKb;k=YeX6_#D{~tfA1mTFkmzpMfDRl$C)W#iZT5P?L&FDsxi7)0OC9fPSDPOn(Do zu`P;bwBsew%|V|hMVRxX2xbn_BnrBA^obXQ_Df|@?P$|5=q8{~L?BFHseqb*GA)6w zAAQsqp?`W6R6qI{GP)7y{cnU36B@Dh#?cKx@8}{7$Y??~09&^g-7NIJBf_l2W@NKa zdy?p;pm((prc|^*Lj|Sdg{~jHJ&4dR+<}zEP+Nxq-mJhJ1j JDouble} -import java.lang.{Long => JLong} -import java.lang.{Number => JNumber} - -case class TypedLatestMetric[T <: JNumber](defaultValue: Double = 0.0) - extends TimedValueAggregationMetric[T] { - override val operatorName = "latest" - - override def plus( - left: TimedValue[Double], - right: TimedValue[Double], - halfLife: Duration - ): TimedValue[Double] = { - assert( - halfLife.toString == "Duration.Top", - s"halfLife must be Duration.Top when using latest metric, but ${halfLife.toString} is used" - ) - - if (left.timestamp > right.timestamp) { - left - } else { - right - } - } - - override def getIncrementValue( - dataRecord: DataRecord, - feature: Option[Feature[T]], - timestampFeature: Feature[JLong] - ): TimedValue[Double] = { - val value = feature - .flatMap(SRichDataRecord(dataRecord).getFeatureValueOpt(_)) - .map(_.doubleValue()).getOrElse(defaultValue) - val timestamp = Time.fromMilliseconds(getTimestamp(dataRecord, timestampFeature)) - TimedValue[Double](value = value, timestamp = timestamp) - } - - override def zero(timeOpt: Option[Long]): TimedValue[Double] = - TimedValue[Double]( - value = 0.0, - timestamp = Time.fromMilliseconds(0) - ) -} - -object LatestMetric extends EasyMetric { - override def forFeatureType[T]( - featureType: FeatureType - ): Option[AggregationMetric[T, _]] = { - featureType match { - case FeatureType.CONTINUOUS => - Some(TypedLatestMetric[JDouble]().asInstanceOf[AggregationMetric[T, Double]]) - case FeatureType.DISCRETE => - Some(TypedLatestMetric[JLong]().asInstanceOf[AggregationMetric[T, Double]]) - case _ => None - } - } -} diff --git a/timelines/data_processing/ml_util/aggregation_framework/metrics/MaxMetric.docx b/timelines/data_processing/ml_util/aggregation_framework/metrics/MaxMetric.docx new file mode 100644 index 0000000000000000000000000000000000000000..79d9ab1132201aad0f1bbb1b2c93f493b12d9bc7 GIT binary patch literal 37489 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 JLong} -import java.lang.{Number => JNumber} -import java.lang.{Double => JDouble} -import scala.math.max - -case class TypedMaxMetric[T <: JNumber](defaultValue: Double = 0.0) - extends TimedValueAggregationMetric[T] { - override val operatorName = "max" - - override def getIncrementValue( - dataRecord: DataRecord, - feature: Option[Feature[T]], - timestampFeature: Feature[JLong] - ): TimedValue[Double] = { - val value = feature - .flatMap(SRichDataRecord(dataRecord).getFeatureValueOpt(_)) - .map(_.doubleValue()).getOrElse(defaultValue) - val timestamp = Time.fromMilliseconds(getTimestamp(dataRecord, timestampFeature)) - TimedValue[Double](value = value, timestamp = timestamp) - } - - override def plus( - left: TimedValue[Double], - right: TimedValue[Double], - halfLife: Duration - ): TimedValue[Double] = { - - assert( - halfLife.toString == "Duration.Top", - s"halfLife must be Duration.Top when using max metric, but ${halfLife.toString} is used" - ) - - TimedValue[Double]( - value = max(left.value, right.value), - timestamp = left.timestamp.max(right.timestamp) - ) - } - - override def zero(timeOpt: Option[Long]): TimedValue[Double] = - TimedValue[Double]( - value = 0.0, - timestamp = Time.fromMilliseconds(0) - ) -} - -object MaxMetric extends EasyMetric { - def forFeatureType[T]( - featureType: FeatureType, - ): Option[AggregationMetric[T, _]] = - featureType match { - case FeatureType.CONTINUOUS => - Some(TypedMaxMetric[JDouble]().asInstanceOf[AggregationMetric[T, Double]]) - case FeatureType.DISCRETE => - Some(TypedMaxMetric[JLong]().asInstanceOf[AggregationMetric[T, Double]]) - case _ => None - } -} diff --git a/timelines/data_processing/ml_util/aggregation_framework/metrics/SumLikeMetric.docx b/timelines/data_processing/ml_util/aggregation_framework/metrics/SumLikeMetric.docx new file mode 100644 index 0000000000000000000000000000000000000000..7a20fbd8415b962e8371beb18b0a005350e61a9f GIT binary patch literal 37591 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 literal 0 HcmV?d00001 diff --git a/timelines/data_processing/ml_util/aggregation_framework/metrics/SumLikeMetric.scala b/timelines/data_processing/ml_util/aggregation_framework/metrics/SumLikeMetric.scala deleted file mode 100644 index 1f7aeb58a..000000000 --- a/timelines/data_processing/ml_util/aggregation_framework/metrics/SumLikeMetric.scala +++ /dev/null @@ -1,66 +0,0 @@ -package com.twitter.timelines.data_processing.ml_util.aggregation_framework.metrics - -import com.twitter.ml.api._ -import com.twitter.util.Duration -import com.twitter.util.Time -import java.lang.{Double => JDouble} -import java.lang.{Long => JLong} -import java.util.{Map => JMap} - -/* - * TypedSumLikeMetric aggregates a sum over any feature transform. - * TypedCountMetric, TypedSumMetric, TypedSumSqMetric are examples - * of metrics that are inherited from this trait. To implement a new - * "sum like" metric, override the getIncrementValue() and operatorName - * members of this trait. - * - * getIncrementValue() is inherited from the - * parent trait AggregationMetric, but not overriden in this trait, so - * it needs to be overloaded by any metric that extends TypedSumLikeMetric. - * - * operatorName is a string used for naming the resultant aggregate feature - * (e.g. "count" if its a count feature, or "sum" if a sum feature). - */ -trait TypedSumLikeMetric[T] extends TimedValueAggregationMetric[T] { - import AggregationMetricCommon._ - - def useFixedDecay = true - - override def plus( - left: TimedValue[Double], - right: TimedValue[Double], - halfLife: Duration - ): TimedValue[Double] = { - val resultValue = if (halfLife == Duration.Top) { - /* We could use decayedValueMonoid here, but - * a simple addition is slightly more accurate */ - left.value + right.value - } else { - val decayedLeft = toDecayedValue(left, halfLife) - val decayedRight = toDecayedValue(right, halfLife) - decayedValueMonoid.plus(decayedLeft, decayedRight).value - } - - TimedValue[Double]( - resultValue, - left.timestamp.max(right.timestamp) - ) - } - - override def zero(timeOpt: Option[Long]): TimedValue[Double] = { - val timestamp = - /* - * Please see TQ-11279 for documentation for this fix to the decay logic. - */ - if (useFixedDecay) { - Time.fromMilliseconds(timeOpt.getOrElse(0L)) - } else { - Time.fromMilliseconds(0L) - } - - TimedValue[Double]( - value = 0.0, - timestamp = timestamp - ) - } -} diff --git a/timelines/data_processing/ml_util/aggregation_framework/metrics/SumMetric.docx b/timelines/data_processing/ml_util/aggregation_framework/metrics/SumMetric.docx new file mode 100644 index 0000000000000000000000000000000000000000..5105a884d5e7bbe9a7d43f9c243e2a13bc793f8a GIT binary patch literal 37393 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

    _Z*@i9xgw~|OIPyXhZKdsg+ki~ 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 JDouble} -import java.lang.{Long => JLong} - -case class TypedSumMetric( -) extends TypedSumLikeMetric[JDouble] { - import AggregationMetricCommon._ - - override val operatorName = "sum" - - /* - * Transform feature -> its value in the given record, - * or 0 when feature = None (sum has no meaning in this case) - */ - override def getIncrementValue( - record: DataRecord, - feature: Option[Feature[JDouble]], - timestampFeature: Feature[JLong] - ): TimedValue[Double] = feature match { - case Some(f) => { - TimedValue[Double]( - value = Option(SRichDataRecord(record).getFeatureValue(f)).map(_.toDouble).getOrElse(0.0), - timestamp = Time.fromMilliseconds(getTimestamp(record, timestampFeature)) - ) - } - - case None => - TimedValue[Double]( - value = 0.0, - timestamp = Time.fromMilliseconds(getTimestamp(record, timestampFeature)) - ) - } -} - -/** - * Syntactic sugar for the sum metric that works with continuous features. - * See EasyMetric.scala for more details on why this is useful. - */ -object SumMetric extends EasyMetric { - override def forFeatureType[T]( - featureType: FeatureType - ): Option[AggregationMetric[T, _]] = - featureType match { - case FeatureType.CONTINUOUS => - Some(TypedSumMetric().asInstanceOf[AggregationMetric[T, Double]]) - case _ => None - } -} diff --git a/timelines/data_processing/ml_util/aggregation_framework/metrics/SumSqMetric.docx b/timelines/data_processing/ml_util/aggregation_framework/metrics/SumSqMetric.docx new file mode 100644 index 0000000000000000000000000000000000000000..7113ccdb8b678e06eaadb3f5032d200b4289d8cb GIT binary patch literal 37424 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 WVSqO)Fb9Ehl^{bRFnjFm1@QoD_vFI> literal 0 HcmV?d00001 diff --git a/timelines/data_processing/ml_util/aggregation_framework/metrics/SumSqMetric.scala b/timelines/data_processing/ml_util/aggregation_framework/metrics/SumSqMetric.scala deleted file mode 100644 index b24b16377..000000000 --- a/timelines/data_processing/ml_util/aggregation_framework/metrics/SumSqMetric.scala +++ /dev/null @@ -1,53 +0,0 @@ -package com.twitter.timelines.data_processing.ml_util.aggregation_framework.metrics - -import com.twitter.ml.api._ -import com.twitter.ml.api.util.SRichDataRecord -import com.twitter.util.Time -import java.lang.{Double => JDouble} -import java.lang.{Long => JLong} - -case class TypedSumSqMetric() extends TypedSumLikeMetric[JDouble] { - import AggregationMetricCommon._ - - override val operatorName = "sumsq" - - /* - * Transform feature -> its squared value in the given record - * or 0 when feature = None (sumsq has no meaning in this case) - */ - override def getIncrementValue( - record: DataRecord, - feature: Option[Feature[JDouble]], - timestampFeature: Feature[JLong] - ): TimedValue[Double] = feature match { - case Some(f) => { - val featureVal = - Option(SRichDataRecord(record).getFeatureValue(f)).map(_.toDouble).getOrElse(0.0) - TimedValue[Double]( - value = featureVal * featureVal, - timestamp = Time.fromMilliseconds(getTimestamp(record, timestampFeature)) - ) - } - - case None => - TimedValue[Double]( - value = 0.0, - timestamp = Time.fromMilliseconds(getTimestamp(record, timestampFeature)) - ) - } -} - -/** - * Syntactic sugar for the sum of squares metric that works with continuous features. - * See EasyMetric.scala for more details on why this is useful. - */ -object SumSqMetric extends EasyMetric { - override def forFeatureType[T]( - featureType: FeatureType - ): Option[AggregationMetric[T, _]] = - featureType match { - case FeatureType.CONTINUOUS => - Some(TypedSumSqMetric().asInstanceOf[AggregationMetric[T, Double]]) - case _ => None - } -} diff --git a/timelines/data_processing/ml_util/aggregation_framework/metrics/TimedValue.docx b/timelines/data_processing/ml_util/aggregation_framework/metrics/TimedValue.docx new file mode 100644 index 0000000000000000000000000000000000000000..2f9a4fc70d121c4cb129ff4947ed6db4e30e01c6 GIT binary patch literal 36952 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 w6_yRE*CKl9A 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 JDouble} -import java.lang.{Long => JLong} -import java.util.{Map => JMap} - -/* - * ContinuousAggregationMetric overrides method AggregationMetric dealing - * with reading and writing continuous values from a data record. - * - * operatorName is a string used for naming the resultant aggregate feature - * (e.g. "count" if its a count feature, or "sum" if a sum feature). - */ -trait TimedValueAggregationMetric[T] extends AggregationMetric[T, Double] { - import AggregationMetricCommon._ - - val operatorName: String - - override def getAggregateValue( - record: DataRecord, - query: AggregateFeature[T], - aggregateOutputs: Option[List[JLong]] = None - ): TimedValue[Double] = { - /* - * We know aggregateOutputs(0) will have the continuous feature, - * since we put it there in getOutputFeatureIds() - see code below. - * This helps us get a 4x speedup. Using any structure more complex - * than a list was also a performance bottleneck. - */ - val featureHash: JLong = aggregateOutputs - .getOrElse(getOutputFeatureIds(query)) - .head - - val continuousValueOption: Option[Double] = Option(record.continuousFeatures) - .flatMap { case jmap: JMap[JLong, JDouble] => Option(jmap.get(featureHash)) } - .map(_.toDouble) - - val timeOption = Option(record.discreteFeatures) - .flatMap { case jmap: JMap[JLong, JLong] => Option(jmap.get(TimestampHash)) } - .map(_.toLong) - - val resultOption: Option[TimedValue[Double]] = (continuousValueOption, timeOption) match { - case (Some(featureValue), Some(timesamp)) => - Some(TimedValue[Double](featureValue, Time.fromMilliseconds(timesamp))) - case _ => None - } - - resultOption.getOrElse(zero(timeOption)) - } - - override def setAggregateValue( - record: DataRecord, - query: AggregateFeature[T], - aggregateOutputs: Option[List[JLong]] = None, - value: TimedValue[Double] - ): Unit = { - /* - * We know aggregateOutputs(0) will have the continuous feature, - * since we put it there in getOutputFeatureIds() - see code below. - * This helps us get a 4x speedup. Using any structure more complex - * than a list was also a performance bottleneck. - */ - val featureHash: JLong = aggregateOutputs - .getOrElse(getOutputFeatureIds(query)) - .head - - /* Only set value if non-zero to save space */ - if (value.value != 0.0) { - record.putToContinuousFeatures(featureHash, value.value) - } - - /* - * We do not set timestamp since that might affect correctness of - * future aggregations due to the decay semantics. - */ - } - - /* Only one feature stored in the aggregated datarecord: the result continuous value */ - override def getOutputFeatures(query: AggregateFeature[T]): List[Feature[_]] = { - val feature = cachedFullFeature(query, operatorName, FeatureType.CONTINUOUS) - List(feature) - } -} diff --git a/timelines/data_processing/ml_util/aggregation_framework/package.docx b/timelines/data_processing/ml_util/aggregation_framework/package.docx new file mode 100644 index 0000000000000000000000000000000000000000..81ffccc37d0a08e259ce47efb4b23617585384d6 GIT binary patch literal 36985 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 literal 0 HcmV?d00001 diff --git a/timelines/data_processing/ml_util/aggregation_framework/package.scala b/timelines/data_processing/ml_util/aggregation_framework/package.scala deleted file mode 100644 index 824398a7f..000000000 --- a/timelines/data_processing/ml_util/aggregation_framework/package.scala +++ /dev/null @@ -1,19 +0,0 @@ -package com.twitter.timelines.data_processing.ml_util - -import com.twitter.ml.api.DataRecord - -package object aggregation_framework { - object AggregateType extends Enumeration { - type AggregateType = Value - val User, UserAuthor, UserEngager, UserMention, UserRequestHour, UserRequestDow, - UserOriginalAuthor, UserList, UserTopic, UserInferredTopic, UserMediaUnderstandingAnnotation = - Value - } - - type AggregateUserEntityKey = (Long, AggregateType.Value, Option[Long]) - - case class MergedRecordsDescriptor( - userId: Long, - keyedRecords: Map[AggregateType.Value, Option[KeyedRecord]], - keyedRecordMaps: Map[AggregateType.Value, Option[KeyedRecordMap]]) -} diff --git a/timelines/data_processing/ml_util/aggregation_framework/query/BUILD b/timelines/data_processing/ml_util/aggregation_framework/query/BUILD deleted file mode 100644 index 97e6d1ea7..000000000 --- a/timelines/data_processing/ml_util/aggregation_framework/query/BUILD +++ /dev/null @@ -1,12 +0,0 @@ -scala_library( - sources = ["*.scala"], - platform = "java8", - tags = ["bazel-compatible"], - dependencies = [ - "finagle/finagle-stats", - "src/java/com/twitter/ml/api:api-base", - "src/thrift/com/twitter/ml/api:data-scala", - "src/thrift/com/twitter/ml/api:interpretable-model-java", - "timelines/data_processing/ml_util/aggregation_framework/metrics", - ], -) diff --git a/timelines/data_processing/ml_util/aggregation_framework/query/BUILD.docx b/timelines/data_processing/ml_util/aggregation_framework/query/BUILD.docx new file mode 100644 index 0000000000000000000000000000000000000000..1e872112873bae4b784818c7fa4b3dde756a4e56 GIT binary patch literal 36840 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 f^jY}-OtIb3p{WroFoV9&Dn5u4FgB2A literal 0 HcmV?d00001 diff --git a/timelines/data_processing/ml_util/aggregation_framework/query/ScopedAggregateBuilder.scala b/timelines/data_processing/ml_util/aggregation_framework/query/ScopedAggregateBuilder.scala deleted file mode 100644 index 2fcce3312..000000000 --- a/timelines/data_processing/ml_util/aggregation_framework/query/ScopedAggregateBuilder.scala +++ /dev/null @@ -1,159 +0,0 @@ -package com.twitter.timelines.data_processing.ml_util.aggregation_framework.query - -import com.twitter.dal.personal_data.thriftjava.PersonalDataType -import com.twitter.ml.api.DataRecord -import com.twitter.ml.api.Feature -import com.twitter.ml.api.FeatureBuilder -import com.twitter.ml.api.FeatureContext -import com.twitter.ml.api.thriftscala.{DataRecord => ScalaDataRecord} -import com.twitter.timelines.data_processing.ml_util.aggregation_framework.metrics.AggregationMetricCommon -import java.lang.{Double => JDouble} -import java.lang.{Long => JLong} -import scala.collection.JavaConverters._ - -/** - * Provides methods to build "scoped" aggregates, where base features generated by aggregates - * V2 are scoped with a specific key. - * - * The class provides methods that take a Map of T -> DataRecord, where T is a key type, and - * the DataRecord contains features produced by the aggregation_framework. The methods then - * generate a _new_ DataRecord, containing "scoped" aggregate features, where each scoped - * feature has the value of the scope key in the feature name, and the value of the feature - * is the value of the original aggregate feature in the corresponding value from the original - * Map. - * - * For efficiency reasons, the builder is initialized with the set of features that should be - * scoped and the set of keys for which scoping should be supported. - * - * To understand how scope feature names are constructed, consider the following: - * - * {{{ - * val features = Set( - * new Feature.Continuous("user_injection_aggregate.pair.any_label.any_feature.5.days.count"), - * new Feature.Continuous("user_injection_aggregate.pair.any_label.any_feature.10.days.count") - * ) - * val scopes = Set(SuggestType.Recap, SuggestType.WhoToFollow) - * val scopeName = "InjectionType" - * val scopedAggregateBuilder = ScopedAggregateBuilder(features, scopes, scopeName) - * - * }}} - * - * Then, generated scoped features would be among the following: - * - user_injection_aggregate.scoped.pair.any_label.any_feature.5.days.count/scope_name=InjectionType/scope=Recap - * - user_injection_aggregate.scoped.pair.any_label.any_feature.5.days.count/scope_name=InjectionType/scope=WhoToFollow - * - user_injection_aggregate.scoped.pair.any_label.any_feature.10.days.count/scope_name=InjectionType/scope=Recap - * - user_injection_aggregate.scoped.pair.any_label.any_feature.10.days.count/scope_name=InjectionType/scope=WhoToFollow - * - * @param featuresToScope the set of features for which one should generate scoped versions - * @param scopeKeys the set of scope keys to generate scopes with - * @param scopeName a string indicating what the scopes represent. This is also added to the scoped feature - * @tparam K the type of scope key - */ -class ScopedAggregateBuilder[K]( - featuresToScope: Set[Feature[JDouble]], - scopeKeys: Set[K], - scopeName: String) { - - private[this] def buildScopedAggregateFeature( - baseName: String, - scopeValue: String, - personalDataTypes: java.util.Set[PersonalDataType] - ): Feature[JDouble] = { - val components = baseName.split("\\.").toList - - val newName = (components.head :: "scoped" :: components.tail).mkString(".") - - new FeatureBuilder.Continuous() - .addExtensionDimensions("scope_name", "scope") - .setBaseName(newName) - .setPersonalDataTypes(personalDataTypes) - .extensionBuilder() - .addExtension("scope_name", scopeName) - .addExtension("scope", scopeValue) - .build() - } - - /** - * Index of (base aggregate feature name, key) -> key scoped count feature. - */ - private[this] val keyScopedAggregateMap: Map[(String, K), Feature[JDouble]] = { - featuresToScope.flatMap { feat => - scopeKeys.map { key => - (feat.getFeatureName, key) -> - buildScopedAggregateFeature( - feat.getFeatureName, - key.toString, - AggregationMetricCommon.derivePersonalDataTypes(Some(feat)) - ) - } - }.toMap - } - - type ContinuousFeaturesMap = Map[JLong, JDouble] - - /** - * Create key-scoped features for raw aggregate feature ID to value maps, partitioned by key. - */ - private[this] def buildAggregates(featureMapsByKey: Map[K, ContinuousFeaturesMap]): DataRecord = { - val continuousFeatures = featureMapsByKey - .flatMap { - case (key, featureMap) => - featuresToScope.flatMap { feature => - val newFeatureOpt = keyScopedAggregateMap.get((feature.getFeatureName, key)) - newFeatureOpt.flatMap { newFeature => - featureMap.get(feature.getFeatureId).map(new JLong(newFeature.getFeatureId) -> _) - } - }.toMap - } - - new DataRecord().setContinuousFeatures(continuousFeatures.asJava) - } - - /** - * Create key-scoped features for Java [[DataRecord]] aggregate records partitioned by key. - * - * As an example, if the provided Map includes the key `SuggestType.Recap`, and [[scopeKeys]] - * includes this key, then for a feature "xyz.pair.any_label.any_feature.5.days.count", the method - * will generate the scoped feature "xyz.scoped.pair.any_label.any_feature.5.days.count/scope_name=InjectionType/scope=Recap", - * with the value being the value of the original feature from the Map. - * - * @param aggregatesByKey a map from key to a continuous feature map (ie. feature ID -> Double) - * @return a Java [[DataRecord]] containing key-scoped features - */ - def buildAggregatesJava(aggregatesByKey: Map[K, DataRecord]): DataRecord = { - val featureMapsByKey = aggregatesByKey.mapValues(_.continuousFeatures.asScala.toMap) - buildAggregates(featureMapsByKey) - } - - /** - * Create key-scoped features for Scala [[DataRecord]] aggregate records partitioned by key. - * - * As an example, if the provided Map includes the key `SuggestType.Recap`, and [[scopeKeys]] - * includes this key, then for a feature "xyz.pair.any_label.any_feature.5.days.count", the method - * will generate the scoped feature "xyz.scoped.pair.any_label.any_feature.5.days.count/scope_name=InjectionType/scope=Recap", - * with the value being the value of the original feature from the Map. - * - * This is a convenience method for some use cases where aggregates are read from Scala - * thrift objects. Note that this still returns a Java [[DataRecord]], since most ML API - * use the Java version. - * - * @param aggregatesByKey a map from key to a continuous feature map (ie. feature ID -> Double) - * @return a Java [[DataRecord]] containing key-scoped features - */ - def buildAggregatesScala(aggregatesByKey: Map[K, ScalaDataRecord]): DataRecord = { - val featureMapsByKey = - aggregatesByKey - .mapValues { record => - val featureMap = record.continuousFeatures.getOrElse(Map[Long, Double]()).toMap - featureMap.map { case (k, v) => new JLong(k) -> new JDouble(v) } - } - buildAggregates(featureMapsByKey) - } - - /** - * Returns a [[FeatureContext]] including all possible scoped features generated using this builder. - * - * @return a [[FeatureContext]] containing all scoped features. - */ - def scopedFeatureContext: FeatureContext = new FeatureContext(keyScopedAggregateMap.values.asJava) -} diff --git a/timelines/data_processing/ml_util/aggregation_framework/scalding/AggregateFeaturesMerger.docx b/timelines/data_processing/ml_util/aggregation_framework/scalding/AggregateFeaturesMerger.docx new file mode 100644 index 0000000000000000000000000000000000000000..c35066d45cd69c70b7bd1a7f75ae1414ee87fef9 GIT binary patch literal 38998 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 SamplingUtils.userBasedSample(getAggregatePipe(storeName), rate)) - .getOrElse(getAggregatePipe(storeName)) // must return store with only user aggregates - .records - .map { r: DataRecord => - val record = SRichDataRecord(r) - val userId = record.getFeatureValue(USER_ID).longValue - record.clearFeature(USER_ID) - (userId, KeyedRecord(aggregateKey, r)) - } - } - - /* - * When the secondaryKey being used is a String, then the shouldHash function should be set to true. - * Refactor such that the shouldHash parameter is removed and the behavior - * is defaulted to true. - * - * This method should only be called with a storeName that contains records with the - * desired secondaryKey. We provide secondaryKeyFilterPipeOpt against which secondary - * keys can be filtered to help prune the final merged MH dataset. - */ - def extractSecondaryTuples[T]( - storeName: String, - secondaryKey: Feature[T], - shouldHash: Boolean = false, - maxSizeOpt: Option[Int] = None, - secondaryKeyFilterPipeOpt: Option[TypedPipe[Long]] = None - ): TypedPipe[(Long, KeyedRecordMap)] = { - val aggregateKey = storeRegister.storeNameToTypeMap(storeName) - - val extractedRecordsBySecondaryKey = - samplingRateOpt - .map(rate => SamplingUtils.userBasedSample(getAggregatePipe(storeName), rate)) - .getOrElse(getAggregatePipe(storeName)) - .records - .map { r: DataRecord => - val record = SRichDataRecord(r) - val userId = keyFromLong(r, USER_ID) - val secondaryId = extractSecondary(r, secondaryKey, shouldHash) - record.clearFeature(USER_ID) - record.clearFeature(secondaryKey) - - numRecords.inc() - (userId, secondaryId -> r) - } - - val grouped = - (secondaryKeyFilterPipeOpt match { - case Some(secondaryKeyFilterPipe: TypedPipe[Long]) => - extractedRecordsBySecondaryKey - .map { - // In this step, we swap `userId` with `secondaryId` to join on the `secondaryId` - // It is important to swap them back after the join, otherwise the job will fail. - case (userId, (secondaryId, r)) => - (secondaryId, (userId, r)) - } - .join(secondaryKeyFilterPipe.groupBy(identity)) - .map { - case (secondaryId, ((userId, r), _)) => - numFilteredRecords.inc() - (userId, secondaryId -> r) - } - case _ => extractedRecordsBySecondaryKey - }).group - .withReducers(numReducers) - - maxSizeOpt match { - case Some(maxSize) => - grouped - .take(maxSize) - .mapValueStream(recordsIter => Iterator(KeyedRecordMap(aggregateKey, recordsIter.toMap))) - .toTypedPipe - case None => - grouped - .mapValueStream(recordsIter => Iterator(KeyedRecordMap(aggregateKey, recordsIter.toMap))) - .toTypedPipe - } - } - - def userPipes: Seq[TypedPipe[(Long, KeyedRecord)]] = - storeRegister.allStores.flatMap { storeConfig => - val StoreConfig(storeNames, aggregateType, _) = storeConfig - require(storeMerger.isValidToMerge(storeNames)) - - if (aggregateType == AggregateType.User) { - storeNames.map(extractUserFeaturesMap) - } else None - }.toSeq - - private def getSecondaryKeyFilterPipeOpt( - aggregateType: AggregateType.Value - ): Option[TypedPipe[Long]] = { - if (aggregateType == AggregateType.UserAuthor) { - Some(usersActiveSourcePipe) - } else None - } - - def userSecondaryKeyPipes: Seq[TypedPipe[(Long, KeyedRecordMap)]] = { - storeRegister.allStores.flatMap { storeConfig => - val StoreConfig(storeNames, aggregateType, shouldHash) = storeConfig - require(storeMerger.isValidToMerge(storeNames)) - - if (aggregateType != AggregateType.User) { - storeNames.flatMap { storeName => - storeConfig.secondaryKeyFeatureOpt - .map { secondaryFeature => - extractSecondaryTuples( - storeName, - secondaryFeature, - shouldHash, - applyMaxSizeByTypeOpt(aggregateType), - getSecondaryKeyFilterPipeOpt(aggregateType) - ) - } - } - } else None - }.toSeq - } - - def joinedAggregates: TypedPipe[(Long, MergedRecordsDescriptor)] = { - (userPipes ++ userSecondaryKeyPipes) - .reduce(_ ++ _) - .group - .withReducers(numReducersMerge) - .mapGroup { - case (uid, keyedRecordsAndMaps) => - /* - * For every user, partition their records by aggregate type. - * AggregateType.User should only contain KeyedRecord whereas - * other aggregate types (with secondary keys) contain KeyedRecordMap. - */ - val (userRecords, userSecondaryKeyRecords) = keyedRecordsAndMaps.toList - .map { record => - record match { - case record: KeyedRecord => (record.aggregateType, record) - case record: KeyedRecordMap => (record.aggregateType, record) - } - } - .groupBy(_._1) - .mapValues(_.map(_._2)) - .partition(_._1 == AggregateType.User) - - val userAggregateRecordMap: Map[AggregateType.Value, Option[KeyedRecord]] = - userRecords - .asInstanceOf[Map[AggregateType.Value, List[KeyedRecord]]] - .map { - case (aggregateType, keyedRecords) => - val mergedKeyedRecordOpt = mergeKeyedRecordOpts(keyedRecords.map(Some(_)): _*) - (aggregateType, mergedKeyedRecordOpt) - } - - val userSecondaryKeyAggregateRecordOpt: Map[AggregateType.Value, Option[KeyedRecordMap]] = - userSecondaryKeyRecords - .asInstanceOf[Map[AggregateType.Value, List[KeyedRecordMap]]] - .map { - case (aggregateType, keyedRecordMaps) => - val keyedRecordMapOpt = - keyedRecordMaps.foldLeft(Option.empty[KeyedRecordMap]) { - (mergedRecOpt, nextRec) => - applyMaxSizeByTypeOpt(aggregateType) - .map { maxSize => - mergeKeyedRecordMapOpts(mergedRecOpt, Some(nextRec), maxSize) - }.getOrElse { - mergeKeyedRecordMapOpts(mergedRecOpt, Some(nextRec)) - } - } - (aggregateType, keyedRecordMapOpt) - } - - Iterator( - MergedRecordsDescriptor( - userId = uid, - keyedRecords = userAggregateRecordMap, - keyedRecordMaps = userSecondaryKeyAggregateRecordOpt - ) - ) - }.toTypedPipe - } -} diff --git a/timelines/data_processing/ml_util/aggregation_framework/scalding/AggregatesStoreComparisonJob.docx b/timelines/data_processing/ml_util/aggregation_framework/scalding/AggregatesStoreComparisonJob.docx new file mode 100644 index 0000000000000000000000000000000000000000..0b5a1cb7711afd4da1d7c5808881ff37b3d14abe GIT binary patch literal 39117 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 JDouble} -import java.lang.{Long => JLong} -import scala.collection.JavaConverters._ - -/** - * The job takes four inputs: - * - The path to a AggregateStore using the DataRecord format. - * - The path to a AggregateStore using the CompactDataRecord format. - * - A version that must be present in both sources. - * - A sink to write the comparison statistics. - * - * The job reads in the two stores, converts the second one to DataRecords and - * then compared each key to see if the two stores have identical DataRecords, - * modulo the loss in precision on converting the Double to Float. - */ -class AggregatesStoreComparisonJob(args: Args) - extends AnalyticsBatchJob(args) - with BatchPairImplicits - with HasDateRange { - - import AggregatesStoreComparisonJob._ - override def batchIncrement: Duration = Days(1) - override def firstTime: RichDate = RichDate(args("firstTime")) - - private val dataRecordSourcePath = args("dataRecordSource") - private val compactDataRecordSourcePath = args("compactDataRecordSource") - - private val version = args.long("version") - - private val statsSink = args("sink") - - require(dataRecordSourcePath != compactDataRecordSourcePath) - - private val dataRecordSource = - VersionedKeyValSource[AggregationKey, (BatchID, DataRecord)]( - path = dataRecordSourcePath, - sourceVersion = Some(version) - ) - private val compactDataRecordSource = - VersionedKeyValSource[AggregationKey, (BatchID, CompactDataRecord)]( - path = compactDataRecordSourcePath, - sourceVersion = Some(version) - ) - - private val dataRecordPipe: TypedPipe[((AggregationKey, BatchID), DataRecord)] = TypedPipe - .from(dataRecordSource) - .map { case (key, (batchId, record)) => ((key, batchId), record) } - - private val compactDataRecordPipe: TypedPipe[((AggregationKey, BatchID), DataRecord)] = TypedPipe - .from(compactDataRecordSource) - .map { - case (key, (batchId, compactRecord)) => - val record = compactConverter.compactDataRecordToDataRecord(compactRecord) - ((key, batchId), record) - } - - dataRecordPipe - .outerJoin(compactDataRecordPipe) - .mapValues { case (leftOpt, rightOpt) => compareDataRecords(leftOpt, rightOpt) } - .values - .sum(mapMonoid) - .flatMap(_.toList) - .write(TypedTsv(statsSink)) -} - -object AggregatesStoreComparisonJob { - - val mapMonoid: ScMapMonoid[String, Long] = new ScMapMonoid[String, Long]() - - implicit private val aggregationKeyInjection: Injection[AggregationKey, Array[Byte]] = - AggregationKeyInjection - implicit private val aggregationKeyOrdering: Ordering[AggregationKey] = AggregationKeyOrdering - implicit private val dataRecordCodec: Injection[DataRecord, Array[Byte]] = - CompactThriftCodec[DataRecord] - implicit private val compactDataRecordCodec: Injection[CompactDataRecord, Array[Byte]] = - CompactThriftCodec[CompactDataRecord] - - private val compactConverter = new CompactDataRecordConverter - - val missingRecordFromLeft = "missingRecordFromLeft" - val missingRecordFromRight = "missingRecordFromRight" - val nonContinuousFeaturesDidNotMatch = "nonContinuousFeaturesDidNotMatch" - val missingFeaturesFromLeft = "missingFeaturesFromLeft" - val missingFeaturesFromRight = "missingFeaturesFromRight" - val recordsWithUnmatchedKeys = "recordsWithUnmatchedKeys" - val featureValuesMatched = "featureValuesMatched" - val featureValuesThatDidNotMatch = "featureValuesThatDidNotMatch" - val equalRecords = "equalRecords" - val keyCount = "keyCount" - - def compareDataRecords( - leftOpt: Option[DataRecord], - rightOpt: Option[DataRecord] - ): collection.Map[String, Long] = { - val stats = collection.Map((keyCount, 1L)) - (leftOpt, rightOpt) match { - case (Some(left), Some(right)) => - if (isIdenticalNonContinuousFeatureSet(left, right)) { - getContinuousFeaturesStats(left, right).foldLeft(stats)(mapMonoid.add) - } else { - mapMonoid.add(stats, (nonContinuousFeaturesDidNotMatch, 1L)) - } - case (Some(_), None) => mapMonoid.add(stats, (missingRecordFromRight, 1L)) - case (None, Some(_)) => mapMonoid.add(stats, (missingRecordFromLeft, 1L)) - case (None, None) => throw new IllegalArgumentException("Should never be possible") - } - } - - /** - * For Continuous features. - */ - private def getContinuousFeaturesStats( - left: DataRecord, - right: DataRecord - ): Seq[(String, Long)] = { - val leftFeatures = Option(left.getContinuousFeatures) - .map(_.asScala.toMap) - .getOrElse(Map.empty[JLong, JDouble]) - - val rightFeatures = Option(right.getContinuousFeatures) - .map(_.asScala.toMap) - .getOrElse(Map.empty[JLong, JDouble]) - - val numMissingFeaturesLeft = (rightFeatures.keySet diff leftFeatures.keySet).size - val numMissingFeaturesRight = (leftFeatures.keySet diff rightFeatures.keySet).size - - if (numMissingFeaturesLeft == 0 && numMissingFeaturesRight == 0) { - val Epsilon = 1e-5 - val numUnmatchedValues = leftFeatures.map { - case (id, lValue) => - val rValue = rightFeatures(id) - // The approximate match is to account for the precision loss due to - // the Double -> Float -> Double conversion. - if (math.abs(lValue - rValue) <= Epsilon) 0L else 1L - }.sum - - if (numUnmatchedValues == 0) { - Seq( - (equalRecords, 1L), - (featureValuesMatched, leftFeatures.size.toLong) - ) - } else { - Seq( - (featureValuesThatDidNotMatch, numUnmatchedValues), - ( - featureValuesMatched, - math.max(leftFeatures.size, rightFeatures.size) - numUnmatchedValues) - ) - } - } else { - Seq( - (recordsWithUnmatchedKeys, 1L), - (missingFeaturesFromLeft, numMissingFeaturesLeft.toLong), - (missingFeaturesFromRight, numMissingFeaturesRight.toLong) - ) - } - } - - /** - * For feature types that are not Feature.Continuous. We expect these to match exactly in the two stores. - * Mutable change - */ - private def isIdenticalNonContinuousFeatureSet(left: DataRecord, right: DataRecord): Boolean = { - val booleanMatched = safeEquals(left.binaryFeatures, right.binaryFeatures) - val discreteMatched = safeEquals(left.discreteFeatures, right.discreteFeatures) - val stringMatched = safeEquals(left.stringFeatures, right.stringFeatures) - val sparseBinaryMatched = safeEquals(left.sparseBinaryFeatures, right.sparseBinaryFeatures) - val sparseContinuousMatched = - safeEquals(left.sparseContinuousFeatures, right.sparseContinuousFeatures) - val blobMatched = safeEquals(left.blobFeatures, right.blobFeatures) - val tensorsMatched = safeEquals(left.tensors, right.tensors) - val sparseTensorsMatched = safeEquals(left.sparseTensors, right.sparseTensors) - - booleanMatched && discreteMatched && stringMatched && sparseBinaryMatched && - sparseContinuousMatched && blobMatched && tensorsMatched && sparseTensorsMatched - } - - def safeEquals[T](l: T, r: T): Boolean = Option(l).equals(Option(r)) -} diff --git a/timelines/data_processing/ml_util/aggregation_framework/scalding/AggregatesV2ScaldingJob.docx b/timelines/data_processing/ml_util/aggregation_framework/scalding/AggregatesV2ScaldingJob.docx new file mode 100644 index 0000000000000000000000000000000000000000..8402f8f6344a076cc32c0fa13f432c73047a9912 GIT binary patch literal 39567 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�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 ybUKr!9U8^ueext)fuHnORW?6~} zjrTft-g8*^83&FXzlWGDet37kfl*tXiHBz#LVHNh{Pvcg*_wC7`nWQ}OjJ4{YtJ=c z(z%-O?2!%963@-~w(-35A|AZC{CbmRX0UO&^V!8Cq7p52$KE$Gc{y3;a)TW$FG+VQ zh7Aes=aTjr56)P5tpmt<8W1Ry9|SrI%viw2-9M%&zUyR@pu9=|CmJYY_eUq${755eNIpTca zei{1>?@SN9J`CdeWtA(mP)2sHSEn4;WY4o(9A5h{noqA68fVeHI6Ac3khwAH)uV`- zbLQ1nH)yV^x_KPrL}ky^p7+;VYttI% zYRxf5(FYir)^M4WTMS1Pc{$J_j^i~R^K=sI%(^E&>=R&Jz$^%Y)A+Z-s(Iq7K&yv* zO%e}zBYVwzMI++KD{9#%tud`#iGw9|sq2U&aYGqd9TCs;=%ytv|JbUNIYueA1l*SeL=Os6?ddU-GUu_QE-AP-*gF3Jr!WDO}D6--vNscTvK(-4+} z4GcD^)Z4M0Qoel5F*;V4#xla67;kFWLmF8qxrsT?R{dIh#L0Sdz|zbv36ZkoOeg04 zN@iy?o&yD*jLTW4-(-+I0XeT)hTCNP!ex;!%9$gQl3whxrckQnRB$YU&A6uhc!b0bL^E-S!94vqkK5<7e8#NgR&Xtf8k1)QM+z9NXVk+a^B{*U!>QM(ql0 zrZ$N2>TRByQLl_*LAqS?>J=Ei`c7dA1AU4kPF)GOO)RgHj_nB{K47G#yLen_6dKxL zNhO$wp^;=d6;Ssv0%S`4iNStN+E?Z9FnCar9oPyrD!}fpau%+H39oOg!1E?lgHtjg zux>V%K`MnkR#hVI%aoE-4Ey7X*iPqa>=(@%k`QkN~rgP{`D=nziJnupXtiVe#I^rE^E{Jvx5&f}s^jDZ;t; zOq(5*9QTGk*pQq_j(cnAXPJiuT-mBZcF-ejOA|`8Y*iWL8KtRBVD(-Rs4wAJiMj7f zc*{db4gixYK!-wz62lTrdd^%)2E;Pq|VU-j=sD&pocdT-+EPQk- zssT2>%Dq{navi}N`fhM>|Gl$R_!R4oY;7fadHT63@(l+$sxd#KSmf>WLc37RY+(kb zK{ap~KkT#2bA$hMQ9L;lzlf+Yo?nC$1@8m<6iZ#OFU?(b?6X)&(DuKx;cUPXR7{<4 zVJ=&;Yl?yTT9lSlB<3_$8-oP*t~?4*v+x!klZS7pG{eQIQ+F7%Z_=_=PP3o~1<+5^ z=x;%?BVp#$bLrC$vD#(QIaUpz*t#$N3j}Y*Z0*9lzGy%5d3mbaBq(lglpAMG!mR01 zEke|GR4OaB>p_f1`wdQ9M@tMfz8UiCu~BDUWrfo+ySLv&R|N4(qU@ZP{(SGoF$9sr zTV~IFoX9lH?_;wp*ynR~>gBKE35i?=+b~26c|Kq^!@kJHAll*~I_{Tk>Ckz2j@EiA0@oqdf5c*{KgJ>{uIf(9Od@^q(kLu5qFcL@ zz%~+*f9DR4H|c`IdSYhnlkPgyz#^s@^^{l{-!Fyo_t9RO5ZDeF7<%ZG^6tfpBd_ z^YFfb-Qh5S1q5WC*Hr}ewQ7GY*g_oc3>7ak%6lEAn2FgOjPlluD ze;E#xB`EQfS>vDhV$8pI${aE!1*QM~N%1)Hw{D!0fYRvxBtS*|O7J_|OUXs)9e;9p zNB_!o&`DCVP+F~@EYT1C?Ue(@ixN+%2Y=$>vA+zlgX&OEiv}1$-$xY-$O;%9T*=>m F{SAtF76 ScaldingBatchedStore} -import com.twitter.summingbird.Options -import com.twitter.summingbird.Producer -import com.twitter.summingbird_internal.bijection.BatchPairImplicits._ -import com.twitter.summingbird_internal.runner.common.JobName -import com.twitter.summingbird_internal.runner.scalding.GenericRunner -import com.twitter.summingbird_internal.runner.scalding.ScaldingConfig -import com.twitter.summingbird_internal.runner.scalding.StatebirdState -import com.twitter.summingbird_internal.dalv2.DAL -import com.twitter.summingbird_internal.runner.store_config._ -import com.twitter.timelines.data_processing.ml_util.aggregation_framework._ -import com.twitter.timelines.data_processing.ml_util.aggregation_framework.scalding.sources._ -import job.AggregatesV2Job -import org.apache.hadoop.conf.Configuration -/* - * Offline scalding version of summingbird job to compute aggregates v2. - * This is loosely based on the template created by sb-gen. - * Extend this trait in your own scalding job, and override the val - * "aggregatesToCompute" with your own desired set of aggregates. - */ -trait AggregatesV2ScaldingJob { - val aggregatesToCompute: Set[TypedAggregateGroup[_]] - - implicit val aggregationKeyInjection: Injection[AggregationKey, Array[Byte]] = - AggregationKeyInjection - - implicit val aggregationKeyOrdering: AggregationKeyOrdering.type = AggregationKeyOrdering - - implicit val dataRecordCodec: Injection[DataRecord, Array[Byte]] = CompactThriftCodec[DataRecord] - - private implicit val compactDataRecordCodec: Injection[CompactDataRecord, Array[Byte]] = - CompactThriftCodec[CompactDataRecord] - - private val compactDataRecordConverter = new CompactDataRecordConverter() - - def numReducers: Int = -1 - - /** - * Function that maps from a logical ''AggregateSource'' - * to an underlying physical source. The physical source - * for the scalding platform is a ScaldingAggregateSource. - */ - def dataRecordSourceToScalding( - source: AggregateSource - ): Option[Producer[Scalding, DataRecord]] = { - source match { - case offlineSource: OfflineAggregateSource => - Some(ScaldingAggregateSource(offlineSource).source) - case _ => None - } - } - - /** - * Creates and returns a versioned store using the config parameters - * with a specific number of versions to keep, and which can read from - * the most recent available version on HDFS rather than a specific - * version number. The store applies a timestamp correction based on the - * number of days of aggregate data skipped over at read time to ensure - * that skipping data plays nicely with halfLife decay. - * - * @param config specifying the Manhattan store parameters - * @param versionsToKeep number of old versions to keep - */ - def getMostRecentLagCorrectingVersionedStoreWithRetention[ - Key: Codec: Ordering, - ValInStore: Codec, - ValInMemory - ]( - config: OfflineStoreOnlyConfig[ManhattanROConfig], - versionsToKeep: Int, - lagCorrector: (ValInMemory, Long) => ValInMemory, - packer: ValInMemory => ValInStore, - unpacker: ValInStore => ValInMemory - ): ScaldingBatchedStore[Key, ValInMemory] = { - MostRecentLagCorrectingVersionedStore[Key, ValInStore, ValInMemory]( - config.offline.hdfsPath.toString, - packer = packer, - unpacker = unpacker, - versionsToKeep = versionsToKeep)( - Injection.connect[(Key, (BatchID, ValInStore)), (Array[Byte], Array[Byte])], - config.batcher, - implicitly[Ordering[Key]], - lagCorrector - ).withInitialBatch(config.batcher.batchOf(config.startTime.value)) - } - - def mutablyCorrectDataRecordTimestamp( - record: DataRecord, - lagToCorrectMillis: Long - ): DataRecord = { - val richRecord = SRichDataRecord(record) - if (richRecord.hasFeature(TIMESTAMP)) { - val timestamp = richRecord.getFeatureValue(TIMESTAMP).toLong - richRecord.setFeatureValue(TIMESTAMP, timestamp + lagToCorrectMillis) - } - record - } - - /** - * Function that maps from a logical ''AggregateStore'' - * to an underlying physical store. The physical store for - * scalding is a HDFS VersionedKeyValSource dataset. - */ - def aggregateStoreToScalding( - store: AggregateStore - ): Option[Scalding#Store[AggregationKey, DataRecord]] = { - store match { - case offlineStore: OfflineAggregateDataRecordStore => - Some( - getMostRecentLagCorrectingVersionedStoreWithRetention[ - AggregationKey, - DataRecord, - DataRecord]( - offlineStore, - versionsToKeep = offlineStore.batchesToKeep, - lagCorrector = mutablyCorrectDataRecordTimestamp, - packer = Injection.identity[DataRecord], - unpacker = Injection.identity[DataRecord] - ) - ) - case offlineStore: OfflineAggregateDataRecordStoreWithDAL => - Some( - DAL.versionedKeyValStore[AggregationKey, DataRecord]( - dataset = offlineStore.dalDataset, - pathLayout = D.Suffix(offlineStore.offline.hdfsPath.toString), - batcher = offlineStore.batcher, - maybeStartTime = Some(offlineStore.startTime), - maxErrors = offlineStore.maxKvSourceFailures - )) - case _ => None - } - } - - def generate(args: Args): ScaldingConfig = new ScaldingConfig { - val jobName = JobName(args("job_name")) - - /* - * Add registrars for chill serialization for user-defined types. - * We use the default: an empty List(). - */ - override def registrars = List() - - /* Use transformConfig to set Hadoop options. */ - override def transformConfig(config: Map[String, AnyRef]): Map[String, AnyRef] = - super.transformConfig(config) ++ Map( - "mapreduce.output.fileoutputformat.compress" -> "true", - "mapreduce.output.fileoutputformat.compress.codec" -> "com.hadoop.compression.lzo.LzoCodec", - "mapreduce.output.fileoutputformat.compress.type" -> "BLOCK" - ) - - /* - * Use getNamedOptions to set Summingbird runtime options - * The options we set are: - * 1) Set monoid to non-commutative to disable map-side - * aggregation and force all aggregation to reducers (provides a 20% speedup) - */ - override def getNamedOptions: Map[String, Options] = Map( - "DEFAULT" -> Options() - .set(MonoidIsCommutative(false)) - .set(Reducers(numReducers)) - ) - - implicit val batcher: Batcher = Batcher.ofHours(24) - - /* State implementation that uses Statebird (go/statebird) to track the batches processed. */ - def getWaitingState(hadoopConfig: Configuration, startDate: Option[Timestamp], batches: Int) = - StatebirdState( - jobName, - startDate, - batches, - args.optional("statebird_service_destination"), - args.optional("statebird_client_id_name") - )(batcher) - - val sourceNameFilter: Option[Set[String]] = - args.optional("input_sources").map(_.split(",").toSet) - val storeNameFilter: Option[Set[String]] = - args.optional("output_stores").map(_.split(",").toSet) - - val filteredAggregates = - AggregatesV2Job.filterAggregates( - aggregates = aggregatesToCompute, - sourceNames = sourceNameFilter, - storeNames = storeNameFilter - ) - - override val graph = - AggregatesV2Job.generateJobGraph[Scalding]( - filteredAggregates, - dataRecordSourceToScalding, - aggregateStoreToScalding - )(DataRecordAggregationMonoid(filteredAggregates)) - } - def main(args: Array[String]): Unit = { - GenericRunner(args, generate(_)) - - } -} diff --git a/timelines/data_processing/ml_util/aggregation_framework/scalding/AggregationKeyOrdering.docx b/timelines/data_processing/ml_util/aggregation_framework/scalding/AggregationKeyOrdering.docx new file mode 100644 index 0000000000000000000000000000000000000000..e32377ef44d04acbc263851eb4d1564d5e7c8e56 GIT binary patch literal 36990 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 literal 0 HcmV?d00001 diff --git a/timelines/data_processing/ml_util/aggregation_framework/scalding/DeletedUserPruner.scala b/timelines/data_processing/ml_util/aggregation_framework/scalding/DeletedUserPruner.scala deleted file mode 100644 index 7e2f7a95c..000000000 --- a/timelines/data_processing/ml_util/aggregation_framework/scalding/DeletedUserPruner.scala +++ /dev/null @@ -1,97 +0,0 @@ -package com.twitter.timelines.data_processing.ml_util.aggregation_framework.scalding - -import com.twitter.gizmoduck.snapshot.DeletedUserScalaDataset -import com.twitter.ml.api.DataRecord -import com.twitter.ml.api.Feature -import com.twitter.scalding.typed.TypedPipe -import com.twitter.scalding.DateOps -import com.twitter.scalding.DateRange -import com.twitter.scalding.Days -import com.twitter.scalding.RichDate -import com.twitter.scalding_internal.dalv2.DAL -import com.twitter.scalding_internal.dalv2.remote_access.AllowCrossClusterSameDC -import com.twitter.scalding_internal.job.RequiredBinaryComparators.ordSer -import com.twitter.scalding_internal.pruner.Pruner -import com.twitter.timelines.data_processing.ml_util.aggregation_framework.AggregationKey -import com.twitter.timelines.data_processing.ml_util.aggregation_framework.TypedAggregateGroup -import com.twitter.scalding.serialization.macros.impl.ordered_serialization.runtime_helpers.MacroEqualityOrderedSerialization -import java.{util => ju} - -object DeletedUserSeqPruner extends Pruner[Seq[Long]] { - implicit val tz: ju.TimeZone = DateOps.UTC - implicit val userIdSequenceOrdering: MacroEqualityOrderedSerialization[Seq[Long]] = - ordSer[Seq[Long]] - - private[scalding] def pruneDeletedUsers[T]( - input: TypedPipe[T], - extractor: T => Seq[Long], - deletedUsers: TypedPipe[Long] - ): TypedPipe[T] = { - val userIdsAndValues = input.map { t: T => - val userIds: Seq[Long] = extractor(t) - (userIds, t) - } - - // Find all valid sequences of userids in the input pipe - // that contain at least one deleted user. This is efficient - // as long as the number of deleted users is small. - val userSequencesWithDeletedUsers = userIdsAndValues - .flatMap { case (userIds, _) => userIds.map((_, userIds)) } - .leftJoin(deletedUsers.asKeys) - .collect { case (_, (userIds, Some(_))) => userIds } - .distinct - - userIdsAndValues - .leftJoin(userSequencesWithDeletedUsers.asKeys) - .collect { case (_, (t, None)) => t } - } - - override def prune[T]( - input: TypedPipe[T], - put: (T, Seq[Long]) => Option[T], - get: T => Seq[Long], - writeTime: RichDate - ): TypedPipe[T] = { - lazy val deletedUsers = DAL - .readMostRecentSnapshot(DeletedUserScalaDataset, DateRange(writeTime - Days(7), writeTime)) - .withRemoteReadPolicy(AllowCrossClusterSameDC) - .toTypedPipe - .map(_.userId) - - pruneDeletedUsers(input, get, deletedUsers) - } -} - -object AggregationKeyPruner { - - /** - * Makes a pruner that prunes aggregate records where any of the - * "userIdFeatures" set in the aggregation key correspond to a - * user who has deleted their account. Here, "userIdFeatures" is - * intended as a catch-all term for all features corresponding to - * a Twitter user in the input data record -- the feature itself - * could represent an authorId, retweeterId, engagerId, etc. - */ - def mkDeletedUsersPruner( - userIdFeatures: Seq[Feature[_]] - ): Pruner[(AggregationKey, DataRecord)] = { - val userIdFeatureIds = userIdFeatures.map(TypedAggregateGroup.getDenseFeatureId) - - def getter(tupled: (AggregationKey, DataRecord)): Seq[Long] = { - tupled match { - case (aggregationKey, _) => - userIdFeatureIds.flatMap { id => - aggregationKey.discreteFeaturesById - .get(id) - .orElse(aggregationKey.textFeaturesById.get(id).map(_.toLong)) - } - } - } - - // Setting putter to always return None here. The put function is not used within pruneDeletedUsers, this function is just needed for xmap api. - def putter: ((AggregationKey, DataRecord), Seq[Long]) => Option[(AggregationKey, DataRecord)] = - (t, seq) => None - - DeletedUserSeqPruner.xmap(putter, getter) - } -} diff --git a/timelines/data_processing/ml_util/aggregation_framework/scalding/MostRecentVersionedStore.docx b/timelines/data_processing/ml_util/aggregation_framework/scalding/MostRecentVersionedStore.docx new file mode 100644 index 0000000000000000000000000000000000000000..bd2efd0a9761fae1fa11b82c513aeb4019e7c36a GIT binary patch literal 38144 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 HdfsMode} -import com.twitter.summingbird.batch.store.HDFSMetadata -import com.twitter.summingbird.batch.BatchID -import com.twitter.summingbird.batch.Batcher -import com.twitter.summingbird.batch.OrderedFromOrderingExt -import com.twitter.summingbird.batch.PrunedSpace -import com.twitter.summingbird.scalding._ -import com.twitter.summingbird.scalding.store.VersionedBatchStore -import org.slf4j.LoggerFactory - -object MostRecentLagCorrectingVersionedStore { - def apply[Key, ValInStore, ValInMemory]( - rootPath: String, - packer: ValInMemory => ValInStore, - unpacker: ValInStore => ValInMemory, - versionsToKeep: Int = VersionedKeyValSource.defaultVersionsToKeep, - prunedSpace: PrunedSpace[(Key, ValInMemory)] = PrunedSpace.neverPruned - )( - implicit injection: Injection[(Key, (BatchID, ValInStore)), (Array[Byte], Array[Byte])], - batcher: Batcher, - ord: Ordering[Key], - lagCorrector: (ValInMemory, Long) => ValInMemory - ): MostRecentLagCorrectingVersionedBatchStore[Key, ValInMemory, Key, (BatchID, ValInStore)] = { - new MostRecentLagCorrectingVersionedBatchStore[Key, ValInMemory, Key, (BatchID, ValInStore)]( - rootPath, - versionsToKeep, - batcher - )(lagCorrector)({ case (batchID, (k, v)) => (k, (batchID.next, packer(v))) })({ - case (k, (_, v)) => (k, unpacker(v)) - }) { - override def select(b: List[BatchID]) = List(b.last) - override def pruning: PrunedSpace[(Key, ValInMemory)] = prunedSpace - } - } -} - -/** - * @param lagCorrector lagCorrector allows one to take data from one batch and pretend as if it - * came from a different batch. - * @param pack Converts the in-memory tuples to the type used by the underlying key-val store. - * @param unpack Converts the key-val tuples from the store in the form used by the calling object. - */ -class MostRecentLagCorrectingVersionedBatchStore[KeyInMemory, ValInMemory, KeyInStore, ValInStore]( - rootPath: String, - versionsToKeep: Int, - override val batcher: Batcher -)( - lagCorrector: (ValInMemory, Long) => ValInMemory -)( - pack: (BatchID, (KeyInMemory, ValInMemory)) => (KeyInStore, ValInStore) -)( - unpack: ((KeyInStore, ValInStore)) => (KeyInMemory, ValInMemory) -)( - implicit @transient injection: Injection[(KeyInStore, ValInStore), (Array[Byte], Array[Byte])], - override val ordering: Ordering[KeyInMemory]) - extends VersionedBatchStore[KeyInMemory, ValInMemory, KeyInStore, ValInStore]( - rootPath, - versionsToKeep, - batcher)(pack)(unpack)(injection, ordering) { - - import OrderedFromOrderingExt._ - - @transient private val logger = - LoggerFactory.getLogger(classOf[MostRecentLagCorrectingVersionedBatchStore[_, _, _, _]]) - - override protected def lastBatch( - exclusiveUB: BatchID, - mode: HdfsMode - ): Option[(BatchID, FlowProducer[TypedPipe[(KeyInMemory, ValInMemory)]])] = { - val batchToPretendAs = exclusiveUB.prev - val versionToPretendAs = batchIDToVersion(batchToPretendAs) - logger.info( - s"Most recent lag correcting versioned batched store at $rootPath entering lastBatch method versionToPretendAs = $versionToPretendAs") - val meta = new HDFSMetadata(mode.conf, rootPath) - meta.versions - .map { ver => (versionToBatchID(ver), readVersion(ver)) } - .filter { _._1 < exclusiveUB } - .reduceOption { (a, b) => if (a._1 > b._1) a else b } - .map { - case ( - lastBatchID: BatchID, - flowProducer: FlowProducer[TypedPipe[(KeyInMemory, ValInMemory)]]) => - val lastVersion = batchIDToVersion(lastBatchID) - val lagToCorrectMillis: Long = - batchIDToVersion(batchToPretendAs) - batchIDToVersion(lastBatchID) - logger.info( - s"Most recent available version is $lastVersion, so lagToCorrectMillis is $lagToCorrectMillis") - val lagCorrectedFlowProducer = flowProducer.map { - pipe: TypedPipe[(KeyInMemory, ValInMemory)] => - pipe.map { case (k, v) => (k, lagCorrector(v, lagToCorrectMillis)) } - } - (batchToPretendAs, lagCorrectedFlowProducer) - } - } -} diff --git a/timelines/data_processing/ml_util/aggregation_framework/scalding/sources/BUILD b/timelines/data_processing/ml_util/aggregation_framework/scalding/sources/BUILD deleted file mode 100644 index ba065ecd7..000000000 --- a/timelines/data_processing/ml_util/aggregation_framework/scalding/sources/BUILD +++ /dev/null @@ -1,26 +0,0 @@ -scala_library( - sources = ["*.scala"], - platform = "java8", - tags = ["bazel-compatible"], - dependencies = [ - "3rdparty/jvm/com/twitter/storehaus:algebra", - "3rdparty/src/jvm/com/twitter/scalding:commons", - "3rdparty/src/jvm/com/twitter/scalding:core", - "3rdparty/src/jvm/com/twitter/scalding:date", - "3rdparty/src/jvm/com/twitter/summingbird:batch", - "3rdparty/src/jvm/com/twitter/summingbird:batch-hadoop", - "3rdparty/src/jvm/com/twitter/summingbird:chill", - "3rdparty/src/jvm/com/twitter/summingbird:core", - "3rdparty/src/jvm/com/twitter/summingbird:scalding", - "src/java/com/twitter/ml/api:api-base", - "src/scala/com/twitter/ml/api:api-base", - "src/scala/com/twitter/ml/api/internal", - "src/scala/com/twitter/ml/api/util", - "src/scala/com/twitter/scalding_internal/dalv2", - "src/scala/com/twitter/scalding_internal/dalv2/remote_access", - "src/scala/com/twitter/summingbird_internal/sources/common", - "src/thrift/com/twitter/ml/api:data-java", - "src/thrift/com/twitter/ml/api:interpretable-model-java", - "timelines/data_processing/ml_util/aggregation_framework:common_types", - ], -) diff --git a/timelines/data_processing/ml_util/aggregation_framework/scalding/sources/BUILD.docx b/timelines/data_processing/ml_util/aggregation_framework/scalding/sources/BUILD.docx new file mode 100644 index 0000000000000000000000000000000000000000..bf9b661043e8d288d23c1f1895623a80138fd96c GIT binary patch literal 36977 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 Vc(Vd?5GYp(G9&`C$FFV>4*;=_8t?!B literal 0 HcmV?d00001 diff --git a/timelines/data_processing/ml_util/aggregation_framework/scalding/sources/ScaldingAggregateSource.docx b/timelines/data_processing/ml_util/aggregation_framework/scalding/sources/ScaldingAggregateSource.docx new file mode 100644 index 0000000000000000000000000000000000000000..93574b5c6a53b34ba285463b06f65042de193019 GIT binary patch literal 37926 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

    _i=AUkVFC<$pz8T~zD$J6@wrz6%Vl zkKZ!tRvew&=9-$~*?XTr`b?FYZw*3>H5@Ixsf3xeL)zOq>OU^6>sxX}i(JfwY8Z8PvwAlWY`xP{3Q!L0TutP z@mH4iP%t(c=6Df2r2_;NHh{xm%m2?F@5_NJnP@2fvAKU252E-&A=e68a9+Apgc5dyv836UFD%UWT*lff3GQ! zk();2Pysa1T@xrqtru(-_Cj6I*m2DTyT0DFF_MH@prO{9WoPv2sB8$lpgeRvxW-q- ct(#&SSBDO^V&Du~o>dBfCpbNr$;(Io0%j-e1^@s6 literal 0 HcmV?d00001 diff --git a/timelines/data_processing/ml_util/aggregation_framework/scalding/sources/ScaldingAggregateSource.scala b/timelines/data_processing/ml_util/aggregation_framework/scalding/sources/ScaldingAggregateSource.scala deleted file mode 100644 index d1820b4fc..000000000 --- a/timelines/data_processing/ml_util/aggregation_framework/scalding/sources/ScaldingAggregateSource.scala +++ /dev/null @@ -1,77 +0,0 @@ -package com.twitter.timelines.data_processing.ml_util.aggregation_framework.scalding.sources - -import com.twitter.ml.api.DailySuffixFeatureSource -import com.twitter.ml.api.DataRecord -import com.twitter.ml.api.FixedPathFeatureSource -import com.twitter.ml.api.HourlySuffixFeatureSource -import com.twitter.ml.api.util.SRichDataRecord -import com.twitter.scalding._ -import com.twitter.scalding_internal.dalv2.DAL -import com.twitter.scalding_internal.dalv2.remote_access.AllowCrossClusterSameDC -import com.twitter.statebird.v2.thriftscala.Environment -import com.twitter.summingbird._ -import com.twitter.summingbird.scalding.Scalding.pipeFactoryExact -import com.twitter.summingbird.scalding._ -import com.twitter.summingbird_internal.sources.SourceFactory -import com.twitter.timelines.data_processing.ml_util.aggregation_framework.OfflineAggregateSource -import java.lang.{Long => JLong} - -/* - * Summingbird offline HDFS source that reads from data records on HDFS. - * - * @param offlineSource Underlying offline source that contains - * all the config info to build this platform-specific (scalding) source. - */ -case class ScaldingAggregateSource(offlineSource: OfflineAggregateSource) - extends SourceFactory[Scalding, DataRecord] { - - val hdfsPath: String = offlineSource.scaldingHdfsPath.getOrElse("") - val suffixType: String = offlineSource.scaldingSuffixType.getOrElse("daily") - val withValidation: Boolean = offlineSource.withValidation - def name: String = offlineSource.name - def description: String = - "Summingbird offline source that reads from data records at: " + hdfsPath - - implicit val timeExtractor: TimeExtractor[DataRecord] = TimeExtractor((record: DataRecord) => - SRichDataRecord(record).getFeatureValue[JLong, JLong](offlineSource.timestampFeature)) - - def getSourceForDateRange(dateRange: DateRange) = { - suffixType match { - case "daily" => DailySuffixFeatureSource(hdfsPath)(dateRange).source - case "hourly" => HourlySuffixFeatureSource(hdfsPath)(dateRange).source - case "fixed_path" => FixedPathFeatureSource(hdfsPath).source - case "dal" => - offlineSource.dalDataSet match { - case Some(dataset) => - DAL - .read(dataset, dateRange) - .withRemoteReadPolicy(AllowCrossClusterSameDC) - .withEnvironment(Environment.Prod) - .toTypedSource - case _ => - throw new IllegalArgumentException( - "cannot provide an empty dataset when defining DAL as the suffix type" - ) - } - } - } - - /** - * This method is similar to [[Scalding.sourceFromMappable]] except that this uses [[pipeFactoryExact]] - * instead of [[pipeFactory]]. [[pipeFactoryExact]] also invokes [[FileSource.validateTaps]] on the source. - * The validation ensures the presence of _SUCCESS file before processing. For more details, please refer to - * https://jira.twitter.biz/browse/TQ-10618 - */ - def sourceFromMappableWithValidation[T: TimeExtractor: Manifest]( - factory: (DateRange) => Mappable[T] - ): Producer[Scalding, T] = { - Producer.source[Scalding, T](pipeFactoryExact(factory)) - } - - def source: Producer[Scalding, DataRecord] = { - if (withValidation) - sourceFromMappableWithValidation(getSourceForDateRange) - else - Scalding.sourceFromMappable(getSourceForDateRange) - } -} diff --git a/topic-social-proof/README.docx b/topic-social-proof/README.docx new file mode 100644 index 0000000000000000000000000000000000000000..328cf25972290309b16d39f6f8fcb5c37159b31c GIT binary patch literal 37124 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�aYYH zoCPYLaTb{zHE_vZE~00Iatyf&woLAF{V^X~f+{xo8Y8|LWj?+jxw61T`MnJ=hst_e z8iB8&8T0lK$XF6aAHGFsg^$Z zg8iuG!o}z85}oj1@q@szIsmJ*q}6ng5dT)t$UKKmcJqOD#4KNw|Ijz(mBMnnG|_1M zyLXjgA^03Id1vku*&|zf6~^=FeS3Q)*EcdfS}`A=xEl4HL`}BD&xk4=qESnVl__1c z(ZfkqqzhII{3$Xp-+mY(22rlTD3_oVdJB&3HEFrsDP{>Q$8)&x`e&@kPj>Vyv@7I) z`CQe@a9TCRg;5^uEs~yPUr3!Nt3<(}F1Sa7Dq@I1>jvz!A%1KnwK{MY?U2rUUct^M z|w>7MNtdX`Y zyj98E4|$|4EZ#fBG~Dw89B+E}`jYO~puNtMQ1&j10F=l{qBSZv%l?F|2Z`s{0T8Rz-!hRc+DaLuUUUg%|CbCzfaIVci$v& z4@y^RI^oNQ(46c~ULcC|iR#vij!N52(Y17! zo=v3&t-xLkn7YL|6GKXFYLo5L{cqQI=0twa@J2|MjdMhj#k&DdiU!e`#xPp9nb3Wl zcP7@OJC^fi5K``4lBtp$MYWmgThJFJoRQ*u)b;7=!L}i9Cv5p_uBMavy_66?dBa1A z?ubN{5N-1l>)5J}X}>!X?mhd089+vBkL$8rss0XJfCEUE(`%)?qgr?9~VwzN<>?Z zb`0mjVbWm2P*lC!D4{m|6it+AD(mWt=G zql-q*RXg4iQPRqu?hfV8{9#e`uUFO$dftz7D`Q^n5u&e-I)FZmThPws-nGZuBPKaSCK$xX0K;{FUrfriXD1a&rZ+fRZ%I4Sica~ zm(JBrP)p@l@&LP^J!sXp(?I{U^Z8ox!BQ=iq|a$%jTLPJ_(hu3M>hMI{I$R4zRR?y zW^9forQzw5UMLVFotoei2(jaAodA?73iOQB0Qm?WW0BW{$6eK;!4`#{U8vE*s`tpUawu53VLh$^aU-tVf{Scn7)}BA58$8tlm)bXkgsa?7PeN09PqKNH zk6wL^PJzPJISvc2SpA(TQLW2e$4dJvv4HKnAFp+KT{78(onQ53c<$*Rx_P{A*{Nw? z?pF5Pc=wU{%gzU0L19ERH>Pr)Myv(+U4&Xl>DvhPUv}Q3e5gR%Dn(;gBkk2BHLVos zm+}px_X(Q;y1I2<4INt#&>|UW+=mCwXaMs!DU);PTBUYrkw{d)O+AdFsX>zfv7cy#X^oF(!B`#K>&N*E7 z{jA;at;ROfwK084UD)4sa;d~EEPaT@IBR=c_;9H~Z_}S{q<;CSow zJS2B>DSCV=lBp`wWH>i_*0*ZRZJNmV6&!e0q^O8<82zlw-?j5z? z8R>#@MoVg>4a~PNTgHgma%ny>jCe>Xk`IL(o!!r%?sH1Q$kkUJ3!i|;oYE+Ob}Va_ zb$eV(M96}UfE(W9@yppyd&W$X!S5J8IOI17-^G21jp^i~iYWOKMNTa%G>2EEo;1i~ z-^;4XmSUM%QG*$M@Ufm+EwYdLBx8eHQGLeJzv?*o>2g)YImN~@?1vn zMK6Ns<#ElrL$La^zi=s{mYs7$Zc)d6I}yE*2l_pNS_Tp|OwYcQ6Zv6cK`>L3u9`&L z@+W$71gmxIZexVYVt?#lPjxY*<#u{9Wc&5XtO8jCHA+UzK*xj@f3nOUhJvy2=!Mzs z6(O6{07zZF5q&Xqr3+m2;KX*=VP=U7+_=EFcG$w)-<==9ow)z%gxR73K#Ko0zPgEk zngxc{6M48-ZXN1h*vDK6;7~H~IQlMtf>Q?(ts)r>d0T7NkE^ zq_o4D=lu_f|AC70x~RqtOa+hnyD&FGupTvZuvhHHAIxOP%>N~knGAu}6B*$T)w7B2 zP3Y~vNBz60&_%Lw(hby!Wt1%-r8h^`NuuTIdwLJ)r|YLjIuA@=y9ok zH#n11v*l6qb52Bge|K*rf9o!KL)5V4T8cErVVh-1EZHFDlslf__0jQ-B(vv~2|Cki z8FA*uz$)3z3D9jZ(;a1CrIW>PC`Z=*$T?xZ?N@&Upk_OuIu^am&X-Q8_wwGE>Coxz z^4W&q{ER&>h&Ap!xJ^QbS;_7W`~B;#uj(k$ zDf`o_vj67gKoAu{Z=X95bnx;p{$HG^qc-K{|dCIleMr)hlK&o3lF<14!eO7A#CP0gzwG8vbw40jDADKp0qY5LlRT&mj{+umq9V;GF= zeNBk|`Mx=?+T67-89S?gOCUVxCsmAp;;L*$vxwQzA!o*=-^y7o#zK(H7ZR?+&+z;Y z9x8+KOhc%X8!`x+c~1VDyeta<1BEUp&=xPH?^7|=0@tauSv6iXd&kFB6jtZxGYTv8 z=e>>t?8EInNm5?bcLn^Pkri86xOzV2$?+O|tc*pbcdUjCazR1&u^zoHqAzAu1Z~M< z`T8KT6Mx{>D=r+p_X^d;ngEfNU||gTel|Vn>pE4R^)304y>lW|v?0GX04OWp(h|J; z>6C#zL)x-&O7Z%VJ`0+1f4CaDc)1uH@B%$Mc>-@=l3(YKA7*|&9XhgoXn$!H&AMTI zni_)jdVxS&%J6Izfid0ywWJPRli#bwKXRL_1{ai`xVWH7D~{2O<=mvA%0>}>ZPz%- zR%??F0(`5Udwjy`>he+bKj+qa(v-SyB)dleJmS>iGF~UZHNQu(BY(Sim>xh_ks_Zy z!@^w>ZLS1z-wT%bb$OWGE!%5A3;qLGjdxT2U7Tk&k%KqZ!G^~u?VtC+KbCPhQ)%vWcs(KLNvDg1D`g&VMbgpB|5kVD6M zFfeyFPC4_nZV9)`L)mDSQoPjXNYgQ8tJI&H2yPzTV3aN$nM3QxeWZ=d@B{IN;*|mt zfqokCD@IYL>-HES_d;n60}ghTg`j`#djD>0sRsu00I7!Zb3K~yhUoL#7RgCbz*TRX zs`FeyvEdB|(dfnKlHGw~`$aVt_+6m(zFXIcv?UCIWOJZ=!{~*%SMxjIyK-y>GTmzJKeR+Gt+kUO7EYSV-6GOGf(q zdiU}$PlQ(~kCw^C*R|-uRjc`dy8uZ^gR1xH?vqOAuCY~eADrz`SSPnoPatJfIfSY4-Vn>p4r;9_STm6U{Ln zFHak#N&_PYA-(=tHTg7}DqN*igSqdYeuR}#e>OYtx_4?5_?32Dk$R9!5&IPg5mL(0 z*s};hL{Ikh$OCZtF|(Fso$zztm^R_6dlaj2=-K**CFqiEVyr=yALD{{RvJzvN_-%i z`}3z+9Aj3g4)Jx=49+qo0yKkaDyb`^Z?(9a$&R;`j6a@ffjC9;?w6|chuJq(JaZ$c z?U&Omo<&(TT1BMsH6z>cqo%V7%Y0dMwLb*I!Fz`hOT?jD3$2-r^4y9V%_idng0#gA z*`BMb?$i!h)xJ|}PnwjH8*@>%ahq`V>&oz+gdAhc`zk((`t4F=tx7-Jl)~dxwUsv6 zW*3kNsF-(2PS4rEW`sR~dWg7%>P3cEj#KIV1fMv^P9d_TomE3xp>RpjO(w;X%QCFD zP3u;qVjS*>=dEW&b;6NKLcfj;7g{C1vZ*-XXp&K2mHqxf$9pdOiG)X1mi* zi=54@)Tz4^Q9ad65Y&o{$PYRTF@^W=pw8TcZ|WaQ-4+}g;!Cz)iH$eF7v zA50dSO1j0@)VtRgZ58pam&%B552A1RvtP?m?S=6zdn}6_@&(c?iRya=3j@1UT`h4r z01K-y38!_H>F+)dYl22h5|}Pa(=WxN7*5R$gmJti8EFm5m?6^JW~%(ShH@MLDszb_ z(=+Vj&nxJ;>|71_QE;g5I8(3F+QzF+w0wMV1f3Zf6>thm%VRs1;8n|1m7Q*i`!rgd zEV!44ZOqGH+jlQEBIWxo+L69bjOz*vJG@IJBfoBBrRO0{D|QMOf#ct)=08uRd!r9lv{?q{Ykw1 zy|!wbK{n_`|KveZh7=8tS-22og#E}(PU|>ZbH@bb^suuRE}tZjYu4<`O=wpY+J15* z&Yl$kvT;qGZ%z%?i4DkzCx>2k)B5UbGT=BTtEx37X;J6}mAo|e5$!#Y0 zVS3Ft#o(R6HS!yY;pXwyGv)D`b%&D%pZ(wwEbfuJu`!+|EDywN+=+9jdW4R63&f5zXeEP*G5+>Q?nvKSpWQ;U}Qyf*;vSn+ijmZcty7e+c-m(?Bnz>9)he(w>ceKhrn`O+K$TpHs057$;yK zHJ8^)M4!oEJtz>%W4AVV{Zr-+I7a|ijV2}ufVr*&V9y_GEC+T8)?k3YVc`Hp9Sk#p zBMGPuKbUA)8}L{62JIH1=C+s!xe_ZCyKW)2JL^aQ1SZd+*8O>gkcTO*WKyWFEZ^`U z3T>QU5Hei4SmyjrQQFN%tw29s>;=-M;>!){`YJ!i~_Hb&;o1p|zT&PdZ zRMcU97wJHQ>P{b#UmLv&Be~RRpXf7Nop}@i$*GE4mj2}>&nr6BeLnw`6EYB)DdRNZ-l>rtdWNI%W&lJ>g*@Wm$aaKWm>S$Bp{XP zQuok>4a$ug<(nnzvycvVuhZoUj64e7(i|F&!&e_&;atDJiTnmydNX`f7NUr!3IK=W zzVVgm_#?dZukhJ_hadb74oukSM+pf}$by&nN zg_c^5cb#w?XIB#F<=GMay%cYKF-)b##t*Y2gD{{yTaU&S<9e?$-Tr>sYE~YS75gmM z%NljMujo*^!(5PRr7YLTNV$~jFoZXlVzy#=LHe{DqnivZ=9mZSEg-bNo*$tI< z)MPC1bZ9+5cLA9oBJGTcA=#qS6XTTEHPZDdiA$-1O35g8L5Gx|c+Wrdt{z;jWcFya zhtv-*d@dX1u*ZAz@ z(6h0%5Dce?vhof%HGVfqf)dwRZrv8^Q=nO1Qa3fH{Xm&B)4zX62X(PLRTAlcc5|r# z!?c*WJcSg6!~lg9%lNivmL(^GgytP@3qq;9M}?;F;V&sAX)yusfL?Mz(E~lH0tzx% zoX&2%f_CJ=?*yzDfZG22VwEpFCjRQHd&vo7=5aHk6kUk?V zcBeZ5PND;3NdrN}yO3)bY+`M<8IdezMQOC4f{YC;mBceGyFjg-x(+bmF=FWlAr(Fq z43)me(;@Rh-7{-_7^)SyWu;;=v-<|JmGEO8$A|J_X|aoFt+MPv5p6SNu?v1-pXwNj zTt*d`b|RpHv{*0&8L=Vrzs(^LHz`VY$KVN%M>{xRsHC20Rd^wU(BeR@(Ep#=q#K6G zKJ^GX8vYp=mC^RU6pt;!U$i=h2f#|2ovOS=j2jCl(&dxdUhT+oW^u}${OUlxA%2z7 z;&$`#%mwKS{O0o4#y2WuhI&Ya7c9&$%|I2kH=0jB7>KMp6X~8!bID#tDqfu09xm={ z{g6M*`gR~w(~%HHzcX^8Y(pK?4!WZat(m-~MlMXJf8cIJh+Wk;zSXMkAW!MZmDJP} z4~F(&4+Ew_W_HfMp$5=dbDxj*Ce@-Ue@;v=_mtq~Z(~v;O9>oS8@yaH=@G8PwB7cX z4NxFP=l36hrhx0$`T>h!{1eGIZ`h8O<0ufK%`Bh+UgkEfEv|rY^Pt~^K=jd&7qwt1 z{8q32%XZI^5H7SRFiS^)oRB5(+-Kan(Kb(!9GyNlaT3Cr>|G9Ie|L;yDy|e$F(cDw ziiWJ=%9^+|{slJgZHpY;H~e2AW0aU=HlPy;-1g>r`Hw21w6$Qeogj<wiTQPbV_P2mU2>v)MI!IG7 zCK)62x-ZqW_z~l76b&rsae}%O-g~lt(@0s7uBTeOkSF)s_mc2$-#wu^3QoSq=Im!g zZahSP`j#F6LxLadwZ81%1H%SBg$$^eH)EwW9Y>Bd4^HwZp8iecp3HBR>ZFZem3{EP zRl-2leK8$s`{~2BXD*3nj}#ya>G}vg9MJd*9Tq@rM#dbbqoA$xM%q#^UKbBx`1)qt z&G+~}h$~#}WiZ9sD>hX+3cJ<7J4;|mS7C^^-t_KGKqzrhc6N8Ys)=ql<@ax!>DWoD zRJ`K*94Ji<6Ck-kcD2)TL{YcJtF}^sj81$FkKxL)(oTj-7aGZ!`DVL;MtN;)MpuJG zVEP%&G(b*EwhI&To9orvPpJ7T&nNR325JK5#hhmnN>0W#5oQycFvrU@sre|i%-3*> z{XF6Jm@B{Z-Y4kVSr}oNZfEEW(so*Bj(pom#*tT=eCySYxnC*W^t<1U&>Ve#R{3@`v*CgcLjIW!VmtGXc4lfhg?YGUGup{;3!m-G z!L&ERM&T~=`Fg+mK`0zyE{7%F7L&T3jzL90M`$OdKiX3g%z4<;7KC#6Xj9I^T?ni= zt~{tGbt7&5P{K1zHd&T)lFVtcEZiMHp2sN%~RgrZx!tuoE9K8!RST<;%5k1JQll+5nl?^zc_S=!dKvXzu9 z8F70N!A*YpRd>?YD|hl$I+`E8{@Mth9Ry8;5Ew`$Y?UmXj`3;gB z8eSj$|O&|}EY1c}iX5Ed5#LXlpM$`a|rfWD4_lM`A&_Q}zmn?*^= zT`wnK+PYDj?8Wq;v`52g5kmpb8@6=e4sQ(A`d1pUjdw7oVx=-7?4im(~s`4I8 zhnZ|9rU3U}OeEDPyfb!UHDbF%#qTr zL?mTRD`ceKgE=k$@mivG)|(ui`Urv=YjK=O^r)#xk^si-VU4ku%!bAmxbs0h>xTlz zNqDxk)D(=JRrwwv?Z@xxn(qwP9V6y}#+Vawde2A{>2UehIL2SfZa@btkca`u@q;*iV+tlH70nKW(rHnW4^X;aaBEwD5lRe zKHx}kp-9b)dRyoocGQOzyZRR+a)IJ=9+wYup`nDIPpB=?6%)C;&cBr@rPI8jK6X#k(O?3U(?`#%` z2oO{5@@6EEnlYaM2z@F~ES4J-p5}`FnC^e9Fz2(wrRY_DSUN_iG_!oVQ^v1YVJt2+ zBgR$Lo?2eCE}#5S5B_7i7^hTs;A@HiQ?HxX)z^i}e|glqEgl*88`!1yjQJlXe{xk_ zcMg7?XmM65Nr~w*!oq#F1wYO zqyP_xKrklbg9VKf5%`UAefY}m_R{e_Wa}y|GxU{oawE1Zj*gxzOXwWqUW?ZN{^*VQ zW##(~;}6dF9zdIKs{BxrJ-XBAGy3EF`UubnNZyO)=+8)Ai>(7e?&tt)1laO)ksR^> zuNkXexDbERDXSpZmJljj0r06~6FQ6tLc%``@&imOnOqVXYbhcTUkKVA#(ssR0an}it-;F^IB zgWQ4zqqYA=^AN9s*9$%WjmGMD12-|qsl7P1+>cz^QvMmQ)&8vB19BZM_Dq8O*Zz$u z`_`}d#}2f_cvRtdKVYw6S?RcUezF<)d%oF%y=gJb-k-qj zHJYa}66?_9Ztp%GN*X{u11bdLMJV0{j@V7+A)<2r60drJP!qGafpjJ_Bm*BaJRn(Q zFX24&PTQyOQ{YPB1_-}Fe!DkZZw!@11K2s_PN9LRX2oQ$AY!#94k=bq)yVR#Q2i|iKn(BvR+S#c+!+~I`C-i6B6HDJQ! z$cJGgo|e;{n=8XG*C+8%tPzW3n@Ay0ZKs`7?&RJ3r1vrKJJcmIP3OLMud>|u6ojMv zcuk}X*@b zq>&rp=o1VaY*T9~3GVmld@l_hXyj=pi$_h3=oP%Z1s}l*o-Z48KY+iGXpiW_@6#Y0 z!tY(bA@o0~{KC9OKU*wfvD5>^-#2X>DrMc5Qtt%ey&dy{?;fR@|>n0o7uofnRJikM0Az3ypvR}u zrf`u{iSsDwF0t^j8>ec#bcRK`4pl!qK1mHFukCAdI~ad4zGSvsS=!%+Q{O6~+OvXa zrQTbRrbNG#tc&EmeD20oKC(Z#wC#B2>J<@{{!P?5RpVBbG5It~=%as#(h1Ii|2^zZ z*^wi~YzT*FfVeoyP(^6S6;m9{QG{7TO5 zBSHu!;oFp4^T8BFH43xaV5KHUzFr#m&pf+lva@;-F#Y{;Eku&0*`Wj&7J&iMsK63R zh%EJ^pAY2@QZvMDKv(8`&5fD~Y56Bv?n(mF_2GMEV^Z*2=uJK4AqwRDvWjy0HCV%9 zWubDV!nt^!AG%eX9!Yggfzn|lsFeqZS@UKUIrEa#BJa^PwvRl*YmzygK8Zi93esQ`!sJc>4C~;D5*knz( z*Q|yf?%2R~T}Uq5T}v*PZoZ=rL;@1C-ZeR6r?Yr$Jmr=IlJ*v63p&yfLTjAOEIcZv zU3l$0X`FF3ZH8t;UtdEp+~pBuAOVY&L`R9gTnY3i_*A&^Y;**Ymd94$JTcsyl;=#y z!HT}e&^SBt>ZyswVsq_z{4Mwio#uL#-vul<@IQhBbIM>v{}kNwTkzR$!PSIEu5Rr2 zT1R%B-msz?q}q&k$)qE86{I5ye*t^+)FcPR{tH;;>nHOVyoo^woTsa6pn7rpI-e-c zlLGTy-oBV`hd&aqbg&pqG!t7+XzgY${14#hek5RO;&j>OJ6KT^br_r{{2KS?c5lP8 z&UEcONpPz=GVp+3#h5i0?7FUO)9Uc5V6_kMBihGp z?aKgh>E?p?#-SJ3&(Itauv({Qswj{YEKL!d60`PolOEPHpU_JbxT97VhP$6QR~l!M zUuJ{OXI&SchKd4n2LDye|1~#m1^1?dx^$!4sNnqO0$e*b!4>6z6$NoDLxTp?jXHTD*yC$Y7nw`Y?PHS`)_(=m=2> zx%>HWdRkEvs#K**6H$D1Q{u0+-zNw(_ztJ{K=gA9Ki z?oG>@Dw_r1l7ehq!k^0|_C@TxIB5x)Ev7;Nmd{A2{wu^#&yXe-(J2-Yo=8v3CST7v zORv*HJ<-@63`Ea4?xeaS_>F%*iiG2;hxZkH3~$l6QMZ$U1w;4wc0d9wAF7B#!lp;g zX6xBK2h0#+j5|h*V5eZ?qT-FcmJ%(WQG@vJcm2{aPUL*+IR6dcr2HG;F#Hby$6NQn z9he~y!q9OyNzCGghd^bfl4HANP!yDvKz2A`@Mi1z%>fz_;C)($|4!?uhX2k$A3l;J zkqc8;e>`PP#-ydj62lFJ~5 zBC8UR9f?+H(*C61=lYAj#LP-)6BcZKZ>tpmii8C14RHN;I6d^x&fW7BE*cSyKNLY% zJJ8(|8avWBP7YZ|2wpZJDOrY!InS}^gVGA3GC3=9?vX~CTW-dB#pXwiW8 z%jA)Kl}6R@Wb5(K!0^-ic9zzGaiz*A9bI^xB@a7hrW*o$%U3B=3(TL~C94J|hAazX zqXcYhbsSlh0fVDY(>@$l04{UIF#CEA)-TakzoZu{^{KUJrbZ*4?L8~stna1hyyajV zyRIHp5JOE$-hG&{glp0*!?V|cV8p^t)=8VJw8OsOaO+@RQK@yQR3LK;Pj*d8j($2H zw#-2rwkwdURG{eCOUlT=WJx`;ut358qLZdHFJ@+ueYD~dj|w_&s1MoqU zQ@n`zWyoYRD! zpyZ{_+jeoTIu3KKl%t1~G=Bp+#xYm7$u|O~MMjMu$h~XJ-%)E7vol_HbfYXLsx;$R z?dzn8{la8CqGN0rJh2pQd zgq6>}n5vr3ns(jn|dJ2pi0myxzCV7$AGV8Q0)>>EYo({?bc2 zP1rQ%fE|HYPKaMJ% zDpmP@$c%!s>AQ}=a0Si4wE?OCsE|kD`%%=LHn^3>f%4vH(Ag={l!~c{|vkStzF1iVoY1m^-9BAUHdT)Qs(2DCsHM z>Mruovx2?Z5${}7BDgUiy7(WEp%2io6WAv&9%hgu z5~A~zViA_wc5UdUUl?Ec()8TpKj{yMlXj5!}vGC9;r*99_ynHt^rZE&C|; z<~0lAC7{tF-R(ZH5l$^4SL%X+)cyj(`30Kp4X1)uapEOLWQMua`~ksKg<`UKN`<-2nx(?vIE<19 z@;@DzpwUhyJvZUIa7Ikaf-^CoU!w9D-r+^UQW=K*{zkkw9?FN5iX2t~$&~`ODNEuQ z92dJb19tE_PCyR3;fBXS%n~Jogd)VW9gympLs7OLkjh)=c)xH?`il0?d;2DyfiwKv z5D+dka1aFlytl7y{pq8$rKN@0r$4Xo`x>Se$kZP{-s3bK4k%}*K#-4&`A%X&4H}K@ zoTuH~iBwd~8m3n#9KL600pH>m%kjq?j+Gq_J_dfF7keAm#_2MI8g}>M_u}E%`RLoW zR>gC4yYc3g=WfrT4Y(*&J)g7TcX?{O1EAelJ-&&&-r4qSFzS5Wo7z3ec)dS;eRw%? z2R-LZjjb78JYJuGYHH9y1Z2$t(Y>>6lC6P)=}0XiMs@mtSj#`^v71b6>{wiS@PDG4IlR zLZb4%3JfJ+}* z-80|hqjbA{pw`h!7l0Q~voNn^Q}x{X;%v>R3n#TK5UqMM?PkM!xn+Hxu8^A=dJ24M zU$?^}%}Eq|@AbqY{o~p1bz#l0UP#!1q<6PuVC52+O2SXH@=`BMEJz|iD)j35B)DFA z3j)<_FuS2u%+-uMQ&)9WVoHjR&x7WCoh{oIkF7v+6y6*H#PU<3MR**3_q8ilsPGj- zbI+j6>owyM%`VpLjSa!ciL(3Zs~?x9&-XsgZ7(+)r1iIH{8#Mk_bq;w_iPUh#kz&t-BQFo6YakE2b*2xh5AyU(ah=K8@o79u;3$ zj2hhIdDBSf-yCkW-HuS)Y_;N1<1vXoH+tUH`#jYuE46ot>L{bWJPsK*S4{Beu5N57 zmy`sNrm$9!YQ@HmT|Yi<-S=M496H^r`WQ0>KW`>YJ&t|dw z%E12d_VrJeU0B}Y!}R;J8>cDv8Ogwmm)Z>nwHtl2F((8&Y1SI$$Tb^nK(r|zP*Hb% zZKI`PNYA?<;kjzCmvt&Kba!SCd{waH(e-}Fs60N0*PS$ms1(?Z=(Sriw_oyX*c(df z$@D-C-DB~iWX{1DkoP06mB|sM+8An$0Qpr%qvvP+4yd6TgRb!igzmGxTMAEMAL$acc0bm zjzq>`**MCvirK7Jhr<&P+n@K+Fv~IS-YE{M~2BH+VS1qrmuz|M<{(caatetam@IK zIJb8WgQ1wUGMfsBI+UwWe3cjukP~;hQ1fBU{$BF^`VgVwz0Cf71Y5Y>AEF(RH_t}P znjuitHNYM8%is>OV{k_txT99471r_J5Jd9`EfCM?gk99zzX$y*`u8A@342JQ;?mzJ zjlbdlK>7QCzoY!`D)6~mU>(2YFGKMuOglgl!CALJpaunl!MOjS^)E@wP>0MI0PrwG z@G#rIhIIoRkT=<+n||Z0LGiu${u}4-1ODc@R;CelR-a-WJPZ>&?6);kTjvV72h^L( zi$6oX01Hp-Pr!@cv+t(?DpAQ8KF zMeJ0?#8y$MDBw+$?S{$g{?ke5?rzp-?=4mop`5747;xQ<&+Xwvpv~uX-}d{V?G1O; z&<-zhiTfBD-pifGJ;JfG_s{3mtWF%EEYSMnPnK%E<@DYPWUn> zeK69Vt}WVpp84Cl+(XPntLDcHZ#J*{Mq0{;HGl1?(|w~`)Xb`tA(a!&gFdGm>> zS~Q{r9)@&T@E6YMDPE}Jwin+T{tW-y{U~#hoGff5bCK*UbMK>BNhA}u@}6HGVHzl5 z_MRTBAcmE5;9UZJ7Rlqh&&~0JEy!2{8jVq{b8x>qa2Faz$GJViSeF3eiUUftQIwS_ zg@nmHjO47X$c~m#mNZY$I5&mLKVQmHX1?-$S7*nWg;4N8xE zjGn|!N)J1cz`2mm;#*QOAMw9Qcb}j#kZAymV~MvkmNwc2}o0q zDH|)f34NnJey@@cU5?Z)>2#(gIxV8uqjAm^imiBER}AWNox4D);adZ`;madlquxqo_!l@`g^1zzes&+LrWKQ)RP@enDLvplsfo$|60F*~3E zZf3dCVl>Y?m4`ew+koEpt*hCl@kLI3k`5^ebwV@_c_cDvRX_G8`1iGzs)DmK&GqE4ju&Lqankm4?348KTP)_tBU49fhEsl6J z-LIlNaHsF829FTJujxFk(=EU~OFX&lR_A29cdv>+eY##X>`iG*a&|5dl{)FqFr&D- zIqWDMesR$rd$|4vDocKuoKStFDq6J5;DRrZgV5Gtd(pIPMs9PQKPj3rUD9dGmDaRu z(Z7Co*I?|tmCe9Z`P<$t=3p!~bvqRnf7;bzY2%B&(FR)0sZ!}7L3PH@QUZ3nkd^zg zb?w*>Z+Ele0ucpF&86(Zl+H%$3Bp=Sp9x--?d%lP>h*chGj zIgj~!>vwe&aBkPrLzKpjrU^IG`G*kqh4#*hqxWZ=ee)j0QjVe@=Df|;X9he=P2-G< z<&YEGg0&weH+7pykz0(Xrzp^Sw<`DnN^%BQn1tWj-PpJtKb(I0pR)GYe;scT_+hJ( ztbq`^=IHWJyl*?!ajQIv@7|Rv-yovzQGOonPB77?Q!LwJp{sTxN z_v8!GP{s-i|Ir5%Nn;ohkNCq0R(zq!BBCo>#=fBA#`}xY@A1*iU!!ffiNA%BQ1?A$ zqsEz;At*9rNQt4sq`nYQ9QdW(gCd2PnIVaeG!bB{IGf78`ono8;??0_J@3UmXGEuj zE=ZA-X5KXXDuclEZ1}2crdp5KjjdVb%#x%LZ}coNEHWG$QM(Ot(VE#%d!uk{ssSCs znj5WL7EVQuU%QH%3IjCt(UwJift<`p-hPiT48Erdr~{<&YM{+h%$hmmtCzayyxcD? zJe^YWn#HkF$G*#MiUh}qd`;Lln5azOO&EulJgb);^>CHUf8&Gq}${KGTD znr$xXnZZ{6UBBf{va97s;#uo}k0i`>##Rr#x#;TV&vu$;MO7b$T8pgt4taDBNfxtQ zD2Wj}2h)iTP4?tTf#YLOl_{Soj3Sy#NpTiNCEu=Wx{TIShSD{kLr>1rgq!Q1rKj;t zmU>dDC8daBmlIxWnH2RE+u|TX)-P`^p&HbEC8ekf*_7hvsLPVW zKzF_C(Y}h&?tOb)x^ySBBlW2lhfj!bw5H{GK}Fo@WHg%Gw{C>wvugV}Ky*R~hQ58c zz9!XQ^V{euCRIIo|0;x)G`+U_?h4K#Ps{TY9m;gD*k48jM$4{9`2vBiFxk<@ufK&E zYNceQipO=3D*~pfV{B<>Lz52<>`Knc2Q|b?CH|-g_iB34<@*Y)*Lq>^75uRd(|jk> zFC7j?hn+1&5p~>Vv`)~;GV%>v!#X>-f$mfG+8DsYhzzu}QZ$ZZ2fFKBv7k0G=Vb%o zewUE!8gg!A)(g08aC>n&dR=VE1`=V(O}>b2cJJB}UcqnRI*(ZwrWk)S#BL7q0)=ad z7HZ>sKU(rZ3nrzg{pupIyQRqk;1*4}vt`N}`*pq>dw9#0&*T@xN}l}ZM&@|mZ*zIA z-m*^4tjob}e=iXPExX0Pq^3AJ{3Z2w$x0Vb)Swib(XBP(H?*th;z7ZktthaKOk0ix z`3}x2$2~dFM|(#%#n4p z^V5xPs?4ZB~-0=dFv<9_R*!SRWzU$ke|( z+aWe#z9 zg&8FQi_svZ%{(RT4t;Jns=gMge!6#xB|di^?hh8Z?vnxD#(CaBJSJC!rpsbrEP7Cp zC7nvyzU+r(ss@KtFPl3kFqvr7F(w0TyU#-acc;-;R&AQx(+ClHbh88t9rTu-+8qX8ER;2N_W+b>h|8k zOq}Rmg9@U@#BMeFX*K$F%1kwkLp8L69DitQ4BRICF;J<#>u$ByX|)jo77ygl$7P_X z6#x9QYPAxH8BZIu_PO0^Ge#Rem-eT7Rx-wpi$#&2Ztga6o;HBJQ!2v)IyM73i3(CR zq`U5e)YIjddhRyro;GQqAwT?Ey4isW%?!&tZIaiv8naZ`zI-xl<()>s&v|iSwdgR6Ui7VZg z&m{e^x5GjETyDH70*zr}s|}+wWuKG$HRuAZNOTG6{KrI9oqYCtyS;)5@S|$+#=v#>K)8Jr z+XKbP-Z^LTr*270*+iEXj3RE7A{D&#T@HE>V5ta;r4#htanE+YA1;Gh@?s3J0So{&iD z^ib25Xa6{W3!hhXjc=-(_u{hUvD}4hq@T6y`1%>LPt0 zt)Kpn2XsEBv%p>}3G%^EKycH2NGb}0Tv?)tk=0e6XNNIgDMf+6tn;~}ov~;Ix6H$U zh*}8`Iz+%ow~+dwh(S>J#bxt6+O@$3AVeFJ zZmyieSgdWq*ilIS!?AEYhQGAu%aMTn^0Bdu&#dso^|{*q44BXVdBEiHNuEY; zogN-<0d?QBjWfg1#Ge)nvLP7`2`}&2$1v`LcF(%^ja0?wy)6aYsoy9r z3}ON|5e9xDGcg=>LMQR{QE-A_0O%+fn1=7yp#Pv>Za*^N2Q9+u=KuuuGY?x=6I)LkTX&b_L};)KRN39mwShkm;V*-9Qe1QtCbgu|sEfC#Me4CulJEuG zWL5h1)b?kh_fg%WhS4bWe%VzT?Nbrq=;G}0>Z74t{l|URqnX;b{z}gINiN{t4}!_7(UAYa7K9^_AbA8EFpv8K8yw%%DRk*zLw7Py+&IQaPf z1&5J^(T$7gjiAx(j#0u6BRny3Sp7#TZ=X9)WPRVCgE46Qe;Uk#o7%AyTm^daU>)uQ_?zXkt zN*31FFWg-|Q`1{ha_;ZdUhhg-?p5;R0jXbLYPY-egI01M>u8T2EWUhoe;;vw_vg)3 zkUo=XOU6xFEU7h>H=opCp{n1dT}!-uF{2+i4_(;~TVWI+$1yO~)-=yBu#C!gSRjHD z*Ept<+17O{fvC+LJpWtR%68AnFTfQ{qjlXNvHOs@0${p8@Ho`Nj0Fz}x!9V>(*yJQ(jbna_~*DurOV(#ywEW*P2pT%cLT|S9jA2+7_P+uM)*ef>j zia5TLyC@Srlw&157by(qYLp=AuM1ve479PBXHN%(e>04|u!Dy1xTl zOUvv|&%AzF|NT;3>tQ$0V&to27TNugFyC#aFCYeN;QqcgX$kWrAK2e!8hA^~NmVXq zFrKCQ9RWR%<&a19VjLYfrRo2o=M3QxR=@wBdK`SQWk_4#&(F!UPaf{fZVDy0QXlqq z4`8{U2OHq26*R2BDgXGoBQy|5_CVBr<0ZncB|`-~01H&1RjmYCjU0AN`m>L z6xeyFkwq#ggPDb~fsTqPwJZs&5zXL(52T83>?!agVavDll{c&ClVh$RFX7I}tKkG8lL z5k`U5BTJY$(lk-VgG(@`iQkusA?Ud&{WM{=Kuh!E+ZA9*H{pRf-g%_yDdbe5j3rPw zQ=9^9MZ+Y^5eLYx5% zE*@^)lVONZGkQq@EK$w93K}XDblhYpp^_70uvwT}0%HTTl=VM2b+GsM6!5 zcBd7eklO2FWy$mNV=H?4n`rZwIFQ^!8gSo(<|MZrAxBuu3~@(TH!g+mjw)d)p8b2a zgk+dxt;l))M>H&WS3WJaWI}GhLEJCdE;bFa<4xZpEDjkk;0QZY3`ByKo4l zvTxN>jV4v}BXDfT|obO2ihu`_6;GK*x{UhRsO_fnX!?GCQyIJatV=G8;d)a{}pPb&vP&~=evI1av(~k zB*_d_ymm^hhH#1MLFx3m2b7>ZiROy+F_n&Bb|eeMiexU?@HL_lPsBN3BEh-{FIaFe zd{)_CoUT0|J*nXwC3-bZsK{Tk5M1*e%dOE2CwZ|c?W{NuAwT4%ql$gao0op6i3twL zhKp!1L38l#7S8O4MHoAhjpVIdqzk@CgVtn%4cTOf<{#90aXR{1^rnV$<3FfX{+jK7;Q*8^cB$3nGji56N1pYPU>%M^T;DPZP90q)0h{YlXQ8A&{miKcrJ@O)YD^@-iM5=gLBs%JkhN)+!;*#T1Ju9jRUzZD{87{d zR7qH9-=bNlJO-oE?K(@m%+%9cU-GC?I-G$K0&ENq8KjM3!$mX1orJzev@BRfTrN*} zGv12b{L6HlUHV+8YFE_K;|ESYiN5;mL`@{Su?Pepcr=FLgURAFhK;H;lW|2V0?!am zh_s>H(u92^`!pix5Do%VGug7^B8MB5O{OrwG!bPDwXAb2JF8sW&t=h5oHP^R5E=ZG?B>G2_q!)kQ(+mMU*<)Ci< ziZ6)I%@Qtp!vhrz)g0gH?l-(g)svH4p|uJ-M5BqHFA~<=#k}9lL#mw$6ZjE+A7sGI z`(`EDY~-}get=Tf3D#ufNpMJNp`tZ0d0|7-X09vr%ha&nI<+(eSKQaz;@Iy4=OvY1w6Uc^hKlpl@xwTL)6 z`Vm%HLA)w+l*NAf%$I)Kyof*Z7mfOg$heAFgeO&A#M-1}neon#XyLX9y%8C+L&N-DWXg_%l4MRNF`s728KL?uE9 zAtzj{qez2S{g(y0bpQ+EVKM$#Fx?rE_)K)a8o5*EiJauAp){Pe*cm|sVYa2FT2J}A zrl3P??i)J!Uwrq${~&L6M%=oW3i0#C8CU~fX3R|;eo`9b3iTp48BKQ%2$%?$P(VhRhW3QzE&UX4 zV#*cCnrJbJaxt26FpteEsX~=>zC+d7%>U7>ff|;LF_m9y)z7lWlphqyjwk;8hvXVX zRCd~XJwy;L6z2;c4HT!a;CcNo_+5yd_*yi4(ZU4IDZ6C*i*W&Ink~mfCy(cl++UTT zjloJ6(LsZE5%6Xsnvz^`juUrj2;!i%rbk3)q>~B>2}~hQ>9F4XS;N_w2eRu ztgN5m1P4w<)wNN{v)oaFmBuy=;v9)~bwjosNAXY);y|EFf9*I85Wzh?`+=jxeDUa) zBFD35VPM?7zWWYhSO5H1%=q!m{HX&3Xh;-!kNGjcLW7+8egniLZj6>@wnG(1>5tM7 z7=ThTRe(}?MSjpYN1k~4ElFq#GzIA`ZQ}<_GCWDH)O^kj=FlL}A^;_B_j$TlVqVey z15gY}uE)i5qGZRm@wTp@!I|ICJ?Az)XkMhdj;fkYRJ2us1O7oOXZs2eJ*iUQ$vUcC zASOtuj-uMB@s6TDQ{x;(Gg1>Ahv1>4xw0ULc3lf1BI8kFP=}d$v4+kV|2V}U;?QOS zpfBkkwBT|rTF4Z$n!}Qas7bWDsv;4oIK+?rIUX(jXWx|H0Mor3ay?N&nVanhA z9hRhAL@OTcudqDn`{loq>1cfXnI)5y(Jl2VoGS!hS%Q_pGg2!fX>0|X;AnDzCAqT8 zJgp0YP$lX$P>N0ezdrN24_M+fh@i>x8~O*CC~R6OLx*PmD=tvlbgc0)IbIAN7h1VP zN&3Pi702cR_w5PyG#`bxX)}Tltg>fl9z6E6$ZXJtGOd}YYyBZ7$a^6zdz*%tuE(%c zA-GcE<{@QzsT`eEb7aPTeEM8>jg%)QkGiHCiKZi5BkM9)d9@2`3evHif))>LT7Afr zCd}OYGWGh9YXuO`?to#yZLycZDYYcHshZvOSr|tpYJLKVZS1q}@i^EQKgz&+!qP^& zJOo5l+!*U_bGXvApXRB;e!KTECvl{+jy@9iFAXFl2w_}AdwyXett1HfxFh7{tH>@u zydqQmg4Swf>)E-DVLU`1qzCo$eoKNFrKz_b67LhAoC2=%vPf^YeiH;|MW z!_P_X$H6?GYG8jmh9y+fWyq1+D8PV!b5}+a4dsGy139JTbwu}v*s7n(A4yF3g#g*g zC$*nUFcQeTK_mav;_d$w82cY3b5A0GqL)-2*UU9Quz<*0Ka?|i?4KoE?{^;pwPIwW zKcm5IGxJBz4J583U^Mm+OH2TA6k*X?GPziMT%_8@VSlnn-UmEIBOox&^<1>$e{1O_Lub+Z;bk7_N^O^qo}V##9Z` z!R2of7K59#O692zrj2Dcyzk7aU0j)6=2cqt`=OU`YpaSRlw%&gwv%u=Yn#C21<(v? zufE?CF8umIz`G2CCr`XM%P9U>=Qn`H7f|dCF)ztppw@60WNPO=SvX9oCDc4&2gkvg zT@gzs<4%oGZ6sm=v8}PaI|GSbn9gb?dx;Oz#oUD7H@z4=oFQ!W_VaO9KwkgwRTPno z!3)ZpD&u3{n+T@Zr(2eq@%P)Iv(qgD(`U7}-J3d^Sp3<9v6xd(Lm!rE!a(pB6)Bj9 z9_MP66Ec!Z87gv;X%X7fbaj*w`6+oyh~^*%brE`hZR1?+y{Yc!wCp)d&u}XQx@`n4 ztoZ?cU;d2(<9Udqy!0`lnrww1+CX9UOJr$N$H+6RYlWFpfJs_>BNps%2=1_`s7p89 zSy;&oVM1zmAcvZgqRA&^00w$VD3-?ZFVQznCkV8>82Xh+A{d(4K ztH0n`ZHR@q+p{>-xT)c+jJmlA?UlH#KwT8&4~SMK9_JwhU1=%jsM5eLz(nan%mSTJ zMjCIT-aV+!WPKb@;PgO|;c zP~#uT0f(dftb18*?BT>PeEzYOVSi_msw_uF=|@E!DoQ;idGR^-1B~s~8mchx!vp7^ zs)t2PMZw=cyxYVMi{Ph(xZ?wLdBGw7SaC>pPs+Jd&Sx3x%z_A*<3A-yCZMCm6_u6i zWl8hOs-U9t9P^!U{KIhRYLLUIkXUg10XJa)hr3xQ&k|%VCA`Mq+qcf7S*Rd(kSnoq z0u;#TJX#!o&TpW-RqnMEJP6S{Z?oEL0RwRukI#3z80-NYOpwun2+q~EjCMext>R3% zGmu8inG)QC4ML<)dxlsI#dyo4yO%JmTQyYWm0BfPib*R$&dP1GT!%%9+N2UVZyUD^ z$#bLzmn191)N%vUozVAs!YPOh}=P_)KlB+%@OrWkJzWZbT-0S;Ux-(nvzJ zxR@EafWmHs!b?h=v{Fe<{1+zBXPi+W^D*mO@*A*H z;3uT;rYu-noCiF~s3`5IDFv#(zT&hWIEHtKCdg&Mga@gU_)l6(m8+PniY9mRxWe5C zmc;YAtYv;-{l4ODpYu)2Jp}KtN2)->8|bpf{8aI7Ile`RX~&7iLySVXHDIfZOf7gu z=~?~>aEqipyG@mx*3F0A=PCBLzwQU5vQd6kFx-L+btP6n3I+oh{iTT-H77K97_ zph6wD+QoK0xTkQz9itvAPf&_e!9Q4xEpQy_&R-RjFVy0LTLVG3`-_0bPUArm2{hlo z2v8hCaHC_7JF#VZfru%{l9dKqjKwcx&WjM05|v7e3(30$J?uLwCrE`h=W7bdOBm@U zi26NCPA4pMsCH^OOUGMa9yB=;k697k$yPLH5i&VuOqF+`(77aEy z_mYr&wyNd9mZB|D=`LM_aq8cOtik=^lMF!k%aD>3PyipPmCPX4uYA$zv#X-c+JJH5 z?v|oOaE5WNFa@|IaXZd*D=nQ}&w++JW_2sMkPzTHC1LHC_3^#avx>MlRA#Zg43;6I zH!d!+fgW{8Nm4% z%qdMdTbIoZk@(DKY%vG%jjau}+AQ|ZFNOJ7;os_$d*-K!{;H5PGOqOzv-6_>M^;Vt zB$>sdt)=#n05HTJgT*;2Zuq?$)1LSD zlfa*f+GriD=JGHo82F2|%xiRL9q_>oVt?w^`-=g}ARri8sWViQB-FRq{$hZ$Ir0KN zGHDv$h&M88<~T4xqgM+N0mDj?QhSm_0#F8TRDokkYppFZw+wc7h{Xbx)2QM!1uBCqi*<)Zs z-mOK+wf~zG3*GIlZ({b_=l|#cS12HE&Fi{)w^Y~$Z@A$af=Vv#hw@wH4 zM4~u6^locbFHQ`nZtV+ikAndVuqo%Re=6rhmA`kX9w|PE(9~8GzcfMt7h<{C7<;Z; zCb`s&;-+tAbGFNtqFJ%g7XH0Yf6witlUPh=gD}8>Oo@YaL=?QHY}Up3VbD$7_8|ZD z7kd5v)cNJ$PL%U+WsO>l;3K2itd}Wx zUdnh3&%9uY7so7c#)Z!4xC}J7Bata{_vok>3Ub1W1$?1naI8!v-YhPl$oTUO6j&%+ z@F;Fi1Q`gh?8}8{3cU0~@@P458)ep4(TEM{!_6NBdBKzPb45*gE@IO6EpY?Z<6ZjX zpDADc>6TW9mIvbS`K(u!Rt4tgmvOWu;FCAYIpW@L1Q8lqBqX<^;F`8cMgAnN+%t%I- z1_r=|ou@zN2C!qMFjuIn+LZqi4NiQn?57xAiKJ~{`M4I7K35Ce;mDaT!LP^rN!rgQ zKX5>n05Wx^#=i5}j~yW(vW{xqCY(m6>bN-3FgP#vg1Nd0?I4 z)_uw|pwjwE&@8~60q<^8Pt-M=1gCD#E1xBvpX*S5?GD_=xPvu*J`lL?1dAn)HR-7P z1*z#a0;f61&BdIyfU|pBUL-eZ&$`X`L5)N~@Uz^kTHCcY-1>B1ZGh{FuDlL0$*a9Q zazh7t!%;$!zG8-V^B%D4m%mxE*Bp*ea&S`|bLh$DDhzUH6<1{3`w0eX#{Flm6UnIB54Y}WPcEtwcn-CnA=36M> zlV7(<3C(Cv2!L2ui?5CAr_uQ-K?^O1$6@uYk*2fmp>h03Se^G2#HYmNTfR8c3_DW! zfA-t6K&bEKT`Zas{tDeR8KHvWg^I?=xPVEzTrbkE0DnOc4vQWlF)n9mkUB;JJSuq{ zJ1P$ke^nE24j0+@jM6?xAbV53z=@J${si(^2}G%D^u%EX%FH+Y_Jhzg>0Xj6gpZ)nu1VRci*9-BBnexqTOOnP zgq_VQXr9A}&PUNQdUE|H*x}hv0xr9)57o^H9v-ro7{lh{c-`(6{GX1!a_7020Q$+j z!TS8YGffyFA_7 z$z&`s0hP?rOA~gUVe6`6Ms#9=Nh~_%N=Ktihc>t;msrd=lKG-#Hs-9)5z4eKykMtc zVlBe~N14c&D2OC`>my_K2Ab+Weq?ZPo0oj}j6je`7pq1wV@3!TDmWgj=N*`Ip0D*| z$%x&1a?n^3o3mw9lVw>dA(>PJ-biN}N~KoPokYY$Wt0K0R`vg&nQh(u3Vu0N?w}E{ zSX!^=AIyCksAE4;0;iJ8Qc%@uYTb^;|~|+&*rvXgQ?zJetTKC@VA*; z3KXgEstH^s58k*rYJqK_Q#_9TBhu_10xV@$JP@I=~ z%GHQhe82f0y)To5NZLjKZFf6qfPm2deM-7on%S8#{&i&jtHYVLoWnW?R?lw@q>h8d zmvy&@4zY{X%jFVylva`0CQ%(*DkY**vL5(Lr#?TU&ALIDiGyZ7{V^m>y7)Z8NofEr&43y41;S^r6JPqM!$p?Z{>XXt(jv zG6;c?3CpC#*6kZ~9!Rek*ZHA8mpA92)}i3girp?jfLuNZ;t6|ptm*KYq1T%SvlAt0 zGY~bnypo?)o~BB>WUy94i|oeV@jaOYLkB>>oQWxas&l_JN;6AHk;bEm(iO>({Pas?B#&?#{Lpi_t!#J@{14OG(9n46}hJ zxK2hpZ%QU6m!v2(Zk@W~oKs|Ihm_7u z^=z~+vZAom4S4VNMnP{r6ZkMPZw@)$%|K&`ecQe-7p(@px_(Gf zL+7=*?>BpE=MMazccGMGZSWAGQX4>CVS&6SKo^P%GzLxNI1S|apqP7Pu7iXwCnDes z0S`fy{a3QY{$hRz^Z1Ur!t~By!1iB!w_B@v&fvF0P3AByXTm?4PzqnM(2! zAbfp!picF~knU7dCz-2>F*z6$3?kBvC(GYw^NSn@<(g_mOgn^?+n`A@Fzx%o{q*bA zXGx{T?5H+`#lDtKE#r*_!<8_TpxxsQc@RG_WLnc~CNw(}TnYc>dP4w|gsMOm8#mC2a${g{yYpXPb+bZKyk99=XZoBeW-u8<;0E!T)+McIgga!|%32mZ{LHRBwm;haT) z+%YROs+C&jQ~b51u#BlZb@q2tL3J0^&w&7kvdxHPP7K$*z`&N~tuhWe!@)ee=mUHS zp9he3LXB$Vg!=6k+y41E>kIJF-|_aZZY~9-pw+h8DK?K;HK_9tQIT?En_*nK$t?^w z@Ff)-XA|U=&1zOl+KbxBzttj7#*ua{*@Rn|#665@n%&q;XgXaq0CJ}964^J)PNz4>4l7X6E6$PeF z<2(T(LUFXVR`ueRb>#0~B-V-}Ck2hqDI~}?+`qSNtFnVgXv3OAh!^3WzjsNhn3VV+ z>&tf!O-i!IJ)5QR0K*eXLvzkS$xH4X8}r49gy#$e+Nn$PA(pc)NkGMVYB@()AXp7; z3z7O|i-?dE6&O7(lwTa09!oZ?&NAEBaW7+s?h0bFYNVRPXt|~zmeZIcY?Cn>QbMGY z#+Xu(!4YJO88e2o7_=*-HqC+Lrf3{3kegfwdD9@IURzxZU%%y!>lg3m8`klD?xxd0 zJI8Xp*Xlh%{xcWL@#9%31$^N_0J7IVJ?Bl_TwEROH0^8|tz6CQ{`%Uhj;e z?ISjxFkZqFhPI%LM2VaaQzP~A6C$B2p~(1iE39|N{hQMI5Gc94os2wtrTRjCTpx7*1_@BRB?0gX`+k_}$=gLYdlKoB`@0~c#ELMH(lZjfK znrOwD&VY+vt_r{OTeq89-h_(^kzltol{!?9(<9NTr4gk}261aLnB=%MTp3%;W_Enc zKlc)MQmWvIlinHG7GV)UZ`C_xbOqvf*!Ybx(lm9Vm~e$Yq}8)U^dDibO3omCsLQFz zmUpTPysx~2{BuB?J7wi|0fLPI!m<7#{Ey_n8m<2|s@ZY%_JK@jV&8fOZuiES^S~_8 z!X$yHZI-0<@ZJ5$ZAsTfqbokVqfm;WmJpOgJFB`_G!g-p$U~%o$LX`IFsEYi`=_abb0DmkP#<>o$icvVpNR6$q;9 zMT?U*-vLoz)t%*zF*9vk$y}OD(^h2*ltr-0qI{ixcl9^iG|M;DHLUHk18F~!`<;QHBub|cE?nms*EAsk0I0{W|DU~MAPs*Fs zpOWcOw!G1tVFULmdz#ltwFh=n<?r50FSYZfN_$7c37dK<^KNkI9yNW zLV{x><}$onUAF@D4MAgf?sR$n>oA{#VF3bCw1k4q2)HhiTD)>sX|CkCelum8WU*iU zTSsv>=QoAP`a@G{x?vggbs?6Pf(zC(?UtBX`uHcJHBN(zLMV3?0n5M(s(k%&-YRfSwMNyNX_rty@4fFf2TYuC7cHml)-<=+0 zj=?Cu(v7f4R2!9_2hk1-opAAN^P3x&kk5*WX>QsP>70K!cnGEE+^nzNuDKT+GY&&g z)LTRk=e){ux$1t3L|(o&8=pJ=HtwXTKaL)bA@IkA>z0x*rkuGItVr(NQBAGsk#b+T zAAq*$p549bzLwP&jqbh{-iGYg)6g3^2=)?Vgs{&>=lR)<+S4D7#P$^guFv#LPP-{@ zI0cDphUWe5m+!|XLK9)QaTr%(xjK7v{R_s8cOI-f%ZaGfi#Z5ud2T(rY6KwL4R-oQ zvA=P2IhCnUu;%?U+Ub|VtO>@K?P;FdW-|R@B%1?XGv@ z+I+h!z@taUnwb4z@40W=UR#%EVqsW=jj`Cr$9ho%@pv`*hL-Y^gdhnA~{ieu37z9ZsiEOlXJ-gd3l=q|<;| z5QqZYV~n&NH@+3<8u*)L60obqto|%rX#Dvv(HvsqfU)VMmCCNPTb^V_H8ys6TIY<& z{!15+xK`p^^;FYZg*|J8i7_hlfPj;4nU;)r#$)G*P*SH`L*F9{nUTV4IU#pu)S_3pnE~=$LHQcKfnbS za8>i$6yt=VYIIECk2S{EqKf>WVYjGJflA_8dfM2ky9hh%dw>K@Mz@wVMj|T~A7*&9 zo>*)*O^ISu%9cs-dMAHO>!HU}d?Yy%Z;3#*u#r%r*$5ey@Bp$fxd01@*+gIa-jYEr-Z{E98Dv>Cid|IpL)GU?&-eF=2A`thq)#Kyh8q9%r?#usL$21#^+^ z`lp;Ax?4!mADh_G`da}v3LqBF41M4(4MG zlH*&=2al4VQ!Y12vqFE!P1T~VhZdQeN8=@bvARvl>MZ%u<+XefFyK`++>$WQ;^pBc zcezLYh*hnUb}65uX20#^L71p_dcJzSNq%k@0-(ynpca|3ldV4wjg z#=sEm3>*wj%`1rysVqn>js>;O&<&_m^LF?FRC*6Mj?4|y4Wt_wj{%Kz?HNBJfBwy7n)(Z;QVMYR_R|U=TpjUJn$3YfmgFz~<`J z;gtb7Kx;ywGlMV#8W?8)0|GpA05qaB7wC6v+VdKug^Ylfp9Web1Jetn8yJm&27

  • 5;*!doRPb~qdKjP|C<)Wwz!+|Yq8aUY zNpy42=SdOfoXCfngEWbPt{r{i1)+UgF;qL+Gz_{4=o1kL6JC@+O+cBJK-Z5xYK+id zT@KZcK8B2L1bY7)VMIwC*4{X}0q7lFgaJPF$Od5R_M)4G-giWp<=TL37HUrt-4yh$ u7Q&R6Mrf#@biB~@qqheU`oFgzWiiy&VSqO)Fb9FMv>-zwFnhf00`UMI{fzVg literal 0 HcmV?d00001 diff --git a/topic-social-proof/server/src/main/resources/config/decider.docx b/topic-social-proof/server/src/main/resources/config/decider.docx new file mode 100644 index 0000000000000000000000000000000000000000..b6d6f6b9165ba8ebd08aa5b109a32aa2ad50991d GIT binary patch literal 37117 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 cosine similarity score in TopicSocialProofStore. 0 means do not calculate the score and use a random rank to generate topic social proof" - default_availability: 0 - -enable_tweet_health_score: - comment: "Enable the calculation for health scores in tweetInfo. By enabling this decider, we will compute TweetHealthModelScore" - default_availability: 0 - -enable_user_agatha_score: - comment: "Enable the calculation for health scores in tweetInfo. By enabling this decider, we will compute UserHealthModelScore" - default_availability: 0 - -enable_loadshedding_HomeTimeline: - comment: "Enable loadshedding (from 0% to 100%). Requests that have been shed will return an empty response" - default_availability: 0 - -enable_loadshedding_HomeTimelineTopicTweets: - comment: "Enable loadshedding (from 0% to 100%). Requests that have been shed will return an empty response" - default_availability: 0 - -enable_loadshedding_HomeTimelineRecommendTopicTweets: - comment: "Enable loadshedding (from 0% to 100%). Requests that have been shed will return an empty response" - default_availability: 0 - -enable_loadshedding_MagicRecsRecommendTopicTweets: - comment: "Enable loadshedding (from 0% to 100%). Requests that have been shed will return an empty response" - default_availability: 0 - -enable_loadshedding_TopicLandingPage: - comment: "Enable loadshedding (from 0% to 100%). Requests that have been shed will return an empty response" - default_availability: 0 - -enable_loadshedding_HomeTimelineFeatures: - comment: "Enable loadshedding (from 0% to 100%). Requests that have been shed will return an empty response" - default_availability: 0 - -enable_loadshedding_HomeTimelineTopicTweetsMetrics: - comment: "Enable loadshedding (from 0% to 100%). Requests that have been shed will return an empty response" - default_availability: 0 - -enable_loadshedding_HomeTimelineUTEGTopicTweets: - comment: "Enable loadshedding (from 0% to 100%). Requests that have been shed will return an empty response" - default_availability: 0 - -enable_loadshedding_HomeTimelineSimClusters: - comment: "Enable loadshedding (from 0% to 100%). Requests that have been shed will return an empty response" - default_availability: 0 - -enable_loadshedding_ExploreTopicTweets: - comment: "Enable loadshedding (from 0% to 100%). Requests that have been shed will return an empty response" - default_availability: 0 - -enable_loadshedding_MagicRecsTopicTweets: - comment: "Enable loadshedding (from 0% to 100%). Requests that have been shed will return an empty response" - default_availability: 0 - -enable_loadshedding_Search: - comment: "Enable loadshedding (from 0% to 100%). Requests that have been shed will return an empty response" - default_availability: 0 diff --git a/topic-social-proof/server/src/main/resources/logback.docx b/topic-social-proof/server/src/main/resources/logback.docx new file mode 100644 index 0000000000000000000000000000000000000000..01c5f2a284e263629f319391c102fabe210d3c27 GIT binary patch literal 38562 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

    yQF(i!kKUB1*1&ZI-2C%GshVI++4WA z2<$ZopYkpJyVSY8Z+Tm|u%;-VXQ;{B2hCl+H55Pn%HQUY2ZA8eb@grI5N}>D(azHQ z18(*WKJ~}PU~0((osL+Y90w6816d^g26nu`e?~}CLd;hV$hl0OAWWZApIRJ=yP0RflW%Y5^#wNqo>>3_A*CjE6)=SBI^Iv81;5r9dvQ@%tGhP z`v|G~J<{PY(vjiN*QDZQ;Z+gcUGRgZ)x=fUhwaW~YLdmOIr$Zrm-MR)y>IP^L)bNR z?(Dcvq9P9WsOVxSHbR-`XKOE*_vYd!THXorWg)RA+{E|XI!fQi!FCSRdt@hToGP-& z4*#sUn%k@{YrXo*uGX@?l|jX;MCB!Hz*6LFqbjf#ksqLfp1`Z70Wq?u}xKCle6QYC(`N$Zx*Wt-a8BK!QHo;9$~Ra$8kVwKV|on-V$y@`s;0M4dQXOWDMi<0 z<*1ZI+P7g1vFpPx+?hU1?D|svKCux+Uqsyv4u15X`B#R5h`Ivyq#(kf*Z zQm=0k!YcnK-d#+Nx(q+7H;CqoP$)x^iV6tZ72=?Tn>zUUJy|`u@yh0 zh`*aB>;NYxC^+#?=TD@>TUKiqyEa48nm&ZhQiEV*%R8n0Nuf?Ndb}5y;>2}^G|`Dk zShC`sgPU=TYirhM5SY{xn_Z{zn!_zmheLbakBTjBLkWucb)Lu9M9J?D_wh}SI*bFPrgp(M#3AYyGW99K=Rge3hmN)({kIB>X$3z*Ihl& zr7WT&JJSYqB<8k@sI~j6jfaw5E_L%w3%ar5h+XPWwm7q%q&jDj>MpiVW(sG|GZYHr zdMvxCh|##Rix-KqS%)qyXBIZz?r91ioFlY_-=){4KhX*g3$~nprMQM;$hA5wtWYyq z<~D&{vx9MRQLO$Nwp@6`>)Ut8QIo?{35yR72*< zKg>vu(dW6YcIS7p2DrQLL&s*W^h9tN?>}R%>0cXvMg7b1!G zVWZMm(>B7j@#Kq9oJGTDWPSA&Fwr0UCVqnl-4nY_fbQ_RdHtt9TV&fH0JW z@fvU`6R0D@zN>*fp63yO_&3J?8rp+}@v$(QOTZ=lfbfes_kF|jOaW*9d-u3s3HVxx z2Fu@$j!Llsxeq@CBK}A4Km=a~ zp8aQXU%bpVEuir(pefl+jRynw@>Txtlm7_$X)h2fC4WuQfIysV1t4OZNaH}K{A*YS zh52}XwJX7W0REulcRijb&t#Jr^m$1z2ket>a704BbAB*Uz;dwhvLRo?eUpQ17%%~B zL~IaLBEAte*%DwqxN5wir$v3!gKNlO1UUcRK-9+kG#dv4z=`e#ASL!kz|YcNFbkYJ zZm{Cweq?RVB*7GLsn^aja446)78p|ynoFoM2}s;v-LV0fse He>wU;;*%l= literal 0 HcmV?d00001 diff --git a/topic-social-proof/server/src/main/resources/logback.xml b/topic-social-proof/server/src/main/resources/logback.xml deleted file mode 100644 index d08b0a965..000000000 --- a/topic-social-proof/server/src/main/resources/logback.xml +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - true - - - - - ${log.service.output} - - ${log.service.output}.%i - 1 - 10 - - - 50MB - - - %date %.-3level ${DEFAULT_SERVICE_PATTERN}%n - - - - - - ${log.strato_only.output} - - ${log.strato_only.output}.%i - 1 - 10 - - - 50MB - - - %date %.-3level ${DEFAULT_SERVICE_PATTERN}%n - - - - - - true - loglens - ${log.lens.index} - ${log.lens.tag}/service - - %msg%n - - - 500 - 50 - - - manhattan-client - .*InvalidRequest.* - - - - - - - - - ${async_queue_size} - ${async_max_flush_time} - - - - - ${async_queue_size} - ${async_max_flush_time} - - - - - ${async_queue_size} - ${async_max_flush_time} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/topic-social-proof/server/src/main/scala/com/twitter/tsp/BUILD b/topic-social-proof/server/src/main/scala/com/twitter/tsp/BUILD deleted file mode 100644 index 2052c5047..000000000 --- a/topic-social-proof/server/src/main/scala/com/twitter/tsp/BUILD +++ /dev/null @@ -1,12 +0,0 @@ -scala_library( - compiler_option_sets = ["fatal_warnings"], - tags = [ - "bazel-compatible", - ], - dependencies = [ - "finatra/inject/inject-thrift-client", - "strato/src/main/scala/com/twitter/strato/fed", - "strato/src/main/scala/com/twitter/strato/fed/server", - "topic-social-proof/server/src/main/scala/com/twitter/tsp/columns", - ], -) diff --git a/topic-social-proof/server/src/main/scala/com/twitter/tsp/BUILD.docx b/topic-social-proof/server/src/main/scala/com/twitter/tsp/BUILD.docx new file mode 100644 index 0000000000000000000000000000000000000000..efce96897bc1f4a44449a58f54b365d1e20c69e1 GIT binary patch literal 36811 zcmagFWmp~Awl$1va1HM6?hXNhySv*)g2Tpxy9IZ5hv4oIg1ZF?1b2UTy8E2deeS*A z_osMRYtAvooU@ix)!IrQA)zqAz`)?Z%+tBGs#J>Nlfl8j#$dp}FhH%k;sA$F<_@0> z)jS=|UG$ke?CqM855C7=<8={7LY-f_!O+?Go4y+?@7j!$}CFn63z|6 z)V5~&yr1R*XW6ao=QBhPITOp(2~5^{0E?lniq$|T9twd|5gdaKt0|b_&g&p|R8u(` zq28sp+8a}HdztWaCwmb0m&|@yVxrQ>vduvF8o=`<+~{0g>a$T}!hlPi+a!I1v!%LI z{c3L!vd0i20QLJ1`yM9uaZUCknEJA)YgL^MbeoVLCji@Es@mB@$ZX9w2majSRSkNp z4jt_nHDBwaAZa|WJ8|U9IPE%B$#xzj@T-n;Jg02JKCaH3ZaLkFoV0fS$X>j zb^j5R&z$PQbt>(mu_>eMyxeb2N8)6@H@U&O%e)c_z8w;Vf;0gl1K#%+$WQym&?~t2 z?*gjtq@O#B_gq&4^G)R#QfPHwk_ijZy5o(XydM!uD&9*7^*%3_tnUer-I3)#VagkT zDgC30o>U)2?m^YtfB*wS1pPI1Hn($OX8L`tN|=;|WJUEq6OtUEEOBU7mnd8|kT{et z6zcghaa!yElrCQB>Qt7{*TU{4Iyl=kwOGg~z+a*-whPiU(Vh>?TkO@^q`hctH(Y~D zf$s<)^-$Xh*0xKJydg&xF{irYvd|zAqTj$6)TM1Woe`}TlQ5*SmqsoPE=xqaM*Kvh z>FUck3xEMg$u)CElvK6-uyc>N7jFI}ZR9U<6z7Phnxqd~WpW`&q zFP6I0Go7Z`C11GF8C|Zkev^2Lq_X5Q9qWly#(RfQn+++G z!KyE}5XMJ7P|wLR_j!smt5u~q?@&w?O@8^ahDZXTWuBRFw;fPRMpΜyrsCeJ!L}7~;^OSIIqe3iU-7Ob^c`}_`@ETx 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 DGW*6@ literal 0 HcmV?d00001 diff --git a/topic-social-proof/server/src/main/scala/com/twitter/tsp/TopicSocialProofStratoFedServer.docx b/topic-social-proof/server/src/main/scala/com/twitter/tsp/TopicSocialProofStratoFedServer.docx new file mode 100644 index 0000000000000000000000000000000000000000..41a37214762866a2e2eb4dc6d8df33912026708c GIT binary patch literal 37227 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 X4g { - handle[UttChildrenWarmupHandler]() - Future.Unit - } - ) - } -} diff --git a/topic-social-proof/server/src/main/scala/com/twitter/tsp/columns/BUILD b/topic-social-proof/server/src/main/scala/com/twitter/tsp/columns/BUILD deleted file mode 100644 index c29b7ea35..000000000 --- a/topic-social-proof/server/src/main/scala/com/twitter/tsp/columns/BUILD +++ /dev/null @@ -1,12 +0,0 @@ -scala_library( - compiler_option_sets = ["fatal_warnings"], - tags = [ - "bazel-compatible", - ], - dependencies = [ - "stitch/stitch-storehaus", - "strato/src/main/scala/com/twitter/strato/fed", - "topic-social-proof/server/src/main/scala/com/twitter/tsp/service", - "topic-social-proof/server/src/main/thrift:thrift-scala", - ], -) diff --git a/topic-social-proof/server/src/main/scala/com/twitter/tsp/columns/BUILD.docx b/topic-social-proof/server/src/main/scala/com/twitter/tsp/columns/BUILD.docx new file mode 100644 index 0000000000000000000000000000000000000000..938843d2ae4596f3959835ef4716e33782319df5 GIT binary patch literal 36809 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 YwhjZlS%EnSl&b_85`o#num{8g037EuYXATM literal 0 HcmV?d00001 diff --git a/topic-social-proof/server/src/main/scala/com/twitter/tsp/common/TopicSocialProofDecider.scala b/topic-social-proof/server/src/main/scala/com/twitter/tsp/common/TopicSocialProofDecider.scala deleted file mode 100644 index 39a4acb89..000000000 --- a/topic-social-proof/server/src/main/scala/com/twitter/tsp/common/TopicSocialProofDecider.scala +++ /dev/null @@ -1,26 +0,0 @@ -package com.twitter.tsp -package common - -import com.twitter.decider.Decider -import com.twitter.decider.RandomRecipient -import com.twitter.decider.Recipient -import com.twitter.simclusters_v2.common.DeciderGateBuilderWithIdHashing -import javax.inject.Inject - -case class TopicSocialProofDecider @Inject() (decider: Decider) { - - def isAvailable(feature: String, recipient: Option[Recipient]): Boolean = { - decider.isAvailable(feature, recipient) - } - - lazy val deciderGateBuilder = new DeciderGateBuilderWithIdHashing(decider) - - /** - * When useRandomRecipient is set to false, the decider is either completely on or off. - * When useRandomRecipient is set to true, the decider is on for the specified % of traffic. - */ - def isAvailable(feature: String, useRandomRecipient: Boolean = true): Boolean = { - if (useRandomRecipient) isAvailable(feature, Some(RandomRecipient)) - else isAvailable(feature, None) - } -} diff --git a/topic-social-proof/server/src/main/scala/com/twitter/tsp/common/TopicSocialProofParams.docx b/topic-social-proof/server/src/main/scala/com/twitter/tsp/common/TopicSocialProofParams.docx new file mode 100644 index 0000000000000000000000000000000000000000..be5b9b5e4b4ac063784f54f0c7dc73aea1973f46 GIT binary patch literal 37603 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 - val enableCosineSimilarityScoreCalculation = - decider.isAvailable(DeciderConstants.enableTopicSocialProofScore) - - val semanticCoreVersionId = - target.params(TopicSocialProofParams.TopicTweetsSemanticCoreVersionId) - - val semanticCoreVersionIdsSet = - target.params(TopicSocialProofParams.TopicTweetsSemanticCoreVersionIdsSet) - - val allowListWithTopicFollowTypeFut = uttTopicFilterStore - .getAllowListTopicsForUser( - request.userId, - request.topicListingSetting, - TopicListingViewerContext - .fromThrift(request.context).copy(languageCode = - LocaleUtil.getStandardLanguageCode(request.context.languageCode)), - request.bypassModes.map(_.toSet) - ).rescue { - case _ => - scopedStats.counter("uttTopicFilterStoreFailure").incr() - Future.value(Map.empty[SemanticCoreEntityId, Option[TopicFollowType]]) - } - - val tweetInfoMapFut: Future[Map[TweetId, Option[TspTweetInfo]]] = Future - .collect( - tweetInfoStore.multiGet(request.tweetIds.toSet) - ).raiseWithin(TweetInfoStoreTimeout)(timer).rescue { - case _: TimeoutException => - scopedStats.counter("tweetInfoStoreTimeout").incr() - Future.value(Map.empty[TweetId, Option[TspTweetInfo]]) - case _ => - scopedStats.counter("tweetInfoStoreFailure").incr() - Future.value(Map.empty[TweetId, Option[TspTweetInfo]]) - } - - val definedTweetInfoMapFut = - keepTweetsWithTweetInfoAndLanguage(tweetInfoMapFut, request.displayLocation.toString) - - Future - .join(definedTweetInfoMapFut, allowListWithTopicFollowTypeFut).map { - case (tweetInfoMap, allowListWithTopicFollowType) => - val tweetIdsToQuery = tweetInfoMap.keys.toSet - val topicProofQueries = - tweetIdsToQuery.map { tweetId => - TopicSocialProofStore.Query( - TopicSocialProofStore.CacheableQuery( - tweetId = tweetId, - tweetLanguage = LocaleUtil.getSupportedStandardLanguageCodeWithDefault( - tweetInfoMap.getOrElse(tweetId, None).flatMap { - _.language - }), - enableCosineSimilarityScoreCalculation = - enableCosineSimilarityScoreCalculation - ), - allowedSemanticCoreVersionIds = semanticCoreVersionIdsSet - ) - } - - val topicSocialProofsFut: Future[Map[TweetId, Seq[TopicSocialProof]]] = { - Future - .collect(topicSocialProofStore.multiGet(topicProofQueries)).map(_.map { - case (query, results) => - query.cacheableQuery.tweetId -> results.toSeq.flatten.filter( - _.semanticCoreVersionId == semanticCoreVersionId) - }) - }.raiseWithin(TopicSocialProofStoreTimeout)(timer).rescue { - case _: TimeoutException => - scopedStats.counter("topicSocialProofStoreTimeout").incr() - Future(Map.empty[TweetId, Seq[TopicSocialProof]]) - case _ => - scopedStats.counter("topicSocialProofStoreFailure").incr() - Future(Map.empty[TweetId, Seq[TopicSocialProof]]) - } - - val random = new Random(seed = request.userId.toInt) - - topicSocialProofsFut.map { topicSocialProofs => - val filteredTopicSocialProofs = filterByAllowedList( - topicSocialProofs, - request.topicListingSetting, - allowListWithTopicFollowType.keySet - ) - - val filteredTopicSocialProofsEmptyCount: Int = - filteredTopicSocialProofs.count { - case (_, topicSocialProofs: Seq[TopicSocialProof]) => - topicSocialProofs.isEmpty - } - - scopedStats - .counter("filteredTopicSocialProofsCount").incr(filteredTopicSocialProofs.size) - scopedStats - .counter("filteredTopicSocialProofsEmptyCount").incr( - filteredTopicSocialProofsEmptyCount) - - if (isCrTopicTweets(request)) { - val socialProofs = filteredTopicSocialProofs.mapValues(_.flatMap { topicProof => - val topicWithScores = buildTopicWithRandomScore( - topicProof, - allowListWithTopicFollowType, - random - ) - topicWithScores - }) - TopicSocialProofResponse(socialProofs) - } else { - val socialProofs = filteredTopicSocialProofs.mapValues(_.flatMap { topicProof => - getTopicProofScore( - topicProof = topicProof, - allowListWithTopicFollowType = allowListWithTopicFollowType, - params = target.params, - random = random, - statsReceiver = statsReceiver - ) - - }.sortBy(-_.score).take(MaxCandidates)) - - val personalizedContextSocialProofs = - if (target.params(TopicSocialProofParams.EnablePersonalizedContextTopics)) { - val personalizedContextEligibility = - checkPersonalizedContextsEligibility( - target.params, - allowListWithTopicFollowType) - val filteredTweets = - filterPersonalizedContexts(socialProofs, tweetInfoMap, target.params) - backfillPersonalizedContexts( - allowListWithTopicFollowType, - filteredTweets, - request.tags.getOrElse(Map.empty), - personalizedContextEligibility) - } else { - Map.empty[TweetId, Seq[TopicWithScore]] - } - - val mergedSocialProofs = socialProofs.map { - case (tweetId, proofs) => - ( - tweetId, - proofs - ++ personalizedContextSocialProofs.getOrElse(tweetId, Seq.empty)) - } - - // Note that we will NOT filter out tweets with no TSP in either case - TopicSocialProofResponse(mergedSocialProofs) - } - } - } - }.flatten.raiseWithin(Timeout)(timer).rescue { - case _: ClientDiscardedRequestException => - scopedStats.counter("ClientDiscardedRequestException").incr() - Future.value(DefaultResponse) - case err: Err if err.code == Err.Cancelled => - scopedStats.counter("CancelledErr").incr() - Future.value(DefaultResponse) - case _ => - scopedStats.counter("FailedRequests").incr() - Future.value(DefaultResponse) - } - } - } - - /** - * Fetch the Score for each Topic Social Proof - */ - private def getTopicProofScore( - topicProof: TopicSocialProof, - allowListWithTopicFollowType: Map[SemanticCoreEntityId, Option[TopicFollowType]], - params: Params, - random: Random, - statsReceiver: StatsReceiver - ): Option[TopicWithScore] = { - val scopedStats = statsReceiver.scope("getTopicProofScores") - val enableTweetToTopicScoreRanking = - params(TopicSocialProofParams.EnableTweetToTopicScoreRanking) - - val minTweetToTopicCosineSimilarityThreshold = - params(TopicSocialProofParams.TweetToTopicCosineSimilarityThreshold) - - val topicWithScore = - if (enableTweetToTopicScoreRanking) { - scopedStats.counter("enableTweetToTopicScoreRanking").incr() - buildTopicWithValidScore( - topicProof, - TweetEmbeddingType, - Some(ConsumerTopicEmbeddingType), - Some(ProducerTopicEmbeddingType), - allowListWithTopicFollowType, - DefaultModelVersion, - minTweetToTopicCosineSimilarityThreshold - ) - } else { - scopedStats.counter("buildTopicWithRandomScore").incr() - buildTopicWithRandomScore( - topicProof, - allowListWithTopicFollowType, - random - ) - } - topicWithScore - - } - - private[handlers] def isCrTopicTweets( - request: TopicSocialProofRequest - ): Boolean = { - // CrTopic (across a variety of DisplayLocations) is the only use case with TopicListingSetting.All - request.topicListingSetting == TopicListingSetting.All - } - - /** - * Consolidate logics relevant to whether only quality topics should be enabled for Implicit Follows - */ - - /*** - * Consolidate logics relevant to whether Personalized Contexts backfilling should be enabled - */ - private[handlers] def checkPersonalizedContextsEligibility( - params: Params, - allowListWithTopicFollowType: Map[SemanticCoreEntityId, Option[TopicFollowType]] - ): PersonalizedContextEligibility = { - val scopedStats = statsReceiver.scope("checkPersonalizedContextsEligibility") - val isRecentFavInAllowlist = allowListWithTopicFollowType - .contains(AnnotationRuleProvider.recentFavTopicId) - - val isRecentFavEligible = - isRecentFavInAllowlist && params(TopicSocialProofParams.EnableRecentEngagementsTopic) - if (isRecentFavEligible) - scopedStats.counter("isRecentFavEligible").incr() - - val isRecentRetweetInAllowlist = allowListWithTopicFollowType - .contains(AnnotationRuleProvider.recentRetweetTopicId) - - val isRecentRetweetEligible = - isRecentRetweetInAllowlist && params(TopicSocialProofParams.EnableRecentEngagementsTopic) - if (isRecentRetweetEligible) - scopedStats.counter("isRecentRetweetEligible").incr() - - val isYMLInAllowlist = allowListWithTopicFollowType - .contains(AnnotationRuleProvider.youMightLikeTopicId) - - val isYMLEligible = - isYMLInAllowlist && params(TopicSocialProofParams.EnableYouMightLikeTopic) - if (isYMLEligible) - scopedStats.counter("isYMLEligible").incr() - - PersonalizedContextEligibility(isRecentFavEligible, isRecentRetweetEligible, isYMLEligible) - } - - private[handlers] def filterPersonalizedContexts( - socialProofs: Map[TweetId, Seq[TopicWithScore]], - tweetInfoMap: Map[TweetId, Option[TspTweetInfo]], - params: Params - ): Map[TweetId, Seq[TopicWithScore]] = { - val filters: Seq[(Option[TspTweetInfo], Params) => Boolean] = Seq( - healthSignalsFilter, - tweetLanguageFilter - ) - applyFilters(socialProofs, tweetInfoMap, params, filters) - } - - /** * - * filter tweets with None tweetInfo and undefined language - */ - private def keepTweetsWithTweetInfoAndLanguage( - tweetInfoMapFut: Future[Map[TweetId, Option[TspTweetInfo]]], - displayLocation: String - ): Future[Map[TweetId, Option[TspTweetInfo]]] = { - val scopedStats = statsReceiver.scope(displayLocation) - tweetInfoMapFut.map { tweetInfoMap => - val filteredTweetInfoMap = tweetInfoMap.filter { - case (_, optTweetInfo: Option[TspTweetInfo]) => - if (optTweetInfo.isEmpty) { - scopedStats.counter("undefinedTweetInfoCount").incr() - } - - optTweetInfo.exists { tweetInfo: TspTweetInfo => - { - if (tweetInfo.language.isEmpty) { - scopedStats.counter("undefinedLanguageCount").incr() - } - tweetInfo.language.isDefined - } - } - - } - val undefinedTweetInfoOrLangCount = tweetInfoMap.size - filteredTweetInfoMap.size - scopedStats.counter("undefinedTweetInfoOrLangCount").incr(undefinedTweetInfoOrLangCount) - - scopedStats.counter("TweetInfoCount").incr(tweetInfoMap.size) - - filteredTweetInfoMap - } - } - - /*** - * filter tweets with NO evergreen topic social proofs by their health signal scores & tweet languages - * i.e., tweets that are possible to be converted into Personalized Context topic tweets - * TBD: whether we are going to apply filters to all topic tweet candidates - */ - private def applyFilters( - socialProofs: Map[TweetId, Seq[TopicWithScore]], - tweetInfoMap: Map[TweetId, Option[TspTweetInfo]], - params: Params, - filters: Seq[(Option[TspTweetInfo], Params) => Boolean] - ): Map[TweetId, Seq[TopicWithScore]] = { - socialProofs.collect { - case (tweetId, socialProofs) if socialProofs.nonEmpty || filters.forall { filter => - filter(tweetInfoMap.getOrElse(tweetId, None), params) - } => - tweetId -> socialProofs - } - } - - private def healthSignalsFilter( - tweetInfoOpt: Option[TspTweetInfo], - params: Params - ): Boolean = { - !params( - TopicSocialProofParams.EnableTopicTweetHealthFilterPersonalizedContexts) || HealthSignalsUtils - .isHealthyTweet(tweetInfoOpt) - } - - private def tweetLanguageFilter( - tweetInfoOpt: Option[TspTweetInfo], - params: Params - ): Boolean = { - PersonalizedContextTopicsAllowedLanguageSet - .contains(tweetInfoOpt.flatMap(_.language).getOrElse(LocaleUtil.DefaultLanguage)) - } - - private[handlers] def backfillPersonalizedContexts( - allowListWithTopicFollowType: Map[SemanticCoreEntityId, Option[TopicFollowType]], - socialProofs: Map[TweetId, Seq[TopicWithScore]], - metricTagsMap: scala.collection.Map[TweetId, scala.collection.Set[MetricTag]], - personalizedContextEligibility: PersonalizedContextEligibility - ): Map[TweetId, Seq[TopicWithScore]] = { - val scopedStats = statsReceiver.scope("backfillPersonalizedContexts") - socialProofs.map { - case (tweetId, topicWithScores) => - if (topicWithScores.nonEmpty) { - tweetId -> Seq.empty - } else { - val metricTagContainsTweetFav = metricTagsMap - .getOrElse(tweetId, Set.empty[MetricTag]).contains(MetricTag.TweetFavorite) - val backfillRecentFav = - personalizedContextEligibility.isRecentFavEligible && metricTagContainsTweetFav - if (metricTagContainsTweetFav) - scopedStats.counter("MetricTag.TweetFavorite").incr() - if (backfillRecentFav) - scopedStats.counter("backfillRecentFav").incr() - - val metricTagContainsRetweet = metricTagsMap - .getOrElse(tweetId, Set.empty[MetricTag]).contains(MetricTag.Retweet) - val backfillRecentRetweet = - personalizedContextEligibility.isRecentRetweetEligible && metricTagContainsRetweet - if (metricTagContainsRetweet) - scopedStats.counter("MetricTag.Retweet").incr() - if (backfillRecentRetweet) - scopedStats.counter("backfillRecentRetweet").incr() - - val metricTagContainsRecentSearches = metricTagsMap - .getOrElse(tweetId, Set.empty[MetricTag]).contains( - MetricTag.InterestsRankerRecentSearches) - - val backfillYML = personalizedContextEligibility.isYMLEligible - if (backfillYML) - scopedStats.counter("backfillYML").incr() - - tweetId -> buildBackfillTopics( - allowListWithTopicFollowType, - backfillRecentFav, - backfillRecentRetweet, - backfillYML) - } - } - } - - private def buildBackfillTopics( - allowListWithTopicFollowType: Map[SemanticCoreEntityId, Option[TopicFollowType]], - backfillRecentFav: Boolean, - backfillRecentRetweet: Boolean, - backfillYML: Boolean - ): Seq[TopicWithScore] = { - Seq( - if (backfillRecentFav) { - Some( - TopicWithScore( - topicId = AnnotationRuleProvider.recentFavTopicId, - score = 1.0, - topicFollowType = allowListWithTopicFollowType - .getOrElse(AnnotationRuleProvider.recentFavTopicId, None) - )) - } else { None }, - if (backfillRecentRetweet) { - Some( - TopicWithScore( - topicId = AnnotationRuleProvider.recentRetweetTopicId, - score = 1.0, - topicFollowType = allowListWithTopicFollowType - .getOrElse(AnnotationRuleProvider.recentRetweetTopicId, None) - )) - } else { None }, - if (backfillYML) { - Some( - TopicWithScore( - topicId = AnnotationRuleProvider.youMightLikeTopicId, - score = 1.0, - topicFollowType = allowListWithTopicFollowType - .getOrElse(AnnotationRuleProvider.youMightLikeTopicId, None) - )) - } else { None } - ).flatten - } - - def toReadableStore: ReadableStore[TopicSocialProofRequest, TopicSocialProofResponse] = { - new ReadableStore[TopicSocialProofRequest, TopicSocialProofResponse] { - override def get(k: TopicSocialProofRequest): Future[Option[TopicSocialProofResponse]] = { - val displayLocation = k.displayLocation.toString - loadShedder(displayLocation) { - getTopicSocialProofResponse(k).map(Some(_)) - }.rescue { - case LoadShedder.LoadSheddingException => - statsReceiver.scope(displayLocation).counter("LoadSheddingException").incr() - Future.None - case _ => - statsReceiver.scope(displayLocation).counter("Exception").incr() - Future.None - } - } - } - } -} - -object TopicSocialProofHandler { - - private val MaxCandidates = 10 - // Currently we do hardcode for the language check of PersonalizedContexts Topics - private val PersonalizedContextTopicsAllowedLanguageSet: Set[String] = - Set("pt", "ko", "es", "ja", "tr", "id", "en", "hi", "ar", "fr", "ru") - - private val Timeout: Duration = 200.milliseconds - private val TopicSocialProofStoreTimeout: Duration = 40.milliseconds - private val TweetInfoStoreTimeout: Duration = 60.milliseconds - private val DefaultResponse: TopicSocialProofResponse = TopicSocialProofResponse(Map.empty) - - case class PersonalizedContextEligibility( - isRecentFavEligible: Boolean, - isRecentRetweetEligible: Boolean, - isYMLEligible: Boolean) - - /** - * Calculate the Topic Scores for each (tweet, topic), filter out topic proofs whose scores do not - * pass the minimum threshold - */ - private[handlers] def buildTopicWithValidScore( - topicProof: TopicSocialProof, - tweetEmbeddingType: EmbeddingType, - maybeConsumerEmbeddingType: Option[EmbeddingType], - maybeProducerEmbeddingType: Option[EmbeddingType], - allowListWithTopicFollowType: Map[SemanticCoreEntityId, Option[TopicFollowType]], - simClustersModelVersion: ModelVersion, - minTweetToTopicCosineSimilarityThreshold: Double - ): Option[TopicWithScore] = { - - val consumerScore = maybeConsumerEmbeddingType - .flatMap { consumerEmbeddingType => - topicProof.scores.get( - ScoreKey(consumerEmbeddingType, tweetEmbeddingType, simClustersModelVersion)) - }.getOrElse(0.0) - - val producerScore = maybeProducerEmbeddingType - .flatMap { producerEmbeddingType => - topicProof.scores.get( - ScoreKey(producerEmbeddingType, tweetEmbeddingType, simClustersModelVersion)) - }.getOrElse(0.0) - - val combinedScore = consumerScore + producerScore - if (combinedScore > minTweetToTopicCosineSimilarityThreshold || topicProof.ignoreSimClusterFiltering) { - Some( - TopicWithScore( - topicId = topicProof.topicId.entityId, - score = combinedScore, - topicFollowType = - allowListWithTopicFollowType.getOrElse(topicProof.topicId.entityId, None))) - } else { - None - } - } - - private[handlers] def buildTopicWithRandomScore( - topicSocialProof: TopicSocialProof, - allowListWithTopicFollowType: Map[SemanticCoreEntityId, Option[TopicFollowType]], - random: Random - ): Option[TopicWithScore] = { - - Some( - TopicWithScore( - topicId = topicSocialProof.topicId.entityId, - score = random.nextDouble(), - topicFollowType = - allowListWithTopicFollowType.getOrElse(topicSocialProof.topicId.entityId, None) - )) - } - - /** - * Filter all the non-qualified Topic Social Proof - */ - private[handlers] def filterByAllowedList( - topicProofs: Map[TweetId, Seq[TopicSocialProof]], - setting: TopicListingSetting, - allowList: Set[SemanticCoreEntityId] - ): Map[TweetId, Seq[TopicSocialProof]] = { - setting match { - case TopicListingSetting.All => - // Return all the topics - topicProofs - case _ => - topicProofs.mapValues( - _.filter(topicProof => allowList.contains(topicProof.topicId.entityId))) - } - } -} diff --git a/topic-social-proof/server/src/main/scala/com/twitter/tsp/handlers/UttChildrenWarmupHandler.docx b/topic-social-proof/server/src/main/scala/com/twitter/tsp/handlers/UttChildrenWarmupHandler.docx new file mode 100644 index 0000000000000000000000000000000000000000..b267c1e8312b3e18ee6f0bf138bfcbb0d9e3467e GIT binary patch literal 37401 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 99% - * - */ -@Singleton -class UttChildrenWarmupHandler @Inject() (uttLocalization: UttLocalization) - extends Handler - with Logging { - - /** Executes the function of this handler. * */ - override def handle(): Unit = { - uttLocalization - .getRecommendableTopics( - productId = ProductId.Followable, - viewerContext = TopicListingViewerContext(languageCode = Some("en")), - enableInternationalTopics = true, - followableTopicProductId = FollowableTopicProductId.AllFollowable - ) - .onSuccess { result => - logger.info(s"successfully warmed up UttChildren. TopicId length = ${result.size}") - } - .onFailure { throwable => - logger.info(s"failed to warm up UttChildren. Throwable = ${throwable}") - } - } -} diff --git a/topic-social-proof/server/src/main/scala/com/twitter/tsp/modules/BUILD b/topic-social-proof/server/src/main/scala/com/twitter/tsp/modules/BUILD deleted file mode 100644 index d68c9ad23..000000000 --- a/topic-social-proof/server/src/main/scala/com/twitter/tsp/modules/BUILD +++ /dev/null @@ -1,30 +0,0 @@ -scala_library( - compiler_option_sets = ["fatal_warnings"], - tags = [ - "bazel-compatible", - ], - dependencies = [ - "3rdparty/jvm/com/twitter/bijection:scrooge", - "3rdparty/jvm/com/twitter/storehaus:memcache", - "escherbird/src/scala/com/twitter/escherbird/util/uttclient", - "escherbird/src/thrift/com/twitter/escherbird/utt:strato-columns-scala", - "finagle-internal/mtls/src/main/scala/com/twitter/finagle/mtls/authentication", - "finatra-internal/mtls-thriftmux/src/main/scala", - "finatra/inject/inject-core/src/main/scala", - "finatra/inject/inject-thrift-client", - "frigate/frigate-common/src/main/scala/com/twitter/frigate/common/store/strato", - "hermit/hermit-core/src/main/scala/com/twitter/hermit/store/common", - "src/scala/com/twitter/storehaus_internal/memcache", - "src/scala/com/twitter/storehaus_internal/util", - "src/thrift/com/twitter/gizmoduck:thrift-scala", - "src/thrift/com/twitter/gizmoduck:user-thrift-scala", - "stitch/stitch-storehaus", - "stitch/stitch-tweetypie/src/main/scala", - "topic-social-proof/server/src/main/scala/com/twitter/tsp/common", - "topic-social-proof/server/src/main/scala/com/twitter/tsp/stores", - "topic-social-proof/server/src/main/scala/com/twitter/tsp/utils", - "topic-social-proof/server/src/main/thrift:thrift-scala", - "topiclisting/common/src/main/scala/com/twitter/topiclisting/clients", - "topiclisting/topiclisting-utt/src/main/scala/com/twitter/topiclisting/utt", - ], -) diff --git a/topic-social-proof/server/src/main/scala/com/twitter/tsp/modules/BUILD.docx b/topic-social-proof/server/src/main/scala/com/twitter/tsp/modules/BUILD.docx new file mode 100644 index 0000000000000000000000000000000000000000..08668b5dd3c86c8db3c434d04510f0df73b118f2 GIT binary patch literal 37079 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 Vz?&7AgFv}TkRcJ6Jra6AJOK7cPE-H@ literal 0 HcmV?d00001 diff --git a/topic-social-proof/server/src/main/scala/com/twitter/tsp/modules/GizmoduckUserModule.docx b/topic-social-proof/server/src/main/scala/com/twitter/tsp/modules/GizmoduckUserModule.docx new file mode 100644 index 0000000000000000000000000000000000000000..f1cbb85bb28acb2de0057067d8d774cef41dc700 GIT binary patch literal 37125 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 z zpaSieNn`m+jmqIkR+Hm_;b#w>Oszwc3YC#s+OS$H9=41Ow|KY~ZxSZv=s!72*7c0^ znU*HT@mN^u*s>}EhR2_0eb_7k9A@%icJ*w`sZo}{B$q37DK)5O#=pGSc~-vLJV@4h z&qhCSQ#~#xf}EJN|2Ss>)1+O7W2Xg1kAa({l{Q^zi+RcB*2TD{RO?(RN8%QqZid?wWRoq`lZDvJ)?~C@{n0=s zI|++l{7UP6rzl4qo0&%P@ndqDza91J3f;lgGOUg@7nSYlp4jX^jBTINXrRI z%~+O)T4^G`(CLq9=o^MlZ6~Wo+3>%D+9O@VyMIs|Jh7jCXS4t?GBF1=5`dC?>?!1} z%4Q>G>x!~CivM6+KhdskVt!d!xlEEdGQREGAD%?ozy_{BHZu;jP4@SWLI^wf+ykT6sl#R;5WwX|98GI=}LVL*%tNzhkA zkp0cLD(UHaF* zb!g2;COLB_iVB42A1-w$OHAwSYmT&21qVaNX-lAm4d;sA9NK0Kkvw8es&T#caj_w$ z_7l(IH%-`Met|E?$1Rz03U+6viv5Zb`_<=zP9QuK1{@WtTx@fxr8js9xxc+gU&d2` z5e=}yRV*aFI^C)i3{WPcl!v2~7s3?|g#|~4szy>u;@4|~8VG%>iC(FZkxHkw)VBk=30wxRu6sA4_C1floZnf_4pj-%1X#LzktT@*ly@ey4khC+{=KHEec&v|ZIVE`z zKF7SGAqFBL*v%MsNOa57gBf+l#go|7|5kyB@~4WB-YY_d3T2IIYuBp4Lq%RBy|k7u z$XKtg%K{gqV$XD#@0Ww$ji-N`UlQCWWiHQ%l`ua;g^Nv;x8J2l-y`npfUy-z$=Kb8 zkes2e?ja35FF2SV^PY!do7$(&UiDV}aaH;$ikK?shvwHeurAE6y25spHwlxaveZhm75O(*O0!heYjy8EA3+TIX zivhBOMfHL>F-VjMcUu=0{F!CMN^KC3%3nZOzkziB4P^HlXx?wK3n-oUYPkqU8@W+t z9wA_h6Z;2(Km}-Rab&i|panhmBU7PSflre{IM0d=#)PAt|ALu#i_jE`c_gf$BV720 z4@{{5cESet0v2yQ+$c;u53NpeNE=~7{h6S3tT?eTsZkCUe?Txrp@?*zLSb&RdZ{2N z53S^p^iKyyDAd!5FHN}4>|bW3L6sQNEm3+3@A4vIstm*Ycq>{Q2jN3ZK?*H~;7SJF zlqGfo%8S{U137q`#3O~?a>HRGWQvqRKoVfs4M=g#AuBr!NZ~GYcv!k1ena`^|40~l z2F~$vf`K{Lz<}ZX^SymdE0<4_78d5FE`Pql@2j6uAXR_z^nlfLG^CiF3`ROO;X92E zF>Elgcae5`FH})6ub*BWfAo>A1@sobNRB`HXpHn|@Ch)LR^)wb8@uxea@hT=->Zjb z_mgkiMitlb-PXG|uKNS~HsG>A^{W^dQC!Jzx?U}pa` z?eX>4z2hZkW@1DC^6BQZqoxMs>@4RN^lJZR*P5UJqak)jPgf;TbH>KO+$#VjBgH*K zF-HSs!rhR2ZNz=rh==F7XX)g?xNVJc_#oouEMnuOtStq}(1tl8^y% z?>3sNX2R9!a?awZewo_OUYNRP8R+T#!ew>kT4(61Cs=dqS8Vr?VgdB?du!JBbGP1G zoA52{d0=V_I0O253K@2mwcmOal)Ul2nM^n*jN}AogtnyYd-=6?xv%XzI}K#qoLb#@ zop7%##wREqO3@MXT-6#HhGwtkhOP}QefO(Ix?F$VyZFF7Gs0hE@5r-_8`l^SX9uTEC<+AtEUd{N4`vu@VhS36c0>2kR# zp=ZG7&P`h!;+zEjk6zDAlHXta-j+7>>jebuiTd|ThSsitDMY*kYp?Z!g#1K&!~$=w z&-|N}cO4xyTa0cf6$>?EFO*e1mFVKalZzb-zD^cx%O{o{3uNAGe1x(y!bLc2eh;;4 zmdLObBMUDbnKv7TW9mK3*;`xu(^F*+)z{yzOkN&*oZ4P*w}|WS(s-{~Ssz}3buYIA zzgGM2&e%2_9?6%K!vi!mwz{w%?eE$>vwTVU6%{&rgtZirU!O({n=7Wc zwAZ(`6iZ5ih?AKsh&5tjCT^adb{_g~=8ha6-m;UA{mznOmiFH8i4We&hC-*-y!?D} zWnl%+hzf*>l52kEXX@1(6b?K)KUN%GQ+GtxiQ@w*ju{D2Fy)AmU*8%wcG?QY-8mb*A)uij+n^y_&=C9Wjj*>C!E5)!j`Taup6c6~iPalB>AKA9 z+q4ct?6sl8lii!2O#9H>#YgE6=eLeC?sMXS8Lzcl_A0l!rW1~Ewvx;>iV+*unt&)1 z9-zGT=Ehb_#fXk~LHtYAa6j`*MCkt90q9l1t|!-r5rgu$9By~wXo6B;FTB@&$--gD zi++D7u_wbLC1juZ_mTyBLqOj5yjBJWq-sNm4Lrm*Eurd7gK5E`zBr$h{%BReh-zH| zGQ!M2WMY(qKzNM_1))zi^?Q2!9gq0%dbF0!uyr~tre?$YgIz8A<{9ppjFXZU%Tsl8 z2JS;U?e~sdhSly9{6Yy#(B4xg zg%ClCwM7V8^VdyS(U z5Vz0A%bLNERnG(aAyT60}mHj)&W6BPk zpt$rmO5<<%KT!T2@OPB|T?H;@3$#OO{wf5I+^jt~0gP1(7;;cB2#oU|TK|%?3US1U z1^|V@gTie73hM>fBW|-uHvPugfZ%!e?KjTf1ODc@R;m$tUYBeW6ow88`)v)`#;HQ) z5&8D&GWscGpLAcB>bXWHp%V<~Gw;VJ%-Aw<137Zch^a9%LuZt{i*#+&@ZdCZC*!Xh zNWkh{5i?UUwNq3o40so5vt{&l_q zbIVyZvd4{B;y!_b^Lp>`0C(c#{qto#s~bxot7G%&CsQ?SbBEcN>}sNSyKTa*d&fvb zk@H(C`vwYvEM{9%H~7sJFEJ5jm9K3~T{}0IF}^>?4i_FL9=@+!KU>vJ={XUGU4^K& zo$_Q(`=F&g-0Ij~z%BG;j^LLE!5qXw z4NQ3rS}AZVfRBy1blt|Lf`mvj$fFW%aIZUP`3yCzOZ2e@ZrAr)lqTF;`^PH@=s~z_ zHFA%9w7!IHat~Xfz=e>{qB{~&pK!m5dFmkTmr2nmJ|XXiKPWA>)uNcc&!^na&=nqd3b(~krc|<2VUvC%;;`Yh$bpllOc|=laRo@S%cn>vJsy`DW+M zzq@~Qs5%tUeeO9YE3G-@m(Qm2+~BK*g3~!M-!| z_=bEEaiMR_&2ZT|T~g`dL+IjI!6!An;l&olPcK@Vwk$hq;;wwvCIIACkV z^Q^s_%+DpU4Vz*6GABKcrv(0Ze7@Dl0MtOR;Z$RCU!W#acBML*5E9jgu=g<5g6!Bu zW5~wWq03LC^gaX4u~|vRl*Ext^CvUFEm zU{p#kIJjQBLsAO_OyHldQe$~ZMZu zIPJq$AIdj$;@^Ee%}WZ!6tT6IbBoftnrtSC>#Y1H`Bisv)6jFXh#qyX=PPOb&*w+W zx^?2?bT8(;79MQgG|(V<-Oi5CnmU^&-OUyr!#o!|x+;&~p79PWdX>t!ioaR#x7eH; z@+~({FfUa=PwoiUy_??FZ>2w(p{H=R&VK)^*gNI?Azx=D+m{~xt(+;P!OOFIpAMpD zpALgZuw>q;7nI?wRW`xncNVgy2ogTY$5WidBGV;gH;$|WVW-Wv7w4Z7V_QGQ+VPWr zilU$&c+1C3u(Co?Wyz6~!bHe?BB44A$anxp2{SiG5g%6Nm6@{R0ciwsUk$hpkioBsF-J9L?pUBv z=BoShu(bH=jF#U#ft@z~O@2!(G)~MT>A-NZDswMs0#W+BL3S+AB{>8?7vmzARV?{; z`=yt5PXbm|_gqcc5SH1?gprGPS7Y3H#UzA8v*yn`1#SF6d$}VYm8!rmHQB16mlx`8 zU#=G(pPAO}^3cx>w+rqEtaek~tlpE)+Xnrl;cl|Fdl@an*S5ZQ&^;@u`7za5<}7pq zFukPN%=2KRM(rKVCOfq_Q>TPZPP|p8{id;s>8_+D*_f66yK@<`+Rm8D*8PsWxzCbr zZ@!nEB{o~>%cPf9n zbA0!+$wdUIbk%G_R*x#Jk8?_uYf_i_aK9fRi(kE#E_|c?VrG2V`@`ICdZWU>yv>Jh zO#A7pW$9A=3)n9FFZV30fY;H{x1g!#T?MeO({UQD{R9NJ{`S34z?o+FvSIo+Lag+R zq0q?n@9^#n+Q~_>_7j80RET|X<9AtOOwy-fZW8Yz0 zk{nV$oyXPfF0{|V#`^lM9a-w;@az}zQLhGC_h_W5{NaGdwn&FddBN_x=E zX#q}pY+soeZuY!7*04H!?@r2=??rZHKJ*g^iII-iwY@KCNV}Yk$5Q(@j8Xj7>^=rb zPKhBfcaApJWd>@08ehkyYos1rhq04q*7e+9BUt8Zdw*cUm<^Q#%89{g+ZU@`A~6)D zI@tycw6emimabOwxef6|!BuyTFYj(@2_QgRD_HxXhxw=`9v9cDC)aL zJke!Y=wkVy%jM*_yR9Uqf!~7B1wK_yxruL7Z;vq8bH-U02Yh0bp|*CK=1KfuPlFo{ z%x3n2d@#b#QnEcG?#=85A@@yQA8sd~%We5!5*&r87m2N&Jv-uS#7%scahswvlg~!D zEg?SO2(7Uq?c8t2%YGQ4d(^EZoZfy84lw+8|Kd#*Rdr-!n@ls z5S!U{T#JBC?rW!g1@I>aCwHaaC)=I_c7i|u|JeaJqVMxQZ@O@{b7LWc2l^bqw{x$< zDd)O5lC9<;%NBC4Dir!(D+qjjF_>V|W+0<)f_H62{t0!B$ZOW3EZ4waAEPta0}8b< zO0t=4aDUDd(_NoYUj=N5ZD32NT+b+0ZS_u;@#bj$G;OqAiIMr`(3U=s7vCY!)IHGg z)v=5NP3Gq^XJ;zW{*eEO@_W1IuRE_UFS*uSAFlA-&7k)5d$8|~)-0)QvtRiUm!YbP|G8F|bYLqF^!`sq& zs&CbH_7`Up#P=Ijk-aAOYBy|%!`tEzwh&K1$_(80YP8R4jFE8o zpuaz@fW)K)7M$0pmrBig+hTOg@70(y+X}dL{CZ%gVD7wJ68rA%X{+FE3*0-UIx?th zJE)tiC{s(m=Q%_>Q-Q7TX{+IFn*kp7EwHtR6Qs!8sNCB&b$z>O8&9J0v#0I)6rSQR z(=AyeuJyKg8Byc-kgn}RSBt>*U8W!rPgYqP|qI1)lxK5Hz$1$=QOC;iSWiY zUcfvXi&{_1XV=S5Lr|y^#3Pvzqi=Z|Nvx#~K;Ont(Q6GD9FmPun}# z1NY)!N1i=_$3l3=8Cgd}*Zw))xz;u)qh_mt&ak}FGQF?VXQO8$m!M|~)Wbfl%SNk-pmx^$7`GX=+XV3yAmTqmqJaKS$cr^gU`Y4Nze4gog)KE${wrh-6bhMeL_d;3|5ugC z5>hZ%8(LdToDJH?SQL?H)eL5Fqgjkm1P5a%a&e$gX(4m zcOMFKnK_s-!1%`l20yboP@mN#Kqw3d!c0Gks^Sn&j(Bo(O||#=QJe?0I0%GI0dK4e z4!!WUMFa>*8}VVM7zFt?$^Z;07`hmQ0ZaC*oQ+02oL`VQ9c$o930fp8I@65%w#@EiThS=kzOnn2Qkr~OZZ`Td_8 z3_wWsYwXVX@#zk@?whgs3d{<43|v2Vo?ep$(nCNurXrvar|N1{*aCjWjCo+KIsISvJ-6ZkO{I24dKfJ*#MkMw(NWGH=h zV@7u{{61~Nr%BO;kE6Spqqm)-r(1e5JX8**{C@YwFp!VO#$1};>nBH;YSPbTX{2HCknV4v7N$y0=@o=8O(}COZY~AZX7573F zF?7>Fcd<(eRG+~_&a_6InUYDBW+U~{)|5_&Kk`Q}>W6`!EJyEnbNw_&-yDwEcDE-R zLT!8kV&cG}&$k+%H{~49YQRKL`X{)$oo<7W)x4*A`r}8-Pad9c zqn>Yp{CSG9=W^|-_$f=Jb!GsIDNQz-hCTZAdmE6*c%MIY;UCOYVNZH4}vS z^aRCOxtU+g^@Y+^h4`@oC*`?Vapddf=eH!Ry+0k?4Hc*o0pBBFEw>u_Jgg){>tXjJ?}{iJ>~{N5}<~jZ|hT5aK8Y-1MOzP zcl6ve6$*wEIci^!FoW5S_|z^ZFhSFr|1WyZk&fUE2L7qX(H~ciycO}{fT}PTZnEq|qLtm)3*e zf_um|ZvLjXH-cjnFAFQm(u7@#GEI`P-tp=VqLQ27^bp4(&h9!)8Da4V0-hOW1%-h_ zndRK8BdJY-RjB>M7GZ%hLz4CA8j5Wi@Tqbbc7EC*LzE-f%Hrg16;#??ba0-30cBE0=!b%e!ngdEDuIVcnx;yeNki!8?hz2db}8g;l8P(QET7?=O6 z7%NSV-_|Wvw3(R(A}Unuzjbu@&$Wmed2g^Qb@KZ2=xuYsduDWWaliAv1emhXwjk-( z%BRyaZEbiqZU0!{ZSc{m@l)t}czc`L7s|duZZdP0akS24`B-;o8UGps7+bhkJPVyR z6uf-O92z)xUXIEuN3OwsgYV4#xCZuT)mUFudCk6T9XW7DfP* zA=V+O@_MP;Z6hS6^|@SK_WpR^j-B}|-ts8{EboX8(*Lj}#eG-A2_8F3(h1(3NAZi3 zYJ{ryz`h+Z1vW(+YJT7`9UH;5U#lI3h&yPAZcPJiChxrI)es|7Q@LkXy7Z`_Bh=qY&#E^{I>-*iSl84H_bg1T^0Cl{({*R9LiOohfvi}DO_d@L) z|B=TRr8E_TFMnBqp7FC&c>I*YjWy#9dBgS zrq>vu?UNsfM@_;TL$=La*0c?;Y)rGgeFsEW-?yzF7>3j9Z=5>~050ic^&~64uXqBE zpf)xD<2SEe+*;XSJ7u%}VH8t)yfY7#4}7*+Td7zgjW-VpaSCN=R+y6YGg@_|D|9bv=imDvNh(tqZaDALnMmfx@-XZu7SfF#QB4G5E}i0&=H(DFpQYC!)TMbBJ^EMD-npe!*~&#Iswb^%G|ou%Cyiy6$X5#D7H9s zft;9Xos26SLjUHfY&lj?-2~nMWr8RZOYB^0Dh)}h?Gg(n0ThF(L$?x{lV;gS7FHOj2_kfe4w@|w-7s$o=03@a za5ZTKfckc#4Y%co*#xKTg-G?DxRuv8yaF-{>S=mKGz`Od zfRMB(PLm_*n*3CKY}?^51QWzzJjVX>vGQ!jm2wQ^Q8i{lw+PM{gSOIbm;X%`55xAo zSO1fSW}s{x3GF+FgMRi|PT?Nng1?>miSG^1=U^UamI|Y|Zq|x))x(*IVXUJXOpUv+ z%eR$~9>K~_$j>cOuKFW`l}t5UUl<-XeaAFXQ`}&+i#o+)NuMv1);%SBUoFCFoQskK zk$xU#AuRakB-?I&ZJT=sr>z&R&B~YJlGaAYXlC)jg=Hl8lk7FCVeqo5u~Ca50yD4# zF-jkmhlKt@5|NY^n5go;ujtYyP(o%D%EoblRCqGzmIowA&(s-+;>ri)6{;iWQD$D1 z(#nYlYOFrE3WRl@1Tk_h#C*%q`D*$In64_Ry=n-PDK^Rt)DoDm3~(wE+R^z@FI6%D zbQU*al9-ssIOTYufRof7k(F)9DzdjRP8KeQ;~EezT=Xk8eSQ!t57z51JY zdRY`k=BY4dQ~La&V>VQ<^90$cCXh04EqGeS+!IJSxlroAD3gKxlQK`ntc9JyNR|gHGbsd~-#70Plt{{xk7wPr67w8>=w z97|}ID``d>ml)+k$oWHJOGm`A^Fxu?Puy#v`^6i|y21`v4iw57{h5W)##nQB(wm!x z#W(Gt*eDp>qqep0`?LXNUv8$6KW<$>H3{X$-8B%WWWlb{FY{6{^yWc8N$`n<Xg;bX&6D6Xd7ptK30`NW>1ep8txOII&eQeTW1LjRx>q7za)?C}|%y!Aujz>FMS= z)$o-6C=G)HDy2{ZDg`JBf+slfB{FVH!&+h}%5LkJJYrK2Nb{r@aBs4PhkzFYDe-zP zFvOGciw_)vV@dNoEnSeLI<-%VUS({iSvuNEE*3{gElP=xAD zmw`;xRqF;bMM-xO*GW%w691l_;3S@vp5!!)2qVjr14XjuRu~nXh!%%F!pe^`e9rvG zDJC(;c2gjI>A;Xh*BkL7mbkUAY{|%4BztSBQqgLIdsGK^Xh=dkn$Q;TMQix5;YD|u zV%pCLXh;+}cV@JI7IN34C(HYBC|vennwe7JrSiXI>hXZhOdSoPa*<@ghtGmge1Mf^NXx(7m=;N*?;)d>su1oc^Hh6Ja}3P+i2`0(_YDLI~3 z-#ij*!2RE0$tuLO6EXe@%a?gj@gtRi&M%NvIzN#GMhF3)xhmHy3wnIN}C-E28IY z*EHAj8j&f2R4&>&qRuQ+V6bk9&N@iUobRcX@y6!U&~hi!azbcgUxBEoab-_KIk8vN z=A+MO2%FY|n_pO=-57SO1mW8oGzz*a@i9E3m4-A^x4$`$;Hp9|NFuX~fA&9_fcO+Z z9sEFC)?}ZLgsg@iXVYVWP`3WvB3(3K?;-9qfqc%%PwL^Nk&Fx}f`?>3AVRE-45E&nI*FlU#XgQXsHE^0x z5183e5rVs}tq4Jo)d;~1*1n|!vKmw6z-)^DJ^hAN54d)*w?!@!IDWaLy)aPMddR`!n5DLg6 zeK&&W$bu4KF|iD#lm?0Z1-_4*(d03s{fApUXjz01$-5DsB&t71$sDmL{E*WqlisjP z7x4dDRDTvzzlt$pfxus4Ts#4PzWL|Vb0xpTaKe+V2KCB6jf%$p0{?}(kIa}{1-uO+ z8|ClyDo`m)K9~cf@4E7p_pf+dyBL4GkRPMjN6yFiPD(I5z(U{z^z1*RkO%%6g8ADq z;n#wyTWIR6k>?c8lTf}7b%?(m!x5?NHsZ=_5@I5}y)UPWg>l8Yg`U>-IcE4nY%M_b zk0chtBA{%Q)4C59I4M;AkkNl?@eTYH9RF`6^S{J^i(WGMJhL}I!9rrM128U_@qeap zeP8^D)Jsr}|Fj0L?d%^px6t@bz}DDDE;R+pQG$CzK{{?qQuNev;NC~>=iEoOm}Uk7 zwy*g;Teoa91tXoUcMVw|@eFw;@NNNeNEOo#tu*7@aIv}qJae+mgNOV>wOb9}8)gwp zEmGSllfLm8wqzo3UQv}MJ$T!dcO*jgTamDZkW)bs*b+8HvCb0xzG?Q#*|E{sfDWW_4Hbf+}jgEec*^+&1Olw1gi zYnR#0Bd&Uo@D4d}*!1$z0}j-qCw;8w?6?{hWIYgem(2Q}#EEKA`MbWs306_jGfPtx+I~XkE8E z*7rhy(6|6sVhmvtaA0MQnN2d!Hz zNicJdlg@Lv0qi2?0G=7AtZerzFWK~dATflp4rcyax64>)b9%6xV?W-R#EV(zOD!mL z1gEU73y!uxNS+yeJZYYpCxqhiMPDswp&mkcN_g50OF=`o&%Lr+rr%0;xW1V(-JC2M zIIAX%s~KiO0&bI*LYuYA05pd)Ci0uU_vSUOZmg~gs%-`Xu*>*$)x}aOagQDyWZW(~ zrf~T|bVE98Zx6(aKfV$1ufP!iNSEfAC7^-N7MyRz# zS|;rgxVUpG;~C^UX_0D-#VnzAGc~c*{$WT2;sU}n+f}8mSRV;M6F-HKkW$t z432(_BU3Q>!1&T+y&w3Jz?Jy*$kQ_ad_8h;zGGtfsPVOb)xeNQJfAd?a1Lqg$5Bff z4E>}k1NYeLQlolGL3SlaLrFFxMt_#6fi?=522ew_gg9!5F$U_GKpp32j*HahDt^-eiEvn^$e2Dson>Dy%AN)e(vq9;5J$rZ zN5#e6dYLYw%H~LuGJAtxX{pI-rf8`Dgro+Bh; z)O3Zen5Up8K2ZV>#|1eL^1Qes$q|Ht@P>q{${> zVLMw4kom9kL&!rBx$Lnc z^>#`Ciy|kC21uqAauHruF3wb zE%t)bs_p>a{pix?f3b6=B(Rrt^}ZQfUj? zE~iiromGAY`~u!0>BwzYqojBDASV=IQI56>Cnybz34-y;RGk+^ z_3xLyq=-Bx%AZ@9Nhyh~DvK-;lD7#TiCL6o?k$Clhbe_h7~|G^q6v$FSl6Jukbk|F z%`pzuz3DPgw8ax*R@Gx#Ex0j#nfpC#Vu0F2xr*4fhnR2?L6>1rXN3knaB?;I-Ry zm_i0C@Gk;XM^L<&xD(DCxjtYLit-d?p_b!`i`ffeBxNLJvXUYI_mIZ}CzT|b@RkBC z5rCAjUXpmgv-C{TVy9Y{wu@|{CH7&n6Y01$@%`7JoTv_5)6XoXaTNDcmVc3|yhjem z3Cf|vh2&ip0pzM#9d0Yxk(BK*M46=jZOA&pA3mu-gue_aO#=t=ky*_SVfPS-&74~k zchLd16K{_UJ(3HYOQjjmC8@g!mOEM5+y*WT{Bi3$>BXcVw`nPxfSmU)UEbBCCE;>Q z9p&&$S$zo!(T!AD*PGv{5y-Aw-n!GL=jTD#(+c=siJ1w3W3643e8duiia=)GqrR2S zg2DAyx)^nB#atSH;eITHDNb7_#WO%BA8zpnk0q>xpURfF@&^0BBB=0DM~gydIOCSyMI3 z&=?EEAsh1K`r6P(WIlt5uT?xMMP`)fZk^P~kVK|{re(G#T0h=fFMXDR(b_aV7rzJxR%Gqq-Yo@(Ym17seLGbFogS|*AOTHTm}Kd(oUbHnIfaT!wr-G zp3Tvhh|wuCgvR{QIkP9hNt%7y$Vgb$($qRrWKzIo@FrCRmgJ_VOo`TcAd(ph^ia~Q zrIzam6jsG;B8--q{(b>Nbg{Gm1eSI?3PU3^g9_h7@D&5w%}_l>Ho?CM74zqKsy=m* zPwRnvu}HLkNPYTACbdUnlJ05rAL?*}{-_f}`QPg75P<4bDiB?0^pm0BQUJV*kLMgixTkL%tC;k!F!`b%}ZR z{H?Fob$CpXIS0`rA2HQL5RN%$9z>j$o{sB&eznZ*)tG}NEh37A)<}>q0QXDh`_+LU zrxBw~Ca5UT59p5(ZnOK`vBkJe*^a&~+8_Zti!( z9@6$lfX5HahJ)#gtD)T(m!B${byz3GCkQENlsLiI!nuMMvZCJ+kPtSPSvEiA0y=|~}_ZdGt4yxj^THMUAgZ^yy%VTG7B zIF|P%VYY+WD9rZ77bv1_JOM}|Rcovv6>BFtKCz6~kLLIV<125ij;cJYA@nnw-57w8 z=pD{VN0$W$Aw*ncKIa8-VyCfIYN**({16XKey$pz8e5H~Z)AJFk&wMm58mbaI#Wv6 zK=7S>fCDgiNRb3F;pPkn%N(rj>jM{An{>8(hrt$`ba`$D#m&8UHzbptXW7$^m_#8M zY8HKHljYuX#y64h+65{S^L0`z-vjY&zOWC(+_kUC;QxyKFFt5>ZtBbTbJ5V3wxn`)S zM^5qSsEFRwh23 z!_AWKb9E@Da;3R%1MG>IB)2X;AA7VRW^dJuR6`^mgH3(;NEWh6r-^bG|3l;WRNObBCjv^=7T{*6nU|mJ+FUqY4^*UQq!ru# zcr#49G6jG3+p|Gw?B`!DnGyd8-!dJgf#HXV#mc&bOS#%8HmHPrK@yFK9VRoWU~7~) zK>*^kpMY>pi(nof)#RMoAw(#53sC4xR&HR8S^HW`L$nZk+eX6^Cp*YK*#wHe z;&m+|g~~WHIUnD;S;%+_eWDDe+&y;cI16L$pLzFAY?ksM%@Za-)MVeR;@r)!GJcwZ ztK9>@>N(})unt+^GG_2ovWlJBxD9oD4v<2~ZSO~ScSb~nE+NITeLvZ-zk~dzW50Rx zT}^=%I)B4~fS~=4V-~=Iv}(pCc7K)W+)5j8_|8Hw`r}I!O?r;3U2+QsD&1&U^Ar-k z4+uIzJ=R9zm2k(x?{EBe@hn&MGF=b$3Eo%q(-fdVFt~1F(%_`LAG6OU9}jPYI&GgB z8mYwT=-Pku<2f-5g0mL;9`X~v^h|}B(#AfcNClzqWTGBzwleE1TF|s>q;=$0QNjEA zRJ(7w>0`#g4pmZ_494QXP1JLxyBxAH2vOadlW4_o63#`OXGVjxH@f0`MMT4h;U#F2 zN#pGC_3Wflu*C&cvBoY>+IvTAsEr#lNC>B}=~^fskFgxt;-6mOu;NJq;`tCOhMJ8LK7Q>1iC0wNFbhwd! zXxeqLK7b=9@!-uxXGLnkkyS&HW2KB@S{ZyRn{6bMUd3=46&I6L4!Tx7@QrS+ZO;Sp zYP!NvGia%-K|e5*_bgb~VYC!MHIJ>Zy3Nd{2OZ)5tvlh_Adt@!RN!9B;!ynttZeu3 z`z4IKcMoD+ZG|4UK>N@|X_TfnEPI}*mpdzdhJ=Q*&fNqLqgTPb6Il89gsw)n`%%B1 zd5*)^k+ZYCjm074i`)CMF=oRLWo)je#UyJ_ZaVBvX7q);5i{hWgzZFQchf;c;W?01 z^H|sq2$WB4tX({XRMzSu7bUR~3*))eR`m>4xehXONLJ&0aNkYdU0FX`+WQQr`|<=G z083H+-HF|-%)}i_uVff31 zw=4(3R-{uy9NP6L8fBN`5ryxR&|_rJ0=|8QDmTj);Y6UnBb?>mo^*~>ybwutN|Bz% zu3CJ8-$z#PcEMhdD3+wIT4?ueSL^iK;p$+py(_iIyM=+P<~_G6oh|Y*_wyhfI+}0alZlsaeXIBB<|g{VIXLM z-DnxgO_rw5Le}K*NqtuRHC@&%hqD%5Y(Mcv=*=P=J_rWkLQ4HzgZH&bmQ_lIJP|{j zp-_JAaY!haNd!e!Yx!)=6X#z2E zLTF-@mGq0|Em({-XcN4A)Mmy`!58-+9q); zyB@I_tT+wK1Pg`?odeK@s5J0euL%qECWL@@s;$fc4ZonbR2UL$1zIQBk; z+YqtqsTd?v&|^r|z_mPSphN)D0-;mhgo$oMJF8bYZOcVtr1V%?So@JTo=LRILP7N! zNLvby%!b12Em+4I1?*a&Q=d|`16_!BvhXn;(`NAnnL?^PSrJ@ZVmySBs~d6w*(-Pq z=ZBqfwlY8pOrSp>+_`}i+LLDbGB^V6f?}s3h2}ajvrbW!c3843 zY={2H0D}gNIdYkCdzwvA36HYr6@sx)gi=;Aj0b{YFVbI3**0`rNiEJIX7-5{Wnvlq zKA{O42@4cv$=B}sr;sDw#ybi@g8M#fsw8Wrg<67@C-vTGaiQ<~5uNdgT8*MxL#C?) zF*X*1aITojJz??_FonY&m82Hl+2^0vgf#l@&AQ|^>{8zVt%<8Uf^YqNTVc({#*Jma zH$;UytK4Z_Z^Gx7xb}v3B-sLIeZG4s^8c{5EH7iMmaY0>=Diwq?SJ33HSa#F>$ZV! zEb1|mlE0zn7@(ImdN#FQG;bwv7|mQ5NZ)7kJtamfl7Jlt2~2W?TC2T_387dXlfGpr z!?tm_h$LTcJCE@ToniSy=jj_pS{f2I=fh7aK4J{rrO1`#$>Y$1!uv0(`)MiN9dt`e zE7T>DS9jJG%8@vV(($qf8QzD#t_;smV~Ypnb6*ZK71N|?6`Js@shiNy4$D~-AfE+t zW?f=5U2=#}JLg2kwA1VTN<3PN%2_JX=YBR9)^yW+9}IFV--=q{#&X*a4sLDPF6Uw} z8p^kiJtUO!dj#ts)~rEIYS?MD8(5gPxr7}1ndtD_-Lv9yxwe3G)NMcsN?XGtgZr+W111j?QjhiEH{q?ZX@i#vxYU6&gf%7%L` zI12@OD|m_fxiTML#uT`=`+L7xV8tw(I`hpjSeoAt$8y&_QE4#jZ*TzmzHM>0^_Ykw zMW2EEyLqQc$*M;EE5h$gWsNx-*AMpGRfOYGoYbZ;x&{Coh)SMj#>o&l^DcNjyPuie ziy3Mu8X%1swBR73Z#P0>zbi(0)2a7o?c@&CpQ&^zsD{z2MlhN$87u`Rb5Q?yo_JqlEgxR13vpd{x8vb&E2z zt{pDh%q3)b{l9bxP981y0QFDy1!}iPk+j*W(%h1! zKkoep? zc(*^nnh#-x5g`piYr8C~Pv{vyX-B>x9$WeDqrk^$I`+BN?RuG?Kl_YPu2cg2LKhGOyW!b!zyE2^t7W@_}k7Acc^O%Z7_ut`t_XWH{{(8L$ zPTEF_#Bk-h4%RK(5o0)(n_fA1|CxSDb@@{Tb{!4v+g!W9u=U5@d;IKg)Qts5G`hMn z8ZEx>)VFKjr88sf_+z;v1|QP)wQf@C4(+EaW;E#u$bDu<7CZ=d%`_u-S!Gp6*hB50 zRjcxgUfHmv8GN&(G?nR>u#3SUQrb*d}9BED1=x4Da%7b|2xOsTbS5g!p zxhZ9?!W6l>6a#j?J!A&>a1y{W)B0xy(@fCUSweh+jI)Y@bC!X1TxFo={qpN+rkEG= z^A=!32y%x?ifc3ODzZmIuM+(gNpo-hY-Pb?M8MIg5D6t#O3`){QV&HvQKh>qPx`{3 zg}Pn3B%tB7v!sXnv*J|4kr^$+h#cmI2wQ96C3}WWYup@T;xG8`q<1dTN|{C2R5aP& z7AX{@adW);GZnvZ$0y_>8F8jWS5VQJWg^@$EQ^xsC@?9<&{ALyz`rPu2nKH0yw?GD z;961MpB-k8!>Rmc7-f^HF|N1>p&t=B<>A{Av@j{9oD-MO+Oj9ny?A%@63P5}yRm+^ z?pb)kJOV}4U>Q5|^*4aWP47c2`s#O!$%WHTlP;=;lh~0sqCk9v9vLYU>e)Nt%GADH zwe;Fv8PC;+L0H?KxxMS28+ilq*q$5F9q0jlP5sfsP#+0qD2H53zVAKgy#tXb93Ef@ z{buJ1I?eebX($x4bZ_@R{NF#2nu#M#B6yN3G&o}$Ua)R`^Wgz(r{dNx7GUfZc@3Cq zQNV0B)cG^j!RGPRbhcvQy6^W`=O2o5rdXeLX87(}^tpe-^g>Y?_8iwZLmew~T$~DL z`F`5L?YeDIw|s@EMUt-#i`CENP453P{d*15&{NZQhwuyENoAbJM=!jBBmzGE9uhRD zl7Ze&PyJiBmb*P6K79uE*;zC zL3}t zn_I=ON+F4c-!8Y--+FWIw_Im=eNG$-#|jOH=I+pZU|A5r%{@gPntP`lT56qms$?%Q zx!gcb+d2mKKy1OR5GD(omP~Xy?K)(3;2C0qIL5;`(skjmc?mEBf^GIXozGxcFpw3A zH$UpgXMm$12o1K6``!-0E<20B-L8qUyt(XZ+#xIazWX`sSzeE?YqD0nl zL;Y~8DDVa~L8{rJPUAK09=d8&C(n!U_19`u`fYY7B!OoWouCM56z(;Wq@zB&y>VWp z9VCF>F~+=MYx1;Wq;H_DX)(;oxpHYfZ3!_VTWCl;35Sc@Be6s$)kE zrM&eIxSp6Z?0vNl*Y~?W`J^_Bu#?G>^sAx^wD2I(aOz_6#m?%}`?z=v z(SrNO-oqDrCHJQHJIh~wz0i3*uM;6bLIZijRoGE1Z2?Kjmeh2*f-gFQHi9zk(AcH1`Zw^>Zc-zgo?+k$@wY)oA3 z3qqr}WnUZ%9zFrD-ajaNs_=ir2Y#+w!mms7hPr400Sz8u`OY$+WQSv$VOB0Z%x;G3 zf@mH_dy4z%W;IV16`L1n6C$R8Ufp&$k3Linp^6KTsnjKr%A=+=wuGWC- zqyM!XPU)9LUw0i?GJBQwm8Y*xY4$%~KD%k3Q_Zb)w@TkhhbXA5ob-Cmx;Iw4!e72o zJF4CYyrC=4_O!E-%s|fO#7S@ELgXSWwPyyd4^}7aIyGwc^h>$sdV@@rL$dl zzo5z`zC`Q3x!PxkLu&dgGk$Z=i)0tx_EfOpx@yCknVivl^E#E|SYFI}+SlQ`(RhC1 zK86WJq|gz{m@nJ?rdx_5qBrSLB?HKOl>Rqd$>S4>3SNO0*K zF4TEgF)tzW4D$>2q$lmYr*$v!#y`2#A3t^C_O!##rf^Psdslf*`#Ik;>xFN(FG)-5 zm6>Xr`Dx0W-OJAHslN86=}`5WquVB3GODgD^?mzD^+(lRxr5Q~Kd+zi#3Q))^s8&_ za&=EGZhb9RUGsR^@_BX7Za$w^zp(i9wdrwnskc|J-~030ZR>lL+q0jq>$ki2`Q*LY z-}ZmsoIV`?RmQSv&G(A?FZ0jU{J#7BZ+g8&{liD=_s9PF+i(AWQK{hp-YIq&u{T)S zR9lp*qQnoI1vgIo@VKb-aF^K2*wtBPIw`R|#x|qFO!!7!cr@1E3M5 zxj?^T)1KELEo20={4~%A85GNJ0Eg1S+95tiHUw)Z^sW}O?$&2uhzn(9;72jZg$HU< zaY14Dxvz($B@yDK<|GejF4==+8akV0KKD&FyJGK z0ob~|=w_k!9T8@|YD9Moq9=)N3VK%yVG3h2G*nPJUg-MK+k*)GbJ~!y7;5V6i z&7AZY-E3_dljIcEgi*epzhWjc2@-pXA!C;9+Ed%p$Ki@sr{8jGEi;|Uf<4|(@P?_) zDuzHY#$}}5dlRnJ33PciQR;|^pX%vlXylWE7klMzE|^-3qBXk(GEz`d<2Q6s*F)bBN_^ZQ5G1346V+e<;v|KvsYC<9--Q! z`@BD<=<+(@>q`14<|mQ$y39zao@t#9*XGatEzIyjP4cT@L;QeKt;-}`y`zPiL)}_$ zA(Gn=JOJhU58EC_*KrNDW2m~)$Qu>yO*E_EAEyB8Aj+D#Bk(MZcRRkElQng^&mG!Y z(W>5-$AMC~9`|BM87DmfG*tB@dWleJtQ|3xUP1T$_xCh~G30`e%c1)B^K){x6KZ}V z$X_|sgld)BMPiai*?73#9gf9Fy>D}ZbXIu8<-I$^4FstDg$FzzE|H!Oj38HW9uWMi z?xkKji}sz@0`g2`>62-6UXut4P`l%do;{!7i_1TV3--P&6>sbdjop*xJ!8n}gDC!^ zitdy$!VkdeZGwS-zym)G9L;Q;m>7RwE8{0WfwQ3aoeN5gP!!uWsfib?=!+l86$tix zn>Z`7^N}iA?dnt#*VDx6B|JReGcjLG&&OM)E3ygHFxFZK$X)8y+@iT`Xg64gNrvt4 zCvj8V4brkni?}625;mi}=QLL*7NpxmAJn0#KbsY)5*0U~wUt6D2`WuMy@CHit>Ns= zFb9AFNXj;Ggcnz~{;+Wke-LW=B4y|&d>m_!s*);i%7V>ZfF$jJej_G*I2~OU+nRyZ z_SCNUS*QGx@hDJCK}Fw<{03^W18soYqJh77wq@_*0RuVNq=v_ox$|bAlCS+V;V^StiJ~LG-igTs;Ar;yCeMr?m+xmr zk+}Dgn3q!zyGDVLkfsGa4*w*D;lJE^$Ic;VGoHmcxwThdtDQsVLb$~@d~Gkd!PVFd zZW0_HOcWA#?r$0nuZ8)xW{kD|oFzfaQ<)Uhci!_fcSUKzYckdop@fS7SCa)Uoz9{s zyBNw#Hc-dGKL2%!B(p`iDECNI1yye4tGaMJbsHHX@jeF4Pk(>HumrOBdeqY9B0`W1 z)RJ7#u;c+F*(rU9x#e=$K*t>$2p8NcZH3*VO&u28wI;;1FEwpXCRZ%JJ_Oo`LBBo@ z8Y&-Tm{He2vErY)JVGKMgR%)Lr7F9&sIzW|pE@}@Y)!j>>y;xkhaey&f5@FZEvXO= z$c0(gaoGe66xI&U&+o1?I8pcseKBoet3iKl8t0};G4jdS$VD1<6|e|_%}l(%xwK?S zPn5-!++cRPX!#@$JJhKHUS?B?Qi~1(H6^oU7Q|OWzgVKkIU{wuXHI ztcwi<2nfpG>tbYY|3_I=$L-dbQ97RKAoRY3TSAK{;lu|lip+{_;MT-vG|!Kbeu{%= zW!d%dehkIr`O0(~##hhx+%WdMBw`NTApcnnbNn%HMA2abuCY3N_+V}FkkkpH46+nc zeGpa8!C-omU_zYnM@A>7n&h#g0j)kobHvb%%@ChNk{nZ@8!vNe5Y?Fd*VV{{>N&E85GwL-E z?C^$@dSaEjQjO57sMFYPO_AXo9uDwVG3v# zRFH|*0yv5vU9@+J?my$cqA*_CvK($dIt#!byFzjMwA8~ArkujsypBeW6Z*Hl2s%fM-u6UFzuc*c!4c!HcWHc@7y$N3W_m-`4lx}!p> zyyQsVqLEA$xmZiO&wZ6CIHd**w&EJL>FDal*4x6EZl~{*GJC!>T0X<-==m^)NyxU7Qs`L8Qpq;{O;WfCY zBTib3uP+}oQS-Gl(qB|Q;swF&K(n4jCRHCte*-gJYnqN6nU2tc4*x491jr7(OiKD- zRVT%am8SBDw{SA~Qqm|xhwyg{5cn#z!sed=xk z+Dmv-9k9Unod3*2se-Qpf#W4$p{?@MI_WtzG(3@3EQcYLKCD|t`~oTs4Qt$yq)`GB z9<_Mh;)RW3wY$CrDeyKtG#7&ni=gb8PE>MxKGCW-hTiO_SjOR-T)4@{U&9lhK^vDf zPzFhh-p(UUT5(V_cKt)C9mv1I=o4&?bu$(SAPXLh`8tvVz^pzro3WGOuyS2>BPpA= z`E4rHzF}_6R%E>Iw$|Vr&KkU4HPCREtUJ=_PD31#FIa}@g3nF z<6{wA)CA*4;WAZs>SB3TUz$&~kp;m4A8*-D9(dzy@{(Z9eZ|);AJUfBMv@Honjo;p z-nsBg*~!Z;!sHUMVcF}>*AHTOW-5jxH}Iii&FDfn>i7eW0YX0qmLYgn!^;so#j`o~ z<3#aB{kjNy4T~gTF>gR;lr#}y5A}&iKrtozctS~eMb!9E@=#x|YcbxSk5jd-(Jjy= z^ZjYy3-J`*$aL)H$Wv^-a!3eA5@U36G`2>DHHZPT6W_fpnSnTc`K1ez$q$~gs=(0_>C8Nz{K ztc49IAB(^cHA5mv7ta#YeQ*B!ej56EqW)pn#-JIN#hI%5%ZfJP24z86vyS4+u}X7o zmDR9ui-S~K5`5v|S^#0ynr=!MMqZTpk6J5#`Egaw!sUJUkYA6A7olTcjH=e5z>j&7 zLYuOmCp{oC&K&GG6y&+~ZhQJ};BGd!zL=lBRW}L6*Z*YCV2^d9o5g&f#QMS`cRu_5&ORmP> ziS2LcY?#uE?fUQCb9!e}+0ISgsVr{t;m|dF3gC_eL&lg3Ry0H7w?Ixg>8Y1e6S1x& zhUKm4V{^7ZNgeW(z%%L|5jWE>QRyXS{9w-2WHzOT^w zaOMpQ_+mx-{x5R6QD_Db>h~Go{cI10mScP7izXoAuH9lOVyuNV87e#ASH)}*BHR>p zX(~b1!5=2Axvg$y69+uxVZV4ng9+^kMi%4m@(^fRD~)S>JQ3)-_=e_BOl6DZv|6Hm zV7M;By?QfS4Z-sm_?_vWxsEEw;)`Gc0nt~31VR2+uARQP+n721UWtH@Hwn9vb>7|G zdHDt}KWt-zK!&I6K;m8SjXXQEYR}o^*yeuC%wT_xIW_R5AQ2`~Q&v;|R2E;y*O!H* zNVBhznV@R+`kL+AVRPb^QeQ(*#V_C25`Mj_; z?%^6P^lq;S=tsS8-@87zb^CByKJwY%KBRc5-=|TKu;0RGC2QDI%g$xV=&QU@PRitQ zjnJ7;<{OrvtmDT^#hu}hzy|}SwP&Cx*Dc@8Q{?gC)29t@?wMC1(Mf?*jZNV0*w&L* z(wERjkldHjckmtlu6^$E?8J3^&#L|r=My5d+e(m0XZC4y`twE7?Uh>^0oV9VgpVVG z$19Hq*>yts9*whmm;36vkho}!Z!pta*LqibbH#YlAd9bU`?`0RuFiSa>#f+6xpE3& zzr)rB6Y`eNHwhvysjO3y_krriZsXqS@de7{`j;=-AwH;S6u4j7VLLB2aobabeB2{c z+r9Ws(MhVqVsC1YAqzv!(0Hdq>XAdLtAt)_47|03yt#v!I@)8*g0X#H-wylDePLd2 zHeSD^>AuwXtaNPg3skzEpM|7won>(;oVBLJvrtgIJ**wLa2>+)lwJoeu!bmOVR zrR~DhecStlXjG28Q-aK*Ow^}FWLzOQAnqMX;}tsRx;U4>zyWo7)5vUIrb;8cNCQ1TRmdeQp4 zWOS`cV>OU!@euglp;xsy{d_w2WPk7QIxKy6Ep&P=n4u)usJAeG(SLA#{qwBfDTAFZ zxD~%pBkH~Xz^#lhw^7!`gZZtmM(*E=sT(xCdnPl zcM&fF18V8WLNe|I!E^I+wUKr47gds&Pf|)!C1}ctY~?}p`xta2G7L+fVB+Q5x+{FQ z@R=Ue$2x{F7Arbf((^%;Y%a5#UrTYnX@}FlJ#Scc@>QJ=6s&~Tu&`}OFKgQFCZH5> zf`5WhPKTp_=sgs7AURIR52A0>QWlL}{X#H;lCs@5W`Tp!^8ZcdOpFm5vAkzsDC#VIEgh(xwLno>u2$bYcCLY5vn_T zpFe{7YWZptEw(51e1enkPoYYTEoo_T>)P^dMb}xjb;1|doIh}AUl|^^d83aMVAM%| zIUn43zIATZvm5jjdFfx8aLN6=>~^j5Ff^B4z2jE>b3styaQ|R5Z|5OuOGvNzR-7o> zZkKUII7v79oFfkR{n;KtjKO`{5QTodlptekaGm(>%*SOp!xeFGt&7ojI9tm0#4-M` z_18c+pnBK8Dh8$0#+#bI@A}b^{@CHe>ctk{;+!p4J5$QZVI0=<_zx27FITu3H z&cIyUEdu$2Fst}Zlj8k7mdE#fZ>2G~bC#EDXJ0SZ^Ogj1D7aAIvAM*bt4kK(sk$`rcNs4?^fEynrg!CP|pxdeJp1!L37rwqCk z3%z|^F|v$tSjzs^VW+ANx>f`YM^xR>gSPmnpP!m?t4y8ylQ1#|c6h@Af09T0C9F%O zHwl`Y9J8fg`>tK&pe_YUej{W*{tC_WzN~bwO%@@_NvDgmJukAV$Qc^f903E4*9_BYW?cTxl-d z&lNH7H1<`Xfli1hUY29Gg)~J>a_u`Z=-ytiECfb8+C>Fpj~*df=#%Zl#ptNR-d~N+ z`n%6n=Dmx5WbK{t7jDUH3<65acGUSEembOM%n>zjos+)5rOmfbyFT3vU%g!o4SKY{ zI=K7Xza_mdo<7a}d^xsfHtKk55z4${dYK-E^mqe7UP*Uv5ri<L6VBZYwJ)w%TjKY2?WekEj+)VcXxX!`CW2ozo>~nHV{7| z0-iBzu;^~%p_)D++K_x$K2Gz;D^He5n`7iCjxv>RcRdIa{dIku)gdsY!BXSQul%8g z5DCO-`sC$jY%k=cPJYq!sB&R9DZZC$RzV&>%cLHCuel|mM~$KxO?yBONdvo84rz&tg;z0#e*MMKiM@!eoHAKe z{K8vvy1_VYa3$<`wV4C3c><5~^O#lBaws5YKUN{*y>qN~yd8fpW z10QM;MR$xk4W3o~$76(*YUm-Fs89>-EiH7zDar5T@J&gQ^= zOo&&(LTu1d_W z33U6UJls`{MvbG;Vw959h?9A{7}ZYYs9T7AneR1n-V#HjWkb9tLMv4Cvv|pD7cvkW z?qUw5E2pJp*y*)|xn62oQU1P}Cw6QDu}V%jq)Yg9(|UPw^h7&L1hifdS|Tqri9AkV z2QrudX@&GVceDO$$9o>$qGLfVofy6-$!X1rN@@5z-0Y2}bwgh2V1y`sPnLv%Y5h#` zW6!%C!|yZw(_2kz9Bb$2@k?oH{Yh|N-yhzd7V)twWRNqMxx1I$*lW~`IP&4-Rmsaf z^Kvhj)tsmgDqP-Y*vOGr|I7(dV)NJ*AATJ4$nQ^UyPHQ>3|@<*<(`cz$y+=^Q6Frv zQ={*@bRa|bT7=TRxc!qs~+8r8#A7dU**oEuKB?i z23$Mz8N-iVnyE~z6c*N$DYxk+VI<7%h!32dwWjxoD-Ru7dQ-*aT^I_p3|a-U-q%JB zM5XDXKUH#z*6o(St5^71Cl{QqE3dUmH955#wij`&NNYRlT8*;AQw$R{lfOxFNwdj+ zn&cK?-7A1Mx3Q>CEf6R!yvrb6aax7+v})Ojkc-6{b-#BnuZllWj33a{WH(+_a6a6w ztRQRIJ2=MC!hwtFAu&N7L8*iO(PVS}Wtpvsi6Uj6G_tpf9)v=U4*p4VDZ1bhy1gss z<+HN&(FbxgTuEseWtUbG&nbGz6%vN3iYLRR#^N544V9kFWotQ{+m%v+`=h9Po~-vW zBwGO-^Ir2pyFA`hbNsqKzJh>mC1-OiR>0CaMErSeMcT)&BWmrVhVk^*C27|pk+kO~ zx&oLUVsuoxr3@fxt#g&W?8Di10L6s_#MwEPiPtrh92WL^oJc67k8CNosjU;0XX;+w zn0$_Obh4NQC1o+4E6_@%N(v5lMg6MH4rUyyBUYxRkRAJ1TM;t-R~>NQCnvOcN9;bP z5R=?CFwt-lr4~7a33ElHE9cS8rb0+$idPQ|V=}A7+j;f6KPm0s)8a57{@^v406yv5 z?!4%IS^tm^W{af!`MPP6{bxGpQw8;uneWqg2k@JnNydhOr_R-3-$3t|+#H{TwL}bX z8bLE^p4y;V3<~EwH1>@3PcM<^@*(4CjJ?%dOxSE|8bnol1^H~|wB5hDr&8LBk<+`Y zo<8XBvH5)D=6@%^K^5HLwjOM5*~QzUfZ||bwkvviw11r`p4@SRi}IZQG6?^3>h3$( z14TJ|;`;Imr21%*T4h#j7MM%At?gNy%%g@TKg2 zMRlUfJKbW^`m*rIYeV$KsE5_3uEPS)zRm2ne>Da1zr5$ zxy|G2r9ag6itrTh}=Jc|89@m}!T3UXy(zfg{ zn+sT5(hpw0O-k^kRILtZNUDo5BiPQL+{5s0;H&sd#1S)iT0m@;?E(0XFd?G=bSkID z>LWxok?}axiW6)2ZinDTvLn4Xl2e5GUZwfyR&{v^{@Uu39nGOg{X&z`;>aln zNJ^30G50GgeqGy}T+oAalKOU!lQA2a8%!s?BT=U{#|bX79G*pU$rCY#r~)%rb|)~? zZV5MXSc)lwU28j4wxSN^E!m85AquKMopOL8pj)QjAk!pPmkD>gf14(qukV)sf$~^y z0=nwt2J`mQUBpcL3c|=qX|No&5&#&Eh2SmO`A2xkU*Yrr4nO)G9!MzKS?0}oWA`2W z%ERh)PGUa2-m1x2B3p?GvO}>4{kV`v966;7`!@bG)}}bX!@V==dkOaDa;Rdpl`mRn zI-Y+=mNum`>g_>An(gDP#k>qC6UIf5hb7W%f8nu2rzs!#T4|2HzCsE6aWGd9>3sR> zlEitDVvV!Fyj59X375r!O?jeVzCN5=t{>IBj8iBfquOap5sNWLo@L+p}DL=|J+W`!J+w*S4}Y;|n8=wD9ylH~2V3h#1>dX4x9!m9JJ- zTsys>@kEwAH*k1N4R*CUT^!+ead)i>LBE`_It>>IM+*iQL-(O@o-sR|kn$r}Gfat$ zTe+IR@h@?C31MDO|2`5vp(Abad{SaagM?mTs>shks(?r$x2EB8XI({_)-zI#?a|_h>4lD1cn-DDe?PH5!D-Jp0-vAVZA<`%44O&UV2psReG>v z9Ape6RfzeEw`Z0QmRMe^SfHaW@l6RdBQ0I$QB`CX$kDO}3k@(*U9+?cbIXUvbYSt* zmb*^Q7@+PU=tV$R{jjAlnl(HG^5p+vGYbDNHXi5yPd4fiH-D~6s-?L4!_URlR@xBc zTc4ATEq^)PVuFqyvR}6HhWmBYr_D(SKWI$?lV}H8T#sA+G58h&gFwS&PB4=}P69bF zKYa^bG2uepCP00!wi8Hr3R_~tugI;4s@VU0K5SZ`bz!LkLB1xvDqlow@>oy27Iw;M z|5R2aA$%33UYa!|s9~ZYe8nT+RTWK|L#GJQf$t+LAsj?XOrXc`Z*y=2jdBt_(bxhL zQFeByiYXWBRG6S^H2-HdsYf8P&fNk}Mt%lFrnmkt#bXZl6ROJQ1TYb0r6}wW zV8uWQc6+6CRM|6Ln4NPZz1vZ2iQJ?&yWD-gaDw{=y}jDjfS_2arwvzd#mE5BZff%?@rhxl!@{LP{D>FTk@7v5;zyAz&*nh-DQqrL-KE7Fig-~&}i_0&BD zd_fw`6GsC~%({-jy?RwANpf$Fn3|eM5V#vls81?rM%N+&1%TR;<8q=eu?9)uYeKxK zyC?@wE4?yta=?i4(DjO8uRsNw^{$_kzbpX?kKZUbDb#@a4@gvlpKu1bBQ{j5CjlU> zCjRx%lJ}{tvH5u0M+1hqLeF|!Nck&a_u6&ec6(3wvA~6VGBssM@E8Lwy(TOhtaIf^ zP-t=zra&BtKW2jt^hDdIV2RTg(b0b;t+8hP-9_wNqv;sZ&fuo;S(;T^^7R7d|ITQ2U362NLHSv ztyHv>EB)K|iokE*y&;;i4&JAxEEo7LocMqGmKX&>0xv8z-Ynk(LI=MD4=S2Ap{F*U zMvOKMO>xSd|4rqABW3tDu!(f=Pw27{0u(g-|!9| z>Q7)o%n+(6tD%V?Va^w)g$*-udpF_Yefl57HTI5Dh$4+Ot4dAT{VJaabD!ewf?!YW z+5J2J5Q4(2te!e0L#-aN?=#zJ7>VoTTq1|8h>i7=?b1Um%I9UULN3cUttGtaT{x<4 zBNe43U9=TWlw#3~O*VrKG8!0k&bkRcX&02U0BLopZZyyt=bH~-kn+}E&lXX2m3c3V z*e*on9So|&O(wS?PFE>Y@(^nnZlRV3IKynw)_!S!ir2C+(?>VnP1hWv>axrjo!Lvm zv0x~pn3B$@Un36WF7|2DILKHquqkV%qXIT2a9b=X#}Am=8jgS7%>V{X{TamlKZBAc z_Ze;vt_FC*oX`$`Q+=yIw7HPWKp%e?;E7`U;L(A0SRv8)yWa)R6yl?ce?Fh^(Pb$HkszQ(Er!frUQy z;12SCv?s@#a^WC0~X);aafXxKT`LMOgizgmZ*=sxfFJiq^VV3{9jZe7R3TwJ`O&*6a&HTC6J?OA`H^jVuk6c2RWtv+yKpJafV z1t5LRI%oE-Y^pz4ZBZgVD6vZP9U?r|yMhhc4v5t)-uRKLT zD6txuDcFw+ej5!X&A$fkm94cfkC>RVS%yo$bEiDjhvr6R7C_NbL%tNrf*ygzKR_2k zp=r!bk6LHnY$TmtJ7=M3oU=J=2;7R-3wWwn-dR1@K-{V?7{WGhm}4dPc-o@T_Xbn6 z`sk%txo?|frkdRHn>cJ_qL<4PkFZw zOS|7Xiy(>%p6NA_!hc2qY7>XNmvcmDS9#Ru@_pqxGb@iTU7HSK=`G4O=RmZTP8($v z2%KH}*EAYCkqzq7W;kvO+5}4N$!v-RlQ-0ZM+e*(V*O!nMQi3gNl++GKq%0cC+LMv z8XLuMAzYp|==zAQD6M_=j8rmz$g-Y=Wm$?(L)ci99pF)Y{;s0-QE$^ee9^}MZBknM z6^=9wD$f$r;9KeaSCX_v&@{@KbrGL4>v9tan46n+*Ju%Txy6?uv0`4!G}Co-xw+6H z*ySnJNiO-hg5t91wvHY4%2z?Tw7G^SOmTKZ@wqWiGp*y!y3itLzam)n_PFfl)#Ds+ zFoD-I3Ud^>1di^@nNs;Q$`AMAbL@GRU`=dl*HLrqKTFH<83DX<)}4UNGxkasNK`rS z*@ml4|74GI;XF%%980jt?jMI;O}yd$!V2A`|Z7{7z*T zy!P1TJj#ws#_{CmR?qiJdF09sM8xNW*(*Cz$_h7Sl0Iuge@+u-6YmLlPv)iXbMd%o zTdMe%NA3Hf(ZRogU3<=%{$cVbd*yA{P}^L?>c33N=p1(zhW%+WBlB1VT0klVkA$cOBc{q4*%8exaa7 z5G};giNs7LRNNw!x27R+U=t=Vbj+PLoLSIWEh&v*Sc(8OL?-+881qZ8j%VtfU}L6w zLw+JB&QYC-8fa%(@ZZZM#E3up9C#?`4kQq*<2Ra{NF}s($mMS|Ci^?6$ssn4$(buh=cN7jqtKvqfW(3Kz@xAbcYt7%hhhJK zyoF?<=GgnmtncTJumgG5te15-iPfjSNU1N}sm9UKb2^+j2!G)t8-yJ$_Yg2@GnEUA z#P&<1@(n~;*wzZvkywuyxXo|_Wt2i=8i7BC)mJ=$n>FeHxyI>(mt{(az9z9~Bp?5e zxG0g|;&6g4L@%vJMvb?5e$^1M^bz%k9AAot6QU zcM1bN;&0Oe@z3PhX6ycyyqZp%u5Xje3Cw>fgzJajKf&J_$D^9;0k<+#p~@+BqlWP) z#YY2EqlJdtjvr$YAr`k+l^#$!_44+^jsmo+egdue(C?aW&})G&Us&7(hY)l>5D+@r zHzF%wS2GumxZrt<1AxF{?y`D$Gmcuvtdk)r92Ux>*+}M8vEVednAZuH1^zhKHQ7YXu36r zVypEm`%bK;spj6hjvlyW_^Z%!)Ge~E;waS6^W5dZ^k=fEaMBGNgJ)Zgd7fuxiq`Xx&8i{2N zo_#Ocp98*wUBgp$9eVaDNKZ_I*vm{*M@SMMgqUEDr+YeGHf)k!TX&1Z^Ioe+&}=*G z6#B3J=Ai?Kn3Xo?kRB|79&lw&ACgV!yWowzKtMq@wv-TJeV@(qP}Ky7pLH;MR#S~y z!#-H@;w$I;wnhEJ=NBB+2~F5zDu`X!qw@^Rz>DH9v|E&m(62;*%vMG z6V;CESB(hm zLTZU%gxJ4`Z~vsiT2uzW1CszgF`YV%1)oBYOGbT-j)T!KUG1ScBG`SbWc2(ZKAg01 zsKH@p@Xg?w!F+Ay@DNI6r24b7>#f-B;a8bJ=&Qm&q3_#Bu)6s$_FZtZfXC2qi?SID*YwG%3$s z6r&LQgrd58;ucn&#OClt+=L3bOl3Y}MvgY_(+jBTWFD4*}Cdqa#Kd zqubU?PH_NHUqKe1JvAP<>c!mBvs~(x$KH$T1zY2GNEZ0*Eg0=XE^a!UPm#RP7{Rw2 z-hp_pa%ax1&H$pam~zY)+Pkx|>`7@zp--r)7bhOQ)lulo&b`mS1;3zB-mddF0R;#A zM{q!PDWuS!f_r}pzW6P;3h%_(h2>HG#HPy=Qb?6ZgYF@TXw;^hXjJwuV7K1tq`;Ve z0V}qBF^$Ha90I|7xw-XGDeBnd7Q%dyWq8Ov6!z})gYzjFDgqMC#gyS$x|j<512}2` z&L<^dwsiX=q!6MC1m+7)wd-q#r`|=^qlf~eP$Z}Mib`QUi!h{+cjs0jO*PjPuvG=# z=ZHtqfGG#)y0&!N;`kH7%?Do2J1@Ts7Y1Yx{i~S&Yi?ZfAB~5!sK<7Z zfceb+7CcN5?8IBX1D4b#TQ9;5@~NlAvt-wp;dg%f%xr#4v2MD{3@f7hl7&+?}nuJQcToy~yu( z{Swg*B;1>r{|(@v@EhPb><<9@d)I(Hh~aja;nN<%=;bXp-ii!)`wsKKNH7cDtT4Qw z?Uu{CBV>HQr_@fry_PXmzrDeJ95{P?FBI_JOTk`;oz05B6zBxb4iGqj`E9$wTMvhz zTkv9Y!Sp)poz4<*Zzi&Of(|<*m4XaMRK~;GR8+$CbxO;nje1qQh>&;W*oyK=#USxMU2k#b z=7{Pl9k6NN7_JxeXo4>{U<&GCS(~K8mIH}Ye7wko@+g)o{@!Muc`*~|aRRP;oY1>( zELqLKH3W{6;$Ro}v&lC1jU2I1gj}J+82ueaK9KR^B?JwOqV|gW39~~bU zQc|`eUv@&9JA$QM1=@i{jWJop&hAr-ZdFPYhoRxF39lA-RNN$0L@<+M^{G?ciW{L@ z*F_~7U4n(#;7}32I@CGfQ^f>?Iwf$uOd8EoY)}eIvYZ$T2s?l5U~Czjkgtf;)PmMr zakF8dzr)2be-}44L;J~5ysm4g$G9{;hRe)c%bHo?KQ#6->&0pTU^kTuwXI`i`W9vJ zOJcb~heDlldMy0a*1ZB@^B`IC11sJ5ZPl2pFj8XD{?nW}RHIfYwyh=z9Xd{uX6jUh z4aOC#ODDscVvSRUEU`;il5=8G)XU|Fc{cKhO}=!6ENSOKVtP6nW6Ft{86wU%%~bhC zVH2~glQpL}r1sPLy5K{1wo4rb3$tT{qGhyi!-m_L{$ahuY&f7VjMIh?IhaAcBcz-_ zm%T?5hQD_KjitZhL#9}8v?LV}iue$Qw3eMxmN*EYm2XpefBcJz8Ayc_`J0M4V$gWI zcACosXp{AuJ2R1ojqymE+LOL?RuU$k*tO<|4iWZRR#Wxllc(fVKV53Nac7q)1YYAp z{RSfv&ziE26zWARbl06dh|39zO_&yknyJFS(CAL6>FS5hY$mEkSn+0n<&mo9**_=> z8sAU5H(UT18k+$N2|!LhaToMdVYL>uaYkMo!F#l+8*fuHHoK~*SSHRG9^3Zr3rixY zX9blfogRbOCjEOw!G!F+?t)TZp(=ryZTciqQNdSXa~8c0is!-djDr3*Mh`75a41Uk zq6Cf^O)cj844!s2C?I1(66Ez@q?0`FiF#O4SWVrLIHe$FghBB4>hUSNJcCTZoYKpp ztwwqN!eK70%ADp>z_iWXm%jDy?V9tENlsjeBK*O6hfD2B;#0c&8pCarK|zplTH>go zLpfr%hc@Yh#7~$Ls+@1VoUHKQ`iN%n8prK0!ePtsaEhlLgIt*?V`q?KXS_aY2f#w0 z!%(8g#x|8$c!Cy_`Pm8gra$K!Qu~xUiw4J6rCFAM07|75bFme3gE_+>Fkxs>REbN7 zeS54?0wC`+&?F3-xWbO_XBf8nQ}zoGx46FFu|;Cke7=SnKee1kT4y&RJ+0gbHGF(^>P9*k9{CHKE@l(k@R8q}QGlO<+;|TLnDwpDKcT zt_kGJmDH=OoGSwk6?hPJQ=7w)FyEY)`7cRCUuZEtEC(TsrG1}Y64)nUDoc+QH#BkFC3vJp*5-`xk3n5L@gCJDL7KbRl&oQGhY+^5P~^;9{!F8LfqL>YLb zG4l@6i80dyvKu9uD|~A{a-?^hP6CUE!dZfjS7M88g-kF3oSvrbl;^a(6yMpbgHUW- zF=Qq1>)~;7{X-p)^5aCokt1AfzA)oWFT+=80fChN0>bMCu{5IIJe<1Le1Lqb8CL44b;Cnw(W$G2!R7tpt%-A3d z7@GNTjKn**#t@8SA$e_~f5}Lj`Jd-}JQ|1ACe@%;Vi?ZmbHHG6t|L+|SO_N=|S8u|P@`wn=tf3tH_AL$V_*=HwVD&MHn{Y|w+iuU{cZ2^ zBh&OSU$vbB_cl&kL)bWzn;i+@+KWo-!aM0C&F0WY{ba2hzy+vYT2!~Hd~JDiw4~F5 z5?|$wQo5UUvEsVkvAj%^%}EJ4_j&2qw819IPT>3G@xmza!X)r z>)YKHQQdti&kYO9s|k^)xP_4)(!h7vL&T3e+~7mPOK-p`!+XC0z1=7%Wm1l zCesI%^67F6_Nir|_si<$FB4dRXSp{<{d(6pu2e!AgyWso`%%)nofd2gYPNy>~pKgZI+GkjXUYsTTx^?;m{Vz^W<%c&^?UA)&c!2T~ z1_ERZSt6vj_xg>U*8DM90S4@!Ro+|`jhqw>2h4cbfME)&VKOTV@%dZU=t3oiS6!I$Ws&l zt?O||3W1}$>TY^`_10FZHY4jUwcP+~ZSe4P_x2~_J|tJsaoXd>ox`;2oLE5mTg{f8 z@|}*!xC4xh1XHy_#DeT;js8suP=nio&Jdeyw~hU@q(QJAooXZ3%xyJl>yiWF8sTu zVAZDnl)zwboL5R;vqf~nVK0r*CCV31EHkdszIcEC4)&TPqt3bxj8a&nAjM&*}{Tm zPvUVMyNtpZEsaR))1O9g4BMD)94AKSeK7>Lm_B2lH0Pdnq=!>+!d&Hppy?;V2hzm zejYLdIv^n;eGGp6xI0)qMp5?g+ZSV{O&~}rs=yAKRbU74DX=3J*ij?d0%`wm2>eBu zW{}r3yl#r!--G@Y{d8PsXYD}o zp)8w0kOG5%U>yI@`j@0tuww>P0B{&AaG3R9!+HRA@Y~E1jlXd=z_<~<|Hk?IfWLXJ zk!*mR*CE{m4nqSD`)v)$+Ob^v3F+?oD*8EipJZQ$@}*ijp##LnYu=YZh@pA>7JT@G z0YiOyn$|FR7xBih{?T#xUfNG50H4LPJZ8Fla;LCF2!If2y=C}*_;MDqzn?kQcaI*4 zCoSYQ?z8E_?ecWS+v@dxX#M@z`i`S=c#jLd*mWEk`|ZK)5$4p<^XKb&W)~)ZX8Y#z zPsS?frgqcttSUl;-Buyzy%R*j$oZ|6eSLWWX49?7TfC<7*O&;?inmtA&Yjz<81J8> zhYL^Rk3Uv!UMy=TbsY&puY*-u&$u(DyiikLZp~V~UU^!(U4u=8Di_D~?zV6HM`Okn z(rv$cZ~pL`nsZG|;W)FuJ+RI85r3RJpHAUxT^Btg8(Uwh+)D9YYkN=_Y_9w{`W>L- z1blv7OCy}}T}z8LIg4>WyCnMly8S|5B@|u^4MDWZ_Y3p<96LmA*MoZlXO8E?VWg>G zb|!|rsbE&7sprYO7@VO?S?{mU5cOmb2QN<+AR`Ld&`tqf%OtU$m!>#DX2eYX4F*V- z*;wE0I12QlVqKmgEQ0U$3ReGCq2T z)LRH?i&&x_wvTki%PE4o~=vIL`u-6s1e2x;@ zDe_bev-|%Ddk5&swyj$@wr$&X#kOtRNktXgwr$(Cor>*LT$NPtcAazYefNC-d+%?% zWu>LHoj!W+bFI0@9Ba=tzAeURKz(*fKZt@4L*=THdK4lLB=wSd*zyOigoFz1i;7!f z%?o>K!yi|OQz`sLIF5KxTHRWDtiutQ<;8IOpK|7=@xOi zRTo&`mm5&MV+%u*duk}{8gg5Ckas`07T`b4&w6`59Rr-tc*O zdy5m}&pP&f(0*S!oNRn+7SQLwldWWUYv1_6$%sd9kLd8c%$5;2Nc zm1~?(;xr^;pPJafM`2$;Af8ckbUMR*s=iT^JNGb)*#iDX0efN8tiY|OPBj8h)u~#7TG6I$cuf?2Yg2P{W>MGiz_^2Bm_;D*weC z&v}~b%c$&cWFev8_9rN(3FHG1;uR<**QwY#6=ujM59uHQcgyxwY+Uo*2bIlygP<|K zr7p#$p&v_l4`p8`Kcst#yAD%xdy`$TW=;AYX4k%YdeiytA$VX9LZe+SH+bss<$1*1 z+3O;V4mmY`*>Tl<6_wv!^*C?uCh>JnXv3u2xynw<<0^qY8DD5M)Cbn*Z#Yw*Jm9Oz zkY24$!Usq8#_v6fF()~3Rv)tVvG4K~Dt$;tacEYQGJcx&_;In!3J!19?-5i3tprtH;>aER#P5%(0A8>M+)KBcAeMj7UEtco!$4SbFw{p zR41JOx?MNyOKnPab}kf^IvdC|qqw;{?kpR5bx;h87FzAOQrR&6zGF{75qRYIfENa z!mk}}Y}}3?PTvF0S$pl>Ct3w&ZBccNc7r* z-;*PNd)9WYei*yDKcxP6O8-qBDKgXo8()-YMI(T;b$2kZFYp}3(%J8K9doagKjh=2 zX!F{`yPZ9yICypb;N3y+;@zSD1d_x(^@=o{xyHhO^1(#X6i&n={&a?wP-L=<=*pIP zDCoHL{_6B|Vr=`zSUYagPhlj~LoeCr31(&picA?&VyJMbFGLha{^^gPNTFtCNTQ?7 z1lTIhrn0{S;JlOY>hW)04&q-jV^YJGq)5uL?izoTLtuI}y6c*$HX!z3YgRk6Bx@uX zy-19RjKoFO?SfpjWi{5_DV&;WK!>vC#VD6YP?6);t>dP_08M|iXOmwcr!bOtJR*#M zAE*NA0O`CMX!8{FW)21FWiC3ekIPHH&Z&9L;#sNV-etE%LSjYS6Auk0t1|WzC*UP7 z8l=YpoRflabI>kxm_?F)w_kZ`^~7UTb zw39jZR;~*8R+FU?a&@WZ`t4@%>4jm#HV^f}V5i_=z;Z9e)$$|hqHWMu66Q8@r13xSd&-o+>8Y2>wC^-VG0nB4I18ha zUv~~&X4^SK*@o}27w386-R<|X^MqzgJ*l+PGDNZKNpH3+iiXNvaS$Qv*Eg52(4!@4 zh^*^FXB`jBi+K5l(HU&ht!$rzEK(tU3LRCO;I-pQtCQ?frJ9r#9_;VOh@#hTrHixF z-%O3JdViStPH$HDmA84*jA=dRT9hu=zk=++{&LI2@P8W}eGi;^*^>jwosLy+?Z?Br z^Rw%P0IW2_Rt(Z+@iEfUhe9GYzQelFX(c5>kKBDn93v@S_UbctLV)kHWvubhw)^@U z4De+_gmKx#K{oCvqnE14p_| z+ZW=XL9sqsw{Ct&De6Ktr}{hUvg9(*-R^sKtYdWe+@F@MJP7Sced@*I6C#{!Xn9>x z5qCKmjivN&8X@_v+kOrboe_ee?;dY%NDb8fG`fjRQ%^a(31ubCsOx#SfwRch^7=%F zG94-jkP(5=vMW};LZB;3akTLtXk~_4D_yJRaUJ4{gsJWvU)kHzfsMCn4#HMv5+8#%t*SN#bFEjkj~CRmqN#Gep1 z@Z6>?N-_<+_0igcJ-`r~qeNR-`VSXe(cSgw^;Lk8*a3`$^39Aw)pqY>8F#kEPm@Ng z)o7_-_HAhcd2txejG)C{jOH*gI1Q4utWo6F^ekIQO{TRXq0sv-AU6WXRNSZzVF4<)u2H=!O4_$Ieb>Fxmpr2|BK z?R95bEnin8s{wC7=dE=(Q9MGKOI%TDMoGY8G(>5$NJ+a#pVxz`uZ60g;gf2K&z+Au z%OclvHpttw$UB6`^|n4=S>vQzhG<^R!CU=#b`Z^I!;A@1h~!uAaG=L@5Y} zusBS~e<6DgZCfpFQ}5T|$ENOXq3C9RDPH4I*5=G+%ko+XX)`Zr3*|OE!?WDf0cFyL z2(4^W&rsmItWhFE4Qos7slHR)Jy@EH7d>cHLG+y5uVFv0LBCC%tATN-fp(DN4{M8s z+lD^{D${q}uhBZMF+#xNf&Biw3KX3hP;gPBRw^;)WrNnSuwP@wXv62y@#~S5jIr}- zS>(H$hmD+<4Pft-%E+LO&7e+_f>bT(zQ+*tOa-Q%hmE?IO*&}kY(Q%dJ5Z6CVY!!0 z%EnI94vtvmR}Y(wDIA4ihC7l*Y^xo!GJ?kOAsw5?t`@$X`wRyF#r>KI3(d6zfu4Q1 z>*XkhZg$!p_Gw^|Q^Cz09RCFtCe@yn$)hJNhZqu?g()hRZr)a-W+f;!(^;-WjbOwFW(vLynohfzh@%s{QjLb z;>WQ`Xbz3EIGP5nmwl}sbv1G3O84b6S%3WPc*s7F8?Tx`V}#gh%jiPc_pD$8x=BDU`dKk?uGohTk=W{(X|Dmh#RFyC2vEwgB}D} z8p3kfB)w1ki`~zsYicHCnx`xkBhf0`b$MVss1JI1BQ(V!xX?$$b3)ht(UxKrVjv(9 zR;FRJrFr;6s?PPvwVD}%Yk4LhsAXXnoMR?+|L&Q7AVGV9aknri8ktCQ5im4zF=Uc) z{m{h1&}1~Tm-9|ICrWSew*OF-SsDD(Q@(hI446aP~$Jq@sp*q(KPl zU8$}#qCke05TW^A7ZOTb0JW86_BWPag~0^#F*28^!Wux1>_VY{oPP_|@`~==g+evH zeh~&64Tky^)iX8in6PSg(kA&ErAepQvjPe5?5=^4pd}z-Fev2p0%*rMtZiEL>r6Eq z5+v3FmyJalru#ZOC}dYtn1>LktBk?)0s224(D|Cq1ADI}%7;J!!Oip|sVEF_Ws4?7 z)l_?39LKs-iUNUI7jVZoW6=ukn1=%qwGke5ihz;sAPqnfgP@9l=`&@`$ylq$!T1J> z(l7_CmY_sHH!~)Q%jSD_XoC$xh&CnPVGD)>5rgou0pDO3d5=`;HBH(eLuJf&*jk}u zy{vHrL-DYLaN8hjvW74R>7)-pA#1*k=Yu}ilIOr617T$b5SQojEYQtTn)YQ*0?vm2 z9-0+xFrbbnqBVSyTTc-%eqk_*P^g2u<)6~?$Cz(mci0Szozrg^RtCoIQEZIpBuJb@ z?H-Oe|C5ij2$(U2D}#H-@H$YavrSI~!^X!HsfEEn0F$E3@ zFaO2YF#dz~z`E~^RK@qbJr&$(z$iW(ViGqA27WRtDFSs;C+YXI;3UBy&`Ag|4d0KU zfFb|90c64tT7=(YBSUF(n=?9tVGpUB-c1V5JZ#;~Y`yJlJ>8O%VIeY5_1! z_5HpN#ip<2y-OnM_c7~#@)1BDCK{{CA48D0oYQ6`ZQQ58N!$LCelG6z)rz`(-GAad zc$!j(7{$!MNX; zx7)2Byq5P|PkZuY@x|TaebnPUfHzM;`a-5X1vh!Qw9ZuCd`g3bs$rjYBkBItjDGMk zY;8AujZuIc$G}uu(>&9_GP=NFi3mzu@i%j)J*R1l_foy`pkfZz6XFy}?BOaA=*W!sKOI3sfDU zz8|T6-&?Y!PlA-Kf?=W9)!r`=$yk)M)TRL@7^Vvm`= zfEciW$NR>VCCo4Rpn-PNpnF|c}b>y_Vi$OS0uTU_H?j+1k3$0)CfR;G`R)v4uyd|)igX8nDa_ZBYo6xrr)xj<-C z`GRuzsFjZAit6pbx~V;I&e%sR<7V%=`y*I}anjJjOih@jNYg~=8y#ETEaB!zGentBE+LpE{$DDGp%(kk32rc#Dk z0z?%4h4C*D7lI;ee?$OS{l7)T42w3&^yvRBfH@y}0gkqtz?z zrq2!gmhs$Z`LV?Zh4YYU1OBV$jG=)GruQs)Va}4IJ1Kl3|jyA?F92(6Hd$__o@T3Aq6Wi=Ww_g*u@z zgX*`U=*Pqr%X?PAcAQW%ilJ*L?hJ;MD(wiP*K9Q&ASvq4J_~sYdEx@&P}Pwv?cZ2T ziK8TA3R(u=i#rV>ZEOtROI#Op;}A;a+^eSWh^QZO^5~kWn%E&%+%*6;a_azZBTe9+A?wk1r)O#Y+do`wbgZxx=v!RGq5;X_iYZy)z>itft)(xH-n3efT4 z@^2j<6I+ceB>xW*ZiQOeej`t>imA%_-~O@!HT{nj&&vOXcrFK6f%^ZjV$|p;WaJ3q zG^{b{-r9%Eb8_l#17~E-y4MJ{{s{TP4%}VI&hfoO5^OPh6Hc8;KYK^>-|n zP>GH4_)Ga8VOIJ)N8<~Ao0qLeqGU>v%upp8=hSKl*QlP9PQMR;5|yXWT(Lf;GZ4&9 zWT9A*%q1J$Bb)F@}-IttK}8!u5}*5ieW10;*UHQ%w^n#^!g zmYdTrN`epyLhm}O**AQ6=~tSW;E-&%h?WyIhaT?X%w{dZ*^z7{@8zOg@I@N6rV?$) zrb0FUpf-rp(bu6jH(nb5L9GtZ{1@s7PD=5`U#JbC2?L9ne2+O8HriMa;p})w)>75` za_lvpbeqL%7I*K%*6;nbRFUukm2mvQ1s|F!zhzFLbP2BtKsn2!#LsW+WsqX zN}M{?O4N{n75Y49NH$nB0qp3io%E}00{`KvWHDAy-2~bIVGJ)7L+Dg%A_-2c{vqsrSCPpZ* zF+60jHi``w%`kT|`T^0ZU^Q`tJmuX)8+OYN(+PIzOQGt0QA^KRoB|Sk_4&!#D0X8J z2te={48tdrPO{m`ZJYl9rLGsO&CHkJkkmp&Yi9DshNj2+ zlk7FCqH!~;vQUb^12V995pr+k$N2t2BBA6KsL1lZTvSP82mwlhRc3E&Is7^gyl5F`LY|eVd{sR-bQk56URAisWNW1c zN-=b3Iv8a!t*HFS*D5K08uMEbadh+(tn$JHRpw}m!;HBv1Gf2*f95Y5^)-G#AzA(ClV?V^pxodMKSUq6jh~(Tr@SZdMZhDGx|W9i#ap+%Jcz5 zY&F$%ll(|=WF;E#? zS9Mw{rC5cTN<~F-66`Axx^tc|i zSMG(J?4_YJlD*s&NdsZFqo&$G`LnjLQ*7ZYI{9CG55fN+Z+AuByTGX~NLF&;h7^Ur zheFx}ZU~~Y^C$ACRnLm1l|`auoC%^gr7aveWI+TuO^}>v04M`$!P8P^9stTog%baR zG6~2(DRZUIncM1*WEyfPip9i{DWG%nTNM0?G+X3h6^%7E;bxE^%+AE1Y<{zws@M2f zB`>G(J5=sgZT1vGnOxz+vVe5HmZZ0Kj#fGXUpOMPaDXqnI1-Ba!nq!DP`s(6BWRCd zPo|{apHUcPgfWjJxwU0beA^y^iG;>EYE%1hKk70H@tIhk@fhH@yM%{#eLm2|OF)!8iI*{qQo zmW?ruUu)gpve%R!6v>V!;eA$egCaU7{k;Jq7#E83m5&CBQ&{k_;RpOa#9l%j8op>z zBImSSiv87ufHcjHW0I5SOK9GYD$u47rK_0Wp@&F#vr$b+u6W1EhjavS&^l8kCzxm< zl9d|4OXUnZ@b76-rnK|jx;xrNpoLb}FK~i`=c4M`sN~rmC?QJY+XnHDMEkm-JC0*` zCk4+iS2^vBLrwj6nW3Z zalk@@oceJK#3X*4mS(%(p`^L8A&B-} z3nQZvP-0O>n0c{=FBtzg#USF)ZUUe$84$eWaw}TI6uX|wl7y&9w7;$*5v4k~PjPsU zf*`P~0cj3fw2liMR&<{sqV)oYf8zS>BID=DZKp%#Z>rk^e12mkVTO z>Ua>DgD4X=Yz~MlTV7RzRcSC{a6PVU>m3|m)~wkX{MTvXeIV+1M=yk2M-0Fd;^!dg z;vKIl9Hg>f!_uOsWVqgZ@`y0yAN~$YQX!(1fc95do{YnaA1QP+z5&dV$;#-KdX>(V zg1=cpl)*F8s-kFY1)Je$@_;3|a>~7|3xiQ58Z=N!O#i<=^Lh+g;xvk&$?_Wp1e+*q zTPZ__W&JBIQ2I=q@hLf8EFKqHg+pn^(lr&w_7eB~8TSkyg^y_qf)K2-S6Dtg_Ke7U z@Rl;InW$^SF(=4-5iNVWhMBJCh*S}{QqlG?Wk#7ComERz=3zp{LQk!f7bcIorW=W- zBU}^fDp*C03u`LUshxrr4{drw=(Hxx!s06R=CEre5YPUgVc>mi{I%4*cX4wphv>8CcAtDL{;2a>mGBsvW@TNX~O>dkFjU*r1Orx5|6Kq zBqRvoTto-{;UaA$2nD#KKdVX)rDrPGJ}ns(uFu zuRl|B2hkEBWtbw@L8(IAq2@+~@b0^|!})>M!uivg`<4$8V+G&#m4~tKAcqN&{PNiX ze+2>Gg;61F$G;QfSC#V}AnsX&3pC5to&+uQoBZBI5QwW>3}>=H_Uq4Xv6vNXStJe@@XsUuFa+z!gb-pfwg@4Y1d93vdVrYTgLl^Uu5IOMZ!9g(X=I>Xv^Q z6^{7@`V0F2kv^#ka2rHA($DjauTq+HFdIPMWi^-kuXr4LXn(wr9iuux%t!l9j5j>M zgy#tG?7yUt2K*X=`r9$Vw}PrWNXpESmt>FA5S~vpu)iI{5~}Ss2NRoYwL_q5DH@-CyO8BqsbKfNbTnx=$t;31r^j(SK_33HTKh_a7w-zeE50g<->C};GzKTEj2Z@vU-CCEm9MuXdC?vI>1NL)w2XdEDxngHY|!n`9PoHQjW zcxc*l9w7F!A0V1fGXenH*L`2CS~i=45Y9KchOCachCJfAx8<{m6;h8ZHDX<{F}nOc zva`&BhWtXbS`9uL=HN@sQ`*TBXL$@-GT_*+DM}L`y===n62SW{iCBV3DIoA{@S7r; z=Lmk^HhbtU#%rhEnvFl!;fvW>HX*_Q1EXPmSBABQ-)DMuR>~I)mGt zvc?kE>ihMmyi-3az~2}D)s23SYDlSdSn2s-g2_;$I+p~9? zV=DIHx|PMolf+$e4j9;t^W4@kM?FwjhYTom+D2}Gs%s{`eA!0865x{JDD&jUg6C^p zx-tzzm1oU1=bHJp9`SAL4zJBr%ztT%vCQ+LqxbSI2w2|bYt9J(rtA+)+21gF@?|f| zQ}}=WPbd4t3JI);+GVF>V?P)GjV{9*j~qvUH{?ZS)GF=?-G`CqI4xU#_G$|Z*^0mG0gK^EgJ7;e14`)HV z83IJ=m36?=0nio&2d!Eyh|qIR5-+kjJ*Ct70mR_SIv9EHT(4pv z&1gZgPkgy&5-#T;uQVZ0;T$u&F4@`wz`17ha3r~Ap5cnimwYrK1$yvh$ziECE%*&w zzxGORo6MH(a?F}A+@3D!JE_Evs~Tj0%ikp~hcs)I$x|K87|U+?JebwExH7vesbdYdj7%wey%N8llt@YMHcy(*zXN`~D zn>w0U!o{Sqm{V|LKbC6ZV8|C0DVV2T=NgqWGLmZzy>7JMLoCQp;2rC4-T?8$x#X){Q{;fjeMTnF9jB%mb9EDkJpm6&Yvh?Xw zomGm1hX z6HS$cM;Ej(cYrg0no2qI98VLCz?nO?T1no>Z3!`Pu0O*~!aTbSm;x((uCE)Vh}0 z&dOA*@ucwj_MT}<@-Qi%&NW>jt7gfl3D4w!!%0E*qbxV}NK!aH|M=QSfHO&Twj-nT zv!V_arJjEN;E;c;I3{}} z<=m^_vy5|QK?Kb4pOPe#&@tkQ%E}G0r1|C5P%-(A1x`2t;kb0Q$l+8-EI0vxn=pXG z!#tE%DKeK5UQ@{ZTUYWtR4_Zpjo1VM3S>+^ElvRESJ1v{k2(q-gqXdzd2P19!FY`4 zmxp}}_CO9M$QVHc=Nel^J0Q_Eai+XENF(Mf3GSgrAyTLVL#)OUyj9ZuYZ%s@TB?dF zt5t$T))1yX}+mbKS%K)NW72uK%Myr9?+kBbc^rO-xw zr+3yKTJrO=p=c?$q7uI>V@yhEB%@kf&5d3`VK+hHB_~Z;siY+RixUT{SF=Ai6{T~$ z4P}u8EYL#k!Vuz6cn)jKNWHD1ym^r$S_3%4Dya}Rvj{geb*(ml(z0gA-;_i}@sKp+ zMP0G6k41~WK?4q+RFv<^@&{DUBpezOeG!1OM3Z}8Kl!SlRZ+gPFdOV+oUk7HOA`vw zKUrX;BmtZ`7X6Pi&M1%tnDs6NjaaGhlTvuo7Obt#gI;7*ly=mV0yXZxaXOA1BRWMB z<+5QSg4Ia^rmUqZR7}=IQ@VIu;qC-W6L?)Vvc9l>Tl2Bc{i@{=ig(;ARjA~V=S1TvMxopmxKmE17BZ*wBL53;i=-o`U6q{H&6nNxSKQA4-494*qk`-Z zxFs3tDy+a%3_~rZVJ0Rgv??z#g^S8i-6}|(@`=BG~d4nP#i;Wqhn7vvE_J!h$+aDm4#T0CoE+xiV&3% zl}U>W$-4zV9Xcu}N`pbx~(+z&LUDNYNrV!#G!(0$h@~pJ2L|mdb`$ou! z514ChBW1&v>6H00@}Bf8wHNhoa%rN~v=nlv`~>?k;HKDZ92L&xJ9)5+Ke;TR#e9{w zMU^%|E9OOKi{;NtlBII`abYn7IiEu~r77p@bGRXrUigeH79hT|wWHRU#r^rFFdr-Y zTSH3k;tbJW6_O^#jecTweiY!S>Z#sjvjnt_w0;r*hS+n6n6yP_eU6xTks(TS2O%Ea zV!V8Fs+jzjwXYk|Ss67|b99X{034Db502c1J_55DbX?8iQ3(>m1UIY1M!G~2ITTIP zec}4?-g?RNWVF_%@%gwd|94~B%YgwB_;XPkt)ulk9tH)20I}9ZjZUp2KDZ(5Pu+$9 zF+dpv1Vbxrj%td8`W`z#3~)9_UBO2s&)^&JMrF^P1|@3rX(1wDSV>Z9PmxFf%HT~Z za7;-}&lzH^3jicjB*>w}ISWmf5eSTmy96jrQ@w)%x~O7FJ}?Zeb|kt+MmlAliJ)sb zmfN9vvMjv+5Gv-)_E355BAwO+`evSB_n7khlSE>l$~eu#@W0ey2mVnfg7m-D*}?(T zaY6O?zh9vL2h8;7)g{5T>~A1@3~b1UjcB=!f0JUNyTA8K%6a?zA8iPW1jG&cK!Jcx zq5rFCmy4OJtChXQU;C_D)VH0#bD{O_mKnD1n?tuc$sSUllhyCYQP=_=5&+cr4an}1 zGZC&pVV86>aw63{{rU?1{$;kW*JXH2fiWB2Js&>Bm>-5QZ~;h^nwEy+VPUPz_RWZm zDK$KjiQ15##~=G!=g0LSKf58lbq25(62IT-Ya)Zu%BBXS*CJnl&43;h%@}kK9f=NhNeP z2!kBRlsH%?L?Ii>X5E}020g^>Px9_R&>Ie?FRzF8qMd&#Yt&(!7N5c;r;=j@VGd^~ z#7FWwz6BMntz%+!(Ka}RoEXh#zfQyRQYK({<%dwbI%b12E_KDkXQIKKh)kP%#6-VR zkP}`l;R~IDV`VAvW^(~WC0uTyz(V1IM{|22$UuPQTrb5?;AI?>$H;-(D6{?+jogwx z-kvSY51FE0C~nSo5tDvwjUTk0=+-CyOmz>STUj4o9gN54vtCzP7g$_e#nG04PuZ^E zh=0EmL}+Z4klcxd=D`RyX>cg-OGIx6v6h?biz`q-*?g8KicqPs0#~S===j1kUO$@c z8-%O0y*8@+xDMCPXnLy;LZo{%CmB^16bKi7nembr$c~xHT&b>VQ}IJIBVJj;1O9O*o3PS3^ZeqmX9|~L~Y{v$~_uOOybpr zDFi3y{{4_tR-Q#qJA5J;e~4++k#(k9&pFSaO51OO76I-|cn_NfqVD-*ICXno`E2om zJco)~58!sjJ*f(KD9G{APEY;_@Hfu;5>A6~*V(`{FFpEgCb9!U1y|Ty_@pHXzF_pb3 zc&!@qLvowilKUxVS7I=+4Z(43zJmfj<-SWwXhwTR0K~dpa%h{v?5TFHB zE8yo(L)pJtP<=HsR{5_BK4yNvdWZ=QXx_Vb@F-E`&@`G^IFSVlzbjd&710rooVf+C z8EWSBC#x0*R@Wm1@i}qDjvvkp!=6;ZpZ)eM5b6i{SIee^Kf<<6Mya59p<*yHuV9j| zH;eTv!Cw)C!()a?j4N0grB0Cmk4m1vj?Tx!U)RK2z(qE`ptKJb$k~=JbRsF&w?eOd ztED1XjJa#0;)<0XWSwjR#$ENi5t2ZrpP5{UYuzfOKZ86~0#WK7J9C(WGV{y0{~$C? zew5@2CBV*gY+K_Ii4%mNZ!W;eZ zEs`oNTiQ0M1r3>IG_-jN0oNM{6|Wv+GvQjWWAXPauWcODb-h&Aqg}k$HSIJRa3B=6 ztB52hG56=(i}B~ACt1jtD2OBno1^3Q2Ab-#vzZ*+=A|FL zqYxz0C92WPn2~}-3XVsc`9~&Qmm33EGGdQj95j~1=4_cYWZ9NVNG6p*chXsgQfXCm zXOXedndQLi)dRCM^KJX?;Mda?4jO^WWes`(A>8LdI`*Tba4LB$h1G4Q);*|j5AWUa zFZuyI9>9DLBIZYGw;*MEPv5Vg+`M|=>uM`>Ir-X$E=wadyr5b0Og!C~anr@rowV;K zxad6#9vnf+$0u~uyWNiabJUD4EI~h?I z^F~Y&hvIhSYK#_{5p2TJHh=QECKMc6 ziQ6>@kjn=_0%7l-H630H^k&OYPLd>TCZYzHcgl;(uj#UG8LaiNV!MfVd@m-!ut5+o zXJX3l>fCQl(##T4qzP!EbcM3>PeTGZ3_?iKnk(n)9#{`*uTM`?Syon+nQY*<`gLp9 zYKvWz`}3_OVze)4Prg-)Qd03CBW&P_u2V72+mcBsrKt){JLj%AmlT=Wp{2PBOEjF9 zxN4|!UqqIu>g6noHtjMkaj-MZ`Q<+Ey_)Qcttc#Y1K)dmP|#b>1(%3WmXysK z2+6V3(Dq|59OEeE#e(W}ptfWzsZF`JJCKfbGU)XH$3DesdzxUcB*7CLhOOdD61fyR zk|LPcgg7uo7gxjrk~h$3_D@@*EG2mf5WfC=P^SiBNDr#%v#j-`*j$WB1`+9|v(<0& z1;vg-a?N!jrk%pd?a(BdnD+e<{`w8-^Q2Pac2rx!V(w+rt9WA}aHY&7XpeZqp2WWx zvaD&g6I+~wOzjdX%0$xpy+h(R;}^+HlWyGf&cH{!jCSP$`47BVREX9~3pM#GPwTx> zV?#a;!aL&ta77vxeZ%b=GY(J6=w;U^ZxFs!283>qP&d0TDt0o zsn=TMjo(Ap_JZ4-j_W3_k+Azna{i{SgTHR(==sz}(Sjx4Q50ig0BxW3_vC2J2s~CS z1Q78NO3n5z2DoBbblR4obeqQEBBFfVojm$)GzR65ooDZ8si_E^uTqwXU*B6*C`Di?NXAJYrh6Uzx;8jRjwv3L&3Qe_P)L=e zmTSVXqHIDzIVxw81ApPmo^y`YaLy(`?wl7I(@LxNEpcxxDrc%loB!EdSkq1QeK63W zd^>WL6T|f&D5$k%r<{Y%a46p{<_KTH_X(tfP@@Jpv0=B>c3^SA`U-sPXM+82HCCqRGa7QTGT~|=qS1I?QkyLlvaj2_|i&_i%IgT7B#CC?PcwhpK4KO6G;1(Y{IQf z;-1DdEpBWkG+nMFNSkgspiE?_t)L}t7fL)l=~JLuZXf-o0TpvBYK*rhAgR7T9Linx zg(X2SXJO=N`*uWKH=@Ij6}$)X?-v{=#j6_iuJOM!lr?5=-aOiIR^g9Juv3~q>FCR2 zfmL!f(@zG=n03MG+WySwUP@O@RtIWKrv?QQe!mqE`CT!}okn>uXDf50CVREVY^cd$ zw9gXUIx@ZUX}>1D;*k#pyKb8#8#4V}Sc{4&-6H%M8N1wgN7cU3pVvWtqqAz?1%!jW zdTn*T{j;wJWp($sLQ$o_H!*C_Ye9|12}wtQ-cI3QI#03KOSVl77hLS7kKhE9N;jYX z$PS5^KfLv%;pAR1#zx z?w`B1)j7c=wBaqG#LI9m-?}ALOiF!`_2qkprzF|qU(C{ZfZ++Hp*a_z-2s>{xcWL_2*eD1AO2?0J2w9z;6>b z7gq;6O*>mgD_1kSzdrVAq8nfanb3fK`ie~?PL%S5qb(^TQ6d+>)Jna6he+&BEH?h! z3GdtU`06-zVkh?jLdeD=-zFyI;t1n?EiO;^^WjAB0V(7%LK6jfuq^=z%%hWk|W#fP7;-5TT=>h1W1n468hpxZ7!~RFzU#($d z<{AL`ITFNPj{T+tb6QaIAj_|07w^ z*}>7}uTjm3Z?F$yLKFMiJ9vLE!JH3fi54yiL~XMot%vX7Pi{-PDH>Dx;Vs9*ZZh_@ z*7atE7f;|g*xs;uo`!OPf(%Nvinky%yStB_jdYx+mWSU8oVz24e2j$4)qU4#tY!&< z0fFqE;5cLE?rf{uV!D-7(w@@`;&@0OcOpk%rr&ip3WH{w0VUbQ35%jyuUp1<9Gdh8 z24GjI^P3u{Q>K}c@TJS*Jj=$-nM}Gmo85t)R-S@V3w@sxGEuYq>$OkFPVG@d&CW>p zCqj4RCE26lFTNdSZ??v=NyuLhsU*Mt$0{v;J}klpP?L!OWOx5rbJ)At8Jjr+sxp6d zQrFzJKj6aZ*)0=H5Z7&qNMZwHYc3R2*NYJ+ZFvBqz^cE<8)s(Px{g3d-z! zyPu%d=l)0B+;8N~MQ{|Fx-u$Fp6`@*>)$0aqHTF&IKu}YQx7z6lk1M`rYmMNXz@tB z=SCLY@%KzMBKDZ2RYq7tY#~*u@{8VBIA9L%7u~WIw@uWYy6eIz!z=b8VPQ%-(QQJI z>NbzWohTF!z$r8d*fbOuu0~hY>y-waR8|U@N!9u-C8RQ@FP$HRqY6aBWg@4ESqU7d zjag{tFv80Nxn(%HxGz?d<-j?~rLIF2IJy-4cV{0n{Jq)npc$$CGJ>ckXzMJ%X2D}E zBVnARpdHreXt}@rdY&ofM*q4kzbOE|OCiCr6?+}gqpn+t`i7vfzi_^~=sv>dU|5KN z6eFQvGYYPYq?VxEU6v<#soz4`E?MH=@YY$rIuzv)IubC>ktcMsk14bGhn%ibP%iZZW=e{At`p(Qq0w z5=#((3)dqhVN5x9FIbtwvr;fLSHCqgq}gmE}mQiVEuOv5Y2 zolicjJjp`$@Y%)x z#&cR3>;BmbD<=+zi@T2i39P8E`_n`3&b8%!Uw}uCjx{Og!`|!Awxg~--^9YO78_%^ zpO5vb7UKD4>>2rFt^a1aUI?C!X{Z}#y&ulS#;^bz!rD-Tb(%Y5gYvUr=M(myGgjgF zsznbt5Ku4?5D+F{#sW0%{%e{7th@l%r@fJtErYeAnZ>objU%cW8h@8JC$-%S5*0lf zoPhosMpABfLuGvnC3xPb! zVuBKoNU&&Fqa@aM?0jejpm$r_#n6hu2?n!Q+Z*q_*$>+;bKKsi_Jw1G21E1rDBjRa zaG+)$LXXY8Q}!*jj$BpJSLhtBKxb_ogZn@>AeL~Gg-y%G+MTu?QoFEp(SdB^p=@b7 zFqqtU=>9?0`<+hbP)ulu3WQsqb)++ZSrCW<+;g0?12>@!=oa{^W-_p=#k~GJU0A~9 z57As=Np{OxK#25h5PtvwkrNMJrWSZ zv5tyY05=Tt97)txo7>sEsL~4LL+u!2+_W)%UNzJ+OW{eowuPd19A*2xorvxYahQ;I z5B&_oPKdxK+z|5&`+{XqOox$2o0eH=cgI!3Z&QL3hN{syi9gALs2qx`2oNWOpd zAbaI5;Kf%9BUd^ES;@3qz5eF^jU1!4CqlnXcW-NW_jHF-`eo7AT?dxTUZs8I>8n$k z{m+-rZrbNmb8FqL(s$A!3Mwlny`Hn~jn%I3mv7XLsy71fDK@grSiA5;*2VbulYJ}G zKIa4r)~#ZhZ2MxK;n^o#EIwV{Mx9M69llNJY!}`ysB(!f(YkN0_SxZ(nm)^n-`w*e z*@d?~6>PY!+OTFOXEfiuPUSe37qg!Bb@*;Ho}ajnVZxrDm9N&9aL@ByzUX3iMchks zrkHyIz5nh?_Qu_7`smN}hR@}+asw+!<-#$|PQFT}DVD$UX>!&>N2rfST>RP*8-II%3U&~e3JYKeZUfr{s&*#-I zEIxg0dR$%V?bYk|{=9bE`d;Ps?C0zH?e2X(d9U`j{ogmI566F%v8-D2z2g4M{Bt$G z?|%QAUT;zV@X`AHvA_QI+y7rwYIuNmid{zR4VE_57Uila@xx}pjT1jSE-F3TCH69Q zbzA@W=*g23Z*Hip{yu^8=ec6#S4W&z&J<4n=4<8e9jvu`>!Dl!gHxGXRbN^0y_Ctb zP)=|8S@6`0uVe%NvL-gEj0KHYiT}nO-wxRacr!AIFoTB2IT%uBnMbS*S~_tmu!VXG zIOYcGcECUbP>g{g+8H<)oSIh>A5vM6S{w^%ouM00spjqQ1E};Ka2%N%rW;5%FdhRM z0cqodoA&4$JKDH|Gl5Dj0yPSvXnYP7f!96B`9Jv4b+~)!oVPaqP-p{ z0@t2cP=L+V?uW%HJ_6NcNuygn0~iqCnFF8^rMW=AW7D43AT4ABwEQ&C2pJU1cL2ix ztR3QWWJ9oqLhouZ>u!AphPY5x27VNiRCu8#6_-@zq=Kg_(Zc}!KuMVX2F5!!D4NlZ zmqa%QeV!Cyj&Bjn9HdDUbnWO9F9_|{Wl-&C(=g~Jpie{~Ovo*Vnt(Dbfvz8Y)EJ?k zp$e)WeGD1h2=x9p!ib*@SbO8>2B3Fz5e8grL^c3hw-?_` vY9UN{*bEI7l#Um=e)RSrLVry=QWisP9R_%_0&@^3R|zsC0<%Y6FNg;Kt3R%d literal 0 HcmV?d00001 diff --git a/topic-social-proof/server/src/main/scala/com/twitter/tsp/modules/RepresentationScorerStoreModule.scala b/topic-social-proof/server/src/main/scala/com/twitter/tsp/modules/RepresentationScorerStoreModule.scala deleted file mode 100644 index 329276d8d..000000000 --- a/topic-social-proof/server/src/main/scala/com/twitter/tsp/modules/RepresentationScorerStoreModule.scala +++ /dev/null @@ -1,47 +0,0 @@ -package com.twitter.tsp.modules - -import com.google.inject.Module -import com.google.inject.Provides -import com.google.inject.Singleton -import com.twitter.app.Flag -import com.twitter.bijection.scrooge.BinaryScalaCodec -import com.twitter.conversions.DurationOps._ -import com.twitter.finagle.memcached.{Client => MemClient} -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.hermit.store.common.ObservedMemcachedReadableStore -import com.twitter.inject.TwitterModule -import com.twitter.simclusters_v2.thriftscala.Score -import com.twitter.simclusters_v2.thriftscala.ScoreId -import com.twitter.storehaus.ReadableStore -import com.twitter.strato.client.{Client => StratoClient} -import com.twitter.tsp.stores.RepresentationScorerStore - -object RepresentationScorerStoreModule extends TwitterModule { - override def modules: Seq[Module] = Seq(UnifiedCacheClient) - - private val tspRepresentationScoringColumnPath: Flag[String] = flag[String]( - name = "tsp.representationScoringColumnPath", - default = "recommendations/representation_scorer/score", - help = "Strato column path for Representation Scorer Store" - ) - - @Provides - @Singleton - def providesRepresentationScorerStore( - statsReceiver: StatsReceiver, - stratoClient: StratoClient, - tspUnifiedCacheClient: MemClient - ): ReadableStore[ScoreId, Score] = { - val underlyingStore = - RepresentationScorerStore(stratoClient, tspRepresentationScoringColumnPath(), statsReceiver) - ObservedMemcachedReadableStore.fromCacheClient( - backingStore = underlyingStore, - cacheClient = tspUnifiedCacheClient, - ttl = 2.hours - )( - valueInjection = BinaryScalaCodec(Score), - statsReceiver = statsReceiver.scope("RepresentationScorerStore"), - keyToString = { k: ScoreId => s"rsx/$k" } - ) - } -} diff --git a/topic-social-proof/server/src/main/scala/com/twitter/tsp/modules/TSPClientIdModule.docx b/topic-social-proof/server/src/main/scala/com/twitter/tsp/modules/TSPClientIdModule.docx new file mode 100644 index 0000000000000000000000000000000000000000..def356157ea42f75572c7f8273851f606804703f GIT binary patch literal 36861 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%0DsbEG+_bbgy*t3X-(D<@Qi!)r@& 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

    7Y{e@ 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 literal 0 HcmV?d00001 diff --git a/topic-social-proof/server/src/main/scala/com/twitter/tsp/modules/TSPClientIdModule.scala b/topic-social-proof/server/src/main/scala/com/twitter/tsp/modules/TSPClientIdModule.scala deleted file mode 100644 index d22ef500f..000000000 --- a/topic-social-proof/server/src/main/scala/com/twitter/tsp/modules/TSPClientIdModule.scala +++ /dev/null @@ -1,14 +0,0 @@ -package com.twitter.tsp.modules - -import com.google.inject.Provides -import com.twitter.finagle.thrift.ClientId -import com.twitter.inject.TwitterModule -import javax.inject.Singleton - -object TSPClientIdModule extends TwitterModule { - private val clientIdFlag = flag("thrift.clientId", "topic-social-proof.prod", "Thrift client id") - - @Provides - @Singleton - def providesClientId: ClientId = ClientId(clientIdFlag()) -} diff --git a/topic-social-proof/server/src/main/scala/com/twitter/tsp/modules/TopicListingModule.docx b/topic-social-proof/server/src/main/scala/com/twitter/tsp/modules/TopicListingModule.docx new file mode 100644 index 0000000000000000000000000000000000000000..608a419b2e7e85294398b01635c98a0488bda545 GIT binary patch literal 36870 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Ξ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�Si^wh^*ni*(9- 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 literal 0 HcmV?d00001 diff --git a/topic-social-proof/server/src/main/scala/com/twitter/tsp/modules/TopicListingModule.scala b/topic-social-proof/server/src/main/scala/com/twitter/tsp/modules/TopicListingModule.scala deleted file mode 100644 index 3f2768278..000000000 --- a/topic-social-proof/server/src/main/scala/com/twitter/tsp/modules/TopicListingModule.scala +++ /dev/null @@ -1,17 +0,0 @@ -package com.twitter.tsp.modules - -import com.google.inject.Provides -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.inject.TwitterModule -import com.twitter.topiclisting.TopicListing -import com.twitter.topiclisting.TopicListingBuilder -import javax.inject.Singleton - -object TopicListingModule extends TwitterModule { - - @Provides - @Singleton - def providesTopicListing(statsReceiver: StatsReceiver): TopicListing = { - new TopicListingBuilder(statsReceiver.scope(namespace = "TopicListingBuilder")).build - } -} diff --git a/topic-social-proof/server/src/main/scala/com/twitter/tsp/modules/TopicSocialProofStoreModule.docx b/topic-social-proof/server/src/main/scala/com/twitter/tsp/modules/TopicSocialProofStoreModule.docx new file mode 100644 index 0000000000000000000000000000000000000000..c96a56686d164588507739ca19b3b4a02ed4ce8b GIT binary patch literal 37549 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 MemClient} -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.hermit.store.common.ObservedCachedReadableStore -import com.twitter.hermit.store.common.ObservedMemcachedReadableStore -import com.twitter.hermit.store.common.ObservedReadableStore -import com.twitter.inject.TwitterModule -import com.twitter.simclusters_v2.common.TweetId -import com.twitter.simclusters_v2.thriftscala.Score -import com.twitter.simclusters_v2.thriftscala.ScoreId -import com.twitter.storehaus.ReadableStore -import com.twitter.strato.client.{Client => StratoClient} -import com.twitter.tsp.stores.SemanticCoreAnnotationStore -import com.twitter.tsp.stores.TopicSocialProofStore -import com.twitter.tsp.stores.TopicSocialProofStore.TopicSocialProof -import com.twitter.tsp.utils.LZ4Injection -import com.twitter.tsp.utils.SeqObjectInjection - -object TopicSocialProofStoreModule extends TwitterModule { - override def modules: Seq[Module] = Seq(UnifiedCacheClient) - - @Provides - @Singleton - def providesTopicSocialProofStore( - representationScorerStore: ReadableStore[ScoreId, Score], - statsReceiver: StatsReceiver, - stratoClient: StratoClient, - tspUnifiedCacheClient: MemClient, - ): ReadableStore[TopicSocialProofStore.Query, Seq[TopicSocialProof]] = { - val semanticCoreAnnotationStore: ReadableStore[TweetId, Seq[ - SemanticCoreAnnotationStore.TopicAnnotation - ]] = ObservedReadableStore( - SemanticCoreAnnotationStore(SemanticCoreAnnotationStore.getStratoStore(stratoClient)) - )(statsReceiver.scope("SemanticCoreAnnotationStore")) - - val underlyingStore = TopicSocialProofStore( - representationScorerStore, - semanticCoreAnnotationStore - )(statsReceiver.scope("TopicSocialProofStore")) - - val memcachedStore = ObservedMemcachedReadableStore.fromCacheClient( - backingStore = underlyingStore, - cacheClient = tspUnifiedCacheClient, - ttl = 15.minutes, - asyncUpdate = true - )( - valueInjection = LZ4Injection.compose(SeqObjectInjection[TopicSocialProof]()), - statsReceiver = statsReceiver.scope("memCachedTopicSocialProofStore"), - keyToString = { k: TopicSocialProofStore.Query => s"tsps/${k.cacheableQuery}" } - ) - - val inMemoryCachedStore = - ObservedCachedReadableStore.from[TopicSocialProofStore.Query, Seq[TopicSocialProof]]( - memcachedStore, - ttl = 10.minutes, - maxKeys = 16777215, // ~ avg 160B, < 3000MB - cacheName = "topic_social_proof_cache", - windowSize = 10000L - )(statsReceiver.scope("InMemoryCachedTopicSocialProofStore")) - - inMemoryCachedStore - } -} diff --git a/topic-social-proof/server/src/main/scala/com/twitter/tsp/modules/TopicTweetCosineSimilarityAggregateStoreModule.docx b/topic-social-proof/server/src/main/scala/com/twitter/tsp/modules/TopicTweetCosineSimilarityAggregateStoreModule.docx new file mode 100644 index 0000000000000000000000000000000000000000..5c05bcdceb9843004c9fd7ab070947947759af5f GIT binary patch literal 37010 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,mRNHTZ{*Hbd`D<7= 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 xe= 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

    *irks_O%5r;Knc)7#0nvi^o_8pECJO+v&JiW z_0Vs6Xbu^QfX3e|2<6B%qj4wz8tAS7xT^qbg}qP~G MemClient} -import com.twitter.finagle.mtls.authentication.ServiceIdentifier -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.frigate.common.store.health.TweetHealthModelStore -import com.twitter.frigate.common.store.health.TweetHealthModelStore.TweetHealthModelStoreConfig -import com.twitter.frigate.common.store.health.UserHealthModelStore -import com.twitter.frigate.common.store.interests.UserId -import com.twitter.frigate.thriftscala.TweetHealthScores -import com.twitter.frigate.thriftscala.UserAgathaScores -import com.twitter.hermit.store.common.DeciderableReadableStore -import com.twitter.hermit.store.common.ObservedCachedReadableStore -import com.twitter.hermit.store.common.ObservedMemcachedReadableStore -import com.twitter.inject.TwitterModule -import com.twitter.simclusters_v2.common.TweetId -import com.twitter.stitch.tweetypie.TweetyPie -import com.twitter.storehaus.ReadableStore -import com.twitter.strato.client.{Client => StratoClient} -import com.twitter.tsp.common.DeciderKey -import com.twitter.tsp.common.TopicSocialProofDecider -import com.twitter.tsp.stores.TweetInfoStore -import com.twitter.tsp.stores.TweetyPieFieldsStore -import com.twitter.tweetypie.thriftscala.TweetService -import com.twitter.tsp.thriftscala.TspTweetInfo -import com.twitter.util.JavaTimer -import com.twitter.util.Timer - -object TweetInfoStoreModule extends TwitterModule { - override def modules: Seq[Module] = Seq(UnifiedCacheClient) - implicit val timer: Timer = new JavaTimer(true) - - @Provides - @Singleton - def providesTweetInfoStore( - decider: TopicSocialProofDecider, - serviceIdentifier: ServiceIdentifier, - statsReceiver: StatsReceiver, - stratoClient: StratoClient, - tspUnifiedCacheClient: MemClient, - tweetyPieService: TweetService.MethodPerEndpoint - ): ReadableStore[TweetId, TspTweetInfo] = { - val tweetHealthModelStore: ReadableStore[TweetId, TweetHealthScores] = { - val underlyingStore = TweetHealthModelStore.buildReadableStore( - stratoClient, - Some( - TweetHealthModelStoreConfig( - enablePBlock = true, - enableToxicity = true, - enablePSpammy = true, - enablePReported = true, - enableSpammyTweetContent = true, - enablePNegMultimodal = false)) - )(statsReceiver.scope("UnderlyingTweetHealthModelStore")) - - DeciderableReadableStore( - ObservedMemcachedReadableStore.fromCacheClient( - backingStore = underlyingStore, - cacheClient = tspUnifiedCacheClient, - ttl = 2.hours - )( - valueInjection = BinaryScalaCodec(TweetHealthScores), - statsReceiver = statsReceiver.scope("TweetHealthModelStore"), - keyToString = { k: TweetId => s"tHMS/$k" } - ), - decider.deciderGateBuilder.idGate(DeciderKey.enableHealthSignalsScoreDeciderKey), - statsReceiver.scope("TweetHealthModelStore") - ) - } - - val userHealthModelStore: ReadableStore[UserId, UserAgathaScores] = { - val underlyingStore = - UserHealthModelStore.buildReadableStore(stratoClient)( - statsReceiver.scope("UnderlyingUserHealthModelStore")) - - DeciderableReadableStore( - ObservedMemcachedReadableStore.fromCacheClient( - backingStore = underlyingStore, - cacheClient = tspUnifiedCacheClient, - ttl = 18.hours - )( - valueInjection = BinaryScalaCodec(UserAgathaScores), - statsReceiver = statsReceiver.scope("UserHealthModelStore"), - keyToString = { k: UserId => s"uHMS/$k" } - ), - decider.deciderGateBuilder.idGate(DeciderKey.enableUserAgathaScoreDeciderKey), - statsReceiver.scope("UserHealthModelStore") - ) - } - - val tweetInfoStore: ReadableStore[TweetId, TspTweetInfo] = { - val underlyingStore = TweetInfoStore( - TweetyPieFieldsStore.getStoreFromTweetyPie(TweetyPie(tweetyPieService, statsReceiver)), - tweetHealthModelStore: ReadableStore[TweetId, TweetHealthScores], - userHealthModelStore: ReadableStore[UserId, UserAgathaScores], - timer: Timer - )(statsReceiver.scope("tweetInfoStore")) - - val memcachedStore = ObservedMemcachedReadableStore.fromCacheClient( - backingStore = underlyingStore, - cacheClient = tspUnifiedCacheClient, - ttl = 15.minutes, - // Hydrating tweetInfo is now a required step for all candidates, - // hence we needed to tune these thresholds. - asyncUpdate = serviceIdentifier.environment == "prod" - )( - valueInjection = BinaryScalaCodec(TspTweetInfo), - statsReceiver = statsReceiver.scope("memCachedTweetInfoStore"), - keyToString = { k: TweetId => s"tIS/$k" } - ) - - val inMemoryStore = ObservedCachedReadableStore.from( - memcachedStore, - ttl = 15.minutes, - maxKeys = 8388607, // Check TweetInfo definition. size~92b. Around 736 MB - windowSize = 10000L, - cacheName = "tweet_info_cache", - maxMultiGetSize = 20 - )(statsReceiver.scope("inMemoryCachedTweetInfoStore")) - - inMemoryStore - } - tweetInfoStore - } -} diff --git a/topic-social-proof/server/src/main/scala/com/twitter/tsp/modules/TweetyPieClientModule.docx b/topic-social-proof/server/src/main/scala/com/twitter/tsp/modules/TweetyPieClientModule.docx new file mode 100644 index 0000000000000000000000000000000000000000..950e474c80d7e61d0a36d7893ac8f9ed394d492c GIT binary patch literal 37528 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 literal 0 HcmV?d00001 diff --git a/topic-social-proof/server/src/main/scala/com/twitter/tsp/modules/TweetyPieClientModule.scala b/topic-social-proof/server/src/main/scala/com/twitter/tsp/modules/TweetyPieClientModule.scala deleted file mode 100644 index 98d515dda..000000000 --- a/topic-social-proof/server/src/main/scala/com/twitter/tsp/modules/TweetyPieClientModule.scala +++ /dev/null @@ -1,63 +0,0 @@ -package com.twitter.tsp -package modules - -import com.google.inject.Module -import com.google.inject.Provides -import com.twitter.conversions.DurationOps.richDurationFromInt -import com.twitter.finagle.ThriftMux -import com.twitter.finagle.mtls.authentication.ServiceIdentifier -import com.twitter.finagle.mtls.client.MtlsStackClient.MtlsThriftMuxClientSyntax -import com.twitter.finagle.mux.ClientDiscardedRequestException -import com.twitter.finagle.service.ReqRep -import com.twitter.finagle.service.ResponseClass -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.finagle.thrift.ClientId -import com.twitter.inject.Injector -import com.twitter.inject.thrift.modules.ThriftMethodBuilderClientModule -import com.twitter.tweetypie.thriftscala.TweetService -import com.twitter.util.Duration -import com.twitter.util.Throw -import com.twitter.stitch.tweetypie.{TweetyPie => STweetyPie} -import com.twitter.finatra.mtls.thriftmux.modules.MtlsClient -import javax.inject.Singleton - -object TweetyPieClientModule - extends ThriftMethodBuilderClientModule[ - TweetService.ServicePerEndpoint, - TweetService.MethodPerEndpoint - ] - with MtlsClient { - override val label = "tweetypie" - override val dest = "/s/tweetypie/tweetypie" - override val requestTimeout: Duration = 450.milliseconds - - override val modules: Seq[Module] = Seq(TSPClientIdModule) - - // We bump the success rate from the default of 0.8 to 0.9 since we're dropping the - // consecutive failures part of the default policy. - override def configureThriftMuxClient( - injector: Injector, - client: ThriftMux.Client - ): ThriftMux.Client = - super - .configureThriftMuxClient(injector, client) - .withMutualTls(injector.instance[ServiceIdentifier]) - .withStatsReceiver(injector.instance[StatsReceiver].scope("clnt")) - .withClientId(injector.instance[ClientId]) - .withResponseClassifier { - case ReqRep(_, Throw(_: ClientDiscardedRequestException)) => ResponseClass.Ignorable - } - .withSessionQualifier - .successRateFailureAccrual(successRate = 0.9, window = 30.seconds) - .withResponseClassifier { - case ReqRep(_, Throw(_: ClientDiscardedRequestException)) => ResponseClass.Ignorable - } - - @Provides - @Singleton - def providesTweetyPie( - tweetyPieService: TweetService.MethodPerEndpoint - ): STweetyPie = { - STweetyPie(tweetyPieService) - } -} diff --git a/topic-social-proof/server/src/main/scala/com/twitter/tsp/modules/UnifiedCacheClient.docx b/topic-social-proof/server/src/main/scala/com/twitter/tsp/modules/UnifiedCacheClient.docx new file mode 100644 index 0000000000000000000000000000000000000000..e1a73caeab977796c2fffd75acc5b3150bebe6c5 GIT binary patch literal 37128 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 V@MZ<(AW*InWJm;NkBL1X9snMPV}1Yt literal 0 HcmV?d00001 diff --git a/topic-social-proof/server/src/main/scala/com/twitter/tsp/modules/UnifiedCacheClient.scala b/topic-social-proof/server/src/main/scala/com/twitter/tsp/modules/UnifiedCacheClient.scala deleted file mode 100644 index 8fe65fc73..000000000 --- a/topic-social-proof/server/src/main/scala/com/twitter/tsp/modules/UnifiedCacheClient.scala +++ /dev/null @@ -1,33 +0,0 @@ -package com.twitter.tsp.modules - -import com.google.inject.Provides -import com.google.inject.Singleton -import com.twitter.app.Flag -import com.twitter.finagle.memcached.Client -import com.twitter.finagle.mtls.authentication.ServiceIdentifier -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.inject.TwitterModule -import com.twitter.storehaus_internal.memcache.MemcacheStore -import com.twitter.storehaus_internal.util.ClientName -import com.twitter.storehaus_internal.util.ZkEndPoint - -object UnifiedCacheClient extends TwitterModule { - val tspUnifiedCacheDest: Flag[String] = flag[String]( - name = "tsp.unifiedCacheDest", - default = "/srv#/prod/local/cache/topic_social_proof_unified", - help = "Wily path to topic social proof unified cache" - ) - - @Provides - @Singleton - def provideUnifiedCacheClient( - serviceIdentifier: ServiceIdentifier, - statsReceiver: StatsReceiver, - ): Client = - MemcacheStore.memcachedClient( - name = ClientName("topic-social-proof-unified-memcache"), - dest = ZkEndPoint(tspUnifiedCacheDest()), - statsReceiver = statsReceiver.scope("cache_client"), - serviceIdentifier = serviceIdentifier - ) -} diff --git a/topic-social-proof/server/src/main/scala/com/twitter/tsp/modules/UttClientModule.docx b/topic-social-proof/server/src/main/scala/com/twitter/tsp/modules/UttClientModule.docx new file mode 100644 index 0000000000000000000000000000000000000000..96f4041479264ad60ea42e9fda733944bddaae31 GIT binary patch literal 37167 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%0D9~HLi`~wZ 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 Ik!}zV0PIuwq5uE@ literal 0 HcmV?d00001 diff --git a/topic-social-proof/server/src/main/scala/com/twitter/tsp/modules/UttLocalizationModule.scala b/topic-social-proof/server/src/main/scala/com/twitter/tsp/modules/UttLocalizationModule.scala deleted file mode 100644 index 7d8844b98..000000000 --- a/topic-social-proof/server/src/main/scala/com/twitter/tsp/modules/UttLocalizationModule.scala +++ /dev/null @@ -1,27 +0,0 @@ -package com.twitter.tsp.modules - -import com.google.inject.Provides -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.inject.TwitterModule -import com.twitter.topiclisting.TopicListing -import com.twitter.topiclisting.clients.utt.UttClient -import com.twitter.topiclisting.utt.UttLocalization -import com.twitter.topiclisting.utt.UttLocalizationImpl -import javax.inject.Singleton - -object UttLocalizationModule extends TwitterModule { - - @Provides - @Singleton - def providesUttLocalization( - topicListing: TopicListing, - uttClient: UttClient, - statsReceiver: StatsReceiver - ): UttLocalization = { - new UttLocalizationImpl( - topicListing, - uttClient, - statsReceiver - ) - } -} diff --git a/topic-social-proof/server/src/main/scala/com/twitter/tsp/service/BUILD b/topic-social-proof/server/src/main/scala/com/twitter/tsp/service/BUILD deleted file mode 100644 index 372962922..000000000 --- a/topic-social-proof/server/src/main/scala/com/twitter/tsp/service/BUILD +++ /dev/null @@ -1,23 +0,0 @@ -scala_library( - compiler_option_sets = ["fatal_warnings"], - tags = [ - "bazel-compatible", - ], - dependencies = [ - "3rdparty/jvm/javax/inject:javax.inject", - "abdecider/src/main/scala", - "content-recommender/thrift/src/main/thrift:thrift-scala", - "hermit/hermit-core/src/main/scala/com/twitter/hermit/store/common", - "hermit/hermit-core/src/main/scala/com/twitter/hermit/store/gizmoduck", - "src/scala/com/twitter/topic_recos/stores", - "src/thrift/com/twitter/gizmoduck:thrift-scala", - "src/thrift/com/twitter/gizmoduck:user-thrift-scala", - "src/thrift/com/twitter/simclusters_v2:simclusters_v2-thrift-scala", - "stitch/stitch-storehaus", - "topic-social-proof/server/src/main/scala/com/twitter/tsp/common", - "topic-social-proof/server/src/main/scala/com/twitter/tsp/handlers", - "topic-social-proof/server/src/main/scala/com/twitter/tsp/modules", - "topic-social-proof/server/src/main/scala/com/twitter/tsp/stores", - "topic-social-proof/server/src/main/thrift:thrift-scala", - ], -) diff --git a/topic-social-proof/server/src/main/scala/com/twitter/tsp/service/BUILD.docx b/topic-social-proof/server/src/main/scala/com/twitter/tsp/service/BUILD.docx new file mode 100644 index 0000000000000000000000000000000000000000..a4e3037e5025187a71cac205d74aa35a6045c9ce GIT binary patch literal 36960 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%0DlXAI%1S*4~cfjaHkt+x*}GWt{~9I&-l;2%!+ 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 StratoClient} -import com.twitter.timelines.configapi -import com.twitter.timelines.configapi.CompositeConfig -import com.twitter.tsp.common.FeatureSwitchConfig -import com.twitter.tsp.common.FeatureSwitchesBuilder -import com.twitter.tsp.common.LoadShedder -import com.twitter.tsp.common.ParamsBuilder -import com.twitter.tsp.common.RecTargetFactory -import com.twitter.tsp.common.TopicSocialProofDecider -import com.twitter.tsp.handlers.TopicSocialProofHandler -import com.twitter.tsp.stores.LocalizedUttRecommendableTopicsStore -import com.twitter.tsp.stores.LocalizedUttTopicNameRequest -import com.twitter.tsp.stores.TopicResponses -import com.twitter.tsp.stores.TopicSocialProofStore -import com.twitter.tsp.stores.TopicSocialProofStore.TopicSocialProof -import com.twitter.tsp.stores.TopicStore -import com.twitter.tsp.stores.UttTopicFilterStore -import com.twitter.tsp.thriftscala.TopicSocialProofRequest -import com.twitter.tsp.thriftscala.TopicSocialProofResponse -import com.twitter.util.JavaTimer -import com.twitter.util.Timer -import javax.inject.Inject -import javax.inject.Singleton -import com.twitter.topiclisting.TopicListing -import com.twitter.topiclisting.utt.UttLocalization - -@Singleton -class TopicSocialProofService @Inject() ( - topicSocialProofStore: ReadableStore[TopicSocialProofStore.Query, Seq[TopicSocialProof]], - tweetInfoStore: ReadableStore[TweetId, TspTweetInfo], - serviceIdentifier: ServiceIdentifier, - stratoClient: StratoClient, - gizmoduck: UserService.MethodPerEndpoint, - topicListing: TopicListing, - uttLocalization: UttLocalization, - decider: TopicSocialProofDecider, - loadShedder: LoadShedder, - stats: StatsReceiver) { - - import TopicSocialProofService._ - - private val statsReceiver = stats.scope("topic-social-proof-management") - - private val isProd: Boolean = serviceIdentifier.environment == "prod" - - private val optOutStratoStorePath: String = - if (isProd) "interests/optOutInterests" else "interests/staging/optOutInterests" - - private val notInterestedInStorePath: String = - if (isProd) "interests/notInterestedTopicsGetter" - else "interests/staging/notInterestedTopicsGetter" - - private val userOptOutTopicsStore: ReadableStore[UserId, TopicResponses] = - TopicStore.userOptOutTopicStore(stratoClient, optOutStratoStorePath)( - statsReceiver.scope("ints_interests_opt_out_store")) - private val explicitFollowingTopicsStore: ReadableStore[UserId, TopicResponses] = - TopicStore.explicitFollowingTopicStore(stratoClient)( - statsReceiver.scope("ints_explicit_following_interests_store")) - private val userNotInterestedInTopicsStore: ReadableStore[UserId, TopicResponses] = - TopicStore.notInterestedInTopicsStore(stratoClient, notInterestedInStorePath)( - statsReceiver.scope("ints_not_interested_in_store")) - - private lazy val localizedUttRecommendableTopicsStore: ReadableStore[ - LocalizedUttTopicNameRequest, - Set[ - SemanticCoreEntityId - ] - ] = new LocalizedUttRecommendableTopicsStore(uttLocalization) - - implicit val timer: Timer = new JavaTimer(true) - - private lazy val uttTopicFilterStore = new UttTopicFilterStore( - topicListing = topicListing, - userOptOutTopicsStore = userOptOutTopicsStore, - explicitFollowingTopicsStore = explicitFollowingTopicsStore, - notInterestedTopicsStore = userNotInterestedInTopicsStore, - localizedUttRecommendableTopicsStore = localizedUttRecommendableTopicsStore, - timer = timer, - stats = statsReceiver.scope("UttTopicFilterStore") - ) - - private lazy val scribeLogger: Option[Logger] = Some(Logger.get("client_event")) - - private lazy val abDecider: LoggingABDecider = - ABDeciderFactory( - abDeciderYmlPath = configRepoDirectory + "/abdecider/abdecider.yml", - scribeLogger = scribeLogger, - decider = None, - environment = Some("production"), - ).buildWithLogging() - - private val builder: FeatureSwitchesBuilder = FeatureSwitchesBuilder( - statsReceiver = statsReceiver.scope("featureswitches-v2"), - abDecider = abDecider, - featuresDirectory = "features/topic-social-proof/main", - configRepoDirectory = configRepoDirectory, - addServiceDetailsFromAurora = !serviceIdentifier.isLocal, - fastRefresh = !isProd - ) - - private lazy val overridesConfig: configapi.Config = { - new CompositeConfig( - Seq( - FeatureSwitchConfig.config - ) - ) - } - - private val featureContextBuilder: FeatureContextBuilder = FeatureContextBuilder(builder.build()) - - private val paramsBuilder: ParamsBuilder = ParamsBuilder( - featureContextBuilder, - abDecider, - overridesConfig, - statsReceiver.scope("params") - ) - - private val userStore: ReadableStore[UserId, User] = { - val queryFields: Set[QueryFields] = Set( - QueryFields.Profile, - QueryFields.Account, - QueryFields.Roles, - QueryFields.Discoverability, - QueryFields.Safety, - QueryFields.Takedowns - ) - val context: LookupContext = LookupContext(safetyLevel = Some(SafetyLevel.Recommendations)) - - GizmoduckUserStore( - client = gizmoduck, - queryFields = queryFields, - context = context, - statsReceiver = statsReceiver.scope("gizmoduck") - ) - } - - private val recTargetFactory: RecTargetFactory = RecTargetFactory( - abDecider, - userStore, - paramsBuilder, - statsReceiver - ) - - private val topicSocialProofHandler = - new TopicSocialProofHandler( - topicSocialProofStore, - tweetInfoStore, - uttTopicFilterStore, - recTargetFactory, - decider, - statsReceiver.scope("TopicSocialProofHandler"), - loadShedder, - timer) - - val topicSocialProofHandlerStoreStitch: TopicSocialProofRequest => com.twitter.stitch.Stitch[ - TopicSocialProofResponse - ] = StitchOfReadableStore(topicSocialProofHandler.toReadableStore) -} - -object TopicSocialProofService { - private val configRepoDirectory = "/usr/local/config" -} diff --git a/topic-social-proof/server/src/main/scala/com/twitter/tsp/stores/BUILD b/topic-social-proof/server/src/main/scala/com/twitter/tsp/stores/BUILD deleted file mode 100644 index a933b3782..000000000 --- a/topic-social-proof/server/src/main/scala/com/twitter/tsp/stores/BUILD +++ /dev/null @@ -1,32 +0,0 @@ -scala_library( - compiler_option_sets = ["fatal_warnings"], - tags = [ - "bazel-compatible", - ], - dependencies = [ - "3rdparty/jvm/com/twitter/storehaus:core", - "content-recommender/thrift/src/main/thrift:thrift-scala", - "escherbird/src/thrift/com/twitter/escherbird/topicannotation:topicannotation-thrift-scala", - "frigate/frigate-common:util", - "frigate/frigate-common/src/main/scala/com/twitter/frigate/common/store/health", - "frigate/frigate-common/src/main/scala/com/twitter/frigate/common/store/interests", - "frigate/frigate-common/src/main/scala/com/twitter/frigate/common/store/strato", - "hermit/hermit-core/src/main/scala/com/twitter/hermit/store/common", - "mediaservices/commons/src/main/thrift:thrift-scala", - "src/scala/com/twitter/simclusters_v2/common", - "src/scala/com/twitter/simclusters_v2/score", - "src/scala/com/twitter/topic_recos/common", - "src/scala/com/twitter/topic_recos/stores", - "src/thrift/com/twitter/frigate:frigate-common-thrift-scala", - "src/thrift/com/twitter/simclusters_v2:simclusters_v2-thrift-scala", - "src/thrift/com/twitter/spam/rtf:safety-level-scala", - "src/thrift/com/twitter/tweetypie:service-scala", - "src/thrift/com/twitter/tweetypie:tweet-scala", - "stitch/stitch-storehaus", - "stitch/stitch-tweetypie/src/main/scala", - "strato/src/main/scala/com/twitter/strato/client", - "topic-social-proof/server/src/main/scala/com/twitter/tsp/utils", - "topic-social-proof/server/src/main/thrift:thrift-scala", - "topiclisting/topiclisting-core/src/main/scala/com/twitter/topiclisting", - ], -) diff --git a/topic-social-proof/server/src/main/scala/com/twitter/tsp/stores/BUILD.docx b/topic-social-proof/server/src/main/scala/com/twitter/tsp/stores/BUILD.docx new file mode 100644 index 0000000000000000000000000000000000000000..25c32c8fe0ccaa69fbc03ebdae667b8316c0019e GIT binary patch literal 37089 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

    _$Um6 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 CF2z*< literal 0 HcmV?d00001 diff --git a/topic-social-proof/server/src/main/scala/com/twitter/tsp/columns/TopicSocialProofBatchColumn.docx b/topic-social-proof/server/src/main/scala/com/twitter/tsp/columns/TopicSocialProofBatchColumn.docx new file mode 100644 index 0000000000000000000000000000000000000000..1832edf4b485cf7b7d232176c596ded2ee25068e GIT binary patch literal 37722 zcmagFWmp{9wm*!!dvJGmcL)S`m!Lr#2@Z`12=4CgZo%CxxLc4waQA;_X3jY?=id9i zUy7&qUh5}oRoC8CT`0>zLScb{fx&^9r}1c4susp3f`fsL!hnHcf=2Zu0QR5F?LQl- zdpMXo8!)@u*)}FBD6NX3eK~uGzuMBoj=2q+fL!2u6i^~ zv&-;lZ&ca!W!%?|{6WG`D(hv5nOZZ`CLQ6MKW|Ey@wtZd7vqMwe&<@(35I$nOAW`m z)t*8W_d!Ge+V>xJ-OO%dS{z3(b)^y4YPuU3*1d6ceVA9yzqbt3G?)vWT=nA7Lg&&qe4e#b=73{_} z{Dx7#aA}Ctsff(;B42_Vj(@BV2Po~Hc-n%XFeczu}6E8?xLa1Xbmn2 zzTKb9U417=$2Kkeh5|*@ocfO2LX%XOVFPnOkFNf7MyyI)(um$p2BjpZG#>pL@iVQK zix1N*00tl}-^BH`xU%(!t=rdok*3cw#(ttlF%IZzsfuQ7xV!}@vW}S760!$VQDrf$ z893h_+mt`)m0vI)21+QY8M;$m!%Vbe^z&La2o}$@?7rV;qNJG6@|?7A*$7neb(kXl z#af$urrQ|3o#r#30-=KnWCk!*b^!^ zeXM9wcivKS3YuY8XmC=p^x#KdKgeMDFSXusaw*u3WpPhz?iSeT<}kPtZwd@uIS8-w zG&Vz;2FC@Hgv6ftn|(#p!G2ve!C8CClA`CUObqHh>wcWQq_*TY9qkTR!AC-<$%2$k zXETsr2<4~fujAsJ`!Y$E*`ivMdnm4kuCV+?Q#6kD8wE1y9v0nCe}Cezc#61s^wQ=c zVz3PKl3ehxr2dcclZH^UOXcu^PTRInuJ~2DN;`)edTjWsO~|XCYrZ|2Ub6WDiFA>J ze!U+sR^87qr>%iuCp>X|fJQ$3bf`pRvE_ddn zq(U?x7j8|@bpy~}SUWT~x3k9NOywu?*{p@52J@w9jF%?)BQRq<7iGvz$T9>zGvV&~ z!ip_DK^Ci6ECWjRo6L8{&WXIkdf&JAukV%!8SZ&5pzw|?Q4Hy3-6US0doKz8*_Z3p zRor7xUu>bkz|j8QmyZq(f3!t?%zl*>t^J7s%HZ=?D_AiVytse`u^EYV{F=Co=DAVw z53x|KY&$@ohfr+3FDy4<0`&q<4WmzsVivFsik~#F#~$*Al^xd+8mqq!?XON8kUK+_ zL6>4{4xk%28cmH>&ciUle@@j>t{U|suQwULAcl2tR$`d?yn-US(co3ors&{3{cJ8O z^~<&PzW+Q?xp8SDMTJ%AYdPdg^`~-=k|`ms_q#VoI!TGhDAEugUpSz~Jj$(TmqVp- z6-Wu#j62T9KS5a|dVRjBGy932V`-;{D>zFbdQ8mda5;-~-;eME*R)_u6gYh&?NFY1 zO1lb%`?cY?o>Z-_R4eo{@+789TWlzYj|=ief;M90J4K@PM?lXtdbYOznqy4MZGEXg z42s+>3e=;3_|h|uB>jp6tS(VZd{Zi>Z|x}H>K6|$Qhenlq&E21%O6ksnKhURqE>{< z-_R+2CTE1DYR78IKkP79kO@@{(oiN5J(-XYFqqPvY8@O%Eb1C4>P2E_bK#@AQf&tV zTfz4LG|&k)LU_vWU3GUz?mpqapfO+Au^ntZxCkL0xxw%PTk7G7lTYAnUq&Lvi2Yk^ zHVo6F(XlW08s~Qn#YMH#QYG zvLhW0lfj#UAvjY)Y09!AwPRIsVCE&V9WUK*=X>58U{r*nLmWkhfY%@5kcFuXV`D#c zQq{*VsXD6tRM)zS&l+ zzC)UPXEc1D6dRM!H=teuLBOl=Zd@6+a1A0AgTQst$zoqq)0fPG|5M`Ep~Q$vXjB0j z7>J98;p6lHyF1Uk`KqkkQ;F|N9tNdrGspC4kRN+)f<_8Afa>`A8FS+H2Ir$DmQG#( zq5LjQcbK-q?x$&`=K}J(aX@m*dRvH8Md(1plX6Rh4u_6Q=W=wZg+}YL=Qp2xNxJ0k zOP=3R9tOm5paRZfHI_fQSa}Mu@4_dYgJDw&kGCk_3&Kk0IGPF7aRnWIW{zuJmur4U z*Y+ei&6u_0Jf! zc6OYgZNfSF@1~Ef1^fv@XX3sGYt|DPE)3s_tP!jp34YX)0GvPuQX|5Yb4BI)E)R1! z&9#FtZ(@2*Ftc`8(08+G*=BNAUn&s3{Lr@fJg@TF9dmqVU>6L$gIXn;1A<{Mec)J7 zo)r5?i`|&@K~ExR{H6-uSEBOUH2g3$8Qg6G4L%cu>5s&jPAQccIR3_(hHeTPh75fv z&3V7WuIwLTJhj+rWms~w0n0MqE=i?3Qf`}zSV=-^6 z{E*`gVQ*QS4u+~*;2noQ_sqO+wV5me2cR=oS6HQ8y%6>V0=brUWeR9&s;I9mJ>+}7 zGDudaFvTZca(zgoB_)=~1bPP6F3w%M)ie$o7TQeVrp;bEKXLEKO~Ix1Frzb<;fP3& zxr#VgXhQ@mB6zG1>4cy|+p(;+Dju$FT^toPt~rKYP+22V)DZ)NewrB{<(qNQ=z0uh8M(DMO!()vF&z9U#Y= z7lch#mbC8YmJBBL(&V-u(0Y&s7q~)>I0a81^u;qg7%<9gekJC@{PL@Zt`R~(x?d81 zVMnrpFN~kaGYPYMHXy`wD5PmVZ>E3UC`%+H_}a>pdZ=Abb>PUqb0Qr$Y)irL#lIG z()#Bjh*tZD@XSA)o5j@R%pD77Q|Qq?NR7ld^#ML08=+5-#c?$c2DGwVC@@u{XHYA5 zR;@m)`C~XC+l->z@eehLl-l*%{s=oMZ&7IY-Zr3-#n&|1l_Wp`m6&(^40l?>2TppicG<>KJ{fBg7~`=_DYh)yP?)oe5SVf(ELU!rs_)Px4itD zmV_#?5DMr!`iZz*vGPTMrL(stuj#T7=~0y1$Bx%ipb+mDS^Lj!)m`guzD04%_eL%J z1Px7YuD71IlkkLZk4RB%uV0#%cKj@iy#Y_9n1gj;I$01J6kqo|6lW95F~4FW*k+yb zUX-F)>~S(g3RG@|4s%6leyP7}*_MpqK|`sq9sD^g>=n3R-=#%2Y|}^d=o{ja>}x{w ziu%t*$=;6ugB`S683XNB2tm7*KNh7w_u7A7n*Q8(Cx|Hpvf_O?dqwCCj>jsp4}bS7 zkGhRsy1LLiSb8PyR$^~cZ{3VhV#j~?j@u`j#%^}vR&8NJ0FR;JLjZ3C1S-~Su(COZ zpe1VZad*9phL}wyDLj8o4|m6spt!=!Np0e%ih~ac3eO0&tyKMW2$YSv_M)xWRgndU z(rR&E>UeY^bR=iuQa*-cXMOf;BfpraYPsyFu-Ot>Pjl|sQmoeu=tYOBU79yGpx~l1 z-Z?v%zPUFe^nHOfM6hU>CzL4K^M6**kHj#7(!9%n?BlpMwi?~FSTF^XbnB8xmS8We z$xz#dye#Gj7vrU>OH&K734S+W!)tv#lhE&}2>;m&7D8lKIHH(vhmT0xMrBOv{jpH* zc?yO4zVVtI@5=Q|H5A`N;CGgP);h8rMeba|FDY*0vnpN2a9th{OHw@ReQ#vz%l!4dK&jr^ofx#6`3fB zhN_0 zG@|b9+NxgH>uG*<%+u|w$eV*Upb!17ZTD*b#{Jz%`S2&ByO83=K47CTai1k{IcvyE z$KG}E;}^w`Imr`8H6o`XnXfp)@=otBl(&aM0`HAjR-Ztk+%|nTPEf~&P9E2Nc&A@P z#3zJKv^GGuBz9i>(!Rt%VMUF-S>ybs8*?#n@@9oZ*Q=}+g0 zH<#{dL_A~H;Xo%Q&lf&VimUkYT{;(!PLGu}5lQiA-(Z&4&b7|A=8Cbz0XAQ|wl$wl zeZ8~Jmm7&k3)N)eKF7^<7Sv5(iWG^rOx6k6TYvRKmq}0c*gSPo{qtwt5FmOQ75?Wo z_>S`p{I+BfphviRo43FTCRue@%ykVabYaLT2LDt@J!(jGmB>qtk&lju4{tC_dt0=5 zFs|>*>p`D|FWk%Z`pf4u{pT9sa{H#BP^H`1X-G29X%>&t@tcp~8BnMy+kWv4v%fPb zqGhG)MDbuX8nAQ!V=OFE07^P8SD_XFKyH@D{<8x_s#{p!9e&jBJ|>BYcXTPPv* zt%QIbzt5WMPfE>i{u^+0SW2uV`)l-tajZj35>Z%Fe{{8A;#y!}nz&zeo2DlAhSYm?{X#e+RZ z=L(#HlE-ND^VX-uk5}q+*8QoL_knNi22~4FPbagF4tI_(L$bG5A}43U87k6^2J>_0 zefw8eKTrFdGdLN7TL}xbBH#M<-OGqGu4pv^5tpa;?x}pwNfwpTo0G$>p{7G^7{1n& zN%4xJ$AU`|e=K0{?0#wMzMvooUwhLw_x69vE{OnWMYCjDwZ}An4PMmdcg1}=c|HGW z$B;oh_#NFFo9q_uyO=kT5v^=QAq8)|@R>!q#_*ctvpQMy2N@Na5)9P@j`ASJJuC(? zIi|%AaB+&?x+;7(30dwnN85+67Ao4=((}PpY%j8#UrO;)biXpbKCN4I2vnW*7c76R zVdL18UDCGOiAO8ohWr4hnvOsP)pH=}NOlyTAH>+GqbeS=@|lhd&T<2*+X(Ke$PX*X zLroN6rJarx(Qcz6GhYTym4X2yz#*>Lk2K?lfk1RDT0vHOdGHn$09=Q6L{Ah=@e&6u zD83zfm`VH+Cng}K9l9Xr_v9zgB+kDkp|&Xj;9`HpS2f~OF+;ICY?Cp=_ zZQn<3iWoHCNRmX^?=UZmChA9>amC`lJvksrFnLTFqcN_P5@l=-tdZWH0$rCf+>i%W zJDGilvSsX!o#GB!fAxO_RPXp#MWdD4`p^pYUOhN59yz{SIo}jmn6=|+V@W#Ir=R^YbhS5&AN_aqV=_BJ$6v#mR`NjDRFJ%=)`@ct3N8~E+^spB{gr? zXE(J^lPDuNp~qzn?vPMJ^cpzZrA7jxOoapSyaapJ+T6!uuvCN$`@V+0Dm zxj6#!G=gYY+^pL2jq%$oo@elEzPu6#j<4>)DZb|bDyPg)Co_~rj$+R1FwZp)+)yIU z#xsH|nV3~RW-u&U8tmyyP-Kk3Q}?wFIajqav?6Iaq3e(Ae~XL!`JpMd%FLxN5i7HQ zn?Ee@CuNjh{F+R9ld$RW5l8x!@9KFD`eLAT3Nh!=7g)YWcjZAj#vzo+O=-BTTt~kx z9_B@WzI>Ns+cpn{&vOywBIlWuX%%iHTgRt0WEQ8$b8<_xm;H`ItfQTM2@)Qa_xXHZ z5EWXOIeR|m%JS%cs)$CUbEpCjbVf$=wi>-Dq$^@kXxo;<^znvgBl^gvTU0Rm;2ENW zInhR1jEO$v^Tp(}uj@>0&ZqcC*6yib;ilaB0HCyNTT|fvr(-(SEJ^d`8Ts35+FaX| z+vD}nht}bsC zzY8wiXAQ}R2GR#)z!P>24#Q0xOw$KsTe5dcM``{9w@k!Ff*Zu>#vzpjq5 z+Jz>y*lJt^Ro~SRqkuV29Y6n!>4Cn`%P*Q5Q7!BuC-ip9D#!!qm^Nl7Qs<41-3Rkc z5{HgE#a0*unQtbon(fcS#9OXe^P~==K|+XyLXhpe*vR@he9& zu01>5tN;A+l@!cnG(a9)2X+RJfK$z}HJ9dP6VlblDjr;94xH zrpLyrG#Bv8+34SkE^$X^8X!?udZ|Md+7x+t*DNt90=VvNRdJfnFEY4gCmg*TUA8?` zXupi>o*re?SBw5Nj_Ht?hrgoLsC5`xj8>8wemrL%t=^#;c>}d4_q|5JM{01SY>@w0 zWSNF>h9HUKTn>uML&C9i`J}WAH@%iP*IPp;(%(1p*q)<5M#UMAe37tj${s{fzKIYUk)1}tCW80VcvJ;bjQbEbR?{!7cCGeJ*7QfDT{cEpS|9+X3S3; zj1(#8#TMT`Wtb^>Cb=v{3EoK>Wk^2=YwM_|F6`W^5nxr^5}0su;3E*hMpxbLORlK$L@f$PZ>4L z8w6ka#mrwN!U3R^)A?ez=4^PN#`h4 z#7EVyqLjQwn6AOuN_4oZVEFMu1H>*|aJy2WJIcDP=uGXBRvtLE^rT8E zx-u1J8MO*!y{!)Ki_0=ZeW>IWuiGg>)U5EeNh&y5Q(bM9X>x8eZY$zhmeqCAw;o}O zqZ%S=rhJv=k>ybQFu^OvzFUB3VGFvaEf6X$yv-nAc3y$@vToT9SBSwG@woFSuZlZX zj_cRf<}_JRayi(lte|Mw-9N(9!9$4dCNo7HMyrGU(PVq}d5NQmg(`WEJff$H5sXTK z0r63LF{!y0WP z#&L{SC23b;5%g!K`a;;A5)3r@rA%OHt+SQBoI~060Ok33=v|VY6z)*?aeRJgV&7 z(c>{8|KK+r2i@u1Y(E=(UVE1hVTYpn>8fdh^JhBvV+HM`x$on5N672#3Fe0W$BvaD z-$0+|+#F#1Y62D{ov=AAUu{q=7L`jL24}|Fhvx`P#gMTy=ALRE7F>>1Et0C;f_x4O z`mSGHlgVwxsOeo*kM9h3Ie_nZ1>cD9(1o{oZ3dcKb_h19V7S;=?Ta2C9A2i2C$`-Y zBE6u@*XLlMa_n@WHs-M;Ns(1P*Ax(mc z%Oq5QJi>PDDyw;trLk*_e0J2?3zJ72z&U4{avRcBiF%M2j=gV*k7!h#>yurLd1~Ee zNPKxt{d_fRL4etDcxQb>+L@9`m2Y#f5>BLVE?au=@_MdyHV+wWu{jy%q(~>(MmRkv zd@ku+0dvS^L9L5Lk)6TNt))U{SxNMH6 zh;?P`g3t|Zy)C@M$PP?J=WA{k+eKIRO>7sq4tQ@m7}>4FJ`B%U$0*!$muZc)9x^mpz|Nx0!2Ntx7J281Z4qOGXyrp!jK)cJilzBHU>}U>TrKSnYqDtC>&fp zd>Zvqc7UiROqx!Qa&GtI$(gu-sDtZ>HHYs=g;dnvypxu9FtMz<#p(D+FN5BJJ+)+! z$8+nynwHK6}@)j%*4*b;!Mu)~Sw^#MOMueQBH zl$>T`K^G#$BA0FWb|-Cd0RQ9##D*XD5aKZTwR95IwFMF{yx``=B?0}Fvqkpr5*5r4 z9Bd8AkgV;JNEz$y!7twXxO{%Ep(^lnV+W(UvK4|K!HM$hL`fCudzl8*uj=#`{iq2ER%AFmoXEO8_XcPEmfy8%MB^E^fim_ zf-ig&Sq*Ns>{e*H%?e@opcGpUx7Kd5Y*`b+N4gp7TpV19HhCXSNWaXmL9R)nE)(Hs z?*j|RJIBWbh~ml=20P^Bx-UQ?oHfDjBRm%r$K!G? zwjpK$R&!6)efwd7uDi)Oq<3|_siMqWwCL|R7OzlU<~EhzQ;{;m(xUbN-T0*g3ANHE zhGYuQPK}b@)=4&|#IGdtD#(lT>681hnMs2TUPOZ)^U3N|jH}LR| z-~Jn>{i7}i(c}n)e2)FfW2zKzK|w^Ka$e(FFLEPq1CaRDZ4Q9UPG1sABUoh?q3Wwm z|1pJdea$3`dAm|`tfc;iI`O(>nKf9#6*%3?6X7qlN z7&)f1%&IloJ71%$xOQq@>yaXRw*TOW7UFVcsyN*5{Ps#6ig77pWeOnzfgS=On&DmH z9CP+pV(Rxi&2S}h?&TUnN53Q$r9}C?{Cmj+L=JT&^T|n}jpBPmX(B#>r~)EL+?$3@ zvr;?Ctk7fr%>zaGFCN8RSzPe#;tOT;8e`|9K^9i}5;$6rrG)Q4#ni7^`M$MEi5m3k zRUWAv^f0PJsWULS!2us}jcbah8*b@5i>#usM2(U+ns0!U z>71dTpItgQVt|O7vf6QW!2Vq$Z)2`toQl$J3+sCi}#m49I|H(!>?C#HV zL9-ZJfAFce+FBQia`RK-k<~Bf8*K2A1I~+9{;z)R^=Y$GqW3xzpd#9X7uVyLzYo5F z!XnagofXbxQjkIo%unCMRE|H_v<=YQt?d92p1_xU6jbI_Mpy28IvX-8&^fo#gQ8rO zT~RC|HGQZjT@5?oc6cl+k`ld))GW;!6xK3T620UT@~(;^&tXu8Y9|EBONj=NlM)#) z{o5P@QKN!XcNDJBc%;2Ox^nWlX1OO^Fby{ND&7BCP1<3otTXq(O2 z`iWF!a|2jNvXYgyiEyG}guA?x+p8Ry&&|)c65s5pHpQ;fn_X`|ojW6>z;3O4Yd}&i zHPA&UxMXI6Y62>&B56GTpeMBIjHi7u$sv6mDSvfreY||A@kRVN=hJ~mMN3Q&`QFfx zq7`LOEAXBsq3b7!K?vbkjE_zMR=uWe$gDj~hM?ynGEC|w_Efkmvp3%90L!<{{3-*UG3$niMdsI(W5g+#^(hVYA~W<1bHy#^*NzNe=)eiF=y^nEsXe|MBaGL9r;5d-5F^7_o-it3nDzC~8A9rJ7* zB))IpQHqSxn~?DYAB@w8mdmNa>9PpNOxez_Ov47S>bBPm8L2ZA{kd1LAYvg>#YvsO z)ZiqMLI;Ks$#G_}aU^1w70ni)A)H`2%%guDafFk-=joma8#wgZF;!!fuI7MkG-Dgc zKXYe<0fG_NrigQAz{D?SsLeV~7omk>P5Z}#@x@@$f}4mkN*kiprc~A7eI0ituV+S! z5zry`+L!s8MvC$@U6rE6T-o2gmxX@&?g`PBcl0?iV>>5w~AXfrGKkbBWVDs?1TNS5(>OF#bl`Ur#I`qnFOvK zg1-#7%M;|Vf5RJOs6UY@DO0Gnyp}eSl!ZX74ldmA&F#3W&&hufS2^2Dp^CIttt++V z_o{&R7Qo`Jf?zM*nY~;85Te4YtnNA$W1Vh_@6%gpSP5&CJYomz$c^9ooinchvrvt%lxnv~6`UnLFXEe3wm+RvCbvMp<7paBiW^I9&d#`T-o8IOJ1 z$p9ry{+Y!4Ka&zC_Ly$=FZ=nzoG}i5Q>9cO+ny_AV2<7Q^F?yJ^K8dBsE}&>J?~0j zhITNgbT^t&e@P1__d*M{lkvwm6P2v|0!))B&19Il_fE!ODw2?4nDauO?(g|FWcEO522&5xvf#`J-%l?X0D?NzTTMF=#7ZFXW|Wb!+`p19hW0Zw%kO zZh@23?PZ6-*b_|E3N%R7ZrCO>EXR{a?{oQ_%X$Q17QMMh6 zV1`q;hiak7)$}`PlbdbZ_r-CW7Ejgmi+1exVEo=?7rtxunnU`F{MKa{M6L$=2YE9a zCuTVF|3N-uEW7m(mAtv;^cQ)rvFwAY);)q&vkKPt-p}7*57k;@SvrgiH#_`Wh3*?T zz9D21y?r|z{g8KazqpgqQ3O?7@WiN%^7UsVpf+L9XDLUFeuYnSHs4pFBeU}8!mVjP zhS9QYV-`$T<)l$wiO9vRZ&j}uq-RdDJWaZvV8)YPv6xv z-WzNN)qeIZL*08gWyUK0bJ+LW6@!ChasxkZU_Dl9w? zN)+>3rJ1c^D$Ir!!7oj!Pw*(t78I97eQV$5tb7qxNSkeV#FpelmYf~+GS@lks0%G} z@hgJoY>Ul)S~<#rgb;c;rLsU%i0A6Mm@ZXJqkeZMIm?-61<}NzaTPhs`LnbvpBccf zVABD}Jmsu(g+^C^oN2h+@K5qQ6V0`2cMsLloDn4u)eRO(o2U<_7@IgrQ z=**za>W%a1!9l_ycrBTsy&!llwG0Hhp#iYqpv%&Pv&sBDXDxeSg8fLQECZpNgDG+N zLA#DE$WTHsalcUTk5Db7vI(RtB{aNZl{aP~u@K{?a15*+w%l2;SuM$pVK~YF4P+LF zwrGnBi1sJi?O+p@dSgKnXYLWb@fuhcdC1?(B-F4!=PYC>_%<{Mt^GHeyI3WxZpg)N zG!}_$XmBW(x6r3}OU0eu6_Ld&)Llhx4A18E!jw%H)-U;?MtaDm!Tv_pfdz58S+VF2+Q zC?ACTRpCBh#C9?l9);tVSmi62s;HecxD%-XDQKJF4$drt!7_|^1aGK(j4<=D9qbCP z7g3%i9rlXMvXOG^KjI?Aev88kIv2mN86Gj&;`>!Y!q!LJ00bw6{(XS0107(RfZ&WW zt}g)%Ih|Y3g(o9KgNUrrWbNICSge=Q!cTfENy&}hfZ$h}^XCw5A)Yua-EJkAhP0<{ z>65Ugic4*v;+>R%igyABJM3@U0`<@0*=6hhRlJ%G+s>4UrFhoA6e9E??i~|uj}g#J zbVFJjtI_0?y3@jWmJ(t>Xwbt#Z^ezWiIGY=sLS@NoOt{A;YI@5)IWgNyz6tzH|nt@ zR4goRLO=?->kkMW=^d6Avagx_iahUig9m`ZVePbjel>|)!>*GfD;yHZqgzknR#&oXo?3UmZ>}STbtDBrpo4`dI%DDhd3ev%vPm|~u8dlm8A*Gv| z7@**MelPxcXcWV$W3lyGmO}?l(`0kcZF@Ju65?g(8TuwgXK^HY=vnU4K>8EKd^=`@#Oqfwps~gj$Xabx}O5RLtG(JcOH24D#?ydfjP*HSBFcJ?uVG-j-`7!Uo>ox zU)gkt#qnRMNzrXNZWsEm{N`Z*h?$o*=aBC&g75QWP90E88oCmUK10DkH@1`z<9wgV z^HkS{M4WLnf6`EoT*cjA^cE=RPT8dW0sMtPb4(ZZkP2oW_TVxN*Z-{i3*!due5sJx zLKhJG(71V|nE6nehjrd^F4f&=v;KKsYeRlo6+kUBUJW@8V0Xxzv!9g@;#b}W6))%k z9tqJH2$3I@poVe90k(#5b)1JD`moK~6^nas zYdj@?%*5Vxo1Rq0A)=80L5%y0^yW`0oCQ??BB%(E<5Q_qIEcwaxfHZln0QzXQ`Mf@ z!@^xhDj%PoC5IB%545=KjZ%!Rm@HP84-R0|wu>qEEx}r-_7|ln(5@tE!+EY=x^a|_ z?M|<3I$k(?g+-)(6Ln5iyH=)8K93T3>m4C?f@_9#j%r4?DCWbsz9uj@fBAGdkAJ@V}NxqCaITj#%9HI?o8OBI)+vU&Jo%)cT8E%i4Z|3&tRLmy}~Rn53XeZh9A_ z*yzC9OAY&ld+%IkPWLNRe}7Cfp@d0R2tK-bfWH(9u$TfYQ|83P9=wXLTzJ! zR46e@#UXs=f@yj7f&`WD2Q>AaWB0J?L=MN#VvqZLhT;)>K`6cyV94?P4E))}r92A?@nG%fJ7|!jZRo;%gThIPYS7*p1aTL=Nye&Az6?&HxTsq zx%lY_z#>JFQKFP<{{A@cau@E+jsTLf=yL35`rFg8>mUDg9HcsM{q!PDYVF+f_r`oKL0Jais0DAmF+?E*tXLPT11^hi{U8{D{9~16~TU%XS&Zl5cTQsLjaZx7J-On zqss`aT+M|30UX(n08EabDcyPxErP5Dh5d|I?e@~{WpLj4Af^N@62Wb;tX5dhCJHU$ z)3KRASIsjC8dXCC9`Y$0vE+bU*OqQs9$n|J^#OiFdb_Tt3=oxUEsAX(d4l{5%_9J- zw0ous14uy96hI|0ZQn5NVLA5>xk83HZgHl+|A~FAelC$R7kDw}vh+Mu7?3^quV((Q zwQS>>5i6PaK}YXYOf(X0mIY} z0k5%EMh8IMT;dh3=r^?P)qdk?yehA zr^br8;PT990YV?U7bvU58aapbHwdkc!bTxAux)`3U=`qdUyf#G6f_`8l)E(G#nwjd zjwOUIJH4BM@OA-PP(5su!&GRBr0wCPYfitq%~{w<@it(Pn%7lW%>h^Bq#NRXoW{|w zq8CL8%ZRK|DlWtb*_BoR&);`J#LtuIR+I z83|0qBJ(*}YjNS_itH@yw{2S=su%WbLM%683F>BBonXLK0E>uu zd^*DO7*hWzzGu%wx|)e+5E3uh(LV5JlU?pBC32w{rBb^I<{O-1AoKZi2nGaI?IrIc zcDstGfmL&q1N34mG;z4C zFpE?5iF4huJF$D`c_juzyrucTV3D9E%o*TA#W<8EHE6v|9LZB|Pzg)48XpY^J9}tn zZW$O?tccLofz@7iw`F3y#mBRFlQc2M_{mkgrf+P(yf`+B&&pcMo>}2PIQl%}&29STp2)+M`Z2h*x@jdO)OscTrGOG0Ag^Tn`5HtMi#zHEg&dB=W2dO8Mk z^0B!&GG2;ys^WsEsd?7%s&gz#+ev+0@PP-%g&vco`4Ljl5=P39@m8jPSPv-&9{4l! zlrdBec2LhSIXB2<&*8Z7?_EG+>94quNj5wkX(gm00i;2lCFkTtE+Safo8+D!|Ds|A zQQ<}WreX~rFxje|;xPr;WKZ#6CGoU18UCj6XegVNh%F#-rTwm5jI);AOf%{DF)7tg zpO#_F#dQ*i-=xs6;Uk$>P1$=Y%_262tB!8urFi8gY|8`fRMB4;49Bz#^@FFj<5k1# z1k<4Q$W-&~?H2`&?WNrr&jXB2%t4I=pe7xA2z#lq+lbq`pe_s(JlNKaebX>8zpSWO zBFz{Y-SX)TOC+mj2UjGY8im>-|9eLvL>#{iaP2Hg+wJ>(LQSkTb zu}S+pqfFtP(u<3-nH*-+H(PxnFy@*%4EENoEKd$Lz7b!j}=?6;C+@xv@~k zOryq3d%xEWfQQ0_qehdDX)3Yw0xzcUvls12f66ze1(v&r2gg;VS(ShRN@bOEag}p} zxx=8a;poxSNlQq5yKT?{pl`J>D)i^6)!`TcrxOE!M#U24??+6?*jqjuaP-%Z^qiY* z04V$cByX`;|9=hPXQP9PEV z>UbXDmLkwsn#Vy1RFT5pmBBam0&~P!a>Nlc2_9jvA#7|>mx>cuwT2f_u$_3+JHrBV zAjF^zassepUAFb-k931m&tRMGD;MCgKe%QW=R$ZN^N9r;iU#8}VcsFrFHQER*B%#* zlEeo4=x9zq%|5UXY1D(__6`3PKu9`#!fQ zv`5BLmL4N%euf4Ylb~R~!+^0%($fZGE1sObvj-tHMN`#97IL1yKR4nv2gN?IN0YVU zrFM8#@+p#pI`B|y`VFiDYq}e3CsI6D^u}WN(BLSY44wduy9AS<#17XQm1rDvd783U zoz?MHe&etSLbG+ll9wW^N5sqZ50R39ufGta-0d}7qE-amqe>Mh*Wt29Vr_Ym!PB9s zmSEDAoZwia(%t7jmUmX-oJtDegn<7V zq!Ew>8F&1XU9!nb5B!sP3LG95FG$}0>whGSJpyL=xWK@it6{+K|M}j&meuD^QWh5G zrl0?Oh2O^@IbXW&h5eKY7S ze$i|{jNxdR;h+;>3Z3Y?m{tzwA(YVjSKn86kIpBb*7Zv6xJ9u%B9xGM_;J=*0;#+A=v`x>-*MZ;Ol0+yE^7m(DlIF>VF3G^$<2{Fa37wo?raN z_hvHY96yvDlpfNYyyxlL(&4tc=j_y%esgMd<9Wifybu?!bRbPn!h2O?WE7IMk`uBz zu=vBb3i)#Fb@$>u%hZrSwY?+n7G7*a*cgkuJsIH2n?~o{C-FGV_5i4PyxIle0aPz8 zXj)gkw7fc5G3dZZuJA{y+|IaK^IUCPU8Kq9B!`>eX7vM27{D;`+A0wxpl5w5=02@wep^OFd^xjYMORNS?-Rc|u6qL$BBkGxP-c2!_V zh>S0^&HFf6v@V@kw#}1!vGWtjO^FoZvim;NtXiVLmJiLpv}N3^8;xjmv1Dy-3QSIv zK2%-*xH5Tp@OEl_z1<|KyG!M}W@CGJ1=haY_WfGvy*p!HcX*^&R0;Ff(%kI8d9=U# z=B`a-Z+2nTCBM*QcCS`GRgT3uxg_#-QQiD`90%~E@XBmh?-t9GN=%1zwB33)LVmm5 zf=h+VDDu+aabM^CT%)Ae-X)@~g!1|{WYknX!L75lxv5lK97vMHQcj{79X)pQ^tAoZ zdoz3F`0$pMbnJVU6ur3nMnJOvRyq(evFhpTog)V;bVi&nLY!3nGcQBG&aj~G+4-^j z;F_i_qE>Eo2p@-l>iqoL}fihVQncn z7o{{enNpGouOgr};Ch=LLZMo3*P@n{y)GJcX2}D$`?QRla}RV4BKhQ+Jvv258EKbiNSd5VtG9?owa zr`%>G0@7b=Htkh!^-RYc;cTT?s+Gdmt+fD=CcHoeosIR)=JFw3ul%@|%E4Zisqm1! z*?rKff*nsT4?~7!vDrLsBvFJVz;1ZYz2fFv zsHkBQqmbtF^V;1BM|F(GUoCuaSY_&!5%DOsYoRMfnAYEPUprSa;hXPU&e+?VZ*kV+ zP|!`--=3P57vs%B#J}A;b{JK;jR^?HGedh#oD@I=D%BJsXj3fdL06#L)9&AB@eGnu?E3g zfo=~zajyfh5ZdJDDc7$D79!TmHG(oolnjk#^O~imE zYNT7B9sUhLxB%A-_L4@>MYZ!g=wI2tgWMA7HG`o927$o1{-O0RNh=UXOy~em7(6J<=C81BfIZ?Ct5oA}oOK9Z zr0>6R{vPl*&o$Bw&~tj^8=x=@P}py4C^k;zvX3aYSC>&w!FyzTdeqO=vhnR;K<_zU zCK0CQu^Y&tV%j5)lAWgw3Y$+rjf` z$lhM&Xzv|n1c9uG`xtP;mDlz0l)u&c?ZD>yksO`vcsGlh@Ce zwaiXz!OXUer=QIKkFa-uu58=7g=1A*v29xw8#}gbqoRs!+qP}nPQ`XAu1YF+yUw}y zzI(p^z4y1>veMGpP9MGZxz^lcj!)>`@WbwdmD{hmvSz$d(qA7< z+r8ho+k3wT8w*sgOzJ-EJ`Rq@PReK6E_~ZQ^qX1ynv}|Z?eKVPo9iR`y!c}_mA8FU z_?mQLbG3RW_1i|rFZtot>a+0$du?an`gJ3NV8(YNBgXhT*5mq?aN%wDm99o0q7)i} z@H_7%`i~!&p>q44Tw7R++}I~kCj7bCXaE!boNN=XizN{_1GkF)OAClbQi$W%7juv? z`CMq{0Pi*8IImk1tRPb&M*k*#M9W-^1v~a4-RL;C-w>9i_HiZtrRoUs@}zuUh~4$1 zEX|27z9X!wUL&#Y@>PV~OOj?ud<$(f=g)GkbK&FUk66UJbjMo+Tdswws6{FB+41LL zAuQXpwyq>1P!DvkLK!;f30(Vu9M&!LQVX;HZ6R76=A%RUUKDZ&CP#(Ty#S>@v4_;% zhCg6AI7DbqRNMkf^Y!h3C)-0`zQ5-n zk?*~J48hfD-TV3VHCBv2^T_93>uvF1qT#hkK#v1Ywu0fcZT$x)BObjSlKs;XTY8M@ zZIAq@`)<3B*K^xuj!}HE@czX5W$u#$g+In@)?EMU8Gvq79r*p$5 zd2WU7Ny1ic1=fqYzWuwK78wWEFceG)Cd@k%w;809unS#7PP)sMsp1MJFMKEaYW8gF z89NhK7-eKuz!x(-rzx&4BeK6ygoJ|H9$_5EQTD-zmthoLCSz)qnV}!ur2_@rEZSDE zam{w_l{fPA14sE5I~5uSe=OqNmwugim+mg=JV?puNpi-TG48#eS^etaMd!1N=#D)A zi*~V8@1f0?>mGe;r-L{$=-BXO+ePO^6tK18e%97S;^P$Gib=P9nU$K$Rs89AY`(=n z4^)r8{#0#ZpRYPydZj869}>k2zvnR8jO5r!ZP3cwuG2@Tke$-FwDWWIy`h z{mAD8&yB=&eeo$E&S&32a?O@Qs>9in6&R4#!|LU48lyd^qC9k`@2ZB35W=tNJgd_w zz&%eqz3W!vWP5P0ia+~xvu4nn(wOArR3IvK+Mi)caeaH#Q9AtMtTpy{^A%i{{3`Xql+G-bM^(}pXpX~n#ML>hZ7xU%KFM5WXXfpO^XXewjh^(d5b6wR3NHd~$R^DH-wGcJ`wPwWWRz8l}xZ6!r+GoGEH z!tUQG;|D0p>0e_KerY%u zl?rGO(eo(3h;}EOlyO(~(QbdrmQ>-KCVy(t#fPjHX}az8ict*l9ffy=XduXciGuXephute_37v!OgRTlo^cP5g?Fd`oD z$5X8MLgOVQ7q*N8L5Iz^7ssFDqgy{l+i(+q3L}3$@RW@jXJ&??$dDl=h6$7ULPT-s zm-YaT9AavUEIQIefUWFgBKzAP-YXHW4*&XjKkhjrIwf>bilj92w&6z^6sBi`n~teU zJyJKeMwJswl6t)1v&68-aBM{F4%lUDW<%|*{E3M=YzS*^v{G3(6*+$G8g42a$kcmV z7WpMgG9!8W1L82`z6!7okjATyHb*gMYM-xG>a6|pu(bH=jGEUpj+Hw0O?FEpI7Y-R z;Xr?)GJP*$96|EDUV7BuDKQ8)8|@;SStRjy+ogwQcN|7#*Iae!Aco1yxPg;rXG6?+ z`2>Vmllsp)IZfOFTbUy-rAq&A)tSn{mlvuo->w%PpBdI|azCHzZ|C3lTkIygSiC2m zw+{G7!rf$S_t2Y(u5Ep9r+HRT@nNVn&syjJpnFKNnC8MrjM& zV1GYC61{pYS(u^zW@32R^TX6qa;O3p1o#{ zhzPwljMd&+wqJik0KZI#I3}Agz{VYE_~;AHH>!eyOYx8d!b#a z58XI?Ld4^BP0vdz;!a1y(d51jLu8*dn~wpaQ$h&zouiF)ss5UuhSxEvYRL!JA*`h7 zwcYpE@aB1%o*(EiCWFQPG9qxAwna*ph;)U?4%UACEzB^hC973DE`wYVa8(^+%e$Kz zeDDz0a+W@yL%fvZkBe}xrWgoO)Qi@tPXNkRS z4IUu3Xv*Df6V_O_g>LNOZ5KY{A5g1#fRD}0@xGsC0L|XAPR^{W!ES#q5kyVfrN5-6 zIN1Ls^=HXy7f;ln6r16l72{X5>*(S^!QJgBh|NqJjzvHR=e5JW9Qc!+gR8>tlWq5Y z8~&gF|Lg#4k@vY@H=WqqI5CjG{k;x8wQ;V)DQ3IaldR?`U!Q7z-`j3C{xc{7o|1O4GOg}LbREwcYn?m)m4{PR|y=6ZQw{KT~Etb zZuLx*a%ZXkG;Xk5iIVzd*P7a&8{5v;*wx>jV_(XKD)n=jy(5`mf6#YW@x9Ic*PTbF zhfGVh7f0ysW{Gq0?+t+K zT{M)Nl~ZTqNO=Jf7W+xS7qX|2)|H}GwLWcrZ0fFNiZ1r&qE#LxEzT^qOwak?Rp0rFt%V)tYD3hKN`^(BGd{K%!Fo^UteQOC)AJtTbP0i6cM6a7)sFZMkh)O3*MisBQhw+03_nmu?TF zxK}-HuCW>~(7gwLwG_$F#ZKGJJ_RarBDk@Q<2TR3q|)6yarmfdA5G%?rK|bUH2NeN zGuJ1?q&hX*Q!)a{zFNw@+OO4{L?1}e-TDspz_lpQo@nzjHiGAE6Jnt!sw}d#1DkpP`ul6_@p)!^^GVRfv7jF!< zUO(%!-ZBukfB#M$_T|_hG=oK67)gcI&AL*Hyc|Duq5JZYq&N0@G-#L0jaNmWK1^)6 zX?U*WbDF;nTc8<R6jtt)3>h0x*HVED1Z~95Jc+bxrqy2-*pZxrV~f z$V8ZlK%kL}p^%K}g(MV&B%zr;pLM{)Fc45hWN80FCaKf?TvuA5YZ=y;)!?QDIpS8q zKq5M~k0!pXH)Rk6gG>T~U*|}FrV<9yHwO>T{Kys|!fAr(GER5}2>b7l$e{lYd9h{= z4C#9LS4f_xkfnO_e}&9~LM9Om>qC_5%TbyrCI)l1qP9lI+Ms@nMiz=xPGb}`m_-|b zw=;wy6*age4Mbe)OmU$R1u?LI3d!?4mr&#as;wxsySDf$3?Z0@k+Db>S`T(;8v+C3 z^joNgS9JF_1g7ETi!j7U5X`U0?#U^K_!ZORR>|L}joL*X<;ebRp#8&viy*=fFeq#J zunx0WTeNCd8LBuW$gKI!>kBkYceS=KC@v;&_rWli=>uu~^nW~{^D&tN^;%5;1jB&9 zPxm1!%MWs8i6%x?S9zWv#kf(5fCKn`o(=y!G|O5LAnlJttN0{09wHF@!VnZ8F#ESlKc(l6Fkc~Vu^ARRrd}~D z^^M#j*%;ADkU5Fk+#PWKCm(4M2qOv?25l`!@%Lr~;(!=g!yaV+FUnY~ZNb=4$o|8z z@H_@Tv=+*dLH+Wvv5d|w@x=AG+Wrif&;NPA0Qe-oM(-RSpYDKl-?YtFU{=7T=lr$f z^qRz<76Q5<86Fug@7c#7?wxkus`r&t+2^e-1=6wKFfI&g0yhy3VIngz{PTo%;_oNH z34#HT<6ux4z8{1BgMPXFD1`5{h`&dN2UBM^rnLt`?^8Cs8s(jM*t(k7dfM2!yCf$< zgJodK?ssqW{dov~=%Kr$WMxpo1 zuF+_ni3mp*XOCAO59R7T9k?9N*1q;vaxPR7LO1qz6*(0{_3DjhO{vwIC>T|$H&7mJ zO=<=CB7O9reCYW|v-ONM)lISW&S8mcce%5`*Tlvl#P=`Sk1UREUQTZYjqY@e5_TBk ziIIQOd!q98x%WiT^Zh;;leU`sCW)li%dGdoM*w}0V59;#f+BA|qfJj-ze|Rfw)rLf zRMh388F}-v_sF^bI4K`Kf|-tyl75VdV|=>d&4lA_Q@f*RZgum*-Q_biy*(x8{#Nbv zrkLek1sD%V{Q_6J)1?=*n)_5od;Dnr#m)U~#Qn{mH&%>%x3JZn zp4A_~E0{*}ra@xwF>@8jbdlg`sO!B-2C;SrtJW7s-b^T*?n>28K`FB*fjgaEe>`s} zq}D`!;v%&frj}68msGF!HOay|-qJAL(kGueqz9b_=S0SG@WOuJKT$eX2}kzGGLq=r z*9&i6rZ2?Y-$q%4h4ns)&yl-)61(1SP55EHJVCKnY~~eld?R;OB77{zN_sAmAI{nQ z`j&vP_Xxxrx=77Mjb>z_r(>OFWE+`l6^C!ZGF-L?iV1izs)4@j+T?ETuy&HOXV9PdLYXYkILmZI%rDM z|3%L^;?XC){(tJR_r;bWZ9%xWAk#X1yf?iql-y2z+}}I=#Qi+jfIuy;ZuM1Z#%)(< zAdu{lsQuPUgkMvJ3UuHTNQGv#B6u}Q*a?yM?}HU@YQLnw&Lj0KQb`%iER0R`&zMpx zlA!9*3_kcED)>g80y7EQzNNo;vx+`wRxU2nmpFqhc zHFK#Y%Qk(>0YRh66O_aMT;Xu0pw+864gOrvO{QAjx7xU4K2lsuq5p z&I?af9|3wpu!R|;EOCYqTch*y1xOJO@!l!EWtiDIn{^M zbK-|qnLFTY2cmneS178W>ECULh+K0E3c`a)5o!@tdc4%`w&D{~dtI(Bdw#rcM^Aqh zZT=DmmU~14>3i6m5@Ch?R+~Jcem;5&e{(T!lGEA~olsx}q8Wy~3pB5W3 zAy?2K@l(6g5Jxm-aJ?2(z3A8?fJf!0_G4;BF?4l>?SbGD#cg5q>dl6IWCgvMCm|0Z z4_r_js#=o8y=(JHanvMCL5rX}amNAV_4T1UiL3lB973t=JGE59NoBnV9GkqZ;7@Xe zUBNh5?WV)zd0kmofp-CS9AIn;dSWGmTeB(AWK@iPbMQxxg;aRV&-vE0N6SAY&y!j^ z!lZNVlvETzkLYzQaE|Cr>SpL^2|$mIYzUJulm4i-*iS zf}7I6bSUSY0Cl`O|69lV_+|qO$^V0dYk_8#@9^V`LW+{!x4*3Toc70xC#8QwJe2{h z`27E{V#M$;c=!cw%^@|UPTXozUU8dDs#*`JebX1eA zZ97C~@66T@H2tadH};)+0EgtUYJvq%4i29^sFfAK@XccvyGA5)KZVaz!>^tI?s4Hrg#P^lU#KE7ixV-eE&iQ-$OQr zwH6js7&{)al~mPUncA*`8m*rOczsBbQUKQ~a}i=7UAuTXbQpUU3_ZH_5bA`s5N#*J zN*Dt65Kb7omfv!$BByqhA~keCxgO6cvNaZsKRdcg2mK10z<;dIVen|YG>u`cBF$t}k&4JOgcBldAh$eW7s)=21U`g=2-8fq z;;_WwN@blX3^YwdNnJJT0!yh`HASb8if#x85R?+ZZgfOhotLbOX+0DIZ-g*}L*I8k zT9!$_Qig^!qQZ#p62=~-*IKge^uNjCpjp57=zdXC_m{3EqJC$y)6G1~D%e9<@U>Ar z@xI~u8ps9BRBjN{#ay1Md^kNmgmF}ju67r4`L+_&&0p~a>A6|LS$BA#f}xt@8{NaE z_o!NOk_)V6VTWim@$+TEy1SV7t6503V_^b6;?Khj_yymrMC;9**130Z>N>%ij64Yr zNzKn_O-x?cu=IF;lD#GsG;U@U7D^EWUx$^LNgo#Imq+&e03bPls9Dc1kUX+XzA=J;7s6Jp^+W^MIN2Hp+1ntjIofK z3-eE=)_bYS7@!2HqcSCxT%^oQrK~JD{7=*(*ngrDA%>6>F4a+_A*lSz0-ZXb1@WIS z{#Y>G8Ikx*^spAWTjq(9_Z*@l8 zIm4^WOIC2<1{a3Cg+N;etP7&E^C$4AR?Uc}mPVkZp9-Qkrp_PQXF>%!j+30K11SS* z!BbME?m)_k1rq;*G6~o}DRZUGn%U?LXBcoOh(*Ve$)j`go9F+EFkRqb6^$`6=4Ox} z%*w!^YGKY4$lBBnCic&m;oIfNqw?`;FKNO1o z!nqc_U$mj9Eog^fN2aLOmtGKQh%tvFxw)xdbki1$iHycMVqNpTPwiLw?Pdz;Wo|N>&O8Vx5iX&Cj1mp)Da&j68Q#Q{3$hi_QWE7-H059(n^#hW z3h6?Jij%4TlW7C>CpN}Ze$6#MiyjkxaAaGa__rC!b&9C$w6}VwAY2&E7d{#oPGP}| z`X2~;P`mN9X!xRq37k{5$#$3H0@5_w4vCH)&mp-#D#06r6)&TM2Ja&fOh+^%x#Aoq z?$Z#(!D~$v9pR#cNS3PwFO<@4A-|_enb6L4>1=Bmf)`j?J;MtQoQbMweJ0OxM-5gS z+tQD7AllOj*>)JkLq&`OgDw5B>o`CJ|LfTg5;f+FN52#~o*fGV97?NC1OBY1R4sGLYT|tAh zKVf?=tbNeDNcS96G#sgDs{{x9gOtw?}r67~FRl2~8ky9N+wNm39M8BuTIf!PY zCO8Zsz({jtK@sh_6huVEqsDw5X6D5jI%oXj6oZI;n=z2Sq<_$&^NnaBQ_NZpOCpj6 z(cYS}M5M~V9>u{ODx$!SI<(oR!Zlpj(89ZP5zS|KR7A3@I}_?Zh1~VXiLyQ{GN(P5 zCWhos5_#X!b-2K$CyxeDIEXSnh0cPIWdT&wSrrGu2i9UsH{T$EX3dzMB7B`9-UFeI zbMQpWalimRmVXwSF3#by++Hg4Q)p_`qzu=qcPk>KY_$1_SyGj9O8=~W#9v0X`^i(B9aPjj8(T8eChgkvs7Wf zy@#07IMO)>ABl&T1`-m)FfO8fzc7(j62yGm5%Tgi6lV}#k*R(`E7h`%?A*pM9-{L( z-BdVd498Fm3Kidd#Fw8bIRj|%&@xOBYv5GDZZNYWLU?zbTVeblt6}_U%)LtoNHK!1 zdrCvtx6ng`$i8`O0lxx4Z$qgNx8mN2@hi*t_K|kY!vvaSYmNiw`;33@APU4*EQB$c zqxkk^HJi_ny!-tMMBoy81-*q{WRCa+jPky@c5B0DochD0eJe}=7)apnKz!jTGq=zt zI>NyBhVl*(cHsEl6jDv8>vAzJJueW43Hap_zZ*cbXFv%t8JP!@OM*oH0^dhUYjm5| z{KKsdv@}eB=-q%v9K{!;c#cr`)1bo$gU*msC-CnY6kjG|pYl;cKL1}L99({X{`1ef z=Zb%cV1*`H4Cs`784-^D1^x?rABjG(5_lU#I>OiEm9IjYbRY{z-+3j6`>%K$yJ&yB zkR7GkN6JI{PK-Cy&xGdy^z6T+kox}`g!$Vs!PorCTWHFR;pZgxlVF|?RfxYG!xF0L zGT_K<6kx!=y)UDQhH=KYg`U#%I;Q(WY|T&kk0d7iLZED=)7lRvI0+Qqppk!S@%H}} z82cY3^S?xZMK7s5uGt%)U;&ZWei$e8*gs3S-funxs>LXVe@27bdiIZ;TWDMd;Are4 zl^6r%D8RiTBOW&<$h&LUaqc7avF{_9O)&xi+tz%ZEt@wQ0};>GI|nU~xCY(hxVHdV z#PTVJ7V0rB*chFD?pc|pfrGxmnl1Y8^|J^iX31^j2{SzU&FS#$R}>`)51uwYVpNvEgF&FKta*4zAJsQLfB(^a#G9_ z4B&?>^;ZQQEYq*+W3s{$*X;fEptM~#BEa7p_tlktmugV4Wk~U9f1Jrcy(**|7m9(TOvagQaf+AukQr`p|JtZglN!}r*} zu2~ZNRvyj1|38C$0hDrI%nw+GEZPJwPAMy3{)^6f_|_VJ%-RockE(1efOBZ}vErrN zD60=spXGJU;wBWvF56d2qCK_^*0>0OvsC^)ZfSbn822A32)>I`ijau^0m|;T*pHP_ zgW#HebIRD-8_I-wH2{j#Ep11j1EMVm4p_FB6QO4xC!A+-0$7Di0bJ7#8JVsb9@43O zKw|Kv?Toy)E|<~JrnF#L$3EQC@fWkuml{x?;TpWuti7QHo~ z1-kKN$v;tVnDgtqeC?6mGM*{f;g~UIxH(zWb5xESQ_)X{1l%Sp1vhDy0;mqBjbt~y z?@g`-W~`Sf6Nf@uE5~|h?nLV z#h>c@2GIBdioKy0B-sm88;*iZY~3ddhbc9MnkQ`GIXJT`V(DbusS&FUMa-dg)OYq~ zp|K0oSuJI+@Zq|coACRlm!gL=ge_mcKkW$s^p1XuB9Sq8!FW?;ydQWI!4>;-%ThD` zd_8hzlh1^3wFRIPkUMsg)XMNTp;LVK33 zhB^Y60#HIV2idEM(EDo{?_aLFG|)t$jBrb(aUpU8oSPHPQS8068R(|47lBBr9?Z|~l1Vn;;?Q$pPF zfjYd9(0{BrB6}d^+%4y`h;?E?0?zRtk|Yzb(c%h9O7*g&d1X~F(RmK}jyV2dxO6or zVN}R0IR3z!Fu=q89E@iP3YQ{YWANQ;XVM%@5Ifkl*f;?ybaWmqjz8yD@ZKu-S_&S- z=-t;jEw+GxIE<&~`#lWy01hVTXhB4$Y8ysd5Ybj~rrcR*L*`5g?!g8jQkZ=MtcGH| z71F&cIM(eNs`5(Bk}QR!)gULOwmGh&A_Xl{37pr>JBH+WQvEBI)t540x+snWOcz-^ zVc3w4iu5O>&_;ZwwpZ_)^YXG_Xel=%6TU2AOh~CGeKxW}N~bt$%0h`xAoDr%gGhs6*{spSbv6nBvqA^7dPs&9QXy_;5pHVg8Z98D zC5_;}DT#{WA*%yKU9ho_M2o(`0uLTkly6FaeX1uC4)yWgaNt>@!M&%KbeZ3x0O%;l zf_NVztb_g1h)VQN78uEiKxd9b|Kp4kDs(<(opXKzRtmy|6yB6MYm3u>Cm9u`Ej6V; zwcBr;_Cts84$%a;EV%F>H4^_xE2(m2<2BLbP97KdTfvfeUg!19FRb5Iz3p1Uq z{pqjs4y|OEpA`(hC_`O|6_A3#06~9ctjdk7{P#;&Tu7E3`OhuPgrxWurA4MN@!PnM z_zdz=*XDwT!=wTQv@y#);kZS9jB8MC$iH68rf7#M;M~#sK{*Zjpa!;79C3?luz^gw zzC~u^mb%2qtMPFlcm;_jBBMRbC5sxSe%Byl&+bSEvH zUC)7rJ7#$&xtI{(G9_WQTUYAT z{5%M2N+&!+Mf?8AVcWVd#ZKLd2| zU>ALGnZt_tC~b)rt8M)s?e!4beaxl0kQlocdk@(`j^EjiM0=5`%bG z%Y+8H1QIz^4U;|Ly0M-*$+IN1md3HU*iFATBif7peiDQ;QESb^wOk$sd3}GemId_= z%|kx;LF^BmdVeus83YVNGj*0~l7#vW+g}WLHb-6}L?%t+8}deG&7K4%sP}3jA!1lc zQff_-NC3;=jmq#$iH%R`VlDGPBok!l!Gu|J4d-DfjPl!f7!4EM{d~H}B1t|749zxV zx&}r%C7$uXD>{~&!8)=`y#Ej?;>~hbe(EHh(gFEq7H|8I{PdGVVvouw)!pE~)L{qw zQ73}@zt!2m1J!ZCbo;%XqyGoYLi94M4HSjR-c>q@3wobUSG#BGlNw;$;B2U8bUgS$~qKb6#LF;0q3 z;FD6wu>vuN(&ghK_#IvY3s=`Lu{vq%9fOYz=dxa=5O^u$F+B5vDPA11AQ=}sqvJBr z;EzS7%-o}+UMR>3FBkEJP9U)|6?wC`KqBKWHc>yp;6g@mdm_p}L1bSoMpNLWACX7P zL0T)Z{uYhcls?*;DaZ?+q@OQp%5xTzerSmsuo~~uBmYQo^QT*08(JBN!{@VFQ(O~R zSXjZ)l0Zn_D(8rMyA?!iXpxZIj)CRD2r{m>FY8S}Zv(TEo9&Iwmq*=r0uY5OS6f2L z*NnG+VH&F&$?^%rRoq$~QF>T|?_)H%(E}sWIh>V@EDa2R54%Wz&JAG4Oku82Q?V}p zAsU?cT-i@Cx*AE_!18`0CVinAxXY0mH;vC;s^)J7^vy(1s7hE zaJGDh#uA-yd2Ry5$+>qoD3zIO-ra_fK*k?z5_xEq;o5!1Goal1o1j^MI|ISpx}K#<+_$elZYu;P?p(fHmo$^98x-E&``H$ko}5wt%yH2OyH0 zv~Shs`>0AHFZfYzTCL?$8*X)WpgO>HO;=url;qW39=WLvyXhdIKwmM-yY&Fv^~>KZ z*=q(*C^@(#jyd$p`Z^4HXbo3n-1`?2_Ktv?i#gBNs$g`*3RCZT*b@QQjw{pp)Zy;Sg-Hf4&3)7GL|eyK_L@uc zED>LqyJi#F>-?9>QD0=&$xXSRa<;|#<6BT1S7zI&kdtmZq=crlrvxCZYsEK4_0#D5 zl;DLH!{eXytdOU(?g5$XUcaMj2D2JGFY-xJe!bm{w55mp9_?=f>lD8C;EXRPM+Nke zih+@`dom`)Pr%d?V?@KnBeXEIRGeT~2o+N57hJ2*HP?Ed(!8D{4#bw1v}$uLAM~Q8+Amh{ULzr9tWh8ThE=aqOr(Jp45cym?#{qjO5TAc5>H zK!GDknVuzj&1(%6!9w(HD-~Ca^Z@HbBPi~Q$F-0I3jOrNd~C~R0sSfTi6WR{*XXJJ zER3md`rSLBNz#KPR|p?LqivItV;9}Z*l7~BW;Xz%`;?u{GH8Lrkj_WJB6@P;HrW2z zPXa!>t?#p|BLV_+F)@bq`^kpw9ppb9`^}x_Yz%Ds`Wp@e1ohvJnE|^Ts~8&D{MGw) zE2ZD=I}_f>k8crFsaeuCiOpyzG$SERlZd!pAfNH-FgD_^1lt#W&+yvBGF{b4bw1d} zd0x>@k%0!lV7rJ&f)jIp%sv}^JiOs+wSJ{*pb({@Y5UQK<3Kk6&Rpbu$V>RrJsDz5 z9sP_f5%75@9pz}Vg;8tKjH*p7r9Hcn;*+;mmFuR9E_xK~UvMz>tursgS(sSMaKLdU3MMKN$^OR3n4P|c z+RRJ_2e(thvS> zuFSY;Vrq_BcjH|29{KkUU}amGi-SlPxA&!^jQSsnm>f@w z36}1hG?*QXpBHk6O^^oTw&M+5jRz0}=Rj6XqhUWFkiWDtcXAa_SgHzL6i0_GjAc_= z)X`aF+eytKT8#C=eK&e{X8vey>(!s?&E>a~g%5w7y`w;t3a^^LW%A&S+p@e%5opod zRWWcl>`%GpPf;GNs@u1R1Y?}8|8ev!e8%-PwTI%O)KjiTyyDyK|LA&~Bt+6S0&H&D zNdp3c{_j)L#lqCql<}`4^Isj#wB+nJIIwztsv~zCF1>8HMs$c>u3fE^AfUF2#5Rd) z+fXSIossn*Tsijn8E(}L!dR9Bx?Fh6u)}XbJk`gdUXP$sbUGfE`%Vr$O7hI- z-K(#3vwRUs0Qx)3QTFXg>qyB1foP`$@oDs`*(>mUcm-z{>;;i*N#d%Rdf$4rR<{kV z76#J;MzU?Twy)&~4n>DLxs5)QxK|YXaIzi6lmP86K3WDb5ISLnwAiYBlguXXRg0rCl;uYoSH9 z<8Sz$OoE{UU=U8kl;733UmK;FC8S8>(M0JAWal0S1+p20kfk-2&(_?r?p0qNA15;{ zEh{qEAaC?)SFcnTIw|+&T8hPJpV1zDDi@@r;=qR4AQN0Bqn)-S6O&6)-I)PZ$1-T zBtm5>I5cCHk!fgBny)QflFV{*B#9|w#4ssTG|d1f$-Um!su_(OQBx9f)4o zH%HX>i6pSAxjNi)aJh3?yq0i^MBljQi`=9 zK!r+ef_Q}m@}7cRD#+95H<9BskmrMA?vuF;5;~uXKr#e8237W7%M$yG`5`XgJLHZV zX@|8jdz4W(Uo?bEj;4gP9eLsyMJg@iSFM4xCSgf!$i3czwXc!EuK7FkDpc9g1bHS3 z9^)`<7G03YCEJn|!o|eLLMS-9Amx+1f=97`*cfIi0wlor`traX>xrS=sisad*AioL zFeVs8q#I9HzRl$qISk4*)ry#O2rIS0l4M}o^@aQC)vL{sN{!i4Z3>IIl}@eTjRwP) zFq5D?;0<{Y|6<6rqS;Dlb`&zPjV~`1N$c|pj@yV^ATvq4cGW$F9QHKakqhA8_hL~d zS}Q5g;IBBT^Gt~ee%}x4h>h215Z)RzUd4;DG8=$%Mpx_(ksXIA7;>v1HuKCp|GFli z)_ZT#DYIdd{03-=U)|w<>*Lu9X)-iyDE+-5EZ9-$O6`0TI={rRH?$+p;y>&4-9w)D zhoyO0DSef6OMuPjd-2j>^ue^cI1N$P5+Sz215EEd1Ivn*E($C8(fl|D%GJp6T~e})oW zG$5P(a+ofkB1tXRh+|3Fh>Chx#v}*%%$GIm6s7KzMS#*VCp4;=TIW;j)>2r;RGvEb zv#FrEi|YG8fPL9k#0n>d%YI;BOY?Ra2c5xSo^A9YzJ$*sSUaJ5HA+JLPK!Hw32_S zMxKr%?^&=3w=ju&7|}GlvKiBKx{x4mxMqVhk$r9fFLpgwH zyg3F-@%dq2=Da5?35GcX2cYfU7Ij&V3Okbb>d(8IcbE{bY|y>J|ISd_khO9BV9QyF zKPJIWX$+&S2f%`;;A*0u2$C`F{G?;^GremuO(jVUq#=zO97Oo-MnL3u`3QF^<^HUV z%%Q66<28ZDuOHj-3)b@wns`RpZ9?YjTn?%{*sqey?R7`2+VNWR7Wk%a7b`5^K z_JH+{$~|W=4)&_mmA$r)-fq;DouhIE<$Rxn&|S}YRT@WRZ2@{)`TeO}g(6ScR#jX` zvFl!fV{j^+JpMxuIMz%e+QJ^5TBOsMDPClKRlh0f z6h=-98lO{0P^`Is?$}gi2a(W*HHQ!{!9RcNl2kS>@j=l8bPr8Rvd2A}rtyFx5K6;x z&cgsC_fL%Y;zYu8h5~KXr1_A_S(hbXVm&pTqRbI3hjxTW{jx0q5=x!!7Ze?k8<7t8VESuF*A z;6VYi*U!M;#;(pT_O=?fHjI`ornY~5>{UnA!woQ@f&BCl8&4Q7;R!=qR6?di$%m_v zdif5O(3MbR^syb*yX*edVf5Hm?j4MfjR(*wCgtn^=XE6xApCiMEO?I`d=V@JomGQu zp=>Up>DuNFNh}YJNi#l_$O1ZM6~j&NEX2KzSVfYlW6xnejV(ndYSi=vqg zM}qO#lDv1_R}CLa0p*3E28zq@s+vA$i#)it4KCBfDQJ29f9T?$I9l!o>Y)VcBKU`{ zzq`Z!N8MkoVWVg3f%!Qy)NZ#tag#-bsX0}?#uF;oy08OrW!!8_Sn=l$8OiOQ0%dS) zmTmlxpU$?vNR@3u6tVMVB^Akjrw$K}9Ove1zIMq(EsjmJ;!NkDMK9NdU;3@uO)PH1 zMTJPP+nGx3tHAziRAtLM)db#F-@yJkpv|4Ka(h6* zMnK_M{}BF1vVxPngY#dbnjKef7s!Mr_O)l=ZhxFP55fX1OcI3JdRbZ*-`$VghIB(T zy5ikSj)&cN^lOdF^)fG>z)_H$LDd`$=?@Ixu2QF0RZhnYQ$^tm=Y=_z_3KlaG&MHceO=95dBtY>UPlz7Ccw*; zckp)2VR-fSaM%Z8SHuO`gTXJpZDudFhSCY>U-u~_zy8N6Ep9F}+!|Pu2?u6(|5gI*s|N_!s^~B6^s|xX%0_hgJ5ea5LDBR7AI}K2cf{KJI@_sX4<@# zxiX%nt;!ZCi(r*Sb(@U-?7PGL?hSZ_{PlVhn6Ql)j^@m99jINpBSLp9GqrN?{xkKI z;_{~w>^dsy%v_tVpykKjd+h9Ql#K;QRGQjSDh;0Rl(%c&CDWs9c%wPP1|CxOHExn> z4{fK)r`2ikNWEr<7u@i7P1M78nWdG7S%Yn$l`HcKUs*Wd4(=9QvlO072d6;Q}Ou~QGIXz zY-Pc1n9tsz01-J_Lf(1=QU_TzUa6}zSMoxynX*l?*suPzqqv*%tNdjBkqI^3unhW! z5KBwJC2N{iOUxX7{I5^niSL{w719eaDX21M7Rlr!v9mn;(&fK##>QnM8n7otmQ&D} zq{H9QEen%s$uTHKQInzfe|k|I=J(&QdaniUz_lR1KRe7EgH!rVH^L%OZCHL0L^~{W z%Ehz8Z)Q|NJ|`-sv1Lo7eerJZA(WnTyRm+^?p|=hI1EKmZyr6I^BchBqVpjVdG)*5 z=)&QrQ71+HN%U|Gfj=&Mx0Hkt6$#0IYTQ+}?HfjjWz%boY($ z4s^e+y6(tfu$LGklwCGD&-d=nJ^kUxY;IuieJ1B}T1|PwDad5AG;jAmeBVD1n+U^= z!nhL4)!3u!UodXH^F9GsPDL$W%)nU7bL-JnB7oU$u;W*XgU#cssZ9BTb?@)djz8q* zj4{6KO!M3|>vH~v>4Boq?>??}ggRDayEqlh@cy!c-Fe%rYW@mSgD6`Q60Mufo!Iwn z>h~JDzPq~j4*oZulZqI(kDgC*;_$e*dx+4W3VJ#}-F0tWn(y`mcy#Gl6SLp#JP&Nz zYwPli%?)a>F_!xHSTAd!o~}oqP>xsouBYmR5a^f&yKvU};GL}v^0A?;3`AI`xP#Xz zKk~OfKK*mXDi~Wa?}h{c2_gak!354&z{cHwO;f;?7x4PDGqki}uyQapzf!Yy_^gV? z-|59kZ99!jMUMtO(8L-Y^mCCnA~{iet}kd9gb%(OlU~*gqt6=q|?Az5QGBKV~n&NH@+3*2K1{& z5~z#$oZcK=X#B+w(Hvrp zqoK~?06y|2gT|X=)3B7hD$*LZ+SVqEWWDk>M&psi#LRe%@r>mC)<{w7HKST=qJ(Kh zOCEV!=>PJyzD}fAy zSIe(yRkQKqji30rGbPdI+{6x)oS`0Oq1$>NdSqSGw7g-Oh5rI)<~-I=uwd?=I8&1# zj`BSh_!2&J_LV-JC{~d~rT>h(Nd2=`H>ER*dQF%|;K#j)5wYlYmtCqEL|*OP`*HPe z;~@4tABDUYb%Tw$hxq!BO8`fqCg6})jBX^A?8zh1Z~OeNoTz2XRfxMzNXlXS$p>}%+~_*VD$rPIs7qyVZ(pVqlrdO3tP&i6SQgx zX_m^gaJZ=n#1b^Iraf(t*-6 zMge)&pw4D`R)wk>37k``W9U^`w1Dn%o=-Q!dM^1`iHDc*q#I6=wEv+C@tjLA)wxPM z5N}3A@x7eCi978ar2a-vWy!cnMUy9oB}}s8ht-UW6Z+wVid;blDCw%Q6VFuM`1N?R zd%A_Lk0B}bE7%!IkTA*Y?yauG5T|LqT^DI$Nvk8WNlrB4qWP{_=xLU5P4#jEL|D4p zYTtQ+)?j1LU`VI?8PSD3D*U4UZFYp}a3yU#(r51ez-7rn=rOVjY3l80fpu{g%%x;a z(a-y(QmuT{)%SevLWybt*Tij=n`LvS6lD@0ekfB~bw%11JBgzGF9cC{mu;I93PtPQUOv6hb zG728u>8Qu|%@UjN71WxvZXG-pV>UMmU&f6nK6RL1qGZrbtODC-`r;JB>0Q+fMSSSk zox7y)iNQ%yL{VUSU$#>?a=4t*u+letf`+a2o+KwDXiLv&VJxFBv+d2!pA?ScDn5t2 znZDc+${P9n1r?zm@otpz#PQ!R$wq6pFxrhG83-@O0iIZRv@*_Ky7`z@Wa`3L0H!%X zYTB_pHo4OwJxpql#ucyZaAjmvD+sgALshPkIwGGI* zt%n_39|F(@fjFE3lEFy7Am?;mT$PLzyD7E z8a7bt^xlyhJ&jI*_l3P51%M!r>gI+HQ_JHf8Y)@0*mS_SQmr?X~7iT01wtzz|w&k~&%~|0HyudtoKgi}6oA{#1&W`W7pTO{s$oXk3j$c literal 0 HcmV?d00001 diff --git a/topic-social-proof/server/src/main/scala/com/twitter/tsp/columns/TopicSocialProofBatchColumn.scala b/topic-social-proof/server/src/main/scala/com/twitter/tsp/columns/TopicSocialProofBatchColumn.scala deleted file mode 100644 index f451e662a..000000000 --- a/topic-social-proof/server/src/main/scala/com/twitter/tsp/columns/TopicSocialProofBatchColumn.scala +++ /dev/null @@ -1,84 +0,0 @@ -package com.twitter.tsp.columns - -import com.twitter.stitch.SeqGroup -import com.twitter.stitch.Stitch -import com.twitter.strato.catalog.Fetch -import com.twitter.strato.catalog.OpMetadata -import com.twitter.strato.config._ -import com.twitter.strato.config.AllowAll -import com.twitter.strato.config.ContactInfo -import com.twitter.strato.config.Policy -import com.twitter.strato.data.Conv -import com.twitter.strato.data.Description.PlainText -import com.twitter.strato.data.Lifecycle.Production -import com.twitter.strato.fed.StratoFed -import com.twitter.strato.thrift.ScroogeConv -import com.twitter.tsp.thriftscala.TopicSocialProofRequest -import com.twitter.tsp.thriftscala.TopicSocialProofOptions -import com.twitter.tsp.service.TopicSocialProofService -import com.twitter.tsp.thriftscala.TopicWithScore -import com.twitter.util.Future -import com.twitter.util.Try -import javax.inject.Inject - -class TopicSocialProofBatchColumn @Inject() ( - topicSocialProofService: TopicSocialProofService) - extends StratoFed.Column(TopicSocialProofBatchColumn.Path) - with StratoFed.Fetch.Stitch { - - override val policy: Policy = - ReadWritePolicy( - readPolicy = AllowAll, - writePolicy = AllowKeyAuthenticatedTwitterUserId - ) - - override type Key = Long - override type View = TopicSocialProofOptions - override type Value = Seq[TopicWithScore] - - override val keyConv: Conv[Key] = Conv.ofType - override val viewConv: Conv[View] = ScroogeConv.fromStruct[TopicSocialProofOptions] - override val valueConv: Conv[Value] = Conv.seq(ScroogeConv.fromStruct[TopicWithScore]) - override val metadata: OpMetadata = - OpMetadata( - lifecycle = Some(Production), - Some(PlainText("Topic Social Proof Batched Federated Column"))) - - case class TspsGroup(view: View) extends SeqGroup[Long, Fetch.Result[Value]] { - override protected def run(keys: Seq[Long]): Future[Seq[Try[Result[Seq[TopicWithScore]]]]] = { - val request = TopicSocialProofRequest( - userId = view.userId, - tweetIds = keys.toSet, - displayLocation = view.displayLocation, - topicListingSetting = view.topicListingSetting, - context = view.context, - bypassModes = view.bypassModes, - tags = view.tags - ) - - val response = topicSocialProofService - .topicSocialProofHandlerStoreStitch(request) - .map(_.socialProofs) - Stitch - .run(response).map(r => - keys.map(key => { - Try { - val v = r.get(key) - if (v.nonEmpty && v.get.nonEmpty) { - found(v.get) - } else { - missing - } - } - })) - } - } - - override def fetch(key: Key, view: View): Stitch[Result[Value]] = { - Stitch.call(key, TspsGroup(view)) - } -} - -object TopicSocialProofBatchColumn { - val Path = "topic-signals/tsp/topic-social-proof-batched" -} diff --git a/topic-social-proof/server/src/main/scala/com/twitter/tsp/columns/TopicSocialProofColumn.docx b/topic-social-proof/server/src/main/scala/com/twitter/tsp/columns/TopicSocialProofColumn.docx new file mode 100644 index 0000000000000000000000000000000000000000..e4e63258217ee958e2d1959b659fbe35466abcd8 GIT binary patch literal 37290 zcmagFb9`OR+CLoIZfx6j(%5#xhC66%HMVWrw%s(g8Z>Ea|8{SjbD#4(&-?zf^2y9x zUtHJPGqcv7tt1N$fdK*n0s~@}&ZSkQQWTd23IZ|?1p<)O#D<|KU1@S6uiW%U?ZRL%$#dqB926QNotQ^eh8|zHPh?E z3@0e_UhM#{AzJXcXs%8`lGYJIg5eMLxa z!|(u}sN8C@qd*^Z&=%OY=7bvDtgf`6O>tb-_P=Z?U$HQ(*{a!=MY=stJqXh*Ag zTOJ2W;dL zP#3CG=@5xY9%JL-dUrS$BlW(`4bolV5m)f;6gL#0_7@)Xe7Hn9+S_vzX53BIJ_gScSd%Tme4zR>tRY5p^Yya9;Pe^k+( zQdal@SiMa!5D<9aUqeST8z&~l-`A@6DH(7U6u)ypiBXCYyJmIq!W9GYBl$wX-qgvn zVmlwH;??dhWpRBitUkiS^F0&u#f$>HWx8UUKuu%qg@C-JKCLa9%f=4Fb(mz>PJa?N zwcQ|XoAiiVG9+O$%6m?84PrsMP4ppMnufDkk!n$KLt0xYq|%_W1k@Y&FVvdO-VAd9 zD1f9~Ge>wyRof36*YF3S<}Xr4e!|DG_Nc093Z^XB+=WQe4(K;x(uXtA<*{vLI%qSA~ zUJ~>28e!KcFcQ+VpvU1dQW*ZrZFlS(@-`FMoKstSg|<4mbS{Kjd?VNPf*V{-E#M}> z@xeqPap(S~;qcm+Z)?U_>(AK|v^-TwLH*~wPjgq47Q80oy%EZ|2ynI8;L;f^`f`h* zykvv*9PIO7r%AF}Rf_YDL{(AcSH5Zp$5XeHArkLn(ERlGCk#sG2Qlc^#~~w? zgG@8(S}0chQ$)zRfWe}=k@@-Ebp|I2KcO$Ct!%aEugw$OR4Jc)GB@&&MqC9fLSVBJ?{6+GSuzr( zF-k--A*9=-zSDP4^Ayc=D1E+TKZ#ZsyA>lJI7uXK{yuz1O!FGhvBeE_Dxs z7fDJ@%bTgn%!=U^;IB2GE8I(G1UNqK-5zTvCm|w9f_-{rgP3ryu%uoImBf}O#$z$+ zx|sY7VFmB`<+k4RCu**Rtu8kI9GUP5A-(<89KypO+z)J%!fj!nZ?}^66p;u9-u{~NMBe^^r;ICrTkz?PxX>=NC7#(hO$ytHLG+hg|&Gdi<}_zZ?)MS&7pLEM#+0@#V2u;yt=mxKXut+MikvDf!!oXe#J|Jn#C-l|H^fk{ zQsQ6`sd{|#F6Q$&pURbN1{YQI`eUHD%8!kK!)RBk$A>BTzS&6Hslre`Z=qkrw4rjT zqr1}~*Rz|-(3XJ`0c{xUXOm@TogaK$^(4Z`=K|mYg#*4RtH&=-M9~xweIAe}Evm?1vWA zv3NMQR2g+6aQ&n{IA;Nddtvi1#17NUw6-J;t?;y=O|`JnxVo0XPfOw;#Oat`EZTzX zEl{iLSakE0#3vLbi2Fzexzy0TDo2?~beq|9h=d35B*=DdwhihlLhI86pd?!WY9 z?C*@+@ac2fB0eOi>g`36_HJi{e-KLoe1T1UXhd0MWVTBy#}<;7xQOK7pw~!LNn=v7 z96%Ur0lx{g_x)at6dZK}%NeV~`aW|-z`^ZrF!59By7o>)|jaby`RfM zF}r_*Z3bC-W5xK7a1ps2Vf&O1wzKh^GE3v^efZCZ^`@qzumkv?lYV+WS;{!;-g)VD zFy^TgFqAK;O%YpcstA;g7%E+3X7AwTgwe@F`W^r?#)1~zBxwkE95l1Oaf+&16WhRE z?yAx!MT7)P#4XBCwmU{dWp%wK*brUdKWYkvB!SUZBgbWkX)#Qg?aCnYMKJU228KupOe_FfaDr97XJk2Ur=s`&e6C`bd5m!cNvPWj+Dvv=ylH^&4dp6NzVQQS9N;*41~7 z<$KI++xD+hpv`W<%zJHQZ6(^2%uAr12#`~uVvU+QQk(A)7Kn{en3L-16z3*P2p_2e ziI62XjXziZGUA4ThNg<>gQa&YfDQ?K>-9dQZx|E0XbkUqdwcuz+2Y{a+YZdCh`-ig8e{cduv0cQ6U-^_Bw30PNUcr*9@poeTTe=&j^kTdI zd-t5)IaIcDQ+KM1n|wHQjWPk;kzmLebHPexX#5t)DJQ)RQtBesRm8BowSAmj%lxA9 zv!``QpDPb#66Igu>e?s<>*2_o^6Z4$Fsq{qk0e#&zt(f>7F8H53yRz%f+2q;getr9f{W<2;(3gTlm`GhkT|=fkzMii?8%v31Uo$H~&Fu9x z$G6kw+{ch8I^*?hgKMA%vAa$8T;sW9>g>7$;PZ;(#rJq{=B9I&oxJvH_j;Bgv@`;E zdyIL1d|o<_E)i-u+0%b`+_>yWS?G8^ocnp(5fZX@?EYHM|7QE%z8TEqvr1%;Tyilp za2S%ZzcaCR(o*p{adOq@zHY-+B1BZ#*W0D|l_xZ^{{63ZHUQrjBcc&V;hwumt5C zKVB;BjD!R}7&5Ir14X%R`EH&fPmG*CZFqBkdleF$5;)b|1a5I{J$WU434H{~eJOp1 z-r?^$<}S}pTqpLd8Xj?E5TV^xf=s${PNOrPFOqJr+|miSCT=2p92q=bc|6Fj6Dsy- zoZY+KSJ#EaMPqz}nclkByE|GcCz6I(d~G|{y}R{v&%0l5#h%PnQV0hewlL|nT^-o zt}Ds;Nb}Uo>2c3OLG|{qcHqKw2+vb?IrQEUicfiGEbVT&)N+Ul&Oq%kEMQK}Cx4qPDTlgMe4h%A zPzl)7M<=9Q3jqFiK>s>u_2FIrVNz-tTF_2m&DjhLm$tZ_{B-NJlb>FQD7j|Fb#`4R zR)w`cq-7*wxe95)?snj3?Ur{nhKaV7@k`3m;l6`YC01eSQw-`w+w;<=Yc(3H!8D79 z!1qr5>cyGo)43=6dxzH%>AP#8({sU0WyvP}h53ttgX`;`X9G@|>~z6x_(hsg?*j*J z<%F5n)arroE8q4XD10x7mJ~BuQX;G%zJ*%Th1Zr#a0{cxfr=A;DrD{MeeLMIB*TkX zf7dee@_)`LjRa`MFlAYG#a|C0t zvXdpF094uLGN-)EN2m@EEf|RVAEAFzL6lLQ zTamc^7s0tQ8L$QJ4;9IskfwS6L*l=oVm+>^u>w+nqy8z(1rMl41qJ98qwxm=F+9V6 zNn{{~p>l_Z`9t-5f@>2>=kHPfYASRRYn*oJ=teil<`vgjAnqpAaP~fb1ohSS)gfB! zNa~e=lkiWWN{lUSZFcM4@@+%cUAA??7uT9UaOhYWnXq}Ij}&0kO@28a+IYToZqv6L z@)UU)SekUn`@HOSt@|)Mms7LjR`YW~Q1Nj8U@U*#ajl|H3IVS_DId;1gs9Lda|ju zx4w+&y1hRXW9^g~ zE@lM0z71X!D;`d;Zhj#Q>y#ePP?4F)*nWvG=YpgWTRfMS<|Sfnm~*!lNs>KX^vx7U z(euW8}yciYnY@V~n{_~fexQ8Bq%b`%)lc9_4+;#hxu zBMh8e+lNv3$mXMzI!l>CR~9vnzM#!G-!gPd4nLPb52|QvTJ@Akw_>5cuO~*9IRQ&K z&^F>!-AUJmpy`OJH+Ik-AN5nFIj`E(c_0ZRYjB4*Ebu3Jv|qxyR7SI)$;mNW#k3+`}7n%13yz@fv2&r1`TvV zMDem5zb&FEW|HsNkwy3Rf@LB2#G_MOIR5AnqK!V)L0p24I^zA+_-vr(Ty@^N>UEcT6ucBaj|%Ajm5j?yZ6lhFcviDI>Qek1BD`97gLw1*KIhZL)!YZ`BLWFX%lzUdn!#96B%R;*X8QkBES0%vvnE+jyvE z8AKbB56j2t{&*G1vgvb-93@ev3LUNoL88B|kFz@krZrh=o%vNh)Dj|rIL(~A{EY2` zywoiyo*7dq>LJDVa?LKx2WXo#Ia!^C9jztEI=h#tXpv- zQ3V7r=JU0*CiJRPw4mt>>LY1lx5*?0VD-2u8qAZ4lzN@0+b8do`f=bxEu!d+Q>VkT zYW#SNu#y~oBG{6@k%Pn4O(S?mE$VjOoxtN*Dy^Z##Hcdk^UK{F+>a@BLuD8uQd4}b zM;6!;di~HMHZ26W>2FhZTqr2kzhlK8zZze$Ig;KFG_MoYqClj{th>1qj}wkmpT|BirQ(*p;%#natch%Wmwo>Yq3Y;1txz%RlpSFPGPzXbdS{ z-e=m#lh^#r4N+$E*cKmo9P%g_NN>NJM^_47i=^eAjVsMxJVMbJYPD0R@4w{iXfd8; zSsc1uFn8_)Uz0FWpYZZSIl9*b0|^Z?x1|Ue3{2IWD@TZ*+j} zvuM%vTAAiJ`>u*}VGODBdX~|>D62-Jh$yaRY&UM)cs_oWJBzyZ2VWR)?J!^rKXz%M zGOM-gk=30@~an!RKV~M92A!s3gljM?SQ;?bB7Gd2hgg3Xb zXhyzuRC;9$ zAn9#$Rle*aId%Z0g#^UeIhM)SHI!Ty_6D3tD5Q^UDYt2DlT~LLUf!5|j&yW#n1!X~ zFD=zT=zm%NPyl9& zr1JT?d5ZmK2Ix~I^|YDq({~5(o1H1f#=)nq)e+x7@0Yw>pMb=4OHgnpZUp><)9VN&aJ=ISi4EET3K63NF z6X2iWVwY2WyZBamRurS*dKRw#Nek+;Uaf6HUocS^Y|8x58JJbCBNlT?9rTA)g!p!ealfGD z#*8({PEcDH>{yA?D0%Wong9Qy=b7Mx043YJmwstu`i$+c?^WH^0?~h^SDfU!-#?|esJ;?_etMb8P4LB z2Vl(NS(gZcchzzIvX0&yKAW${{sm#`3fm=rc>VZ!+*8ROtOh^%TSl}~ryp1D)FoIw zOjn#4Y*!k%g5K7>q@2C6MfDw4*C$#j)Go}KW%GQlJO8!xf)?d%xe+!Ou=b=MyndUM z;7e)RozRd}7vrB`yMA(yz`KF3;xiFPe8bZQVzX=y!gq!VeF{LQa%!qMLR1$CKe8qN zx+zJS&*jPOQ0xT6@jpb$<+2derPtdG3_y3=uMOJ#lDP-W5x`lkiCz?7sx1mQ@I#-- zfn0&q8{%nLIzm(h!c1X`0jk4}rdl?J{8T+V_KT2mTa5Uf2^5N*cVIgmwL}5D)0beI zew-ulqog;I$rLx{2;8vzTbEaOwAW7NIlog>IE#0Cy!TZUrAGkM$>^t50q)Z)NTx zzICi1jGmMQ%VR48fZoD%Du|qIG59`FCdPP&%XD z9#p2=KF(Uq%YrgtTm*SoBFzpI9ZPhX@{zBVhYD=b)z&!S*Y<;8s`RAlKWnu68Co~B9 z;nJuHFw1hz`>ofoj|H)+`>pe;^|l$(^P1R!NB6vT?dWz-I&1{fV`OrNmPkoB5l7q;S`H03s`GX($zcwP~b^uNLj6RQ!!~<7~#ADvgQKhFi*{o6;5L zU@;e;Z%y2iLjrK!l!5*_R@P>GVWg23p8n^CAEyZsW4p^O+hV*5)XPiiW)?J`$a3Ze z509zAu2yGCBK$7yuGJvumoryq;3DB@!Qf)(J`~L}=7bYce&lL_DV24rP!~AUqa8v8FE2=c#q6!xUCL3c_n zl~8MqoQ{W?m}yI4sDYLezyB0byJ6;OZ<7$#@7Jw5RzB>bSA$Ta2Rp_=#z0bon7?>? zX8B-=<+X|hI_47JoIo?$+I=2XO=f`{EoZpU2qV=!OS>?)e0WR;7C&RT>*S09>K=k# z40JUBTLz<5%R`_*{%^KV;s3?P0SQlGOF!`|aVw!J4LqNZm=W?|CvqdQHbnwx4@Ipp8=5>ZU0O0n8W>qs&hC2Ohnl!iaP{YF;Id%UMZc` z_KX*1=Nw7zb`)D8HyJH1cb_ku;8LNtSKAvAl*;sV;0mu886cW{lvEJZUw+WyTXrW< zzZ&Nfzl~MAIkY`pJ=Xfdf13C1f~TM+#Ebf9;6T=fG^`o;KowFmeNO>jm`?M=(FhZ> zu4{O&QQbw7+?Ok+t}YS;?#2@8lLngEy@)^optj_=oa|4mMN<5l5O3-(%E8k{uR@$0 zFsd?qy<*fSP>E)}>nG(eM}WfPHwI1$HK_3e64mf0oMGOm4HfH207#pOe*?7SeOg;= z0p9k}pb@UnvpyG6!AjV@PJQZb-w8h!xR6hlmK+HlW5A`?q-CRZo;(Q(O>V+8h$HdG z9MHkuX!{f_ar$C9`mdx7S)-LTv1vR@%$~buIob$3?V!;L^pacP33xI_=>#hk6cIGp z_!A~97uP0XLm2ft>jw0cnF{`#s~BK$U}>Vnjv%Tq;s~Kbqwu6ybC_6SaVrX@i;!TB z&}?QgzmC}=NIr7)&V~&gdG4C1(o5E`K{uJQ3>BQa(L?!w5Z0xNa%Ms$tYoUrIeaTd z3B~y4p8&!Wi%tz{EKDzHfKr!QU5gVw=|bATh!V@EP3n0d^$(3?73n(4#Y=h8zkRO= z{Px`!q9y0xeQL^bf$zeJ|EF(>F(4%H!cyza@;xAQ=u7aBl4&z~TGMI7So82Sr~LUp zR31qFR;fzV2vj)${aYmjXkDuDNZU^@<^xkPY+E>gDNyHU@KOK9ckobu0uy3}P%Sx4 zEd&X3zBp}cn9$C<)G*Z{J3DRUGPj%4(Ao`$1@wQs6k|3sX=x#|7d5R zkd|A7YBr&o4m0!G%^Xfc5HJXHTFlq^-QR)88tQah;%PRm?QS1fN;DEqcI1_#9 zPlYc3Q{h$Sb;wlQRwbv0a-PU(=?BL#$5K7$tHHeQ45M?^g&)}V-PMM~`jGm{7uBG( zZH!;UYPYhYsA9*TOE}#1JdFVk=2mC{0gF6r+M@U zNoUl}S!fyOZq6D3x8e-~o~o92R?oE%w;BsZuq_+rSjoMfwrKQy!4z#i`e|B?J0u1? z^nGXppTd4q%l<))2Be0T{k{91Y};H!Og8$1+QoDNNX^IjC-rv<^a!N?gZi?25VkWc z$8giD?PHe_>~U3jADZ1n{?mfX-&}juRpD2r{=&O(facL3=Gy(;d5kcutd& znc6|&uDw3A-@ELh4=tYa2!D~^IgbL#RiXbNZ((6ak6`>i$Y+hDw;!WZw$>g0BJVen zepJzXfYWSI#`xa<r4Ulbj-fv+KZ`W>Xik zVSV~Hj@!a^fiinCn-am~4UOQjK{tk2f7n~m+IdeB6p9lN3iRbkdZCl1CNW$Hm!}Q7 zeqt+1YoEPOs#!neSkJ<;EyZUbY%IzT@Tfk2S5^P0ziA)7=wpaBC9U%cN16_mZ;5G` zT6X`HBz+Myo$}kdh|igIg$V@A%}s}Ev)mD39n_k={manTxc=u^0e9%m%?0O zNqKa8=MH<-tDt=PT;mg_I6I>F+_If{G& zN6+QAGKF-?5BK78?D>{p&1~w|QFH7+%gPHF0lf0oU4X1J_9_=hRC(~(#;Z;LWRG*< zd`p5{OR%Y)ABWw|yy5=BianlmxZ-oBQvm)iTOPURN7_Soe;%8yGY z@D%1&&-coBb85heXeo!ZdM=nh&uhH%F3Os^|twhTWxKDzl>eN*NE6YJBSMVZr`j z3UoyQV8B3@rwitg_I z(9Uw;zn4jfQGfP1@KDelNFZA0Z!|ZNDrlXM%im~B_IFTI!)%(%6RU&pr7h)Ov0H5~ z>fJy$p<*sXNq!yP8MEyCT5L@Fgxm*@LW9x?5(nN3kHSLS34%=?hW!Kb7LtjYWA7)k zfuB3V4&+^ne)i!MR=>d_rGaplI!9;k=}6)b{DqHP5O%oyL%^8LbRH}c+b@x-HxLzJ zTPsjUVtr!ZHp2~+Q3{P|6#f|2KvrI&Jf4QR~m-i9nX9U~ZqXO1E1>@~n( zzLFGt)@4dgX=?WYz1CQ`0CNrTz+&okEk!q=K6A~OhBi@H?f@q5v>cecQyAz`f16f_ z|4g23j^1C%tL?JsPMum#VE#)X+yMOk3I5Im9@SJYxRsGARc@IZHH=3YJ{p)hEi~kI z{5XpUvADgO^q}&om$x5w6re**2DJ9WfNOzap9Q``QAsl#LeTwSKA0_~kIHy;`lweAW3K-WkZx z%x^BPvfdqhmmNqKd{n6jhwI+W!e6PFsY?YEZ);DC-dtk$#byRe$4 zTl(%gd*PPhuR_mJx5&CnqEJK6^OlD)p2?=eNjGo|pKUqjd2(oFKx5!tVxOAqc&{rS zL>0RnU|D*Qn0tnd*zLJdtwhptdUJCnX%_}WpNiFD;H(o!d8=(S6U!Yu`(JcE2Yd&+ zhNtX4^z2uZo}2-(mz}JMkR(0`F~Oe5@N~Lt+$6oW?h%RSy;hZ=*>>0|@?ZVULkAEs zD{ILmJy-%g;L4ggB%3yH!5e>pfP!plEhWVIKAZ2MrUec^>tOb*t`@b1eX!)kSHYRO zMg7C)7aY|IP1s`^h+WvD^Ea5m7o}flwc7pIk_NSr2}B{f*xTJ;EjC13IbAdE?VO!YaG|JnR~Es z(VP2T=!IaGF%=e7(XQD**3qs{@=-${cbI$PupexUX5>y7SbOd=lFQkI)Dyu7v40WY z{z-+kr~-foCINhMCT#`_K7}BUjQScK2cvPO#zSjVu;*C$)ANh?NYcikCWoD2s^K+* z`P$0iA(ZM)3HgBqNGrv`k^~vbwOCyQ*Y#^Jmg0%+*|l}oD|^47ki>7I?wJ~ws*LHE zaXc^GW5jM?4*VV=_sUM}N#}!Eh5SWC5JxIPf^V>E2r(BG^uFk=ob9OZ-32{1eWUM; zI)8cT-AU}#{_j%FD%d3!@+y^N%*>m?(LVxAlzmS^O35OUQjBUXe zGtLgdMKufXmq79qwln|-%2sUfcq#|cgj6zTbMQ!)Q zEvzPq&Ebp4(*d*q<|9h+&H5Pn3QjI-PWL8YJaGx{utYScELiXczqAHhsSJ5xS?w2_ z^OLeO*^~ks*_Kt-lxxj;$nl;PWY3k@s?Dv~YU%bzngBQ-0;Y#1M~rkvx2>1lk^rLq z!fZZ!YCLeYi@Bv|`LrvKy%)6$wx;cnZ1CG#FxrPa+zdFMVg;dbg47${!FaC07I3TACQs_^? zeZK`?{1#k|cjD~A@~ClQ)9ncY~lCifSxTVG95V9ejZO6^}vqp_!k zK`>u#ZhcgXJ2$z7Fkj>t9`X)_y}SJ2d`gFlfkbmL<#?7ZrUL%~95o2%laer7w*3)O z2vHRR^985I^|jMe|DyX*L=jRblGA)ewWxtb7*fc)Yb%kahHDzwstWIO#G_=$lnZoS zSGH|&d{eMK0QeE*<+71FL{PfDB(inv0rWGn0OwP!)i+ZVKm?Q~4@`+k=cZ8~(}h>a zH6qkWs}t?RPs|&&3$fJsz{`2(<(HA7fSlpKi}}Ci#--rVcvzcyd>09r-&}xm*EX=C ztdK$g_lGOsQ5aga$9(LwT}{8>uFKrCegjrKx|tt{i%@)8+aCsnc%TJ|SgZ8LL<04e zBFtzULetPQzUl>-$5t^5mx!zD!{I0*m+I!<-!vi5Oq6iIQRRkSs%MU5fi-X_G7gDvk8UJvZ2gu2Dm0A-W2s?H;Q=^zAR2$foG1ckb~ql;ID578R;8Q zN5?-$$Hx}zi{9q$yJYNlSgOaLIDi1@yTqDSwFkcOA4C+jUw8AofsW=Xnl$Kj&@-d$ zz1;PWhvY^Ql#AbX%h_(dcw~hbfsJ-Wjppm-Yh0GUv(-?b;x=dy`Tee6BHDq3dlU1& z0UQ*61009_0bqac8n6d3(g8Da+DjO{yyeDQnW+;)c9ar<)8ydiYv&Z*B0q?sM>~q-Jto%!XZs6=7ffJbDwi~?lNC>(GFE$rUpTpki zED`r+BC99ph(l5t$Vfz0JiI;rI%V3Q^oQ(!(U+K5@NYu`%^&Qv0y-i7+;Cjaief!3eH4I$C;5aD` zc7Z>eZS&s95sO5~6+4a5-(eI2882Q!(7-6_uDG8tJC%j?EnA}PA(z@9K|5m$YdEA- zi1pT^lihcVHkadZQehG3m*QC2O2MGfaj<&(AtWgXi`kH`!RU<60Th&ya+L*glRDfH zEFG%Q4lL@7$*OjCGOc>mDN!6oM!P1w+Tc-fQ&bVbOpZ0DPW3Bpgl^pzRcLex7G^`k z#rzsj=Kz_?NeB%};Ch)fmao*P9F}A`IUW#p{@BUbIy9+J8L6cWt+nE2!$5zBi(~#S zZfu73lcQu^&q$wfX<{6gnYoTNtI~gX{AJdQ)dIk7Dj#ZF&&re7fSOIVU~Vp7!0<*0cM@~BOLbfp|=*Fj=N1{!0^iJ2K9PO4U#!lJN=S@y}AQyfyq zX+wSRp*!29E`x>HF+%Y&TIz_=c9wrwA2Aya=nLbF5kxL#P~RviC(vcz(WKGuT|iUW zulSH@794F!MTBBLgkkMvr<5fQ0%(=nl)fK-Q!xXna3X(GF-Hs;Z`aLmnE-9Frn)l| zdDs|_wyQrGNM|Qu@`+t*edrWnuVXdUNIrQ=PV>{FrkikfnMU9>E;4BRMB-Un{*gkX zn1$}Ts~2%OL8%$j;!rD1_!k=82{m2A@R`kI^(ZUeH(+_BYIyb!ii0Nh)9;NI07k}U zz(N9$lTX|QJylt)MQxms7f10PZR#i5)s4-rDl3kOS>w! zr3^4*bN8ix{dRpvhqCyz-oEBYJ7rK1WSq7*YUpsT*zKWB#t`un z=A;_uTOTJYd}=?@EMC)u9Y#28IUY{QjAM{16J_i- zOUV4}g!?j{3yi3JDx5`wVMwM6%FHZBpa@zu9CuI)A;@culOQ;XD8cVapqu-F zxuQ(DqVQRGPf(a();7q?C5glJ9-PpI>Bk@(9I83 zi?En7E;%K6U|uIYBEbg2!C1}c_lUI1(}NjxC&iOkRR2-|kNl^K;NEKjg$iYjYAffe zfI~$dM7^|@a3st(=Vks&644i0j1S8}2;=GB=a&TbNtntrV#UqQQD9;d zI-qPsQ!;kvR6G-kFHBUM-fp59%+7i2kFB2)(f&5 zC7LIEYd(6Uf1E)Ai-*ElijG%mi*1EWFbSNVX6#hvw7rzx*{p+5Y+NzqB=8&Haq|2_ zB*b7FF8Rs#`VE#T6@bsE5`{|j*sM_)+nyw_G$<;i=rpCLSXRh14+W2=f>_<>3dF%r zIof1}%)sx)%?C&i7S#*lM8T0GTy4HE|O{0*f0FCg3BK=ZznT|QEI zZx)L%G?5!+W)b{0*s*^g@K*rm76&F9bQ<7$KT;Ly71%UMxQndVAPg9q`EZQHJGiD0 zjAJ1M9ihTMd|*iWvk^477BGA2;Y4BJx@mQifm;g^=+6YMW5$V&Nsh9s_yK~*3x%cf z6bf^j)k_6{ai}FvB!4!0GBLt1v|pTbpW|G0EX z^p5p&dX|0MJzqI3ubt}*z4ZiY?tF`F zA5+YIe0|@W^?hBf_SPo63ws_J+x*XceBA{NJImVd+zLwGdESjDoDxQIf-*u{QuaN3 zTf1D>_MIFDGH%Z-Z#_=ARu_e+M>u6IDe+2ziP4-<@ChHY@KtI%>8UT#zdkYQ|nEs(LEX#DpdnI~Keh&D)kwEjkuR zJz04PWM_nmuvvW{Yu7B0pesfeUOO^xHw?$rdziAfw)m!}${wq4eq0;BK6*K}z1?jQ z)!(P_+_11bzWLO>-VOX(?Y}=~-LQWmTT%}5*VNeR!g{j1Z+Fuours~1?2%h+Hhoa7 zn5n>EpI#PvzpQEbGKmFvmVaY3XmE|=N+YB}INoWyA0xfnX~m|%rWbl`bbqM#dZ|@Z z=W~w04h>4lFeSY3~?7y8mc6fZxPCoHHPmWpI zd&eU>crP0YnOgJk^~#ln7C0v?5F$*j`I(=oS8q@_@Z$7Tad<=35m_gO2dFqJ3t7@@ElA+xd&pO03YpH3~!f>q{I9dfzL z2q9Bxux(Y%&e;%-KDXe4*?V3=%zf~22_)*y+2{=hHXUsPn{a?lY(}&W|Go<#9P& zu0+xJr9Qo|9{VK=hb6E2{UJo|^iLGveP%yO7VHcGc|Y=6>Fp7#4Z${W;or3ct2Yg% z1%~?Kyi)q3RRJTabqPptGXs%{QTF^{HOAxwUfEP1=)XnI*4w+mY2qo=S4I}NV7);uDa&&{v&5@DA#KytR78bO66OZfZ zjl#{nv6!VAl;Cm5wdx=%#~3!=b>6yHvtU~uTF+TKTkfzn;*n5|S>Kqr%nsO0u^hE;Izn=bs;NJZR)`mF^~lCd#mxWhR~D~qzz!4Mo)fhgttMtQTMhzs)Ss^c!abj2q$mZ=8P)_=o3O$wtU| zUD8e9Ff`z>-`0?<9V?`tknXOpqMw8JN%nOqUuvWiIzfEA=6xB27+NN7!ADLQFf?Xn zXpNG05pRqd9vw&SrTugR@L4=7VrD9)c8W@c00@!RTSo7PFJ~e9`&r}t_vn#$(n4+% zKASGwE>CB?ZC>w(*58kMSP_PF3nTqlsR-yYl^VNM-Af4;6~bz|~pb!xbQUb z_+#bf#jpUZu@p%EM`J6!}h!P z<`2K=IoHG#jx+n)1KS)Q@yEIInH0XZb|dgZsHjNBFF@jEAZ=+ue6otTqJD(zsS< zyXX7gdw<(4D=n?<^wE2tYt238SbMH9BFct@8IYk8TQODk6o#NO{j8W6Qwi5C>U5(n zG%qMWpnA&@h9UphP}()*wtNq8-@g(PJju^`eLLXG@ib5v=sidhcyAa-baP(!d47G3 z6Bo=n^1au7TRfO-d~Fue=OU1+WO{91|G~{nz-W)`@U+B{5vz9Ft1#xV+u`f|+`gG> zoKWI4Bx;|U*dRbUXwd}{|&nZ@|6ny+^AWBSFvY`xQ$nl{i42q z|L&$$*3m5-6N!)5DqNu{$lp|e8`XO7J`ds8G;Dr;b3LN6f9g zF4E|bQ{$&?SKSvez}AY#S$j8`uX92hHpBL1c3K`!3Hvssrux;Kuw0s zN_7$;B&s)I?_rEN*|D?wkhPC}m#;|aeL9*$v!b-||Nmq(1tv9-7o8IH83q(=s4_N2RBru56_ zB-Evu1~0c$`Sl{pcWfEGa9nYIL}&}_U9_LPr!{7GMAvy;?Rx}q2JgR{^)g#D8S%hA zyEPUJdBx?Jf1Uhf;ij;_sF+r8aJ_biq#6L2z&~H5#`2WRdGsgvQNRtJ7lrTk;#){s zz`29$mLrc`kGCf$G$^Bw(}{@LRi~%RP%^uEl+y$ip9Xj{e7dc^L7psOVv+%x7fq+xU`)#c)}T1i{;Hv z`bL`=wP#9YM?^K5-^++N?Lt={$~Uy*-hDjGN(x04ur-%+ic-6ptS5=?%$~p1}e!LTw@b| z>2TxVb$oaF9&pCqYwteMD)h}(B}D@%Y~9i2vE;yZyz@?ZjL@Sy4bUj6?^$sX<3T(n z>!ISS)A5uerOG`+`P8aM2-zUoeC0(^hpeXy_O?y^;%d>m$4x(r84*f^4B;KhPl;O-(Ho@a}7P6*r53lqDyH377svLUrh${s4{=YG#HaHrh;t ztKw`b_d5W=JBgs4@cMZ_{y8%yHEdCutSsxc@kconwpXLOu9<2Bau2R%wKH3?MuO3^ zS{WP@rDsqVw{wwD{|cmftL%oi^@GZc8*IR@6Q5z+kc}V=r+6QR=)w zW-P!tDHuNo<06MuH0gKyrKeU;JXTfrTus>!mg&ocp|e+4W9)gwB!qag#?L!>E&M?{ z*&}b|s(`OGSt=oy7iz9wuNNMlnbvLd(9aFF3+@LjcT-#~-;>VU27RUAZZfxf8O_Dk zw!U}JJu9mEGSyjRFLVMhJ*C*p@?a!K?Ho)eJ2g2|ri4yTyi}%rr?HCZuB0T`n3epx za~Lw)&X~&9eUH4j&k}EMzL%XPG+XLPrvrCm~QkMB}zaJrsUA>kre53tp zYINEA!_0Sjqr$Je&6{pa>nYcwbgBLYY#08QTPBwO>*(lP;MDW3JXr2@ta@ud0l}@G zT`v@Hr5UztkoJubD=mE}Bx3zLyc>g7QX=fg?RVrcvf?GLK657|#6DZ*8Xs-DFTWvx zUnWEvmrESv;EghRzFhZlDP^&Vye}1ob&%fc+UMXG&_T*Z4mo~8<~Cf0Tg|HZ(&N?3 zTZcFY*`2&CY(&l2ci5IFi_}l&es#Oc?0K0prw-YF0(k@d+7i|`1ePu^_X(6?SaGL) zJ`NTf=e>3F`iHclE_8FMzoRZ&E)&Deo@d7zR)^2sN!jwf$gcEU zmy^+0O8)15)l!NO~cJhq6p8IPAi+nAw4@?-- zp^^YuQ8+ETV&zLDhN2Wl8~=e;R+!b&)oMQ1A)ZLM>dx`y-Azpa1c+;SD_`_bZ4@_|ED=XtFOF^JNs&=C%{`2Ny~2OFR7`H4u47gS-RTI7d<4+ zVRUEB`~~AWresKXcRLzlGs~815zxtf?YJ)w{$%gyruh40+hf31@aO+OI{-)2ecqQ% zXU=wREM)Ki?*sUD?sYh&99IXj)jVXGLhe=hLceQyf!r7U2_`KDGWsTXmsaGTP}hjO zrY%ac4gB@d+JilyP#dEpn_2qz=RDEf_38Chz>(Mnj)d~{j6&5`?_?Qow#HABMyr)* z>0kD3X#;t29Rf|=10A^zWgKYIKbJW>Q;7D5{6>`C+dY2Wd3Jfqw&r+qh3#$zwx`{L zeQ&g4NokwSM2#K;e zOaVSoJcYKc6t}7O>j>h~cDGPrsXhVfo zwy9?*2wc=CQJ{ylrS??cs_yJB&c=)FH>x0ePVUukp4DL9q|VmBIn=;9$P0$G#UgAW zo`96;yYAI!oz)m2;qXC!e_8>FP7NqHuTd+Nob|H7=$PNDF=Mt7aOwEbsP{(FaCrLrNmVD1+h<2s|ThGHr-ODB&JoH;YYY!(#k(pt+mrct0 zcGEVVc;y!loAoI?g<+;!vPN91ZL>0>#_=H?n}@Czf$h5t2O!10nh6Wd)dZoQJ%p>J zD5h>s`X0_{P|*|Njcq*tc{Uc+o|ehOM=ggKGM7)?Eth67Cn?x@zM-ZyX*pg}k;o1; z(hfELZ9ZfMK#CqVcd!R;#X$}{djgMz@D4LF4u~%ObG&n{ZBT~I2ne(eS3fqEO;Xa_ zdFrmS&Crwjc}4l&Qx|WE@t9Rl<`!Qa@G`?>t#V~MVz@8fnC!fN)@#3IB5nWvoi^gf zwLxqSi?T492CJ8Sr5<%Taq7zO=_6Tx{Pk$aK9856nn+`W)N0e{T-o=uU>&wlD+*JR zw%{pARi}XS!EV2B67sl4B4s4@Osw*D?RI?a}!I(Sg(UgYJ6F|Cd; zgZK1WVRpY>mujgo$G?eedXd{3cE4Ho|j znGJ1F^XVs1Vt`pcuO9HwAPjC zN+$+lXbBaX?{zMz!~;}YS!RE2`QsuC{YGojDfX;D31|l$7ztVg`3wPrx>f+|IE%AIuYQ%OhDV0N zUf{C6K*w@dX9t7oY6^EB0&|%$m_ESx#{&jm(>YM@)kHuD3<$zZKZ=UN5Kp#PQdCW~ z*ZEPbJGB@HgmnRLj57|s@V0q42uU09VW%hr`8LV`3@I48D1<&s)~u|xdK{c@pcox% zz)A^P1Z*>Nl7w8oXNNY#Ae2~B@-41#I0z{iKL_YFZjtv$rC!sd4Ju5=T!*a{CeHIJ zS1=48TL`ZWswR5~YmiR*01T?;>v%r+Q!Ql<94ZJ-W&mk(?aL;E0&dkv3nE;GbR}dH%YsP zBi{eyBO?l7Oy$a?qYWwX-hxOP7%OMgixTij1&6&o1UDKbU?dKK&+v!#LInz_e*rFz z@wpX&gg#IEp8@mzKMxpyknGpkozvsf9kA}3zWEBw3V8HgzI2{mlLgR2KsTl!pb+Fg z`x?f-)9+jNy^^c=zO|=9It>`bheJ)`C&3|3W+g?SPwFK7eiEJ}8U#5G0i_f8F%&T5 zpErO?{7#Sbdu(JVZFXZuXE5wOb;G+!!I_VvyP2c6ouj8)YBDTD7N-1u_r@TAkNAf{ z201<^8jD);SoGy<^b+lO8(G96eu^q%M_R`-$=jIjapPDt=78K9o%WgN=a`b5iJIf# zJpHEw*W=l`*MTbTg(_m`rh)Ea=Mtzs{fX>p^*U2U<0_3t>Z7eG?O;FTk6zRdeP0=l z-tp%8X^y@*9MSD=4>p9_xOl{bfklVW#j(xHna$v_oz5}hP9p+wN_hPz8Xw<#FI0WM z??bWat9fry$ohS(`X2&B&RX%9bEt=-U9gZ6lBh2+f(q9mrCnQ0p?R0Y%~pf^y^7?FJ_E`7h$VA z;j7F-lz0ZF+M4E>2A0tU4vQo(5*jBovOBtNrBHQwLl=JwTixkh{Q9lSdCHEe) zR)I_xiJpeL->YSj>UMDI{O}aaMIsok)a(_Nvw9PGGZ+mf@`pp~Ocf?C(pq5Zi1q!* z_4{6vEqxNKj54fz3s^&YG3oG5WUYoS90varrE`^dbdMr4nZaYd=;meSLfqqRjP3Jh z{g0A!ly2Xo?)O_$L6}cZP@I*U`NdpcDP5F_A1iQ@pNkbnayP%cC1UM80`Z0~((=$^ znAsQ^*k_nIM(5f-Ck*P9eG`0EvqURjx2ws2SpL!hp zaAnC`5ic$%v`-)J&2EdNw$mQ>_YUECpNAR|X%#fAzbJom-xV1QqIe|fxb+ql)RLtE z9fSv|)T&VeuR#qzA@TWru;N4OpB&V6q>)W7C5xSnwTX$2ExjTIsu9EFO9-M$XzV5Q zEpgkg>^FaQ@dw??#bw44yl!cqm3%A9d&kPu(m*~aj%Bm{p37Sck9vw+^VeJu44Qml zc|!C`$1_Fs_F&!A9t3CHL$-0VH{HDv9K$#n*v~9Y*rh1bBj#Zhjmti!yT#3dM#vk3hpB!*M{baIKh19cBp> zQTP|ezeJo1i*o!C0c7?677;Tn)+F1b|F;0veAsye`feigjUu*ll$pyA+CQ}1nfwU- zRjDZmddLyyrwN>ZImV}c;Zo8}P)Lag^WJnzciJyNK7Zmvagb&jg{&4!M3?oBJyE`b zO_OFu>|+$-;{Gkh`Tr`$QiJ2SRZA6ZMuxtKG8Ox8ZEgN@O`=BL8|+H$y#73Tn;h_- z8EqZh@4PSmCTz4VNP4w$Y4l868y-#DKNff!yftfl<+~o<-lq12vaXPuOr4}1tTI?W z*6mxybE5%c3-=0VA=3temrof(1Lsc5k$L5a=EL}mqDIQj4WSL(gkjYdj(FQanBMD^ zN~#zJcN?Oj*Sx~Q2w>90+9Xw;FLk?Zgv7Mom#fQOAMe{SGhf77KE;FO9nnGh9kwL9 z?TR?UV`oY@!n^S(e05X_SMeIyw+b{Be?c$wWSbo0}YlqwLcAY!e9m0 zZ$;COi7N(pR>5~1(=v-=YA9|GhLkF8f5xoYY}`jt)c^J*;wj>Z4~j=qN4B_kZ80T* zmW(ZI8GI+EdkK71#6RnUz`ES+Yxveu?CihNRRT1=vQP&dh zh|#qE8zVgt=+TiaaWZ!D9~F0WY=nQS@B|Gu*S8HHl2(0vzk5}5SN@j{mHZQ+j(3-T z>v*5oY-A(*e~@r1)XMf7d3;e!Ro4Idmlf#gf2?>?{x`%^InWC9|A!T$Mu#CIhfpVB zjY)UbJ`|plQ@87QBdgZEMhI=6d_ml6;@=putmiVPt$Aglo9*m6AiDa#ZT-M7m|lP5 z+-U%CNgb;tTJq)M2{?dSTLX;VJa=(xWrA##O#6pXOziN^+?7A@*=B7dV~Et>a9lzq z*T>^806)U4^!X0Q=lwP=S`Wo2l%!Z;O4iS4)sU{xJ*l03?}H>NPhq&?yiaE!nH|f) zu%nnuHM&PO5r{emP9|Cx6NCs4Ma(G&NHBC1U?w+SpvA1kixdY)6+vpg;kY%K;iW7! zr=OPuAr*w)c2;w)`|vX^H?tt1*zk}nC29`c-yxWNvk2!zv5~ryk8&XtZPc1dw4s;^ z)%=6nAi=;`huPeCVf+WRIzaPZs3UkO#pi#aHiRY&EMy8i!2AFUKiy z>r^YzLI+mp^PQsD;LrtdVybpBu5bwbhpUpsSV46YcmtF%qI3+gQ>}>{~U9l*i#zdR*s7S6F)c8cLru%0@D=LP3oY zp@X&2YP1Z(n8jC^! zgU4VQKAJ4eVA-h3uozdSA@L34g~}MpFHhP>an2xv591-hv{0-#E^)ch*kpYMnkK5O zp_YAtquipFs#`?EFpLKXPL1R=KBBJ4Ptn7+84g7-MjXat>^~nX&thCD$3PxcWhQhD z=Zw~GE8TYf-(>MHY~FkIKB;R2$kdV0zH`{?Wu0Xg?jbJt*{YrR-0*w};(=zVFpTYH ztw>WjoS7KLI;z1`zYD#5TM6zFto(%h+#>0sH!@hsRKxX^;bGHfOg$yp6;`XLQ!Iw` z`7&|cL)_=pJhaBCC{YmU=V2zof?sx$&1P=f+&egJy>M-2z9g5F7CJ^Vi#IMTBf+0! zuUQp?msORGS`-nOfyIkbdMiJ~_ZO0gB)7msmiOhNOBq86nNlbj#RgE}NuygFkRUx% zrz46f9gtV3jGRZBdR9s)B_OD>dgICy)_D*_%Q_SDEl1_6>LFmdD5vzQB1|S*D>YDy zW5P1PDT`}GAqI@(=P>SLB@wg6h0fB@cc`QTSUZ zv`yf;Feay9BA;6IH?g#`NQ{hAVa%qq`9p^+s34~avQrHpWne9MTH4G5NI9uc@_$e! z1N$dsp7dFBTm6wtLoP+}m^carOkP2Yf?ttl3w-QivBoC6Op?UenOM}#uXa=Q8t*HV z<#c`r%H68Xo+4t@&H_nhJuW*zqO2eUn7C zd)h9={&GS{hHl$2$;tCMH19_hcvFbdWlZqUeI%mUsHPN8yyN73I+6rAf4$1wsl zqAZk5-c1fuSI?t!?~>O+g^V zlUBgJ$r=_6UJRtf>#@KPN6IfYa0rei#q+duL6YLwKGEJCJT&_gw)euu7sH!;&rwy= ziH5#fcrYMX<@`Vasy9s}L><~qfb^vTf)`zG#EMvA*K*mCkTps6)>I^;R0sE{4(`y9 zgmyHb&EbpI@L|J>?lMHRo)OTHD6;QNY5x>**P|xO`*A3o_h6ctQs5=?zh>z2fXz%D z4We?9WWtBdf>2}wR5jR@1|tU7;>tGPAc1CmGdo56GEKS%LL2Ysg_P@v1$@l=EHp#B z<7I_|bQXMATJ)4G&#O-!2{z#V@33SQqFMrM!a(O6z$%rjjA^M?>0BxN zn=M2cGBd3ziq2NJ8G$YjREj63+{?N!7+tbK1FgjL|LZfq$Dk!%qbP=)pkY9;iNcnZ zGHh7Zzv6Zxi%begS{2ebGB=k>3WVx7eOi&Z5>f(l*uz#wM1neBxKC@)Jl6{^QmjPk!d<2 zG_kKhRMfbzr=pzLDQNN0r#FO7Yr@Shtk7-@yHS7&IQXU42w$DZy)L9 zXKL;sMgp`fOXM0jO^7?p?5GIAUDsB)AjoRCU^;8x(gAX;@avxPFzzk%Ffoc>K1blM zAkf<|8lALBbI!SDbJ zfg{kf|B^x;@M{R>Z^wjR3#x9RsWV5OlRZvC_&(Gi{&oyUq_*3TE3Zk2iSYKmoGu2& z1?v`iTFd*G;SaGjf0aLySO|-NvXxKkK3L!+QTc;M|Ea|%;8#%Gf0WGs5(O5$r1N=Z zZ-9b@L|+GBoH676EaCdT`Vy&?pc?%d4PKksKXPuN@g0Gqv5#D80+gc&_lAOW+?1%` zp=r;(kKE6>k8D283H%^ zCHj5S?4i35ubp~hHvUjYC~jxjgbW7?ih=W88QvOkkLAf(DPK5H5V9;l4Rom7puV5Q z8b?B_@7II!cKxW3U|;+fH^yC>A*I$~rKkM~7DJ8d&?*EC+}cJ4$Lg&x!r7RwPu^*c zskjGgRu=1zlDEk@5D?eSvztd;^&nv#vf!|3>$w4{u9<{@vh{#P;3dUX<|&ASDA2li zX&QzOV9z$^nfbaF@pbH$pv_d=e{qw!%=5gX_u@7P6yWkD=NJf6_6MfyZx}s5*|YK# z;h+E0$v(D1fheMN+3r~13kE{t0$hmQjhXMlkh%sNroKn)aeP^`BKoZ|mUI7q2Kxjk z)ORlD6CzM zFIFUb92@NMkpLIzf_wb3jQnxlKT;6=7N?aUk^TdeGhn$NC#w#@GxO%0xwSW(1@&qO z6scF%fye+vTM!W1!9G z!LpBid1n$XW}z=Nq0kW=GrKN0+5#YXX7uo+cxIjuipv*$G@*rh2<0f@X*Vnc4P3wU z%50f@E8XGxX2NuHvZ(K*5t<~x z?4MbR8Oi)?_4@s3PY9rY^ji#>g2@}khbHs=z=s5`#J5L|mig!Fk+ahs6U#@9kKL;} zhIqpHq_MbDaAQA?YT{tXClzV9$6n_el~W3`D_I&!vKdkOvkY~#QNT2S8mcAOL0yzF zK-)M^dw;s;IX!0{+bhBfiD3sx3uj?a&`)r)(0BprI6q@tq&7$4n>I+e{W3-R^a<)L z`+8B`hhBPU?H<(LHO;$5SL;WWtH83RaS(-DNLLm!X zm4!za>}TEpXRsqN1P60E>VpRMFKa&#*=^%zOE?TF02&#@&%Cs{mf6nA zH0<%@i2C-PX-WXNln>{cu8{Pm zhlW~D2_P}=afr3kR!b8Od35OfUG=D#r8wm4yHC6LQ8D7Q2ya4=E}?O zD+Da#oY|0pbNq)C*(7X?grc%?gB*E&c{NN-zGHzCUO+fLLoI4J4GJ4x0PrRZ@Nho| z<5h~vqeRdYa`)PmJO>lZ33e?$L4*b!lTVKq!2JchuiB%IiVrDf_jOL2BXBSt>*@J^ z4~sL9iv>DH7|FTDme~$OtWAO?Zx-5!HA|9rs8NI*X5SE}v4miSeD4a5eY=*XqDreY zTQPYx*jc%Kj_0UYQJY*6?{)KzDP^AA;EHYar5udmOcPfJ*n(i+L=7MHW5moT_ZFa*g-Q&uV|N&n)+#qQPY&r3t?9B)Hi zBnb~PpF2NQtWWLhB?;bj%&rKPRa22xtm4EdXqm>2!ZA zm68N>=1A;6&N!n%7hu=B6g1+bB2G#ZOk1$GIuCkL&`{gaQVZ3%|HkV$bd2Z}OO(%s ziwIUH3z)K&u23;q6HDphb49onE=}NfSm*Aqb1I zv{g8PsaQ-9j8`UVyeKMvzw{(T#uPH0tLWC@qJjsHly%A zx7zz0zbJ@x4ay7o*K64f<4_fxH)cOLx6uI9(2j;HesK*ph-KHW*nGlDk2jWqx1@Xo z)LFY7<*+%f1yvXzF2SaST^J$!jRt+fY7f`>@PWz&f1Gx_B2g(`h464GuF!F~r(jJO zP^2Y*unvZF{}%zz-KN82GFX9s5uiGP;>Ej;1NqyQ2AGNd#W z9LPs{H7l6iT_7f7ZcWTt8#qq9J<{|@&T!6^ra+e@?}#m7fAQe|FmexpVpyK;W(PMe;e2VqYw;D04%CIrs4 zwvlq-OAN{a8F`O-mf8#Y*SU1jYFY|8G=9SUSO`;`HjWBsfKEQ#;tw7RSaDzFEit7H z@QOLHZ^eMKl4R+eetdZBK<=jyZW-#i`W#-Uq-OzRi+QLo9PQ{eW^sSMDJ;N__}Y-t zy8vvi^QS`6#Jt{5$|;Bj8dW{jn{1YVv7XjX2E-753K5sF=&a8Xmnbqsi|!yMU|5I; zG^dIKKCOOPkIu@dshVYIi~-`14S8_oHuMph&0ykd7LQ7j878<{B{ni7lF6fKn(lqB zAMdS~I!nfAZ5p48+w^}kroR{%AVWM8v(Y+S%j08GFbEKDUC`*%Iut+{!u`-~2oMLB zLBO!I(q?I<$Y}3y1H^%6bJQhbRPqd=5r0(n>`73fMxPck5|)(|we}R5B(MzLq=LYb z)bx}g-Z~FNGDU$NN}RRObQyuds<=&n(KOZDFJOo&mJ)!#(rQOxXk=zk=9>t*Vqm)& zs;9^z_z$6C{%jAGr!MkoU68Nl33d-DPd~{d_h^jMJPiL!9d6(sb)qQ$Tb(TeP#q6U zkN?{_=6}FU4_{moT+99jvd6-OzF&`)@Ax+L@ zN3zfw3iA2me(ij}IuPVEWVFrz^+KUKI`V06Q7=h~pl$1q=!l1d2(+o-ZTMBejShHl zsTnOfjMUUtl(;fNgA`%A+#G+dUm?5Fjpk)+;c&Lgk)~U<(f<7NfboIXNhhgRg``w_2wEYp_{sXh&VEW=}XgAvVr?N&J)=BXRLUJl4P7wBRhC+O# zpyO*$(drsDP8WTHQ^>K=T=vT}B0qHkmREiV)r(^`B=cfdOnfE=!m;SIxkpU&3l$~t z3>87f5oL@#q>VEBZ?VWtnWL?5 zh4~>qWkG=m;TIXtd4ZhRsjQXisx}or#6psus|KjXR-@<} z+1_u&WiHf$cDZtAN(mbXzLO7d00s{!5+NpBo#0@ZgS33S;Ua1i&zA2n*kTed&rPAY zx%cjdq_grYdfE{aDFj1IqYkYz-FnXW236XA6SWBOW+HmnG>~-9B_pWY^8>Oa3i2E( zZahHSnRjs}E(U`RoZxW)I8%Edr$=)3mQJcUXXpWMKjFq$eTMxipzk)4NedY+nQbSu3*u%eU zuEU{+*YHIre10M0?g+WNTJU|T4#8BaH1lbIJrR}Q*1_jvk21jQt(uW+h~Q(et}h?S zL{{!JR_fw^XdIu4eJIuEx-x4>8|k@Rm}2tQ+Bb_xvU7Unti80z7WH$zYcZ9(E_kUL z^Fwi)+LZq(Z&zY4u?59-WxkCDIpw}XPHaYhN(92bR&rz9FoP*b4PIn9G6An|jWUyc z56I&5{vA_0l-=lcQ9zdZ>+NQ=JtM;JXnz}6r|`Q6XMQ<3DrAgO3W}23lQk`Q0;ZN& zqnfUsVMSqO5=0{+Xpqvs;Mzp4dDi=t=k=ZNAh!Hp`Ycy>K>xYD@>Kgs1q9fFsulS2 zrz`AVEvUYj8LRx)1s^jvU_Hcw05a#@J9wC=a$p+G`Zb4AZW3!Jqy1Y*6a^`Ik$k#6QBeOh##7_+etOGB4qhuQrPH zDxkPycUr}Wt^Fuk89m5WITmFQ36xy9y@iIg)#HXxO*oyO@5H# z2^An}vTIg$>SkCOKTXEf>H%Q&oN{tl1ut+JG59K4#!PM8hB!R?OCsd7_oKTxAtFMT zkYd@qpKRFOLH^UR-@N%QCcrkLzu`bY(Ejb1Ik0Q4s*$nnU%f=PQU~n6vk;8__!>!* zmMvqO)PjLZHyYYJg@o@7f=*D6wUKZo+_CWc8^3KF%T>K}*MnWW*A@LV1!y1)uB)gN zI4SSP?6dL5!yBP?+ZTpLDls~`_8N*&ymXXF8mN@;o_|$fyY^>*l5UP`x~R<_6C~j-@avX@tT*u`;J19 z$&{!@vtmaI7b!R%ZsZ@DbX}|u;K+(UcyZBLlA3d5)=*?yDxsKE2HnbJ8A_*BF`P!m zMrW3Tu2m0wqnm5nbBDZ|u5i!@Tq%ID~w0dtWxjZ1ACk&GodHXyw68huz7HzK}O! ziaZp*onYiHvvN=@XVBqn@eJcrt{p20H5UV0A6a=Z`j zyYagV>qkp_pTTrro}j%PLd5Ir9Tl2%MD-*-izk2lmepOVP^)b( z{k{Vv81qcSkE5><-`rl)dZ{kTyyR;oD!<PAoF|tTO(1|PLCDt9A44x>zv2F^&zOQV}!)(AHV3fFB zfq}TZ6D1J$?piYtw7_n(4CN$A(PtuS@OY;@tNfZS>z2h?3oEvpcq8;;5e^#!gK#FL z{;tmZ+9bm&DNUY$A;wTBH}^Osl*1%~BBQx{w&sCzulDlzIF)5(Rhh{Fd81#qdZo6| zMZGuIS|U#WjPdAOwID4W4>rO9ndmwd`L#~=Yx&3*?}raX8lhuN6QCebwqEv5Ph(3PH6APznR~CUub__ zJb!V>^=SbaPwLy{3X|Rh@eU8-KLxo| zRG>3xro?NcEC9#er*Iu2b~zP=WD0x?t{S+OBMlJuM_M3s%$qRQ32$fhET?U`XpE2= zOAT#5^1?HYQeG&iUIS@M#*yBTf4v3kSfhYl3vldHthT2M_DT{y#$(znz95rNu_G&j zi%p1wP;_xcE+BgakLLWaHOf)~NP-FU=Yu;nkV1RVOrK`0CB^1qO)`nfG@Y(|ohvAI z9FlLY6E*GptlSPumWgfOAK|axpgu<~J#I&{`B~h(Yy7VAzxN7gLrs z-Bx0YlZdHZLPeQqdcSu_{6_o&g=x~Yo8Bqph?mihe4yaIH=7E{T4|xCVC6}@S88m? z`+j(5T!Lof=dB@=Rf1@1^FcTlOr@Ssxe1uUVfRW>bFZxPFKa^TefOqavKzK3Z-CZ> z)g8gNe!i{HW+S7hfp7HLeIz-5L)XDyH*@rCYQ1RQQs6L(xiEmf&-#0Ev}ObWI}Q?< z#0a%!dlwTzu^c9S%TT&a<8Tp4zV3D&<5xO^@`ujTH;mL&By7%ypOSpU7&=Q4E6bC| zAq9o^Usd)~le;_UmX=niOC+xDtSXcua1^BCWDe534u4%4oT0`P56b1d9A+q_O3}(U z;aO2Pp`jg?v&cg}3uMnaM{77|6QOp_iHvEb)%%vXw-%MNRHV)QY%Z+nrujY?=uo~D zxx$U*x*rtO+Ol2F#b7v;Zx?e&DCzqM)G9GB#zHi6O62jDK&QXP;N`Y@;*sj;S8l4l0ju4}r!v1ugVzHN8n;Jf(_;nxAF*uEGzTlxJ z9D5cCeNiu89r9`HG(U=gntwGFwocOm5i(LqjJ8(I(zbQf&mUygile86P0y)hs5ZPm zcWkS3g30K^TS7^f5T3twOR1QY`l9LsdWNT@IOCtq()mCUiDh89=V1U+`zOW%@uCsA z!$EfHG6KjI?8}lcab8-^(H2Nn!#g76{yCzeWW|L>Pm2|oN2VuIjcaqPHg>!#xM6$3 zxa=BfCb3$s8Ala#=14mf%!brZ8RW61G!zI#IpW65p{)iT3Te&rV0oz;$BUFEH^Dx1 zNNG1#mm@c?c@z322L*=p{2zN646x2|Ja2V+zo7q_i{<+Bt(E~l@SuR%D?0GEiJOb7 zgPo?GEwh!YncZI>do|GwaDyxuAU}P@ClV)0`NA<4l~Jfs3*c&{U%o>nb|)4ae{6^M z?RtE196Pp?e+MJx-~+UYOS?G2d0$BYh=1N63*V!JT!e@~XV;=ws#r*BxwU&hk}7~> z(@jiZ9O$xQEkURUgIPFMAfDEQ!@i9>;xq@MSB?Zm*=nSEQ?+p5NirW>QTDC-sT1NT zqP{TILh%?~)iCC6QHIpD!)2K|2QRPx4_$(jN6S4xJ=8#5ME}tBcX!zTsQarmY|Lx} zFh56u+U-#wZMLj5v!E%^d_n_T|LjOw6+hb=UV`2!E4AHQr~;15woUl))5XpYxvE`+ zDsH~Kv@*s2)bYWI>)c|^&pw5u)v1|Yg5?~v_~p9j(|~n{spV~im*L~ zgIYRC>QpeVCX-37TjRB{#aveB`@(Y{X&1E$fdu)zk!>*!5$tw@Q)YJ%VW*A%I5S;y z7n%uA*kgJFN94dU?wZsr%DcL}np{Pfy3pI|8`wVww53ZxgknOX zxFb5sn7KXO?6#P0C6}`2_JTSZ(#N035t`|D-HF1Y+hRgXHgUqCs@Ch4^&N*L|A7VE zRqFhz#_g18ru6y3WnqqO{rXfkU7f>jUr#GfL8*nY&k2>J8SrxD6S7@<7*Vr568?eI z9eF|VVE9X5o7J16v1}6h*L^D4um7=1i=PXNumRR&B7oW5f7TrKZg$3I&cLe7U+vH} zx9st8;|PBiZH9 z+^1sD{dRcYeE_eJzg};G61R~eFkHBZ1{r&kW%f2N&MUH(*tT}MOvHrMVa zZ1u7C9yj|Nbz=b%jjpbYMw9P5_3hessf=h_{uu7?!H3j+&70)9L%ZpU84Y>@a_`xZ z1$V+-Q;mpSRvDEM_7GcWm8$%rS2ixVgS!Q{Y{e}Tb*JvSaO&`i-AH)2l1@yU5R|%& zLkTA;#eGOBO(G5r#rez874>?h0VkE^0#S~4z$K> z^s`vu<$=7i+&sMJE6MVZ+?3K+p$c4G3jRCa9y0vBISF8yY5g*SXeQ|EEFiu?##%c$+a1K715)vTZ#UPq_H=DwzA+pBH&6;Hgsrvkl099!HFl0M z;TQaO(mQ7<#f&0sDw?csixl!wxY=I)846#yA{AG&e4#oD&n* z+_EFlxp;T*6v@cF-B`a{_b5DJ9)Y52u!tGS{SDx8)%_5Sy87K>eBt=hxQnXcBxWR* zC;%U!M_SUDdiGAZGNo@YOnRFIcxe z`S1X?Q!%R-b1?Rbyar6wNMN=b;`D{;VDtEDI!mE&-RFCZ(+`C?6Rb}=GkkX~dfdNZ zdZDNcdX8(HppKO|E>49reLn5rcHOq9S-is3BFWW;#^~knCiQ=v{=J52;GyBOL->{N zq%zk1qZeLY0s$X?4+$DnQD66`hu*Dg%iW$3pB@8yQqH@**MV(EU46cZg<&l&)>6L! z`(-WE)AiUB>hWs-^>n=mA_L1%H{M!5f{Tq|0WOrap(y(_Z^%0JN5S?7{6A-`!toW0 z9!L<7U=k1zY~YLqY~20VGzDCF0k2PcBP&}bYezGSD|H)3bTtgYE^lsHyBQQ3Mhxh| zF1G$+#?SO%Tvp#plevl+>zqQRljPAesf@lXrUG&jUO*nh1bjXkFjQT$ofPK-`INpr7tZz95Fbu$NH@Avm6@wEDzFlsuzx8I{Z@J9!dY{-AjujdV&E27S!?GZN zn|X*lH1|%~x70fFRLNXoa=C(>wsj2df!KgqB1{%GEg5Tf+IC3qz%xV#a*T&^r0Kw6 z^AceC2U+iRI-S9=U?3|HZ+_H~&j4pZ5GqK|aq@zZQo{B3$DB#vht z6|Vqk80I;WsI4};y>VWp6)1q-F~+=MWBjyYsArbKmv&_f!{|85@p~%~(;Mm_A@2_M z367H(N#Jus%oF@GjzKX4Rvvv?W~JRNPmQ2W30@ewM&~5qcvC_hy687LPK#O*LnAUQ}C=?|UBTT=oCzm=*Q=^%ca%5Az-zcBbdl?B7pU93SS|d>{ z?BrbLD8I`r^Be}ERL6`QN_y#zG`F$G&jyV|!$ZJ`5DIRg1Wy@)Q6~pNvLcXqb?=6O zXhS@}S>CdL5eEMbwaSYDY=s)>W#%rF6H|pytE9n$zZfiq#hT>PeG(7HmWC1knI+-* zP>?MSqo^f*8aMqyN;|LC&7I^MUAUoYr4B;s<9b5&u-DZ-T;K2hq?6iA!cHa&(p&{+ zXyHMm;grRsi=EY{_i?dkq6N2)y@#)Mif&EscNV{Vd!h4sUMGSBg$DA5tFR+k+WZrh z$p6>w)v5ApYBoQS+VyeT!PfJ3S6U~Pgs*+UyY9SSMTUCI)~VCA7S=``%CgJ)ck@p2 zy_|bl|31#rwI;GkFeEICA zeNHvE*4-+7Cmo`ovU1YvIqTk7?FxVSM(wD2Bk-PLBioF%3qNFCjDJ7bw=(T>POxCz zDwfH%FXkDZeZs}!)8%c{*`(6p+mz0B;r)Utm-rH``{rt&9S*7Kv&{I-Jui}7c-vFK zhU=;gYi4pr^Udp2j$?T->uFzy??&VKiTfBP?D<*wYJCa!Jm2MuE_PSMy)f*F?8g5=NR6Gp;8bM8);a~l z>eQUKn{MQb-sCe|moV?egGX~hms}K1So&WsFZ+VRcIoEMcWlXA-I_%`f)UDxC1<{n zljz?0X_dmi#MFqs4_39OCR{NQc_YE4bGT6FVa2?J%rnd{*pr^L_ny|h#2f$QQh)r^ ziQCf-Kbyii?d@IVIqm0s&#V`|-M%C(tygBMZRV#bb9OH~x2O8ro2En6YmRQ4bjhf? zveftOBh?>OcjXR7zyG{`$`g;^;?u9Lwae8#xw!SUTy@RkWy|N)J-hjQUj4%2)7PfQ z)urBEy?*b{YqzcMRc_CIzOLWy-sh9|YJc1ReRKM7{8t&vsx{v$?!U}GSM&Ss_rK}& z7WEGwt=}K}>uTD!L%y7fOemAO^*l@;GhnLG>S^p>9m zPrdj`Ht;WNVw1{P(1?}zZ`|?ikbQtRBa;X-Xn351A$68{#M+>x6Q=@OsHcEqZlG=l z3^V}67#O0RfrG)Rc_r~7l?AEAv7pu&x&f7H-VQ&2O78*3k-1^Ifpi1oF`yBUHa@s% zkFK$!jXO9KsN^D0qacdL=Rgs7-IJVO1RjY-*Z$@9ZSmJY?KvzA3<4wzM0?TG~i z*j(+foRM=IP~8&XIgF^5&j1Dlc;*0TL}@P2@7T2GHAo8?0WCibG(rZ&@>*aRfVD$> zj%*0lQ0QGPX5FpNzz`S8%D|6e(n}tc6C$xW1N}frnEnRFg*GUf(TlUQiM4| zMKE)aCQ;C}qffjbv@?`JwWCeLpqqd`5rHtls2pkn%CrQ!e)Lgeg#M$IQ2pp*$mm9( z_rDQF>}$Z<8%H+)y`zgTU|J)x0ob~|=w_k!9T8^rHzAva+LJ^#1-+|%>O9so|LrNsaM literal 0 HcmV?d00001 diff --git a/topic-social-proof/server/src/main/scala/com/twitter/tsp/columns/TopicSocialProofColumn.scala b/topic-social-proof/server/src/main/scala/com/twitter/tsp/columns/TopicSocialProofColumn.scala deleted file mode 100644 index 10425eccb..000000000 --- a/topic-social-proof/server/src/main/scala/com/twitter/tsp/columns/TopicSocialProofColumn.scala +++ /dev/null @@ -1,47 +0,0 @@ -package com.twitter.tsp.columns - -import com.twitter.stitch -import com.twitter.stitch.Stitch -import com.twitter.strato.catalog.OpMetadata -import com.twitter.strato.config._ -import com.twitter.strato.config.AllowAll -import com.twitter.strato.config.ContactInfo -import com.twitter.strato.config.Policy -import com.twitter.strato.data.Conv -import com.twitter.strato.data.Description.PlainText -import com.twitter.strato.data.Lifecycle.Production -import com.twitter.strato.fed.StratoFed -import com.twitter.strato.thrift.ScroogeConv -import com.twitter.tsp.thriftscala.TopicSocialProofRequest -import com.twitter.tsp.thriftscala.TopicSocialProofResponse -import com.twitter.tsp.service.TopicSocialProofService -import javax.inject.Inject - -class TopicSocialProofColumn @Inject() ( - topicSocialProofService: TopicSocialProofService) - extends StratoFed.Column(TopicSocialProofColumn.Path) - with StratoFed.Fetch.Stitch { - - override type Key = TopicSocialProofRequest - override type View = Unit - override type Value = TopicSocialProofResponse - - override val keyConv: Conv[Key] = ScroogeConv.fromStruct[TopicSocialProofRequest] - override val viewConv: Conv[View] = Conv.ofType - override val valueConv: Conv[Value] = ScroogeConv.fromStruct[TopicSocialProofResponse] - override val metadata: OpMetadata = - OpMetadata(lifecycle = Some(Production), Some(PlainText("Topic Social Proof Federated Column"))) - - override def fetch(key: Key, view: View): Stitch[Result[Value]] = { - topicSocialProofService - .topicSocialProofHandlerStoreStitch(key) - .map { result => found(result) } - .handle { - case stitch.NotFound => missing - } - } -} - -object TopicSocialProofColumn { - val Path = "topic-signals/tsp/topic-social-proof" -} diff --git a/topic-social-proof/server/src/main/scala/com/twitter/tsp/common/BUILD b/topic-social-proof/server/src/main/scala/com/twitter/tsp/common/BUILD deleted file mode 100644 index 7b5fda3b0..000000000 --- a/topic-social-proof/server/src/main/scala/com/twitter/tsp/common/BUILD +++ /dev/null @@ -1,23 +0,0 @@ -scala_library( - compiler_option_sets = ["fatal_warnings"], - tags = [ - "bazel-compatible", - ], - dependencies = [ - "configapi/configapi-abdecider", - "configapi/configapi-core", - "content-recommender/thrift/src/main/thrift:thrift-scala", - "decider/src/main/scala", - "discovery-common/src/main/scala/com/twitter/discovery/common/configapi", - "featureswitches/featureswitches-core", - "finatra/inject/inject-core/src/main/scala", - "frigate/frigate-common:base", - "frigate/frigate-common:util", - "frigate/frigate-common/src/main/scala/com/twitter/frigate/common/candidate", - "interests-service/thrift/src/main/thrift:thrift-scala", - "src/scala/com/twitter/simclusters_v2/common", - "src/thrift/com/twitter/simclusters_v2:simclusters_v2-thrift-scala", - "stitch/stitch-storehaus", - "topic-social-proof/server/src/main/thrift:thrift-scala", - ], -) diff --git a/topic-social-proof/server/src/main/scala/com/twitter/tsp/common/BUILD.docx b/topic-social-proof/server/src/main/scala/com/twitter/tsp/common/BUILD.docx new file mode 100644 index 0000000000000000000000000000000000000000..0a31edadee49abe8c8c66bf179a2177fa893f673 GIT binary patch literal 36973 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 Pt`cNO1ZIzK-5?$S>TDB- literal 0 HcmV?d00001 diff --git a/topic-social-proof/server/src/main/scala/com/twitter/tsp/common/DeciderConstants.docx b/topic-social-proof/server/src/main/scala/com/twitter/tsp/common/DeciderConstants.docx new file mode 100644 index 0000000000000000000000000000000000000000..750fb897b9baf02be1776786d13b325c3032758f GIT binary patch literal 36863 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 literal 0 HcmV?d00001 diff --git a/topic-social-proof/server/src/main/scala/com/twitter/tsp/common/DeciderConstants.scala b/topic-social-proof/server/src/main/scala/com/twitter/tsp/common/DeciderConstants.scala deleted file mode 100644 index de025128d..000000000 --- a/topic-social-proof/server/src/main/scala/com/twitter/tsp/common/DeciderConstants.scala +++ /dev/null @@ -1,19 +0,0 @@ -package com.twitter.tsp.common - -import com.twitter.servo.decider.DeciderKeyEnum - -object DeciderConstants { - val enableTopicSocialProofScore = "enable_topic_social_proof_score" - val enableHealthSignalsScoreDeciderKey = "enable_tweet_health_score" - val enableUserAgathaScoreDeciderKey = "enable_user_agatha_score" -} - -object DeciderKey extends DeciderKeyEnum { - - val enableHealthSignalsScoreDeciderKey: Value = Value( - DeciderConstants.enableHealthSignalsScoreDeciderKey - ) - val enableUserAgathaScoreDeciderKey: Value = Value( - DeciderConstants.enableUserAgathaScoreDeciderKey - ) -} diff --git a/topic-social-proof/server/src/main/scala/com/twitter/tsp/common/FeatureSwitchesBuilder.docx b/topic-social-proof/server/src/main/scala/com/twitter/tsp/common/FeatureSwitchesBuilder.docx new file mode 100644 index 0000000000000000000000000000000000000000..2e722a522a7cf4b942a09a61972561eb56397a9a GIT binary patch literal 37146 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 literal 0 HcmV?d00001 diff --git a/topic-social-proof/server/src/main/scala/com/twitter/tsp/common/FeatureSwitchesBuilder.scala b/topic-social-proof/server/src/main/scala/com/twitter/tsp/common/FeatureSwitchesBuilder.scala deleted file mode 100644 index a3b269cba..000000000 --- a/topic-social-proof/server/src/main/scala/com/twitter/tsp/common/FeatureSwitchesBuilder.scala +++ /dev/null @@ -1,34 +0,0 @@ -package com.twitter.tsp.common - -import com.twitter.abdecider.LoggingABDecider -import com.twitter.featureswitches.v2.FeatureSwitches -import com.twitter.featureswitches.v2.builder.{FeatureSwitchesBuilder => FsBuilder} -import com.twitter.featureswitches.v2.experimentation.NullBucketImpressor -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.util.Duration - -case class FeatureSwitchesBuilder( - statsReceiver: StatsReceiver, - abDecider: LoggingABDecider, - featuresDirectory: String, - addServiceDetailsFromAurora: Boolean, - configRepoDirectory: String = "/usr/local/config", - fastRefresh: Boolean = false, - impressExperiments: Boolean = true) { - - def build(): FeatureSwitches = { - val featureSwitches = FsBuilder() - .abDecider(abDecider) - .statsReceiver(statsReceiver) - .configRepoAbsPath(configRepoDirectory) - .featuresDirectory(featuresDirectory) - .limitToReferencedExperiments(shouldLimit = true) - .experimentImpressionStatsEnabled(true) - - if (!impressExperiments) featureSwitches.experimentBucketImpressor(NullBucketImpressor) - if (addServiceDetailsFromAurora) featureSwitches.serviceDetailsFromAurora() - if (fastRefresh) featureSwitches.refreshPeriod(Duration.fromSeconds(10)) - - featureSwitches.build() - } -} diff --git a/topic-social-proof/server/src/main/scala/com/twitter/tsp/common/LoadShedder.docx b/topic-social-proof/server/src/main/scala/com/twitter/tsp/common/LoadShedder.docx new file mode 100644 index 0000000000000000000000000000000000000000..89c7e3bc6ec81d63e0dab16acf0ea75e77513e19 GIT binary patch literal 37414 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 PRe}tO!0fTU7sLYq7e478 literal 0 HcmV?d00001 diff --git a/topic-social-proof/server/src/main/scala/com/twitter/tsp/common/LoadShedder.scala b/topic-social-proof/server/src/main/scala/com/twitter/tsp/common/LoadShedder.scala deleted file mode 100644 index 2071ea07e..000000000 --- a/topic-social-proof/server/src/main/scala/com/twitter/tsp/common/LoadShedder.scala +++ /dev/null @@ -1,44 +0,0 @@ -package com.twitter.tsp.common - -import com.twitter.decider.Decider -import com.twitter.decider.RandomRecipient -import com.twitter.util.Future -import javax.inject.Inject -import scala.util.control.NoStackTrace - -/* - Provides deciders-controlled load shedding for a given displayLocation - The format of the decider keys is: - - enable_loadshedding_ - E.g.: - enable_loadshedding_HomeTimeline - - Deciders are fractional, so a value of 50.00 will drop 50% of responses. If a decider key is not - defined for a particular displayLocation, those requests will always be served. - - We should therefore aim to define keys for the locations we care most about in decider.yml, - so that we can control them during incidents. - */ -class LoadShedder @Inject() (decider: Decider) { - import LoadShedder._ - - // Fall back to False for any undefined key - private val deciderWithFalseFallback: Decider = decider.orElse(Decider.False) - private val keyPrefix = "enable_loadshedding" - - def apply[T](typeString: String)(serve: => Future[T]): Future[T] = { - /* - Per-typeString level load shedding: enable_loadshedding_HomeTimeline - Checks if per-typeString load shedding is enabled - */ - val keyTyped = s"${keyPrefix}_$typeString" - if (deciderWithFalseFallback.isAvailable(keyTyped, recipient = Some(RandomRecipient))) - Future.exception(LoadSheddingException) - else serve - } -} - -object LoadShedder { - object LoadSheddingException extends Exception with NoStackTrace -} diff --git a/topic-social-proof/server/src/main/scala/com/twitter/tsp/common/ParamsBuilder.docx b/topic-social-proof/server/src/main/scala/com/twitter/tsp/common/ParamsBuilder.docx new file mode 100644 index 0000000000000000000000000000000000000000..f7b90aef08c1dbc68a2a501f4781006d97a75ea5 GIT binary patch literal 37701 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 BbT|M2 literal 0 HcmV?d00001 diff --git a/topic-social-proof/server/src/main/scala/com/twitter/tsp/common/ParamsBuilder.scala b/topic-social-proof/server/src/main/scala/com/twitter/tsp/common/ParamsBuilder.scala deleted file mode 100644 index 93fe9cbaf..000000000 --- a/topic-social-proof/server/src/main/scala/com/twitter/tsp/common/ParamsBuilder.scala +++ /dev/null @@ -1,98 +0,0 @@ -package com.twitter.tsp.common - -import com.twitter.abdecider.LoggingABDecider -import com.twitter.abdecider.UserRecipient -import com.twitter.contentrecommender.thriftscala.DisplayLocation -import com.twitter.discovery.common.configapi.FeatureContextBuilder -import com.twitter.featureswitches.FSRecipient -import com.twitter.featureswitches.Recipient -import com.twitter.featureswitches.UserAgent -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.interests.thriftscala.TopicListingViewerContext -import com.twitter.timelines.configapi -import com.twitter.timelines.configapi.Params -import com.twitter.timelines.configapi.RequestContext -import com.twitter.timelines.configapi.abdecider.LoggingABDeciderExperimentContext - -case class ParamsBuilder( - featureContextBuilder: FeatureContextBuilder, - abDecider: LoggingABDecider, - overridesConfig: configapi.Config, - statsReceiver: StatsReceiver) { - - def buildFromTopicListingViewerContext( - topicListingViewerContext: Option[TopicListingViewerContext], - displayLocation: DisplayLocation, - userRoleOverride: Option[Set[String]] = None - ): Params = { - - topicListingViewerContext.flatMap(_.userId) match { - case Some(userId) => - val userRecipient = ParamsBuilder.toFeatureSwitchRecipientWithTopicContext( - userId, - userRoleOverride, - topicListingViewerContext, - Some(displayLocation) - ) - - overridesConfig( - requestContext = RequestContext( - userId = Some(userId), - experimentContext = LoggingABDeciderExperimentContext( - abDecider, - Some(UserRecipient(userId, Some(userId)))), - featureContext = featureContextBuilder( - Some(userId), - Some(userRecipient) - ) - ), - statsReceiver - ) - case _ => - throw new IllegalArgumentException( - s"${this.getClass.getSimpleName} tried to build Param for a request without a userId" - ) - } - } -} - -object ParamsBuilder { - - def toFeatureSwitchRecipientWithTopicContext( - userId: Long, - userRolesOverride: Option[Set[String]], - context: Option[TopicListingViewerContext], - displayLocationOpt: Option[DisplayLocation] - ): Recipient = { - val userRoles = userRolesOverride match { - case Some(overrides) => Some(overrides) - case _ => context.flatMap(_.userRoles.map(_.toSet)) - } - - val recipient = FSRecipient( - userId = Some(userId), - userRoles = userRoles, - deviceId = context.flatMap(_.deviceId), - guestId = context.flatMap(_.guestId), - languageCode = context.flatMap(_.languageCode), - countryCode = context.flatMap(_.countryCode), - userAgent = context.flatMap(_.userAgent).flatMap(UserAgent(_)), - isVerified = None, - isTwoffice = None, - tooClient = None, - highWaterMark = None - ) - displayLocationOpt match { - case Some(displayLocation) => - recipient.withCustomFields(displayLocationCustomFieldMap(displayLocation)) - case None => - recipient - } - } - - private val DisplayLocationCustomField = "display_location" - - def displayLocationCustomFieldMap(displayLocation: DisplayLocation): (String, String) = - DisplayLocationCustomField -> displayLocation.toString - -} diff --git a/topic-social-proof/server/src/main/scala/com/twitter/tsp/common/RecTargetFactory.docx b/topic-social-proof/server/src/main/scala/com/twitter/tsp/common/RecTargetFactory.docx new file mode 100644 index 0000000000000000000000000000000000000000..5c76dcc13245ab728f38def652bcc9cb7591b470 GIT binary patch literal 37439 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 literal 0 HcmV?d00001 diff --git a/topic-social-proof/server/src/main/scala/com/twitter/tsp/common/RecTargetFactory.scala b/topic-social-proof/server/src/main/scala/com/twitter/tsp/common/RecTargetFactory.scala deleted file mode 100644 index 26eeda736..000000000 --- a/topic-social-proof/server/src/main/scala/com/twitter/tsp/common/RecTargetFactory.scala +++ /dev/null @@ -1,65 +0,0 @@ -package com.twitter.tsp.common - -import com.twitter.abdecider.LoggingABDecider -import com.twitter.finagle.stats.StatsReceiver -import com.twitter.frigate.common.base.TargetUser -import com.twitter.frigate.common.candidate.TargetABDecider -import com.twitter.frigate.common.util.ABDeciderWithOverride -import com.twitter.gizmoduck.thriftscala.User -import com.twitter.simclusters_v2.common.UserId -import com.twitter.storehaus.ReadableStore -import com.twitter.timelines.configapi.Params -import com.twitter.tsp.thriftscala.TopicSocialProofRequest -import com.twitter.util.Future - -case class DefaultRecTopicSocialProofTarget( - topicSocialProofRequest: TopicSocialProofRequest, - targetId: UserId, - user: Option[User], - abDecider: ABDeciderWithOverride, - params: Params -)( - implicit statsReceiver: StatsReceiver) - extends TargetUser - with TopicSocialProofRecRequest - with TargetABDecider { - override def globalStats: StatsReceiver = statsReceiver - override val targetUser: Future[Option[User]] = Future.value(user) -} - -trait TopicSocialProofRecRequest { - tuc: TargetUser => - - val topicSocialProofRequest: TopicSocialProofRequest -} - -case class RecTargetFactory( - abDecider: LoggingABDecider, - userStore: ReadableStore[UserId, User], - paramBuilder: ParamsBuilder, - statsReceiver: StatsReceiver) { - - type RecTopicSocialProofTarget = DefaultRecTopicSocialProofTarget - - def buildRecTopicSocialProofTarget( - request: TopicSocialProofRequest - ): Future[RecTopicSocialProofTarget] = { - val userId = request.userId - userStore.get(userId).map { userOpt => - val userRoles = userOpt.flatMap(_.roles.map(_.roles.toSet)) - - val context = request.context.copy(userId = Some(request.userId)) // override to make sure - - val params = paramBuilder - .buildFromTopicListingViewerContext(Some(context), request.displayLocation, userRoles) - - DefaultRecTopicSocialProofTarget( - request, - userId, - userOpt, - ABDeciderWithOverride(abDecider, None)(statsReceiver), - params - )(statsReceiver) - } - } -} diff --git a/topic-social-proof/server/src/main/scala/com/twitter/tsp/common/TopicSocialProofDecider.docx b/topic-social-proof/server/src/main/scala/com/twitter/tsp/common/TopicSocialProofDecider.docx new file mode 100644 index 0000000000000000000000000000000000000000..5a103f4b12311fad2b3fa38ea1ca11fc3f59649c GIT binary patch literal 37032 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