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