// Path: app/src/main/java/com/marcohc/architecture/app/internal/di/ApplicationInjector.java
// public final class ApplicationInjector {
// 
//     private static ApplicationComponent sApplicationComponent;
// 
//     private ApplicationInjector() {
//     }
// 
//     /**
//      * Inject the context.
//      *
//      * @param context
//      */
//     public static void inject(Context context) {
//         sApplicationComponent = DaggerApplicationComponent.builder()
//                 .applicationModule(new ApplicationModule(context))
//                 .build();
//     }
// 
//     public static ApplicationComponent getApplicationComponent() {
//         return sApplicationComponent;
//     }
// }
// 
// Path: app/src/main/java/com/marcohc/architecture/app/presentation/util/BuildConfigUtils.java
// public class BuildConfigUtils extends BaseBuildConfigUtils {
// 
//     private static BuildConfigUtils instance;
// 
//     private BuildConfigUtils(String buildType) {
//         super(buildType);
//     }
// 
//     public static BuildConfigUtils getInstance() {
//         if (instance == null) {
//             instance = new BuildConfigUtils(BuildConfig.BUILD_TYPE);
//         }
//         return instance;
//     }
// }
// 
// Path: util/src/main/java/com/marcohc/architecture/common/util/TimerUtils.java
// public class TimerUtils {
// 
//     private long stepTime;
//     private long totalTime;
//     private int stepNumber;
//     private String tag;
// 
//     public static TimerUtils getInstance(String tag) {
//         return new TimerUtils(tag);
//     }
// 
//     private TimerUtils(String tag) {
//         this.tag = tag;
//         stepNumber = 1;
//         stepTime = System.currentTimeMillis();
//         totalTime = System.currentTimeMillis();
//     }
// 
//     /**
//      * Prints a log with the step time.
//      *
//      * @return the step time
//      */
//     public Long logStep() {
//         Long difference = System.currentTimeMillis() - stepTime;
//         Timber.d("%s - Step %d: %d", tag, stepNumber++, difference);
//         stepTime = System.currentTimeMillis();
//         return difference;
//     }
// 
//     /**
//      * Prints a log with the step time.
//      *
//      * @param subTag sub tag used in the log
//      * @return the step time
//      */
//     public Long logStep(String subTag) {
//         Long difference = System.currentTimeMillis() - stepTime;
//         Timber.d("%s (%s) - Step %d: %d", android.R.attr.tag, subTag, stepNumber++, difference);
//         stepTime = System.currentTimeMillis();
//         return difference;
//     }
// 
//     /**
//      * Prints a log with the total time.
//      *
//      * @return the total time
//      */
//     public Long logTotal() {
//         Long difference = System.currentTimeMillis() - totalTime;
//         Timber.d("%s - TOTAL: %d", tag, difference);
//         return difference;
//     }
// }


import android.annotation.SuppressLint;
import android.os.StrictMode;
import com.marcohc.architecture.app.internal.di.ApplicationInjector;
import com.marcohc.architecture.app.presentation.util.BuildConfigUtils;
import com.marcohc.architecture.common.util.TimerUtils;
import com.squareup.leakcanary.LeakCanary;
import cat.ereza.customactivityoncrash.CustomActivityOnCrash;
import timber.log.Timber;
import uk.co.chrisjenx.calligraphy.CalligraphyConfig;
package com.marcohc.architecture.app;




@SuppressLint({ "SimpleDateFormat", "DefaultLocale" })
public class MainApplication extends android.app.Application {

    @Override
    public void onCreate() {

        super.onCreate();

        if (BuildConfigUtils.getInstance().isDevelopment()) {
            setUpStrictMode();
            setUpLeakCanary();
        }

        setUpTimber();

// Path: app/src/main/java/com/marcohc/architecture/app/internal/di/ApplicationInjector.java
// public final class ApplicationInjector {
// 
//     private static ApplicationComponent sApplicationComponent;
// 
//     private ApplicationInjector() {
//     }
// 
//     /**
//      * Inject the context.
//      *
//      * @param context
//      */
//     public static void inject(Context context) {
//         sApplicationComponent = DaggerApplicationComponent.builder()
//                 .applicationModule(new ApplicationModule(context))
//                 .build();
//     }
// 
//     public static ApplicationComponent getApplicationComponent() {
//         return sApplicationComponent;
//     }
// }
// 
// Path: app/src/main/java/com/marcohc/architecture/app/presentation/util/BuildConfigUtils.java
// public class BuildConfigUtils extends BaseBuildConfigUtils {
// 
//     private static BuildConfigUtils instance;
// 
//     private BuildConfigUtils(String buildType) {
//         super(buildType);
//     }
// 
//     public static BuildConfigUtils getInstance() {
//         if (instance == null) {
//             instance = new BuildConfigUtils(BuildConfig.BUILD_TYPE);
//         }
//         return instance;
//     }
// }
// 
// Path: util/src/main/java/com/marcohc/architecture/common/util/TimerUtils.java
// public class TimerUtils {
// 
//     private long stepTime;
//     private long totalTime;
//     private int stepNumber;
//     private String tag;
// 
//     public static TimerUtils getInstance(String tag) {
//         return new TimerUtils(tag);
//     }
// 
//     private TimerUtils(String tag) {
//         this.tag = tag;
//         stepNumber = 1;
//         stepTime = System.currentTimeMillis();
//         totalTime = System.currentTimeMillis();
//     }
// 
//     /**
//      * Prints a log with the step time.
//      *
//      * @return the step time
//      */
//     public Long logStep() {
//         Long difference = System.currentTimeMillis() - stepTime;
//         Timber.d("%s - Step %d: %d", tag, stepNumber++, difference);
//         stepTime = System.currentTimeMillis();
//         return difference;
//     }
// 
//     /**
//      * Prints a log with the step time.
//      *
//      * @param subTag sub tag used in the log
//      * @return the step time
//      */
//     public Long logStep(String subTag) {
//         Long difference = System.currentTimeMillis() - stepTime;
//         Timber.d("%s (%s) - Step %d: %d", android.R.attr.tag, subTag, stepNumber++, difference);
//         stepTime = System.currentTimeMillis();
//         return difference;
//     }
// 
//     /**
//      * Prints a log with the total time.
//      *
//      * @return the total time
//      */
//     public Long logTotal() {
//         Long difference = System.currentTimeMillis() - totalTime;
//         Timber.d("%s - TOTAL: %d", tag, difference);
//         return difference;
//     }
// }


// Path: app/src/main/java/com/marcohc/architecture/app/MainApplication.java
import android.annotation.SuppressLint;
import android.os.StrictMode;
import com.marcohc.architecture.app.internal.di.ApplicationInjector;
import com.marcohc.architecture.app.presentation.util.BuildConfigUtils;
import com.marcohc.architecture.common.util.TimerUtils;
import com.squareup.leakcanary.LeakCanary;
import cat.ereza.customactivityoncrash.CustomActivityOnCrash;
import timber.log.Timber;
import uk.co.chrisjenx.calligraphy.CalligraphyConfig;

package com.marcohc.architecture.app;




@SuppressLint({ "SimpleDateFormat", "DefaultLocale" })
public class MainApplication extends android.app.Application {

    @Override
    public void onCreate() {

        super.onCreate();

        if (BuildConfigUtils.getInstance().isDevelopment()) {
            setUpStrictMode();
            setUpLeakCanary();
        }

        setUpTimber();

        TimerUtils timer = TimerUtils.getInstance("MainApplication.setUp");